마이크로서비스를 하기전에 이에대한 개념에 대해 알아보겠습니다.
모놀리식 아키텍쳐
대부분의 토이프로젝트가 모놀리식 아키텍쳐입니다.
상황을 가정하여봅시다. 프로젝트를 하다보면 A라는 기능을 완성해서 배포하는데, 기획단에서 다른 기능을 기획해서 B라는 기능을 추가해야 된다고 봅시다. A라는 기능을 할때는 버그터질게 별로 없었습니다. 하지만 B를 추가하니까 갑자기 버그나 나타나는 현상을 일으킬 수 있습니다. 분명 A는 아무것도 만지지 않았음에도 불구하고 말이죠. 독립적이지 않았기 때문이죠
만약 백엔드를 Java Spring으로 구현하는데, 머신러닝을 python으로 구현하고 싶다고 해 봅시다. 이게 모놀리식이게 된다면 머신러닝을 무조건 Java로 해야합니다. 아주 불편한 상황이 됩니다.
하지만 모놀리식도 장점이 있습니다. End-to-End테스트가 용이해서, 빠르게 간단한 서비스를 만들 수 있습니다.
마이크로서비스
이렇게 마이크로서비스는 각 기능을 분리하는 것입니다. 이전에 Django프로젝트를 할 때에도 기능을 분리하기는 했습니다. 폴더로 분리했죠. 하지만 이는 마이크로서비스가 아닙니다. 왜냐하면 어짜피 한번에 다 실행되기 때문입니다. 각 기능이 독립적으로 수행되지 않습니다.
회원가입에 문제가 생겼다고 해 봅시다. 그럼 회원가입의 로직만 바꾸어주면 됩니다.
그리고 당연히 각 기능에 따른 다른 언어를 선택할 수 있어집니다.
하지만 각 기능의 모니터링이 힘들고 End-to-End서비스 구동이 힘듭니다. 막 DataBase 싱크도 맞추어야 하고, 동작도 하나하나 다 신경써주면서 모니터링해야 합니다. 그래서 개발하는데 시간도 매우많이 걸립니다.
마이크로서비스 설계 - Domain Event 정의
이렇게 DDD를 하면 됩니다.
또한 다음시간부터는 마이크로서비스도 하나의 앱이기 때문에, 각각의 앱들간의 인터렉션이 존재해야합니다. 이러한 인터렉션을 어떻게 조율하고 어떻게 할것인가에 대해 알아보도록 하겠습니다.
'DevOps > AWS Architecture' 카테고리의 다른 글
[ DevOps ] - AWS 기반 대규모 아키텍트 설계 - (설계) 마이크로서비스 아키텍쳐 (0) | 2022.07.07 |
---|---|
[ DevOps ] - AWS 기반 대규모 아키텍트 설계 - (설계) 마이크로서비스 간의 통신 방식(Kafka, RabbitMQ) (0) | 2022.07.07 |
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - (인프라) AWS CodeDeploy 2 (0) | 2022.07.07 |
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - (인프라) AWS CodeDeploy 1 (0) | 2022.07.07 |
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - AWS CodeCommit이란? (0) | 2022.07.07 |