Micro Service Architecture와 Monolithic Architecture

starkensin·2020년 12월 24일
1
post-thumbnail

다음과 같이 용어를 사용하도록 하겠습니다.

Micro Service Architecture -> MSA
Monolithic Architecture -> MA

Monolithic Architecture

MA
한 단어로 특징을 말하자면 강결합(tight coupling) 입니다.

장점

  • 하나의 애플리케이션에서 개발하기에 배포 및 테스트가 간편하다.
  • 각 컴포넌트 간의 호출 및 트렌젝션 관리가 편하다.
  • MSA 대비 서비스간 통신 비용이 발생하지 않기 때문에 기능 호출시 성능상 이점

단점

  • (빌드/테스트 시간의 증가) 결국 배포가 오래걸린다.
  • 부분 장애가 전체 서비스의 장애로 확대될 수 있다.
  • 부분적인 Scale-out이 힘들다.
  • (언어와 프레임웍의 혼용이 힘들다.)

Micro Service Architecture

MSA
한 단어로 특징을 말하자면 느슨한 결합(loose coupling)입니다.
Single responsibility principle 철학 테두리 안에 있는 구조입니다.
각자 맡은바 기능을 수행하며 컴포넌트들은 상호 API를 노출시켜 통신합니다.

MA | MSA
장점 -> 단점
단점 -> 장점
대체로 위와 같기 때문에 추가적으로 장단점을 다시 나열하진 않겠습니다.


하지만 MSA를 도입하기 전 다시한번! 아래의 문제를 고려하는 것이 좋습니다.
  • 서비스 통신 비용이 증가한다.
  • 테스트와 트랜잭션이 어렵다.
  • 데이터가 분산되기 때문에 조회 및 정합성 유지가 힘들다.

위 문제들을 해결해야만 우리는 MSA를 바람직하게 도입할 수 있을테니까요!

MA? MSA?

당연하게도 MSA 구성은 MA보다 시스템 복잡도가 높아집니다. (기본 시스템 외에 부가적으로 API gateway 및 circuit breaker의 도입 또한 고려해야할지도 모릅니다.) 그 말은 도입시 고려해야할 것들이 많아지고, 당장 시간, 비용적 측면에서 더 많은 자원이 투입되야 하겠죠.

하지만 서비스가 성장함에 따라 MSA의 필요성이 느껴지면,, 예를들어 기능별로 서버로 들어오는 요청 편차가 매우 크다거나, 기능에 적합한 새로운 언어의 도입을 고려한다거나, 빠른 배포 주기가 절실히 필요하다든지 등의 이유로 MA로부터의 탈피가 필요하다면 MSA는 좋은 선택지가 될 것입니다.

0개의 댓글