더북(TheBook)

1.1 마이크로서비스란?



마이크로서비스 개념이 발전하기 전, 대부분의 웹 기반 애플리케이션은 모놀리식 아키텍처(monolithic architecture) 형태로 개발되었다. 모놀리식 아키텍처에서 애플리케이션은 배포 가능한 단일 소프트웨어 산출물로 전달된다. UI(User Interface) 및 비즈니스 로직, 데이터베이스 액세스 로직 모두가 하나의 애플리케이션 산출물로 패키징되고 애플리케이션 서버에 배포되는 것이다.

애플리케이션은 단일 작업 단위로도 배포할 수 있지만, 실제로는 여러 개발 팀이 한 애플리케이션에서 작업할 때가 더 많다. 일반적으로 각 개발 팀은 특정 고객에게 제공하는 애플리케이션의 개별 기능을 담당한다. 필자가 대형 금융 서비스 회사에서 일할 때, UI와 고객 마스터(customer master), 데이터 웨어하우스, 뮤추얼 펀드 팀 등 여러 팀의 조정과 연관된 주문 제작형 자체 고객 관계 관리(CRM) 애플리케이션이 있었다. 그림 1-1에서 이 애플리케이션의 기본 아키텍처를 볼 수 있다.

여기서 문제는 모놀리식 애플리케이션이 크고 복잡해지면 애플리케이션을 담당하는 각 팀의 의사 소통과 조정 비용이 증가하는데, 이 비용을 고려하지 못했다는 것이다. 모놀리식 애플리케이션은 각 팀에서 변경이 있을 때마다 애플리케이션 전체를 다시 빌드하고 테스트해서 배포해야 한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.