Amazon ECS/ECR
마이크로서비스 아키텍쳐 : 마이크로서비스는 소프트웨어가 잘 정의된 API를 통해 통신하는 소규모의 독립적인 서비스로 구성되어 있는 경우의 소프트웨어 개발을 위한 아키텍처 및 조직적 접근 방식입니다. 마이크로서비스 아키텍처는 애플리케이션의 확장을 용이하게 하고 개발 속도를 앞당겨 혁신을 실현하고 새로운 기능의 출시 시간을 단축할 수 있게 해 줍니다.
모놀리식 아키텍처 vs 마이크로서비스 아키텍처
모놀리식 아키텍처의 경우 모든 프로세스가 긴밀하게 결합되고 단일 서비스로 실행됩니다. 따라서 애플리케이션의 한 프로세스에 대한 수요가 급증하면 해당 아키텍처 전체를 확장해야 합니다. 그래서 새로운 아이디어를 구현하기가 어려워지고 긴밀하게 결합된 프로세스로 인해 단일 프로세스의 실패로 인한 영향이 증가하여 가용성에 대한 위험이 있습니다.
마이크로서비스 아키텍처의 경우, 애플리케이션이 독립적인 구성 요소로 구축되어 각 애플리케이션 프로세스가 서비스로 실행됩니다. 이러한 서비스는 경량 API를 사용하여 잘 정의된 인터페이스를 통해 통신합니다. 서비스들이 독립적으로 실행되어 각 서비스를 업데이트, 배포 및 확장 할 수 있습니다.
마이크로서비스 아키텍쳐의 이점 :
- 빠른 개발 속도 : 개발 언어 선택의 자유로움, 서비스 팀의 역량만으로 가능
- 빠른 배포 속도 및 병렬 배포 : 각 마이크로서비스간 독립된 배포 파이프라인 (CI/CD)
- Devops 팀과 통합된 운영 : 서비스에 대한 Ownership
- 확장성, 가용성 : 마이크로서비스 특성에 맞는 확장성/가용성 설계
- 비즈니스 도메인과 밀접하게 연결 : Lean cycle
모든 서비스들에 적용되는 공통 요소들 :
- 서비스 등록 및 제거 (Registration / deregistration)
- 서비스 검색 (discovery) 및 가용성 관리
- 서비스 메타데이터 관리
- 서비스 버전 관리
- 서비스 별 cache 관리
- 빠르고 효율적인 배포 환경 관리
- 자동화된 관리 및 모니터링
모든 마이크로서비스는 :
- 탄력적 (elastic)이어야 함
- 단위 리소스의 장애를 견디어야 함 (resilient)
- 통일된 API 인터페이스를 가져야 함 (Composable)
- 작게 유지되어야 함 (Minimal)
- 다른 서비스들과는 독립적이어야 함 (Complete)
Amazon EC2 Container Service : 별도의 어플리케이션이 필요 없는 컨테이너 운영 매니지드 서비스
- 모든 규모의 컨테이너 관리
- 유연한 컨테이너 배치 기능
- AWS 에서 플랫폼으로 통합
Amazon ECS 구성 요소
- 클러스터 : 작업이 실행되는 EC2 인스턴스의 함대
- 작업 정의 (task definitions) : 작업에 대한 컨테이너 및 환경의 정의
- 작업 (Task) : 인스턴스에서 실행되는 실제 컨테이너 작업
- 클러스터 관리 엔진 : 클러스터 리소스 및 작업 상태 관리
- 스케줄러 : 클러스터 상태를 고려한 작업배치
- 에이전트 : EC2 인스턴스 및 매니저와 통신
ECS 설정 방법 :
ECS 구성 요소 : 서비스
- 작업 정의와 작업 개수를 기반으로 클러스터 내 서비스 생성
- 설정한 작업 개수로 컨테이너 이상 시 자동 복구
- ELB을 통한 컨테이너 부하 분산 설정 가능
- Auto Scaling 설정 가능
ECS : 스케줄링 – 컨테이너 배치
컨테이너 배치 전략
Amazon ECS : 모니터링 로깅 – ECS 메트릭
- 2개 Dimensions
- Clustername
- Servicename
- 4개 지표
- CPUReservation
- MemoryReservation
- CPUUtilization
- MemoryUtilization
Reservation : 클러스터 인스턴스의 task들이 예약한 CPU, 메모리의 백분율
Utilization : 클러스터 인스턴스의 task들이 사용한 CPU, 메모리의 백분율
Amazon ECS : 모니터링 로깅 – Cloudwatch logs를 활용한 로그 처리
Amazon EC2 Container Registry (ECR)
보안
- IAM 리소스 기반 정책 활용
- 전송 및 저장시 이미지 암호화 (HTTPS, SSE)
손쉬운 이미지 관리 및 배포
- ECS와 통합
- 독립적인 서비스
- Docker CLI와 통합
- 관리 콘솔 & AWS CLI를 통한 제어
가용성 & 성능
- S3 기반
- Regional Endpoints
- 수백 건의 동시 Pull 처리
'AWS' 카테고리의 다른 글
DevOps Day 31 (4.18) AWS_도메인 연결과 CDN 및 HTTPS 적용 Sprint (0) | 2023.04.20 |
---|---|
DevOps Day 31 (4.18) AWS_보안 (0) | 2023.04.20 |
DevOps Day 31 (4.18) AWS_서비스 노출 (0) | 2023.04.20 |
DevOps Day 31 (4.18) AWS_수평확장 (0) | 2023.04.20 |
DevOps Day 30 (4.17) AWS_Sprint 3 Tier 아키텍처 배포 (2) | 2023.04.18 |