9. 컨테이너
마이크로서비스 개요
마이크로서비스
- 각자 잘 정의된 API를 통해 통신한다
- 각 서비스는 독립적으로 배포된다
- 배포 주기 가속화
- 컨테이너 쓰면 훨씬 더 빨리 가능
컨테이너 개요
컨테이너
- 반복 가능
- 독립적 환경
- VM보다 더 빠른 가동, 중단 속도
- 이식성
- 확장 가능
런타임이 포함되어 있다. 애플리케이션의 코드 구성 및 종속성을 하나의 객체로 패키징.
컨테이너와 마이크로서비스
각 마이크로서비스를 컨테이너에 구축할 수 있다. 각 마이크로서비스는 별도의 구성 요소이므로 장애를 더 잘 견딜 수 있다. 컨테이너 하나만 종료하고 다시 올리면 된다.
가상화 및 추상화 수준
- VM마다 개별 OS가 있다 -> 무겁다
- 컨테이너화를 수행하면 각 컨테이너는 시스템의 OS 커널을 공유한다
AWS의 컨테이너
컨테이너 서비스
AWS에서 컨테이너 실행
- 레지스트리
- ECR - 컨테이너를 실행하는 데 필요한 모든 항목이 포함된 컨테이너 이미지 구축
- 오케스트레이션 도구 - 컨테이너 관리
- EKS - 쿠버네티스
- ECS - 쿠버네티스는 모르겠고 AWS가 관리해주는대로 쓰자
- 컨테이너 호스팅
- EC2
- Fargate - 컨테이너 지원을 위해 CPU 및 메모리 리소스를 자동으로 할당하는 서버리스 호스팅 서비스
Amazon ECR
- 관리형 Docker 컨테이너 레지스트리
- 이미지를 ECR로 푸시하면 S3에 암호화 후 저장됨
- 프라이빗, 퍼블릭으로 설정 가능
Amazon ECS 오케스트레이션
- Task를 정의해서 띄운다 (K8S에서는 Pod)
- ECS Task는 하나 이상의 컨테이너 이미지를 사용할 수 있다
- ECS Service는 애플리케이션의 수요를 충족하도록 실행 중인 태스크 수를 조정함
- 애플리케이션을 위한 인프라를 갖춘 ECS 클러스터 생성
Amazon ECS 기능
- 완전관리형
- 서비스 검색
- AWS 통합
- 일반 개발 워크플로 사용
Amazon EKS
- 대규모로 애플리케이션 실행
- 애플리케이션을 원활하게 이전
- 어디서든 실행
- 새로운 기능 추가
AWS Fargate
- 서버 또는 클러스터를 관리할 필요 없이 컨테이너를 실행하는 데 사용할 수 있는 ECS와 EKS를 위한 기술
- VM 클러스터 관리 필요 없음
AWS 컨테이너 서비스 선택
- ECS + Fargate 해두면 관리 거의 안해도 됨