Amazon ECS
Container
- 랩탑과 같은 ALL IN ONE
- 랩탑 / 데스크탑
- 데스크탑 : 컴퓨터와 같이 여러 외부 기기가 필요 (본체, 모니터, 키보드, 마우스 등)
- 랩탑 : 노트북과 같이 사용에 필요한 모든 기기를 내장
- 소프트웨어 어플리케이션을 실행하기 위해 필요한 모든 것을 담은 패키지
- 코드, OS, 설정 파일, 의존 파일(라이브러리 등)
- 대표적인 컨테이너 관리 플랫폼 : Docker, Kubernates(K8s)
- 구조
![](https://velog.velcdn.com/images/ebab_1495/post/8a9119a8-0831-4eb5-91b2-a031dcf65b9c/image.png)
ECS
AWS 설명 : 컨테이너화된 애플리케이션의 손쉬운 배포, 관리 및 조정에 도움이 되는 완전관리형 컨테이너 오케스트레이션 서비스입니다.
- AWS의 컨테이너 오케스트레이션 서비스
- 오케스트레이션 : 컴퓨터 시스템과 애플리케이션, 서비스의 자동화된 구성, 관리, 조정
을 의미
- 컨테이너를 실행하고 배포하고 관리
- 두 가지 모드
- EC2 : EC2를 활용한 컨테이너 서비스
- Fargate : Serverless 컨테이너 서비스
- AWS Elastic Kubernates Service(EKS)
- AWS가 제공하는 Kubernates를 활용한 컨테이너 관리 시스템
- 다른 AWS 서비스와 연동 가능
- ECR(Elastic Container Registry) : AWS의 Docker Hub
- ALB, CloudWatch
- ECS EC2 vs Fargate 차이
![](https://velog.velcdn.com/images/ebab_1495/post/04108460-7290-499f-bc6f-27a497603f66/image.png)
AWS Elastic Beanstalk
AWS 설명 : AWS Elastic Beanstalk는 Java, .NET, PHP,Node.js, Python, Ruby, Go, Docker를 사용하여 Apache, Nginx, Passenger, IIS와 같은 친숙한 서버에서 개발된 웹 애플리케이션 및 서비스를 간편하게 배포하고 조정할 수 있는 서비스입니다.
- 인프라의 걱정없이 웹 어플리케이션 / 서비스를 배포, 운영하는 서비스 (PaaS)
- 주 역할
- 인프라 프로비전 (EC2, RDS, S3, Auto Scaling, ELB 등)
- 어플리케이션 스택의 관리(OS 패칭, 업데이트 등)
- 모니터링 및 Health Check
- 지원 언어 : Java, PHP, Python ,Ruby, Go, .NET, Node.js
- Apache Tomcat, Docker 웹 어플리케이션 지원
- 주로 세밀한 설정보다 빠르고 간단한 어플리케이션 배포에 사용
사용 방법
Elastic Beanstalk → 시작하기
- 플랫폼 선택 : Docker, Python, Node.js 등등
- 플랫폼 브런치 : 플랫폼 별로 서비스하는 이미지 선택
- 애플리케이션 코드 : 백엔드를 만들어뒀다면 로컬 파일을 올리기 가능
리소스 정리
- 어플리케이션 작업 → 삭제
- S3는 삭제 방지가 되어 자동 삭제 x. 수동 삭제하기
- S3 → elastic beanstalk 검색 → 버킷 클릭
- 버킷 정책 삭제
- 객체 삭제
- 버킷 삭제
Amazon Lightsail
AWS 설명 : Amazon Lightsail은 사용하기 쉬운 가상 프라이빗 서버(VPS) 인스턴스, 컨테이너, 스토리지, DB 등을 효율적인 월별 가격으로 제공합니다.
- 간단하게 웹 어플리케이션 및 웹사이트를 구축하고 배포할 수 있는 서비스
- 클라우드 환경에 익숙하지 않은 사용자를 위한 서비스
- 사용 요금 예측 가능
- 사용 사례 : 간단한 (웹 사이트, 웹 어플리케이션, 백엔드 서버, 컨테이너 서버)
사용 방법
- Lightsail → 인스턴스 생성 → 서비스 선택
Amazon Lambda
AWS 설명 : AWS Lambda는 서버를 프로비저닝 또는 관리하지 않고도 실제로 모든 유형의 애플리케이션 또는 백엔드 서비스에 대한 코드를 실행할 수 있는 이벤트 중심의 서버리스 컴퓨팅 서비스입니다. 200개가 넘는 AWS 서비스와 서비스형 소프트웨어(SaaS) 애플리케이션에서 Lambda를 트리거할 수 있으면 사용한 만큼만 지불하면 됩니다.
- AWS의 Serverless 컴퓨팅 서비스
- Serverless 서비스
- 서버의 관리와 프로비전 없이 코드를 실행할 수 있음
- 사용한 만큼만 비용 지불
- 고가용성과 장애 내구성이 확보되어 있음
- 빠르게 배포하고 업데이트 가능
- Serverless 환경을 잘 활용할 수 있는 아키텍쳐가 필요
- 다양한 AWS 서비스에서 Lambda를 활용
- 다양한 언어 지원
- Java, Python ,Ruby, Go, Node.js, C#
- 저렴한 가격 : 처음 100만건 무료, 이후 100만건당 $0.2 (300~400원)
Lambda 2가지 호출방법
Event 기반
![](https://velog.velcdn.com/images/ebab_1495/post/ab5e9d33-5287-4233-90df-b453fb99c483/image.png)
- 새로운 앱을 추가할 때 주문 앱을 수정할 필요가 없음
- 이벤트 특성
- 명령이 아닌 관찰한 내용에 집중
- 명령 : 생성 주체가 대상의 행동에 대해 관심을 가지고 회신을 기다림
- 이벤트 : 생성 주체는 대상의 행동에 관심이 없음
- 차를 주체라 하면, 교통 경찰의 신호 → 명령 / 신호등 → 이벤트
- 구성 요소
- 사건의 내용
- 사건의 발생 시간 및 주체
- 불변성 : 과거에 생성된 이벤트는 변경될 수 없음을 보장
- 구조
![](https://velog.velcdn.com/images/ebab_1495/post/27495716-0e3e-493f-9abd-fc72c6c3b574/image.png)
AWS의 다른 서비스 앱에서 직접 or API Gateway를 통한 호출
사용 방법
- IAM → 역할 → 역할 만들기
- 사용 사례 : Lambda
- 권한 정책 : AmazonS3FullAccess, CloudWatchFullAccess(처리 로그를 위해)
- Lambda → 함수 → 함수 생성
- 런타임 : 알아서
- 실행 역할 : 기존 역할 사용 → IAM에서 생성한 역할 선택
- 런타임 환경에 맞는 코드 업로드
- S3 버킷 선택 → 이벤트 알림 생성
- 접두사 : images/ (해당 폴더에 이벤트가 발생 시 알림)
- 대상 : Lambda 함수
- Lambda 함수 : 생성한 람다 함수 선택
- S3 버킷에서 images 폴더 생성 후 이벤트 처리 확인
Amazon WorkSpaces
AWS 설명 : 사용자를 위한 가상의 클라우드 기반 Microsfot Windows 또는 Amazon Linux Desktop을 프로비저닝할 수 있습니다.
- AWS의 가상 클라우드 기반 데스크톱
- 지속적인 데스크탑 환경 제공
- 원하는 하드웨어 설정과 소프트웨어 설정에 따라 데스크톱 컴퓨터 구성 가능
- 보유한 애플리케이션 라이센스를 사용하거나 마켓플레이스 이용 가능
- 보안 : MFA 사용 가능, IP 제한 가능
AWS Batch
AWS 설명 : AWS Batch를 사용하면 개발자, 과학자 및 엔지니어가 AWS에서 수 많은 배치 컴퓨팅 작업을 효율적으로 손쉽게 할 수 있습니다. AWS Batch는 제출된 배치 작업의 볼륨 및 특정 리소스 요구 사항에 따라 최적의 수량 및 유형의 컴퓨팅 리소스(ex. CPU or 메모리 최적화 인스턴스)를 동적으로 프로비저닝 합니다.
- 대규모의 워크로드를 작은 단위로 나누어서 작업해주는 서비스
- 워크로드를 처리하는 리소스의 프로비전을 계획/예약/실행
- AWS Fargate, Amazon EC2, 스팟 인스턴스 등
- 완전 관리형
- 설치, 관리 필요가 없음
- 다른 AWS 서비스와 연동 가능
- ex. S3 DynamoDB 등과 같은 데이터스터에서 데이터를 가져오기
Amazon Athena
AWS 설명 : 표준 SQL을 사용해 Amazon S3에 저장된 데이터를 간편하게 분석할 수 있는 대화식 쿼리 서비스입니다. Athena는 서버리스 서비스이므로 관리할 인프라가 없으며 실행한 쿼리에 대해서만 비용을 지불하면 됩니다.
- 인터렉티브 쿼리를 통해 S3의 데이터를 조회할 수 있는 서비스
- 별도의 프로비저닝 혹은 서버 없이 동작
- 사용 사례
- 여러 로그 파일이 저장된 S3에서 필요한 데이터를 조회
- 정형화된 메타데이터 혹은 저장데이터를 조회
- 이벤트 데이터에서 필요한 정보를 추출(A/B 테스트) 등