본문 바로가기
창고(2021년 이전)

MSA vs Monolithic Architecture

by 측면삼각근 2020. 3. 21.
728x90
반응형

Monolithic vs MSA

MSA (Microservice Architecture)

마이크로 서비스 아키텍쳐는, 단일 응용 프로그램을 나누어 작은 서비스의 조합으로 구축하는 방법이다.
각 개별 서비스는 자신의 프로세스에서 실행하는HTTP기반 API등으로 가벼운 연결 방식을 사용한다.
각 서비스는 비지니스 로직의 수행 기능에 맞게 구축 된 완전히 자동화 된 머신에 의한 배포를 통해 이루어진다.

각 서비스는 최소한의 중앙 관리 기능은 있지만, 서로 다른 프로그래밍 언어에 의해 개발되고, 다른 데이터 저장 기술이 이용될 수 있다.

Monolithic

모놀리식 응용 프로그램은 하나의 큰 덩어리 단위로 구축한다. 서버 사이드 애플리케이션은 하나의 큰 덩어리 단위로 구축한다. 요청을 처리하는 로직은 모두 단일 프로세스로 처리 된 응용 프로그램에서 수행하고, 클래스 및 함수, 네임스페이스로 분할하는 프로그래밍 언어의 기능을 이용한다.
모놀리식 응용 프로그램은 잘 작동하지만, 서서히 문제가 발생한다. 응용 프로그램 내 작은 부분에 대한 변경이 있더라도, 모놀리식 방식은 모두 빌드해서 다시 배포해야 한다. 시간이 지남에 따라 모듈 구조를 문제 없이 유지하는 것은 점점 어려워지고, 각 모듈의 변경 사항을 그 모듈에만 한정하는 것도 힘들어진다. 서버 확장성도 자원을 더 필요로 하는 부분만 뿐만아니라, 전체 응용프로그램의 규모에 따라 더 필요해진다.

이로인해 MSA를 도입하게 된다. 즉, 큰 응용 프로그램을 여러 작은 서비스의 조합으로 구축하는 것이다
각 서비스는 독립적으로 배치 가능하고 확장 가능할 뿐만 아니라 서로 다른 프로그래밍 언어로 개발된 다른 서비스임에도 불구하고, 명확한 모듈 상의 경계를 가지고있다. 또, 각 서비스는 팀별로 따로 관리 할 수 있다.

MSA의 장던점

MSA의 장점

  1. 배포(deployment)
    • 서비스 별 개별 배포 가능( 배포 시 전체 서비스의 중단이 없음)
    • 요구 사항을 신속하게 반영하여 빠르게 배포할 수 있음
  2. 확장(scaling)
    • 특정 서비스에 대한 확장성이 용이함
  3. 장애(failure)
    • 장애가 전체 서비스로 확장될 가능성이 적음
    • 부분적 장애에 대한 격리가 수월함

MSA의 단점

  • 성능 : 서비스 간 호출시 API를 이용하기 때문에, 통신 비용이 늘어나게 된다.
  • 테스트/ 트랜잭션 : 서비스가 분리되어 있기 때문에 테스트와 트랜잭션의 복잡도가 증가하고, 많은 자원을 필요로 한다.
  • 데이터 관리 : 데이터가 여러 서비스에 걸쳐 분산되기 때문에 한번에 조회하기 어렵고, 데이터의 정합성 또한 관리하기 어렵다.

 


참조

마이크로서비스
MSA 제대로 이해하기

반응형