MSA가 뭘까?

홍당무·2023년 2월 23일
0

MSA(Micro Service Architecture)

정의

글자 그대로 해석하자면 각각의 서비스가 Micro 한 형태로 존재한다는 것이다. 독립적으로 배포 가능한 일련의 서비스를 이용하는 아키텍처 방법이다.

MSA는 모놀리식 아키텍처와 다르게 각각의 도메인 하나하나를 각 서버로 분리한다.

즉 각각의 서버는 자신의 도메인 로직 처리만을 담당하고 각각 DB를 따로 관리한다.

모놀리식 아키텍처와의 차이점

모놀리식 아키텍처

소프트웨어 프로그램의 전통적인 모델로, 자체 포함 방식이며 다른 애플리케이션과 독립적인 통합된 유닛으로 만들어진다. 여기서 '모놀리스'는 거대하고 빙하 같은 것을 의미하는 경우가 많다. 소프트웨어 설계의 모놀리식 아키텍처 또한 그러하다.

모놀리식 아키텍처는 모든 비즈니스 관련 사항을 함께 결합하는 하나의 코드 베이스를 갖춘 대규모의 단일 컴퓨팅 네트워크이다.

모놀리식 아키텍처의 장점과 단점

장점

  • 손쉬운 배포 : 실행 파일 또는 디렉토리가 하나라서 배포가 더 쉽다.
  • 개발 : 하나의 코드 베이스로 애플리케이션을 구축하여 개발이 더 쉽다.
  • 성능 : 중앙 집중식 코드 베이스 및 레포지토리에서는 대부분 하나의 API만으로 마이크로서비스에서 여러 API가 수행하는 것과 동일한 기능을 수행할 수 있다.
  • 테스트 간소화 : 모놀리식 애플리케이션은 하나의 중앙 집중식 장치이므로 분산된 애플리케이션보다 엔드투엔드 테스트를 더 빠르게 수행할 수 있다.
  • 간편한 디버깅 : 모든 코드가 한 곳에 있으므로 요청을 따라가서 문제를 찾기가 더 쉽다.

단점

  • 하나의 기능을 조금만 변경하려고 해도 전체 플랫폼을 컴파일하고 테스트해야 하기 때문에, 오늘날의 개발자들이 선호하는 애자일 접근 방식과 맞지 않는다.
  • 따라서 확장성, 안정성, 기술채택의 어려움, 유연성 부족 문제가 발생하고 개발 속도가 느려지며 변경 사항이 생겨 변경 후 배포하는 경우에도 전체 모놀리스를 다시 배포해야하는 어려움이 생긴다.

모놀리스가 너무 커졌다면 마이크로서비스로 전환해야 할 시기일 수 있습니다
- CHANDLER HARRIS(마케팅 전략가 겸 작가)

MSA의 장점과 단점

장점

  • MSA는 독립적으로 싱행하는 유닛으로 구성되므로, 다른 서비스에 영향을 주는 일 없이 각 서비스를 개발, 업데이트, 배포 및 확장할 수 있다.
  • 향상된 안정성, 가동 시간 및 성능으로 소프트웨어 업데이트를 더 자주 수행할 수 있다.

단점

  • 무분별한 개발 확산 : 마이크로서비스의 경우 여러 팀이 더 많은 장소에 더 많은 서비스를 만들기 때문에 모놀리스 아키텍처에 비해 더 복잡해진다.
  • 기하 급수적인 인프라 비용 : 각각의 새 마이크로서비스는 테스트 도구, 배포 플레이북, 호스팅 인프라, 모니터링 도구 등에 대한 자체적인 비용이 발생할 수 있다.
  • 조직 오버헤드 추가 : 팀에서는 업데이트 및 인터페이스를 조정하기 위해 또 다른 커뮤니케이션과 공동 작업이 이루어져야 한다.
  • 디버깅 문제 : 각 마이크로서비스는 자체적인 로그 집합을 가지고 있어 디버깅이 더 복잡하다. 또한 여러 시스템에서 하나의 비즈니스 프로세스가 실행될 수 있으므로 디버깅이 더욱 복잡해진다.
  • 표준화 부족 : 공통 플랫폼이 없어 여러 언어, 로깅 표준 및 모니터링이 사용될 수 있다.
  • 명확한 소유권 부족 : 더 많은 서비스가 도입됨에 따라 서비스를 실행하는 팀의 수도 늘어난다. 시간이 지나면서 팀에서 어떤 서비스를 활용할 수 있는지, 그리고 지원을 받으려면 누구에게 문의해야 하는지 파악하기가 어려워진다.

ref

ATLASSIAN
Eric's DevLog (데브로그)
위키백과

profile
공부하는 백엔드 개발자

0개의 댓글

관련 채용 정보