👉 기본적으로 알아야 하고 자주 사용하는 패턴입니다. 면접 준비와 상관 없이 패턴에 익숙해지도록 좀 더 깊게 공부하는 것도 좋을 것 같아요.
👉 예전에 올린 <자주 보는 개발 설계 패턴 19가지> 글도 함께 읽으면 좋을 것 같습니다.
1. API Gateway Pattern
모든 클라이언트 요청에 단일 진입점 역할을 하는 API Gateway는 마이크로서비스 액세스를 단순화하여 클라이언트와 서비스 간의 원활한 커뮤니케이션을 제공한다.
2. Service Discovery Pattern
마이크로서비스의 복잡한 설계를 쉽게 탐색할 수 있도록 도와준다. 서비스 간 원활한 커뮤니케이션을 보장하고 수동 컨피규레이션의 필요성을 줄일 수 있다. 클라이언트 측 디스커버리(client-side discovery)와 서버 측 디스커버리(server-side discovery)라는 두 가지 주요 접근 방식이 수 있다.
3. Circuit Breaker Pattern
서비스 내 실패 모드를 모니터링 하고 장애가 발생한 서비스에 요청이 도달하는 것을 막음으로써 전체 시스템이 붕괴하는 것을 막는다.
4. Load Balancing Pattern
대량의 트래픽이 발생할 수록 서비스간 트래픽을 분산하도록 하는 패턴이다. 특정 서비스만 대부분의 요청을 프로세스하면 성능 저하 및 운영 중단이 발생할 수 있다. 로드 밸런싱에는 round-robin, least connections, and weighted round-robin와 같은 알고리즘이 사용된다.
5. Bulkhead Pattern
서비스와 리소스를 분리하여 특정 서비스에서 장애가 발생해도 전체 시스템이 다운되지 않도록 하는 패턴이다. 이 패턴 구현의 실제 예로는 AWS Lambda 함수 리소스 할당 및 데이터베이스의 커넥션 풀링(connection pooling)이 있다.
6. CQRS Pattern
서비스의 Read와 Write 작업을 구분하여 마이크로서비스의 성능과 확장성을 증가할 수 있는 패턴이다.
7. Event-Driven Architecture Pattern
이벤트를 활용하여 서비스 간 이벤트를 트리거하여 실시간 응답을 지원하고 서비스 간의 느슨한 커플링을 촉진한다. 이벤트를 트리거로 활용함으로써 서비스 간의 직접적인 의존성을 최소화하여 유연성을 높이고 시스템을 보다 쉽게 진화시킬 수 있다.
8. Saga Pattern
분산 트랜잭션을 처리할 수 있는 안정적인 솔루션을 제공하여 서비스의 자율성을 유지하면서 데이터 일관성을 보장하는 패턴이다.
9. Retry Pattern
장애 완화 또는 극복을 위해 실패한 작업을 retry하는 패턴이다. Retry 방법은 최대 재시도 횟수, 재시도 사이의 지연 및 exponential backoff와 같은 요소를 포함해야 한다.
10. Backends for Frontends Pattern (BFF)
각 프런트 엔드에 당 전용 백엔드 서비스를 생성하여 각 플랫폼에 맞는 최적의 성능과 유저 경험을 보장하는 패턴이다.
11. Sidecar Pattern
자율성을 해치지 않고 마이크로서비스에 기능을 추가할 수 있는 설계 패턴이다. 서비스에 추가 구성 요소를 연결해서 핵심 서비스를 변경하지 않고 모듈식 기능을 제공할 수 있도록 한다.
12. Strangler Pattern
모놀리식 아키텍처를 점차적으로 마이크로서비스를 기반으로 하는 아키텍처로 리스크 없이 바꿀 수 있게 하는 설계 패턴이다.
👉 원문 내용을 간단하게 정리했습니다. 도표나 추가 정보가 필요하신 분은 아래 원문을 참조해 주세요.
🪴 함께 읽으면 좋은 글:
자주 보는 개발 설계 패턴 19가지
https://careerly.co.kr/comments/78185
개발자 연봉 두배로 뛰는 면접 준비법
https://careerly.co.kr/comments/85260
면접과 설계에 필요한 분산 시스템의 주요 특성
https://careerly.co.kr/comments/83900