마이크로서비스를 성공적으로 구축하려면 각 서비스의 크기를 적절하게 조정하고 서비스 경계를 명확히 식별하는 것이 중요합니다. 너무 큰 서비스는 마이크로서비스의 장점을 살릴 수 없고, 너무 작은 서비스는 운영상의 오버헤드를 증가시킬 수 있습니다.
도메인 기반 크기 조정은 비즈니스 도메인과 밀접하게 연관된 마이크로서비스를 정의하는 방법입니다. 예를 들어, 은행 애플리케이션에서는 계좌, 대출, 카드와 같은 도메인별로 마이크로서비스를 구축할 수 있습니다.
이벤트 스토밍은 다양한 이해관계자가 참여하여 이벤트, 명령, 반응을 식별하고 이를 기반으로 마이크로서비스를 정의하는 방법입니다.
장점: 신속하고 직관적이며, 다양한 이해관계자의 참여를 통해 광범위한 의견을 수렴할 수 있음.
단점: 도메인 전문가가 반드시 필요하지 않으나, 이벤트와 반응을 정확히 이해해야 함.
이벤트 스토밍은 다음과 같은 과정을 거칩니다:
이 과정은 신속하고 직관적이며, 다양한 이해관계자의 의견을 반영하여 효율적으로 마이크로서비스를 정의할 수 있습니다.
마이크로서비스의 초기 크기는 최적이 아닐 수 있으며, 운영하면서 크기를 조정하는 과정이 필요할 수 있습니다. 운영 중 발생하는 문제를 해결하기 위해 마이크로서비스를 분리하거나 결합하여 최적의 크기를 찾아가는 과정이 필요합니다.
마이크로서비스의 적절한 크기를 조정하고 서비스 경계를 식별하는 것은 마이크로서비스 아키텍처의 성공을 위해 필수적입니다. 도메인 기반 크기 조정과 이벤트 스토밍 기법은 이를 달성하기 위한 두 가지 주요 방법입니다. 각 방법은 장단점이 있으며, 상황에 따라 적절한 방법을 선택하여 적용해야 합니다.
저축 계좌, 거래 계좌, 카드, 대출을 각각 별도의 마이크로서비스로 나누었습니다. 이 접근 방식은 적절한 크기 조정으로, 각 팀이 독립적으로 기능을 개선하고 유지보수할 수 있는 유연성을 제공합니다.
애플리케이션이 복잡해져 한 사람이 전체 애플리케이션을 이해하기 어려워집니다.
작은 변경 사항에도 전체 애플리케이션을 재배포해야 하며, 하나의 불안정한 구성 요소가 전체 시스템을 무너뜨릴 수 있습니다.
새로운 기술이나 프레임워크로 전환하기 어렵고, 애자일 방식의 독립적인 팀 구성이 불가능합니다.
모놀리식 애플리케이션을 독립적인 마이크로서비스로 분리하여 각 서비스가 독립적으로 개발, 배포, 유지보수될 수 있도록 했습니다.
API 게이트웨이를 통해 클라이언트 애플리케이션이 모든 마이크로서비스와 통신할 수 있도록 설정했습니다.
각 마이크로서비스는 자신의 데이터베이스와 기술 스택을 가질 수 있으며, 이벤트 스트리밍을 통해 비동기 작업을 처리합니다.