더북(TheBook)

1.1.1 모놀리식 아키텍처

모놀리식 아키텍처(monolithic architecture)는 하나의 큰 목적이 있는 서비스 또는 애플리케이션에 여러 기능이 통합돼 있는 구조를 의미합니다. 모놀리식 아키텍처에서는 소프트웨어가 하나의 결합된 코드로 구성되기 때문에 초기 단계에서 설계하기 용이하며 개발이 좀 더 단순하고 코드 관리가 간편합니다. 그러나 서비스를 운영하는 과정에서 수정이 많을 경우, 어떤 서비스에서 이뤄진 수정이 연관된 다른 서비스에 영향을 미칠 가능성이 커집니다. 또한 서비스가 점점 성장해 기능이 추가될수록 처음에는 단순했던 서비스 간의 관계가 매우 복잡해질 수 있습니다.

모놀리식 아키텍처는 대부분 다음과 같이 구성됩니다.

▲ 그림 1-1 모놀리식 아키텍처의 구성 예시

그림처럼 뉴스, 카페, 웹툰, 결제 등의 서비스가 하나의 애플리케이션 안에 포함된 경우를 생각해봅시다. 보안이나 데이터베이스 접속과 같은 설정을 공통으로 사용하면서 서비스를 구현한다면 개발 속도는 매우 빠를 것입니다. 하지만 웹툰 서비스의 사용량이 폭발적으로 증가해 서버를 증설해야 한다고 가정해 봅시다. IaaS 덕분에 사용량 증가에 따라 인프라를 증설하는 것은 어렵지 않습니다. 그렇지만 웹툰 서비스의 사용량이 늘었다고 해서 뉴스, 블로그 등의 다른 서비스가 포함된 애플리케이션까지 확장하는 것은 상당히 비효율적입니다. 게다가 특정 서비스를 수정하는 과정에서 예기치 못한 에러가 발생한다면 해당 서비스 외에 전체 서비스를 이용할 수 없는 상황이 생길 수도 있습니다. 그래서 이러한 문제를 해결하는 방안으로 마이크로서비스 아키텍처가 등장했습니다.

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