본문 바로가기

IT/Cloud

[AWS S3] AWS S3 Key path 설계 0. Table Of Contents 0. Table Of Contents 1. 설계 배경 2. 고려해야할 항목 3. AWS S3 Reference 분석 3.1. 문제상황 예시 3.2. 문제상황 해결 4. 실전 적용 5. 결론 및 느낀점 6. Reference 1. 설계 배경 개인 프로젝트를 진행하던 도중 업로드한 개인 프로필 사진을 저장해야하는 기능을 개발하게 되었다. 프로필 사진을 저장하고 불러오는 단계에서 최대한의 성능을 내게 하고자 고민하게 되었다. 2. 고려해야할 항목 사진파일이 올라갈 때 너무 큰 크기의 사진이 올라가게 되면 돈을 많이 내게 된다. 사진 파일이 올라간 aws s3경로를 보고 이 사진이 어떤 사진인지 확실하게 알면 좋다. AWS S3도 내부적으로 파일을 찾을 때 성능적인 문제가 .. 더보기
[FaaS Service] FaaS Service를 사용시 주의해야할 점 0. Table Of Contents 0. Table Of Contents 1. Coldstart 2. Stateless Environment 3. 한도 1. Coldstart FaaS Service는 쓰지 않는 상태일 때는 function instance 대기 상태가 아닌 생성되지 않은 상태로 유지되다가 request가 들어올 경우, function instance가 생성되며 이에 대한 요청을 핸들링하기 시작한다. 이 때, request를 handling할 instance가 없으면 delay가 생길 수 있다. cloud function은 다음과 같은 경우 새로운 함수 인스턴스가 생성된다. cloud function을 새로 배포할 경우 auto scaling으로 인해 확장되는 경우 긴 시간동안 funct.. 더보기
[Docker-Compose]Docker-Compose env parsing error로 인한 삽질기록 0. Table Of Contents 0. Table Of Contents 1. 문제 현황 분석 1.1. 문제 상황 1.2. 기존 docker version과 upgrade한 docker version 1.3. 프로젝트 폴더 구조 1.4. 명령어 call 순서 1.5. 주요 파일 구성 확인 2. 문제 해결 삽질 2.1. 문제 해결을 위한 searching 2.2. 문제 디버깅 2.3. 디버깅내용이 맞는지에 대한 검증 2.4. 최종 문제 해결 flow 3. 삽질을 통해 얻은 결론 및 개인적인 프로젝트 구조에 대한 회고 4. Reference 1. 문제 현황 분석 1.1. 문제 상황 docker version을 업그레이드 하고 나서 다음과 같이 잘 되던 .env file parsing이 잘 되지 않는 오류가.. 더보기
[AWS] Site to Site VPN with OpwnSwan구성하기 Table of content 1. AWS Site to Site VPN 구성요소 2. 목표 아키텍처 3. Hands On LAB 3.1. VPC 및 서브넷 구성 3.2. Instance 구성 3.2.1. VPC-A Instance 3.2.2. VPC-B Instance 3.3. VPN 설정 3.3.1. Customer Gateway 생성 3.3.2. Virtual Private Gateway생성 및 라우팅 전파 3.3.3. Site to Site VPN Connection 생성 및 VPN 설정 다운로드 3.4. VPC-B Instance에 VPN 설정 공유 3.4.1. VPN 구성 다운로드 3.4.2. Customer 측 인스턴스 sysctl.conf 수정 3.4.3. OpenSwan 설치 및 환경 변.. 더보기
[Amazon SES] Simple Email Service Sample 0. Table of Content 1. 개발환경 2. Dependency 2.1. AWS SDK for SES Dependency 2.2. SMTP를 이용하기 위한 Dependency 3. Hands on Lab 4. Source Code 1. 개발 환경 STS 3.9.7 Spring Boot 2.2.6 Java 1.8 2. Dependency plugins { id 'org.springframework.boot' version '2.2.6.RELEASE' id 'io.spring.dependency-management' version '1.0.9.RELEASE' id 'java' } group = 'com.jeonghyeong' version = '0.0.1-SNAPSHOT' sourceCompati.. 더보기
[AWS-CLI] aws: command not found 해결법 일반적인 리눅스 터미널에서 awscli를 설치하였을 때, 보통은 제대로 작동하지만, git bash는 윈도우 상에서 리눅스 시스템을 사용하도록 에뮬레이터로 “흉내” 낸 것이기 때문에 경로가 잘 매칭 되지 않는 문제가 빈번히 일어난다. 그 결과로 다음과 같이 제대로 명령어가 작동하지 않는 경우가 종종 일어난다. 리눅스 환경에서도 경로 해석이 잘못 될 경우, 일어나는 에러이다. 위 문제를 해결하기 위하여 가장 먼저 awscli가 어떤 언어 기반으로 실행되는지 찾아보았다. 공식 aws github를 찾아본 결과, python을 사용하는 것을 알 수 있었다. Python기반으로 실행되는 스크립트 임을 알게 되었으니, 이제 실행파일이 어디 있는지 확인해보았다. 일반적으로 pip uninstall 명령어를 사용하면.. 더보기
[AWS] AWS 공식 홈페이지의 Default Limit과 Service Quota의 Default Limit가 다른 이유 1. 의문점 자주 사용하는 AWS Resource에 대해 조사하는 도중 홈페이지에 기술된 EC2 Default Limit과 AWS Service Quota의 내용이 상이하였습니다. 이에 대한 자료가 없어 상이한 내용에 대한 캡처본과 함께 AWS Support Center에 Case Open을 하였습니다. 상이한 내용은 다음과 같습니다. AWS 공식 홈페이지의 EC2 Default Limit AWS Service Quota에서의 EC2 Default Limit (개인 실습 계정 현황) 2. case 답변 본문 답변의 본문은 다음과 같습니다. Hello, I would like to thank you for your patience while we waited for the EC2 Service Team t.. 더보기
[AWS] EKS로 클러스터 구성하기 목차 1. 사전 준비 2. EKS로 클러스터 구성하기 3. Kubectl을 이용해 노드 구성하기 3-1. 노드 마이그레이션 4. helm 설치 5. Auto Scaling Application and Cluster 5-1. HPA 5-2. CA 6. Prometheus 7. Grafana 1. 사전 준비 AWS 가입 후, EKS Hands on Lab을 따라할 IAM계정을 생성하겠습니다. 이 testeks라는 이름을 가진 IAM계정에는 administrator access권한을 주었습니다. (아직 학습이 부족하여 구체적으로 eks를 사용하는데 얼마나 많은 요소가 들어가는지 파악중입니다. 파악되면, 해당 요소만 컨트롤 하는 권한만 정리하여 수록하겠습니다.) 생성한 IAM계정을 통하여 c9를 workspac.. 더보기
[AWS & Kubernetes] Kubernetes와 EKS 1. Introduction 1.1 What is Kubernetes 쿠버네티스는 컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈소스 플랫폼이다. 1주일에 수십억 개의 컨테이너를 생성하는 구글이 내부 배포시스템으로 사용하던 borg를 기반으로 오픈소스 프로젝트를 통해 빠르게 발전하고 있다. 단순한 컨테이너 플랫폼이 아닌 마이크로서비스, 클라우드 플랫폼을 지향하고 컨테이너로 이루어진 것들을 손쉽게 담고 관리할 수 있는 그릇 역할을 합니다. 서버리스, CI/CD, 머신러닝 등 다양한 기능을 쿠버네티스 상에서 이용할 수 있다. Kubernetes가 제공하는 구체적인 항목은 다음과 같다. 1. Service Discovery and Load Balancing Kubernetes는 DNS나 자체 i.. 더보기
가상화와 하이퍼바이저 Virtualization 기존에는 하나의 app이나 task에 하나의 전용서버를 할당하였다. 이렇게 함으로써 app에서 발생하는 문제의 원인을 쉽게 발견 할 수 있었으며, 네트워크 구성이 용이했다. 그러나 이는 서버의 능력 중 극히 적은 능력만을 사용하여 효율성이 떨어지고, 네트워크 규모가 커지고 복잡해짐에 따라 서버가 점유하는 물리적 공간이 커지고 그에 따라 전력 소모도 심해진다. 이를 해결하고 전략을 세우기 위해 물리서버의 최대 처리능력만큼 여러개의 가상머신으로 분할하여 물리서버의 처리 능력을 최대한 활용 할 수 있게 한 것이 (서버) 가상화이다. 가상화를 하게 되면, 원래 os와 가상화한 파티션의 os를 다르게 설정 할 수 있다. 이 때, 상이한 os의 명령 또는 동작을 해석하여 하드웨어에 전달해.. 더보기