[Architecture] 모노리틱 아키텍처 (Monolithic Architecture)

in #kr7 years ago

1. 모노리틱 아키텍처 (Monolithic Architecture)란?


모노리틱 아키텍처 스타일은 기존의 전통적인 웹 시스템 개발 스타일로, 하나의 애플리케이션 내에 모든 로직이 들어가 있는 '통짜 구조'이다.





위 그림을 보면 톰캣 서버에서 도는 WAR파일 내에 사용자 관리, 상품 관리, 주문 관리 등 모든 컴포넌트가 들어 있고 이를 처리하는 UX 로직까지 하나로 포장되서 들어가 있는 구조이다.

이 처럼 전체 애플리케이션을 하나로 처리하기 때문에 개발 도구에서 하나의 애플리케이션만 개발하면 되고 배포 역시 간편하며 테스트도 하나의 애플리케이션만 수행하면 되므로 편리하다.


2. 문제점


대형 시스템 개발 시 문제점이 발생한다.

  • 크기가 커서 빌드 및 배포 시간, 서버의 기동 시간이 오래걸린다.

  • 프로그램을 진행하는 관점에서 한두 사람의 실수가 전체 시스템의 빌드 실패를 유발할 수 있기에 프로젝트가 커질수록 여러 사람이 협업 개발하기가 쉽지 않다.

전체 시스템의 구조를 제대로 파악하지 않고 개발을 진행하게 되면 특정 컴포넌트나 모듈에서의 성능 문제나 장애가 다른 컴포넌트에까지 영향을 주게 된다. 개발자가 대략적인 전체 시스템의 구조를 이해해야 하는데 구조가 커질수록 개인이 전체 시스템의 구조를 이해하는 것이 어려워진다.

또한 특정 컴포넌트를 수정할 때 수정된 부분만 재배포하는 것이 아니라 전체 애플리케이션을 재컴파일해서 전체를 다시 통으로 재배포해야된다.

** 모노리틱 아키텍처는 규모가 작은 애플리케이션에는 배포가 쉽고, 운영 관리가 쉽다. 하나의 구조로 되어있기 때문에 트랜잭션 관리에도 쉽다는 장점이 있다. 상황과 필요에 따라서 마이크로 서비스 아키텍처나 모노리틱 아키텍처를 적절하게 선택, 변형해서 사용할 필요가 있다.






참조 저서 : 조병욱(조대협), 대용량 아키텍처와 성능 튜닝, 프리렉 출판, 93쪽