Introduction to Microservices | NGINX
Microservices are currently getting a lot of attention. This blog post is the first in a 7-part series about designing, building, & deploying microservices.
www.nginx.com
1. MicroService
- 애플리케이션을 상호 연결된 소규모 서비스 집합으로 분할하는 것을 말한다. 각 서비스를 API 또는 메세지를 통해서 상호작용하여 비즈니스를 구축한다.
- 서비스가 각각의 프로세스로 분리되기 때문에 배포가 더욱 쉬워진다.
- 별도의 스키마로 관리하여 느슨한 결합을 보장한다.

2. 모놀로식 방식의 장점
- 테스트하기 쉽다. 엔드투엔드 테스트를 구현할 수 있다.
- 배포가 간단하다. 빌드 파일을 애플리케이션을 서버에 복사하기만 하면 된다.
3. 모놀로식의 단점
- 애플리케이션의 복잡해질 경우, 로직의 복잡도가 높아져 유지보수가 어렵다. 또한 크기가 커질 경우 개발자가 이해하기 힘들어 테스트 코드 대신 수동 테스트를 할 가능성이 높아진다.
- 애플리케이션이 커지면 개발 속도가 느려져 생산성이 저하된다.
- 지속적인 배포에 장애가 발생한다. 변경 내용이 생길 경우 전체 애플리케이션을 재배포해야 해서 작업을 수행하기 매우 어렵다.
- 동일한 프로세스 내에 실행되기 때문에 버그가 발생할 경우 전체 프로세스가 중단되어 가용성이 낮아진다.
- 모놀로식 애플리케이션이 비대해질수록 확장하기 어렵고 개발과 배포가 불가하다.
4. MSA 의 장점
- 복잡성 문제를 해결한다. 거대한 모노로식을 작은 서비스로 분해하여 개별 서비스를 개발하는 속도가 훨씬 빨라지고 이해와 유지 관리가 쉬워진다.
- 각 서비스를 해당 서비스에 집중하는 팀이 독립적으로 개발할 수 있게 한다.
- 독립적으로 배포를 할 수 있는 장점이 있다.
5. MSA 의 단점
- 마이크로서비스 애플리케이션이 분산 시스템으로 생기는 복잡성이다. 요청 대상의 속도가 느리거나 사용할 수 없으므로 부분적인 장애를 처리하는 코드도 작성해야 한다.
- 서로 다른 서비스에서 소유한 여러 데이터베이스를 업데이트해야 하므로 분산 트랜잭션이 필요하다.
- 테스트 작성을 위해서는 최소한 해당 서비스에 대한 스텁을 구성해야 한다.
- 여러 서비스를 통해 변경 사항을 구현해야 하기 때문에 배포 계획을 신중히 조율해야 한다.
'architecture' 카테고리의 다른 글
[데이터 중심 애플리케이션 설계] 분산 시스템의 골칫거리 (1) | 2024.06.08 |
---|---|
[가상 면접 사례로 배우는 대규모 시스템 설계 기초 2] 호텔 예약 시스템 (0) | 2024.05.21 |
[가상 면접 사례로 배우는 대규모 시스템 설계 기초 2] 광고 클릭 이벤트 집계 (1) | 2024.05.11 |
[가상 면접 사례로 배우는 대규모 시스템 설계 기초 2] 지표 모니터링 및 경보 시스템 (0) | 2024.05.04 |
[가상 면접 사례로 배우는 대규모 시스템 설계 기초 2] 분산 메시지 큐 설계 (0) | 2024.04.29 |
Introduction to Microservices | NGINX
Microservices are currently getting a lot of attention. This blog post is the first in a 7-part series about designing, building, & deploying microservices.
www.nginx.com
1. MicroService
- 애플리케이션을 상호 연결된 소규모 서비스 집합으로 분할하는 것을 말한다. 각 서비스를 API 또는 메세지를 통해서 상호작용하여 비즈니스를 구축한다.
- 서비스가 각각의 프로세스로 분리되기 때문에 배포가 더욱 쉬워진다.
- 별도의 스키마로 관리하여 느슨한 결합을 보장한다.

2. 모놀로식 방식의 장점
- 테스트하기 쉽다. 엔드투엔드 테스트를 구현할 수 있다.
- 배포가 간단하다. 빌드 파일을 애플리케이션을 서버에 복사하기만 하면 된다.
3. 모놀로식의 단점
- 애플리케이션의 복잡해질 경우, 로직의 복잡도가 높아져 유지보수가 어렵다. 또한 크기가 커질 경우 개발자가 이해하기 힘들어 테스트 코드 대신 수동 테스트를 할 가능성이 높아진다.
- 애플리케이션이 커지면 개발 속도가 느려져 생산성이 저하된다.
- 지속적인 배포에 장애가 발생한다. 변경 내용이 생길 경우 전체 애플리케이션을 재배포해야 해서 작업을 수행하기 매우 어렵다.
- 동일한 프로세스 내에 실행되기 때문에 버그가 발생할 경우 전체 프로세스가 중단되어 가용성이 낮아진다.
- 모놀로식 애플리케이션이 비대해질수록 확장하기 어렵고 개발과 배포가 불가하다.
4. MSA 의 장점
- 복잡성 문제를 해결한다. 거대한 모노로식을 작은 서비스로 분해하여 개별 서비스를 개발하는 속도가 훨씬 빨라지고 이해와 유지 관리가 쉬워진다.
- 각 서비스를 해당 서비스에 집중하는 팀이 독립적으로 개발할 수 있게 한다.
- 독립적으로 배포를 할 수 있는 장점이 있다.
5. MSA 의 단점
- 마이크로서비스 애플리케이션이 분산 시스템으로 생기는 복잡성이다. 요청 대상의 속도가 느리거나 사용할 수 없으므로 부분적인 장애를 처리하는 코드도 작성해야 한다.
- 서로 다른 서비스에서 소유한 여러 데이터베이스를 업데이트해야 하므로 분산 트랜잭션이 필요하다.
- 테스트 작성을 위해서는 최소한 해당 서비스에 대한 스텁을 구성해야 한다.
- 여러 서비스를 통해 변경 사항을 구현해야 하기 때문에 배포 계획을 신중히 조율해야 한다.
'architecture' 카테고리의 다른 글
[데이터 중심 애플리케이션 설계] 분산 시스템의 골칫거리 (1) | 2024.06.08 |
---|---|
[가상 면접 사례로 배우는 대규모 시스템 설계 기초 2] 호텔 예약 시스템 (0) | 2024.05.21 |
[가상 면접 사례로 배우는 대규모 시스템 설계 기초 2] 광고 클릭 이벤트 집계 (1) | 2024.05.11 |
[가상 면접 사례로 배우는 대규모 시스템 설계 기초 2] 지표 모니터링 및 경보 시스템 (0) | 2024.05.04 |
[가상 면접 사례로 배우는 대규모 시스템 설계 기초 2] 분산 메시지 큐 설계 (0) | 2024.04.29 |