AWS에서 마이크로서비스 구현
게시 날짜: 2021년 11월 9일(문서 이력 및 기여자)
요약
마이크로서비스는 배포 주기를 단축하고 혁신 및 책임 의식을 강화하며, 소프트웨어 애플리케이션의 유지 관리 및 확장성을 개선하며, 팀이 서로 독립적으로 일할 수 있도록 지원하는 애자일 접근 방식을 사용하여 소프트웨어 및 서비스를 제공하는 조직을 확장하기 위해 생성된 소프트웨어 개발에 대한 아키텍처 및 조직적 접근 방식입니다. 마이크로서비스 접근 방식을 사용할 경우 소프트웨어는 독립적으로 배포 가능한 정의가 잘된 애플리케이션 프로그래밍 인터페이스(API)를 통해 통신하는 여러 개의 작은 서비스로 구성됩니다. 이러한 서비스는 자율적인 소규모 팀에서 소유하게 됩니다. 이러한 애자일 접근 방식은 조직을 성공적으로 확장하는 데에서 핵심적인 역할을 합니다.
AWS 고객이 마이크로서비스를 구축할 때 API 기반, 이벤트 기반 및 데이터 스트리밍이라는 세 가지 공통 패턴이 관찰되었습니다. 본 백서에서는 세 가지 방식을 모두 소개하고, 마이크로서비스의 공통적인 특징을 알아보고, 마이크로서비스를 구축하는 데 해결해야 할 주요 과제를 제품 팀이 Amazon Web Services(AWS)를 사용하여 어떻게 해결할 수 있는지를 설명합니다.
본 백서에 설명된 데이터 스토어, 비동기 통신 및 서비스 검색과 같은 다양한 주제의 특성이 다소 영향을 주기 때문에 아키텍처를 선택하기 전에 제공된 지침과 사용자별 애플리케이션의 특정 요구 사항 및 사용 사례를 함께 고려하는 것이 좋습니다.
소개
마이크로서비스 아키텍처는 소프트웨어 엔지니어링 분야에서 새로 등장한 개념이 아니라 이미 성공 사례를 통해 검증된 다음과 같은 다양한 개념의 조합입니다.
-
애자일 소프트웨어 개발
-
서비스 중심 아키텍처
-
API 위주 디자인
-
지속적 통합 및 지속적 전달(CI/CD)
마이크로서비스에는 Twelve-Factor App
본 백서에서는 먼저 확장성과 내결함성이 뛰어난 마이크로서비스 아키텍처(사용자 인터페이스, 마이크로서비스 구현 및 데이터 스토어)의 다양한 측면을 설명하고 컨테이너 기술을 활용하여 AWS를 기반으로 마이크로서비스를 구축하는 방법을 알아봅니다. 그런 다음 운영의 복잡성을 줄이기 위해 일반적인 서버리스 마이크로서비스 아키텍처를 구현하는 데 적합한 AWS 서비스를 추천합니다.
서버리스란 다음을 원칙으로 하는 운영 모델이라고 정의할 수 있습니다.
-
프로비저닝 또는 관리할 인프라가 없음
-
소비 단위를 기준으로 자동 확장
-
가치에 대한 비용 지불 결제 모델
-
기본적으로 보장되는 가용성 및 내결함성
마지막으로 본 백서에서는 전반적인 시스템을 살펴보고 분산 모니터링과 감사, 데이터 일관성, 비동기식 통신 등의 마이크로서비스 아키텍처 서비스 간의 기능을 설명합니다.
본 백서는 AWS 클라우드에서 실행되는 워크로드만 집중적으로 다룹니다. 하이브리드 시나리오나 마이그레이션 전략은 다루지 않습니다. 마이그레이션에 대한 자세한 내용은 컨테이너 마이그레이션 방법론