목차
1. MSA (MicroService Architecture)
MSA (MicroService Architecture) 는 소프트웨어 개발 기법의 하나이다.
MSA 는 하나의 큰 어플리케이션(Monolithic Application) 을 여러개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처이다.
- 자체 프로세스에서 실행이 되고 느슨한 결합 (loosely coupled) 구조로 만들어진다.
- 서비스별로 각기 다른 언어 사용 가능 / DB 사용 가능(각 서비스는 api로 추상화)
2. EDA (Event Driven Architecture)
- Event Driven Architecture 는 분산 시스템에서 비동기 통신 방식으로 이벤트를 발행/구독하는 아키텍처 이다.
- 분산된 시스템간에 사용될 수 있는 아키텍처로, 이벤트를 생성(발행) 하고 발행된 이벤트를 수신자에게 전송하는 구조이다.
- Queue처리 방식으로는 대표적으로 ActiveMQ, RabbitMQ , AWS SQS 가 있다.
- Event Broker 로는 Apache Kafka 가 대중적으로 쓰인다.
EDM : Event Driven Architecture를 적용한 MicroService
3. 동기 통신, 비동기 통신 방식 비교
요청·응답 모델(Request-Response) vs 발행 - 구독(Pub-Sub)
동기 통신: (RESTful API를 비롯한) API를 통한 요청-응답 방식(peer to peer)
- 요청 체인이 길어지면 장애 전파 (Fault Spread) 의 위험성이 있다.
- 동기 통신이기 때문에 응답 서비스가 항상 떠있어야한다.
- 요청자는 응답자의 주소를 알고 있어야 통신이 가능하다.
비동기 통신: Event Channel(Message Broker, Kafka)를 통한 pub/sub 방식
- 이벤트 게시자는 구독자의 주소를 몰라도 된다.
- 이벤트를 수신했는지 여부를 파악하지 않아도 되는 Non-Blocking 모델이다.
- 이벤트 수신자의 서비스가 항상 떠있지 않아도 게시자는 메시지를 발송할 수 있다.
- 이로 인해 장애가 격리 (Fault Isolation) 된다.
- 각 MicroService간 느슨한 결합도(Loosely Coupled) 유지 가능
EDM (Event Driven MicroService) 에서 발생한 이벤트는 이벤트 스토어에 저장(이벤트 로그)
Transaction Management : Retry, Rollback (보상 Transaction)
'슬슬의 공부' 카테고리의 다른 글
[프로그래머스] 카펫 (0) | 2023.01.24 |
---|---|
[프로그래머스] 분수의 덧셈 (0) | 2023.01.24 |
[React] React JS/Next.js 템플릿 디자인 적용 (0) | 2023.01.17 |
Blocking / Non-blocking / Sync / Async (0) | 2023.01.16 |
쿠키 / 세션 인증 취약점 (0) | 2021.03.18 |