MSA
MSA 이점
- 빠른 개발 속도: 개발 언어 선택의 자유, 서비스 팀의 역량만으로 가능
- 빠른 배포 속도 및 병렬 배포: 각 마이크로서비스간 독립된 배포 파이프라인
- DevOps팀과 통합된 운영: 서비스에 대한 Ownership!
- 확장성, 가용성: 마이크로서비스 특성에 맞는 확장성/가용성 설계
- 비즈니스 도메인과 밀접하게 연결: Lean Cycle
MSA 공통 구성 요소
- 모든 서비스의 공통 요소:
- 서비스 등록 및 제거 (Registration / Deregistration)
- 서비스 검색 (Discovery) 및 가용성 관리 (Healthiness)
- 서비스 메타데이터 관리 (Oauth, ...)
- 서비스 버전 관리
- 서비스 별 cache 관리
- 빠르고 효율적인 배포환경 관리
- 자동화된 관리 및 모니터링
설계 고려사항
- Elastic: 탄력적이어야 함 (다른 서비스들과 무관한 스케일업/다운)
- Resilient: 단위 리소스의 장애를 견디어야 함
- Composable: 통일된 API 인터페이스를 가져야함
- Minimal: 작게 유지되어야 함
- Complete: 다른 서비스들과 독립적이어야 함
구성요소
Client >> Gateway(Microservices API) >> Discovery >> Business Domain >> Data Store
구성요소 별 AWS 서비스
Gateway
- AWS API Gateway
Discovery
- Elastic Load Balancing
Business Domain
- AWS Lambda
- AWS Elkastic Beanstalk
- AWS ECS
DataStore
- AWS RDS
DevOps 관련 기능
- AWS CodePipeline: 전체적인 devops pipline 오케스트레이션
- AWS CodeBuild: 코드 빌드 및 이미지 빌드
- AWS CopeDeploy: EC2 instance나 Beanstalk에 배포 지원
- AWS CodeStar: 프로젝트 관리
- AWS X-Ray: 성능 확인
댓글