마이크로서비스를 위한 디자인 패턴과 원칙 Top 10

By | 2021년 9월 27일
Table of Contents

마이크로서비스를 위한 디자인 패턴과 원칙 Top 10

참조

배달의민족 마이크로서비스 여행기 매우 추천!!

마이크로 서비스를 위한 디자인 패턴과 설계 원칙을 설명합니다.

마이크로 서비스를 구성하지 않는다고 하더라도,
여기서 설명하는 디자인패턴과 원칙을 적용하면,
SPOF 라던가 부하분산을 효율적으로 할 수 있는 설계를 할 수 있습니다.

1. Database per Microservice

Single Main Database 는 SPOF 로 작동하며,
부하가 집중되어 매우 위험한 패턴입니다.

서비스 단위로 Database 를 분리하여,
장애가 확산되는 것을 막을 수 있습니다.

예를 들어, TV 에 광고를 해서 이벤트 서비스가 부하를 받아 장애가 발생한 상황입니다.
Single Main Database 라면 이벤트 서비스만 장애를 받는게 아니라,
주문입력까지 장애가 확산될 것입니다.

2. Event Sourcing

서비스를 분리하여도, 타 서비스의 API 를 직접 호출하게 되면,
여전히 하나의 서비스 장애 또는 지연이 타 서비스에 전파되게 됩니다.

Kafka 등과 같은 Queue 시스템에 이벤트를 저장하고,
타 서비스는 Queue 에 저장된 이벤트를 가져와 업데이트하면,
하나의 서비스의 장애가 타 서비스로 전파되지 않습니다.

3. CQRS

CQRSCommand Query Segmentation 을 의미합니다.

Commands 와 Queries 를 분리하는 것을 의미하며,
Insert/Update/Delete 와 Read 를 분리합니다.

복잡도를 줄일 수 있지만, 캐시를 어떻게 설계할지 고민이 필요합니다.

4. Saga

서비스간 트랜젝션이 필요한 경우,
더 이상 Database 에서 제공하던 트랜젝션을 사용할 수 없고,
Application 에서 트랜젝션을 수행해야 합니다.

주문 서비스 / 쿠폰 서비스 / 포인트 서비스 가 분리되어 있는 경우,
주문 발생시 쿠폰서비스 및 포인트서비스에 이벤트를 발생시키고,
모든 서비스가 성공하면 주문서비스를 완료하고,
쿠폰 또는 포인트 서비스가 실패하면,
주문 서비스에서 모든 서비스에 실패 이벤트를 전송하는 방식입니다.

5. BFF

6. API Gateway

7. Strangler

8. Circuit Breaker

9. Externalized Configuration

10. Consumer-Driven Contract Tracing

Category: Web

답글 남기기