개발/etc

모놀리식 마이크로서비스 아키텍처 차이점과 장단점

심집사 2023. 7. 24. 23:00

모놀리식 마이크로서비스 아키텍처

 

최근 IT 관련 아티클들을 둘러보면 모놀리스로부터 마이크로서비스 아키텍처로 전환하는 이야기가 빈번하게 보입니다.  이런 이야기들을 통해 대두되는 모놀리스와 마이크로서비스는 각각 소프트웨어 아키텍처 패턴에 대한 개념입니다.  특히, 꽤 최근에 등장한 마이크로서비스 아키텍처 때문에 두 가지 패턴 사이에서 비교가 자주 이루어집니다.  이 두 패턴은 서로 다른 장점과 단점을 가지고 있습니다. 지금부터 두 개의 아키텍처 패턴에 대해 자세히 살펴보도록 하겠습니다.

모놀로식(Monolithic)

모놀로식(Monolithic) 아키텍처는 하나의 소프트웨어를 구성하는 모든 모듈과 코드를 한 프로젝트에서 통합적으로 관리한다는 의미입니다. 이 방식에서 애플리케이션을 가동하기 위해서는 프로젝트를 실행시키기만 하면 되고. 이 아키텍처는 대부분의 개발자들에게 익숙한 전통적인 방식이기 때문에 초기 접근성이 좋습니다.

모놀리식 아키텍처의 장점

  • 모든 코드가 한 곳에 존재하기 때문에 변경이 용이합니다. 로컬에서 애플리케이션을 실행할 때도 단일 애플리케이션만 실행하면 되기 때문입니다.
  • 한 프로젝트만 배포하면 되므로 배포 과정이 간단합니다. 새로운 기능 추가나 버그 수정 사항이 생길 때마다 해당 애플리케이션만 배포하면 됩니다.
  • 대부분의 개발자들이 모놀리식 아키텍처를 경험해 봤으므로, 프로젝트 시작이 쉽습니다.
  • 코드가 하나의 애플리케이션 안에 모여 있어 디버깅할 때 용이고 테스트 수행이 쉽습니다.
  • 단일 프로젝트에 모든 코드가 존재하므로, 오류 발생 시 문제가 발생한 위치를 쉽게 파악할 수 있습니다.

모놀리식 아키텍처의 단점

  • 프로젝트 규모가 커질수록 전체 구조나 코드 흐름을 이해하기 어려워 유지 보수하기 어려워집니다.
  • 모든 팀이 동일한 프로젝트에서 작업하기 때문에 코드 병합 충돌이 발생할 수 있고, 다른 팀이 작업에 영향을 줄 수 있습니다.
  • 최신 기술 스택이 나와도 도입하기가 힘듭니다(모든 코드에 영향이 갈 수 있기 때문)

마이크로서비스 아키텍쳐(MSA)

마이크로서비스(Microservice) 아키텍처는 하나의 소프트웨어를 구성하는 컴포넌트들을 독립적인 프로젝트로 분리하여 관리하는 것을 말합니다. 이러한 각각의 컴포넌트들을 마이크로서비스라고 부르며 개발과 배포도 이를 기준으로 진행됩니다. 다시 말해 하나의 소프트웨어가 정상적으로 동작하기 위해서는 이를 구성하는 각각의 마이크로서비스가 모두 정상적으로 작동해야 한다는 의미입니다. 이러한 아키텍처 방식은 주로 소프트웨어가 커지고 복잡해질 때 필요한 방식입니다.

마이크로서비스 아키텍처의 장점

  • 각 마이크로서비스는 모놀리스보다 작은 규모이기 때문에, 마이크로서비스별로 코드 구조나 흐름을 이해하기 쉽습니다.
  • 마이크로서비스별로 사용할 컴퓨팅 리소스 (CPU, 메모리 등)를 다르게 할당할 수 있어 서버 확장이 용이합니다.
  • 각 서비스별로 수정이나 확장을 시도하기 쉽습니다.
  • 기술 스택도 각 마이크로서비스 별로 다르게 가져갈 수 있습니다. 예를 들어, Accounts 서버는 Java, Products는 파이썬, Paymenst는 JS로 개발할 수 있습니다.
  • 마이크로서비스는 독립적인 환경에서 개발되기 때문에, 기술 도입이 유연해집니다.

마이크로서비스 아키텍처의 단점

  • 여러 연관된 서비스를 통합해서 테스트하려면 분산된 서비스들을 모두 고려해야 하므로 난이도가 높아집니다.
  • 각 담당 팀에서 마이크로서비스에만 집중하다 보면 전체 서비스 구성을 파악하기 어려워 이로 인해 커뮤니케이션 비용이 증가할 수 있습니다.
  • 여러 개의 마이크로서비스를 실행해야 하므로 디버깅이 까다롭습니다.
  • 동기/비동기 방식의 통신을 고려해야 하며, 이런 부분이 애플리케이션의 복잡성을 증가시킵니다
  • 마이크로서비스 아키텍처에서 오류를 식별하는 것은 모놀리식보다 훨씬 복잡하고 어렵습니다.

어떤 아키텍처를 선택해야 할까요?

정답은 없습니다. 모놀리식과 마이크로서비스 아키텍처를 고민할 때는 예산, 팀의 경험, 프로젝트의 타임라인 등 다양한 요소를 고려하여 선택해야 합니다.

하지만 많은 스타트업과 중소기업은 모놀리식으로 프로젝트를 시작하고, 서비스의 규모가 커지면 마이크로서비스 아키텍처로 전환하는 추세입니다.

대표적인 국내 기업으로는 쿠팡이 있고,

외국 기업으로는 트위터와 우버가 모놀리식 아키텍처로 MVP 개발 후 마이크로서비스로 전환한 사례가 있습니다.