An Analysis and Empirical Study of Container Networks 논문 리뷰를 하던 중 Introduction에서 Event Driven MicroService라는 용어가 나와 이에 대해 알아보기로 하였다.
MicroService Architecture란?
Event Driven MicroService를 이해하기 위해서는 우선 MicroService Architecture가 무엇인지 부터 알아야한다.
구글 클라우드에 의하면 마이크로서비스 아키텍쳐의 정의는 다음과 같다.
마이크로서비스 아키텍처는 애플리케이션이 서비스 모음으로 개발되는 애플리케이션 아키텍처의 한 유형입니다. 또한 마이크로서비스 아키텍처 다이어그램과 서비스를 독립적으로 개발, 배포, 유지관리할 수 있는 프레임워크를 제공합니다.
쉽게 설명을 하자면 "하나의 큰 애플리케이션을 여러 개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처"로 각각의 작은 어플리케이션들은 Rest로 통신을 한다.
MSA는 도커, 쿠버네티스 등과 같이 모듈형으로 작동을 하기에, 조합이 괜찮았고 이로 인해, 넷플릭스,아마존과 같은 빅테크들이 사용중이라고 한다.
MicroService Architecture의 문제점들?
Microservice Architecture에 존재하는 장점들이 분명하지만, 이에 걸맞은 문제점들도 존재한다.
Monolithic Architecture와는 다르게 하나의 큰 어플리케이션을 작은 애플리케이션을 쪼개기 때문에, 복잡성이 증가하고, 어플리케이션 간의 통신과정에서 지연, 네트워크 장애 등 각종 오버헤드가 발생한다.
이외에도 쪼개진 작은 어플리케이션들은 자체 데이터베이스를 유지해야 하는데, 이를 일관되게 유지하는데 드는 리소스양이 적지 않다.
Event Driven MicroService
rest로 동기 통신을 하던 전통적인 microservice와 달리 Event Driven MicroService는 비동기 통신을 한다.
이벤트가 발생되면, Event Producer는 해당 이벤트를 필요로 하는 Consumer들에게 엑세스를 허용하는 발행-구독(Pub-Sub) 메시지 모델을 사용한다.
기존의 동기적인 Request-Response 모델은 EndPoint 주소를 알아야 하기에 서비스가 복잡하게 연결되어 있고, 동기 통신이기에 응답 서비스가 항상 떠 있어야 한다.
반면 Pub-Sub 모델은 비동기 통신에 broadcasting이 가능하므로, 수신자가 나중에 메시지를 확인 할 수 있으며, 수신 여부를 파악해도 되지 않는 Non Blocking model이다.(Callee의 작업과 무관하게 Caller가 작업을 수행 할 수 있음)
참고 자료
https://www.ciokorea.com/news/300943
https://www.samsungsds.com/kr/insights/msa_architecture_edm.html
'System Software' 카테고리의 다른 글
python-iperf3 Ubuntu 20.04 환경에서 구동하기 위한 컨테이너 이미지 생성하기 (0) | 2024.02.07 |
---|---|
[논문 리뷰] An Analysis and Empirical Study of Container Networks -(2) (1) | 2024.01.30 |
LoopBack-Address에 대해서 알아보자. (0) | 2024.01.29 |
[논문 리뷰] An Analysis and Empirical Study of Container Networks -(1) (0) | 2024.01.29 |
[Docker]도커의 구조와 주요 용어 설명 (0) | 2024.01.16 |