- AWSome Day 온라인 컨퍼런스를 정리한 자료입니다.
Amazon EC2
- 크기 조정 가능한 컴퓨팅 용량
- 컴퓨팅 리소스 완전 제어
- 새로운 서버 인스턴스 확보 및 부팅 시간 단축
- 픽스된 형태로 컴퓨팅 스펙을 제공
- 인스턴스가 운영되는 도중에도 스펙 변경 가능!
가상 머신과 물리적 서버 비교
- EC2 인스턴스를 일회용 리소스로 취급
- EC2 인스턴스를 프로비저닝하고 EC2 인스턴스에 데이터를 저장하지 않는다.
- 모든 정보는 외부에 저장해 EC2 인스턴스를 stateless하게 관리 가능.
- 기능만 하게 되어 인프라를 탄력적으로 확장 축소 가능
- 부하를 CloudWatch로 모니터링해서 Scale up,down,out,in 결정 가능
- 자유로운 실수가 가능
- MongoDB 도입을 위한 PoC를 한다고 하자.
- 온프레미스는 PoC를 위해 새로운 장비 구입해야함.
- 하지만 AWS에서는 추가 리소스를 프로비저닝해 PoC 사용 가능
- 해당 작업 끝나면 서비스 종료하기만 하면 됨.
- 이를 통해 다양한 환경 테스트가 가능.
EC2 자세히

- AMI를 기준으로 인스턴스화 함.
- 운영체제, 앱서버, 애플리케이션과 같이 필요한 소프트웨어 및 AMI 시작 권한, 시작될 때 인스턴스에 연결할 볼륨을 지정하는 블록디바이스 매핑등이 구성된 템플릿.
- AMI에서 원하는 만큼 여러개의 디바이스 실행 가능.
AMI 다운로드 방법
1. AWS 제공 AMI
2. 마켓플레이스에서 제공하는 AMI
3. 사용자가 자체적으로 구성한 AMI
4. 커뮤니티에서 올라오는 AMI
EC2 이점

- 오토 스케일링 활용하면 peek 타임때도 유연하게 대응이 가능..
Amazon EC2 인스턴스 패밀리 및 이름
- 인스턴스 종류가 너무 다양해서 구분 어려움
- 우선 인스턴스 패밀리 타입으로 구분

- 범용 : 균형잡힌 인스턴스의 성능 필요할 때 사용
- 컴퓨팅 최적화 : 고성능 CPU 필요로 할 때
- 메모리 최적화 : 대규모 메모리 제공
- 스토리지 최적화 : 처리량 강점
- 액셀러레이티드 : GPU 성능 강점
EC2 요금
- 온디맨드
- 그냥 뭐 할 필요 없음. 사용한 만큼 나옴
- 컴퓨팅 파워 늘리거나 줄이는거 유연
- 사용된 인스턴스에 대해 지정된 시간당 요금만 내면 됨.
- 예약 인스턴스
- 수요 안정적이고 사용량 예측 가능하면 이거 쓰면 좋음.
- 온디맨드보다 훨 싸다.
- savings plan
- 예약 인스턴스와 달리 최대한의 유연성 제공
- 예약 인스턴스는 다 고정되지만 이건 아님
- 좀 덜 저렴하긴 한데 리전, 인스턴스 패밀리, 사이즈등을 변경할 수 있음.
- 스팟 인스턴스
- 미사용 EC2 인스턴스
- 예비 Amazon EC2 컴퓨팅 요청 가능.
비관리형 서비스와 관리형 서비스 비교
- 비관리형
사용자가 조정, 내결함성, 가용성을 관리
EC2 인스턴스에 데이터베이스 직접 설치하는 등 거의 모든것을 관여하고 제어
- 관리형
RDS 사용하는 것을 예시로 들 수 있음.
데이터베이스 엔진 셋업, 고가용성을 위한 소프트웨어 직접 설치 필요 없어짐.
각각은 장단점 존재. 상황에 맞춰 적용하는 것이 중요
Amazon ECS
관리형 컨테이너 오케스트레이션 서비스
- 컨테이너 실행 조정
- 컨테이너 실행하는 노드 플릿을 유지 관리하고 확장
- 인프라 구축의 복잡성을 제거
추가적으로 Kubernetes도 EKS라는 관리형 서비스로 제공.
ECS 기본 구조

- EC2 인스턴스 클러스터를 우리가 관리
- Amazon ECS등 관리형 서비스를 통해 시간 절약가능했지만 여전히 EC2 컴퓨팅 리소스등을 관리하고 있음.
- 여기서 더 나아갈 수 없을까?
Serverless 컴퓨팅
- 서버를 관리하지 않고 애플리케이션과 서비스를 구축하고 실행
- 프로비저닝, 확장, 관리할 필요가 없음.
- 거의 모든 앱, 백엔드 서비스 구축 가능.
- 사용량에 따라 알아서 조절이 된다.
- 유휴 상태에 대한 비용 지불이 필요 없음.
- 가용성 및 내결함성 내장.
AWS Lambda

- 완전 관리형 컴퓨팅 서비스
- 일정에 따라 또는 이벤트에 대한 응답으로 코드 실행
- ex) Amazon S3 버킷 또는 Amazon DynamoDB 테이블의 데이터 변경
- 사용자는 AWS Lambda가 지원하는 언어(e.g. python, java)중 하나로 코드를 제공하기만 하면 됨.
- Lambda 함수는 코드 관련 종속성 및 구성으로 이루어짐.
- Lambda 함수는 상태 비저장으로 코드 실행
- 상태 비저장이란 Lambda 함수가 호출될 때만 기동되어 작업을 수행하고 그 외에는 기동되어 있지 않다는 것을 의미.
- Lambda 함수가 실행중일 때만 비용 청구.
- 이벤트에 대한 응답으로 Lambda 함수 사용이 가능.
- 이벤트 소스는 이벤트를 게시하고 Lambda 함수는 이벤트를 처리하도록 하는 사용자 지정 코드.
- 이벤트가 생성되면 Lambda 함수가 해당 이벤트에 대한 응답으로 자동 실행하게 됨.
- 사용 사례
