diff --git a/content/posts/weekly_topic/MSA & EDA.md b/content/posts/weekly_topic/MSA & EDA.md new file mode 100644 index 0000000..f9568fc --- /dev/null +++ b/content/posts/weekly_topic/MSA & EDA.md @@ -0,0 +1,78 @@ +--- +title: MSA & EDA +date: 2024-05-01 +image: '../../../static/media/MSA.png' +tags: + - weekly topic +description: 20230809 금주의 토픽 MSA & EDA - hyojeongchoi +--- +--- + + +# MSA & EDA + +## MSA + +### MSA란? + +**Micro Service Architecture** + +Microservice란 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스로 구성된 프레임워크를 이야기 한다. + +즉, 하나의 큰 애플리케이션을 **여러 개의 다른 역할을 수행하는 애플리케이션으로 분리**하였을 때 **각 애플리케이션**을 의미한다. + +마이크로서비스는 하나의 비즈니스 범위에 맞춰 만들어짐 + +### MSA는 언제 필요한가? + +모든 애플리케이션이 MSA로 구성될 필요는 없다. MSA는 Monolithic 아키텍처의 문제점을 보완하기 위해 등장했다. + +![Monolothic](../../../static\media\Monolothic.png) + +Monolithic 아키텍처란 위의 사진과 같이 모든 코드가 하나의 묶음으로 구성되어있어 간편하고 단순한 아키텍처이다. + +로컬 환경에서 개발하기에도 편리하고, 통합 시나리오 테스트를 수행하기에도 손쉬운 구성이다. + +그러나 서비스가 지속적으로 성장해 규모가 커질 경우에는 한계에 부딪힌다. 하나의 기능을 추가하기 위해서는 매우 많은 줄의 코드를 수정해야하기 때문이다. + +![MSA](../../../static\media\MSA.png) + +이럴 경우에 MSA를 이용해 하나의 큰 애플리케이션을 **여러 개의 다른 역할을 수행하는 애플리케이션으로 분리**할 수 있다. + +하나의 DB에 중앙 집중화 하지 않고 서비스 별 별도의 데이터베이스 사용서비스별 독립적 배포가 가능해지기 때문이다. CD도 Monolithic에 비해 가볍게 할 수 있다. + +### **MSA의 장점** + +MSA의 장점은 서비스가 개별적으로 독립적인 단위의 애플리케이션이기에 변경이 용이하다는 점이다. + +서비스 단위로 독립적인 배포가 가능하기에 배포 비용도 기존의 Monolithic 아키텍처보다 훨씬 경제적이다. + +### MSA의 단점 + +대표적인 단점으로는 Monolithic 아키텍처에 비해 서비스 간의 통신 관련 처리가 필요하다는 점이다. 이는 응답속도에도 영향을 미친다. + +수백개 이상의 마이크로 서비스를 사용할 경우에는 서로 분산되어있기에 관리 포인트가 증가하기 때문이다. + +# EDA + +### EDA란? + +**Event Driven Architecture** + +분산된 시스템에서 이벤트를 생성(발행)하고 발행된 이벤트를 수신자에게 전송하는 구조로 수신자는 그 이벤트를 처리하는 방식의 아키텍처이다. + +즉, 요약하자면 분산 아키텍처 환경에서 이벤트를 생성하고 발행된 이벤트를 수신자에게 전송하는 구조이다. + +MSA가 적용된 시스템의 단점을 보완하는 아키텍처라고 생각해도 좋다. + +상호 간 결합도를 낮추기 위해 비동기 방식으로 메시지를 전달하는 패턴인데, 비동기 방식을 사용하기에 처리 성능이 향상된다. + +특정 서비스에서 다른 서비스가 관심을 가질 수 있는 일부 작업을 수행할 때 해당 서비스는 이벤트- (작업의 기록)를 생성한다. + +발행-구독(Pub-Sub) 비동기 통신을 사용히는데, Rest와 달리 요청을 생성하는 서비스는(Publish) 요청을 소비하는 서비스(Subscribe)의 세부 정보(주소, 이벤트 수신 여부)를 알 필요가 없다. + +이벤트 게시자는 구독자의 주소를 몰라도 되고 이벤트를 수신했는지 여부를 파악하지 않아도 되는 Non-Blocking 모델이다. + +수신자의 서비스가 항상 떠 있지 않아도 게시자는 메시지를 발송할 수 있다. + +Message Broker(Kafka, RabbitMQ)와 결합하여 구성되고 MSA 도입 시 발생하는 새로운 요구 사항을 달성할 수 있다. \ No newline at end of file diff --git a/static/media/MSA.png b/static/media/MSA.png new file mode 100644 index 0000000..403add1 Binary files /dev/null and b/static/media/MSA.png differ diff --git a/static/media/Monolothic.png b/static/media/Monolothic.png new file mode 100644 index 0000000..439e8c2 Binary files /dev/null and b/static/media/Monolothic.png differ