2020. 7. 14. 18:37ㆍMSA (Microservices Architecture) Project
1. 모노리틱 아키텍쳐(Monolithic Architecture)란 무엇인가?
모노리틱 아키텍쳐 스타일은 기존의 전통적인 웹 시스템 개발 스타일로, 하나의 애플리케이션 내에 모든 로직이 포함되어 있는 구조이다.
위 비교 이미지를 보면 전체 어플리케이션을 하나로 처리하기 때문에 개발 도구에서 하나의 애플리케이션으로 개발하면 배포 구조가 간단해지며, 테스트 진행 시 하나의 애플리케이션만 수행하므로 편리하다는 장점이 있다.
2. 문제점
모노리틱 구조의 경우 대형 시스템 개발 시 문제점이 발생하며 간단한 설명으로는 하단의 표로 정리된다.
• 서비스/프로젝트가 커지면 커질수록, 영향도 파악 및 전체 시스템 구조의 파악에 어려움이 있다. • 빌드 시간 및 테스트 시간, 그리고 배포시간이 기하급수적으로 늘어나게 된다.• 서비스를 부분적으로 scale-out하기가 힘들다. • 부분의 장애가 전체 서비스의 장애로 이어지는 경우가 발생한다. |
전체 시스템의 구조를 제대로 파악하지 않고 개발을 진행하게 될 경우 특정 컴포넌트나 모듈에 성능 문제나 장애가 다른 컴포넌트에 영향을 주게 되므로 개발자가 전체 시스템의 구조를 이해해야 하며, 구조가 커질수록 개인이 전체 시스템의 구조를 이해하는 것이 어려워진다.
또한 수정을 통한 재배포시 전체 애플리케이션을 재컴파일하는 과정에서 전체를 다시 해야하기 때문에 긴 시간이 소요된다.
* 단, 모노리틱 아키텍쳐는 규모가 작은 애플리케이션에는 배포가 쉬우며, 운영 관리가 쉽다. 하나의 구조로 되어있기
때문에 트랜잭션 관리가 쉽다는 장점을 띈다.
4. 마이크로 서비스 아키텍쳐(MSA,Micro Service Architecture)란 무엇인가?
마이크로 서비스 아키텍쳐(MSA) 경우 기존 모노리틱 아키텍쳐의 단점에 있어서 보완이 가능하다.
하나의 큰 애플리케이션을 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍쳐이다.
비유를 하여 이해를 돕자면 레고놀이와 비슷하다고 볼 수 있으며, 작은 조각을 하나하나 붙여 어떠한 큰 결과물을 만드는 형태를 MSA라 생각하면 된다.
![]() |
<그림 1> MSA 관리팀 예시 |
세 가지의 관점을 가지고 MSA의 장점을 간단하게 설명하겠다.
• 배포 (deployment) 관점 * 서비스별 개별 배포가 가능하다. (배포 시 전체 서비스의 중단 X) • 확장 (scaling) 관점 * 특정 서비스에 대한 확장성이 용이하다. - 이는 클라우드 사용에 적합한 아키텍쳐라 볼 수 있다. • 장애 (failure) 관점 * 장애가 전체 서비스로 확장될 가능성이 적다 (하나의 서비스가 아닌 세분화된 작은 서비스) - 부분적 장애에 대한 격리가 수월하다. ° 이외에도 신기술의 적용이 유연하며, 서비스를 다양하게 개발 및 운영할 수 있다는 장점이 있다. |
5. 마이크로 서비스 아키텍쳐의 단점
- 모노리틱 아키텍쳐는 단순한 아키텍쳐인데 비해 MSA는 보다 복잡한 아키텍쳐로, 전체 서비스에 커짐에
따라 그 복잡함도 기하급수적으로 늘어난다.
•성능 - 서비스 간 호출 시 API를 사용하기 때문에 Latency가 그만큼 증가 • 테스트 / 트랜잭션 - 서비스가 분리되어 있기 때문에 테스터와 트랜잭션의 복잡도가 증가, 많은 자원이 필요 |
• 데이터 관리 - 데이터가 여러 서비스로 결쳐 분산되어 한번에 조회하기 어렵다 - 데이터의 정합성 또한 관리 힘듬 |