마이크로서비스는 소프트웨어가 잘 정의된 API를 통해 통신하는 소규모의 독립적인 서비스로 구성되어 있는 경우의 소프트웨어 개발을 위한 아키텍처 및 조직적 접근 방식입니다. 이러한 서비스는 독립적인 소규모 팀에서 보유합니다.

마이크로서비스 아키텍처는 애플리케이션의 확장을 용이하게 하고 개발 속도를 앞당겨 혁신을 실현하고 새로운 기능의 출시 시간을 단축할 수 있게 해 줍니다.

모놀리식 아키텍처의 경우 모든 프로세스가 긴밀하게 결합되고 단일 서비스로 실행됩니다. 따라서 애플리케이션의 한 프로세스에 대한 수요가 급증하면 해당 아키텍처 전체를 확장해야 합니다. 코드 베이스가 증가하게 되면 모놀리식 애플리케이션의 기능을 추가하거나 개선하기가 더 복잡해집니다. 그리고 이러한 복잡성으로 인해 실험에 제한을 받고 새로운 아이디어를 구현하기가 어려워집니다. 종속 관계를 이루며 긴밀하게 결합된 많은 프로세스로 인해 단일 프로세스의 실패로 인한 영향이 증가함에 따라 모놀리식 아키텍처는 애플리케이션 가용성에 대한 위험을 가중시킵니다.

마이크로서비스 아키텍처의 경우, 애플리케이션이 독립적인 구성 요소로 구축되어 각 애플리케이션 프로세스가 서비스로 실행됩니다. 이러한 서비스는 경량 API를 사용하여 잘 정의된 인터페이스를 통해 통신합니다. 서비스는 비즈니스 기능을 위해 구축되며 서비스마다 한 가지 기능을 수행합니다. 서비스가 독립적으로 실행되기 때문에 애플리케이션의 특정 기능에 대한 수요를 충족하도록 각각의 서비스를 업데이트, 배포 및 확장할 수 있습니다.

모놀리식과 마이크로서비스 비교

모놀리식 애플리케이션을 마이크로서비스로 분할

마이크로서비스 아키텍처의 각 구성 요소 서비스는 다른 서비스의 기능에 영향을 주지 않으면서 개발, 배포, 운영하고 확장할 수 있습니다. 서비스가 해당 코드 또는 구현을 다른 서비스와 공유할 필요는 없습니다. 개별 구성 요소 간의 통신은 잘 정의된 API를 통해 이루어집니다.

각 서비스는 일련의 기능을 위해 설계되며 특정 문제를 해결하는 데 중점을 둡니다. 개발자가 시간이 지남에 따라 서비스에 더 많은 코드를 제공하여 서비스가 복잡해지면 더 작은 서비스로 분할할 수 있습니다.

마이크로서비스는 해당 서비스를 소유한 독립적인 소규모 팀 조직을 육성하는 역할을 합니다. 팀은 충분한 이해를 바탕으로 하는 소규모 컨텍스트 내에서 활동하며 더 독립적이면서 신속하게 업무를 수행할 수 있습니다. 덕분에 개발 주기 시간이 단축됩니다. 그리고 조직의 집계 처리량 측면에서 큰 이점을 누리게 됩니다.

마이크로서비스의 경우 각 서비스가 지원하는 애플리케이션 기능의 수요를 충족하도록 해당 서비스를 독립적으로 확장할 수 있습니다. 따라서 팀은 필요한 인프라의 규모를 적절히 조절하고, 기능의 비용을 정확하게 측정하고, 서비스의 수요가 급증하는 경우에도 가용성을 유지할 수 있습니다.

마이크로서비스는 지속적 통합 및 지속적 전달을 통해 새로운 아이디어를 손쉽게 시험하고 문제가 발생할 경우 간단히 롤백할 수 있게 해 줍니다. 이처럼 저렴한 실패 비용 덕분에 실험을 진행할 수 있어 더 쉽게 코드를 업데이트하고 새로운 기능의 출시 시간을 앞당길 수 있습니다.

마이크로서비스 아키텍처는 “모든 규모에 부합하는” 접근 방식을 추구하지 않습니다. 팀은 특정한 문제를 해결하는 데 가장 적합한 도구를 자유롭게 선택할 수 있습니다. 따라서 마이크로서비스를 구축하는 팀은 작업별로 가장 적합한 도구를 선택할 수 있습니다.

소프트웨어를 잘 정의된 소규모 모듈로 분할하면 팀이 기능을 여러 용도로 사용할 수 있게 됩니다. 특정 기능을 위해 구축된 서비스를 다른 기능의 빌딩 블록으로 사용할 수 있는 것입니다. 이를 통해 개발자가 코드를 처음부터 작성하지 않고도 새 기능을 생성할 수 있어 애플리케이션이 자체적으로 부트스트랩 작업을 생성할 수 있습니다.

서비스가 독립적이므로 실패에 대한 애플리케이션의 저항성이 증가합니다. 모놀리식 아키텍처에서는 단일 구성 요소가 실패하는 경우 전체 애플리케이션이 실패하게 될 수 있습니다. 마이크로서비스에서는 기능을 저하시키고 전체 애플리케이션을 충돌시키지 않는 방식으로 전체 서비스 실패를 처리합니다.


AWS는 규모, 로드 및 복잡성에 관계없이 모든 애플리케이션 아키텍처를 지원하는 빌딩 블록을 통합했습니다.

마이크로서비스를 위한 처리 성능입니다.

Amazon EMR

Amazon Elastic Container Service

Docker 컨테이너를 지원하는 확장성과 성능이 뛰어난 컨테이너 관리 서비스로서, 서비스를 사용하여 Amazon EC2 인스턴스의 관리형 클러스터에서 애플리케이션을 손쉽게 실행할 수 있습니다.
자세히 알아보기 »

Coursera는 이제 Amazon ECS를 사용하여 리소스 격리 환경에서 소프트웨어 변경 사항을 몇 시간이 아니라 몇 분 만에 배포할 수 있습니다.
자세히 알아보기 »

Amazon EMR

AWS Lambda

AWS Lambda를 사용하면 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행할 수 있습니다. 코드를 업로드하기만 하면, Lambda에서 높은 가용성으로 코드를 실행 및 확장하는 데 필요한 모든 것을 관리합니다.
자세히 알아보기 »

Localytics는 AWS Lambda를 통해 마이크로서비스를 구축하여 해당 개발 팀이 중앙 지원 없이도 사용자 지정 분석을 구축할 수 있도록 했습니다. 자세히 알아보기 »


확장 가능하고 내구성이 뛰어나며 안전한 데이터 스토리지입니다.    

Amazon ElastiCache

Amazon ElastiCache는 더 느린 디스크 기반 데이터베이스에 전적으로 의존하기보다는, 신속하며 관리되는 인 메모리 캐시에서 정보를 검색할 수 있는 기능을 지원해 서비스의 성능을 향상시킵니다. 자세히 알아보기 »

Amazon S3

Amazon S3는 개발자와 IT 팀에 크기와 관계없이 모든 데이터에 대해 안정성, 보안성 및 확장성이 뛰어난 객체 스토리지를 제공합니다. 자세히 알아보기 »

Amazon DynamoDB

규모와 관계없이 10밀리초 미만의 지연 시간이 일관되게 요구되는 모든 애플리케이션을 위한 빠르고 유연성이 뛰어난 완전관리형 NoSQL 데이터베이스 서비스입니다. 자세히 알아보기 »

Amazon RDS

클라우드에서 관계형 데이터베이스를 손쉽게 설정, 운영 및 확장하십시오 Oracle, Microsoft SQL Server, PostgreSQL, MySQL 및 MariaDB를 비롯한 6개의 익숙한 데이터베이스 엔진 중에서 선택할 수 있습니다. 자세히 알아보기 »

Amazon Aurora

고성능 상용 데이터베이스의 속도와 안정성에 오픈 소스 데이터베이스의 간편성과 비용 효율성이 결합된 관계형 데이터베이스 엔진입니다. 같은 하드웨어에서 표준 MySQL을 실행했을 때보다 최대 5배의 처리량을 제공합니다. 자세히 알아보기 »

Remind는 Amazon ECS에서 마이크로서비스에 대해 PaaS를 구축하여 애플리케이션 응답 시간을 200% 줄였습니다. 
자세히 알아보기 »


처리량이 높고 지연 시간이 1밀리초 미만인 네트워킹 서비스입니다.

AWS Cloud Map

AWS Cloud Map은 모든 클라우드 리소스에 대한 서비스 검색입니다. Cloud Map을 사용하면 애플리케이션 리소스의 사용자 지정 이름을 정의하고 이러한 동적으로 변경되는 리소스의 업데이트된 위치를 유지할 수 있습니다.

자세히 알아보기 »

AWS App Mesh

AWS App Mesh를 사용하면 AWS에서 실행 중인 마이크로서비스를 손쉽게 모니터링하고 제어할 수 있습니다. App Mesh는 마이크로서비스의 커뮤니케이션 방식을 표준화하여 사용자에게 엔드 투 엔드 가시성을 제공하고 애플리케이션에 대한 고가용성 보장을 지원합니다.

자세히 알아보기 »

Application Load Balancer

Application Load Balancer는 애플리케이션 계층(레벨 7)에서 HTTP 및 HTTPS 트래픽의 로드 밸런싱을 수행하며, 마이크로서비스와 컨테이너 등 최신 애플리케이션 아키텍처 전달을 위한 고급 요청 라우팅 기능을 제공합니다.

자세히 알아보기 »

Network Load Balancer

Network Load Balancer는 고성능 로드 밸런싱을 통해 네트워크 연결 계층(레벨 4)에서 작동하며 IP 프로토콜 데이터를 기반으로 마이크로서비스로 연결을 라우팅할 수 있게 해 줍니다. 또한 지연 시간을 매우 짧게 유지하면서 초당 수백만 개의 요청을 처리할 수 있습니다.

자세히 알아보기 »

Amazon API Gateway

Amazon API Gateway에서는 API 관리를 위한 포괄적인 플랫폼을 제공합니다. Amazon API Gateway를 통해 수십만 개의 동시 API 호출을 처리하고 트래픽 관리, 권한 부여 및 액세스 제어, 모니터링 및 API 버전 관리를 처리할 수 있습니다.

자세히 알아보기 »

Amazon Route 53

Amazon Route 53는 가용성과 확장성이 뛰어난 클라우드 도메인 이름 시스템(DNS) 웹 서비스로, AWS에서 실행되는 인프라에 요청을 효과적으로 연결합니다. 이 웹 서비스는 마이크로서비스에 대한 IP 상태 확인 및 서비스 검색에 사용할 수 있습니다.

자세히 알아보기 »

Airtime은 AWS에서 실행되는 마이크로서비스로 앱을 다시 설계한 후 지연 시간 없이 더 빠르고 안정적으로 고객에게 소셜 환경을 제공하고 있습니다. 자세히 알아보기 »


프로세스 간 통신을 게시 및 조정합니다.

Amazon Simple Notification Service(Amazon SNS)

Amazon SNS는 마이크로 서비스, 분산 시스템 및 서버 없는 애플리케이션을 쉽게 분리하고 확장할 수 있게 해주는 완전관리형 게시/구독 메시징 서비스입니다.
자세히 알아보기 »

Amazon Simple Queue Service(Amazon SQS)

Amazon SQS는 마이크로서비스, 분산 시스템 및 서버리스 애플리케이션을 쉽게 분리하고 확장할 수 있게 지원하는 완전관리형 메시지 대기열 서비스입니다.
자세히 알아보기 »

Lyft는 AWS를 이용하여 회사의 운영 속도를 높이고 폭발적인 성장을 관리하는 것은 물론, AWS 제품을 활용하여 고객 환경의 모든 요소를 개선하는 100가지가 넘는 마이크로서비스를 지원하고 있습니다. 자세히 알아보기 »


서비스 성능 및 리소스 사용률을 모니터링합니다. 문제 해결 및 최적화를 위해 복잡한 아키텍처에서 추적합니다.

AWS CloudTrail

CloudTrail을 사용하면 인프라에서 계정 활동과 관련된 작업을 기록하고 지속적으로 모니터링하며 보관할 수 있습니다. CloudTrail 이벤트 기록을 통해 보안 분석, 리소스 변경 추적, 문제 해결을 간소화할 수 있습니다. 자세히 알아보기 »

Amazon CloudWatch

Amazon CloudWatch를 사용하여 지표를 수집 및 추적하고, 로그 파일을 수집 및 모니터링하고, 경보를 설정하고, 실행 중인 서비스 및 AWS 리소스의 변경에 자동으로 대응할 수 있습니다.
자세히 알아보기 »

AWS X-Ray

요청이 애플리케이션을 통과함에 따라 요청에 대한 엔드 투 엔드 뷰를 제공하고 애플리케이션의 기본 구성 요소를 맵으로 보여줍니다. 일련의 마이크로서비스가 요청을 함께 처리하는 동안 AWS X-Ray는 로그를 중앙 집중식으로 보여줘 복잡한 상호 작용을 모니터링하고 문제를 해결할 수 있게 해 줍니다. 자세히 알아보기 »

Shippable은 Amazon ECS에서 호스팅되는 마이크로서비스를 이용함에 따라 고객에게 기능을 제공하는 데만 집중할 수 있게 되었을 뿐 아니라, 기능 배포 속도도 주당 1개에서 하루에 여러 개로 늘렸습니다. 자세히 알아보기 »


커밋에서 실행에 이르기까지 코드 수명 주기를 관리합니다.

Amazon Elastic Container Registry(Amazon ECR)

Docker 컨테이너 이미지를 저장, 관리 및 배포하는 데 사용할 수 있는 완전관리형 Docker 컨테이너 레지스트리입니다. Amazon ECR은 Amazon Elastic Container Service(Amazon ECS)와 통합되며, 이를 통해 컨테이너에 대한 개발에서 프로덕션까지의 워크플로를 간소화할 수 있습니다. 자세히 알아보기 »

AWS 개발자 도구

AWS 개발자 도구는 개발자와 IT 운영 전문가가 DevOps를 적용하여 신속하고 안전하게 소프트웨어를 제공할 수 있도록 설계된 서비스 세트입니다. 이러한 서비스를 함께 사용하면 애플리케이션의 소스 코드를 안전하게 저장하고 버전을 제어하며, AWS 또는 온프레미스 환경에서 애플리케이션을 자동으로 구축, 테스트 및 배포할 수 있습니다. 자세히 알아보기 »

Gilt는 클라우드 기반 마이크로서비스 인프라의 속도와 효율성을 활용하기 위해 온프레미스 데이터 센터에서 벗어나 AWS로 이동했습니다.
자세히 알아보기 »