상세 컨텐츠

본문 제목

MSA(MicroService Architecture)

CS/CS

by Chan.94 2022. 7. 20. 08:15

본문

반응형

MSA(MicroService Architecture)

MSA는 모든 시스템의 구성요소가 한 프로젝트에 통합되어 있는 Monolithic Architecture(모놀리식 아키텍처)
한계점을 극복하고자 등장하게 되었다.

1개의 시스템을 독립적으로 배포 가능한 각각의 서비스로 분할하고 분할된 각각의 서비스는 API를 통해 데이터를 주고받는다.

 

장점

  • 일부 서비스에 장애가 발생하여도 전체 서비스에 장애가 발생하지 않는다.
  • 서비스 별 개별 배포 가능하다. ( 배포 시 전체 서비스의 중단이 없음)
  • 특정 서비스에 대한 확장성이 용이하다.

 

단점

  • 서비스 간에 API로 통신하기 때문에 그에 대한 비용이 발생한다.
  • 서비스가 분리되어 있기 때문에 테스트와 트랜잭션의 복잡도가 증가한다.
  • 유지보수 난이도가 증가한다.
  • API 관리의 중요성이 증가한다.

API를 이용해 통신하기 때문에 하나의 서비스만 사용하는 단위 테스트는 금방 끝나지만 다른 서비스를 사용하는 테스트의 경우에는 모놀리식 아키텍처보다 더 많은 시간과 노력이 필요하게 된다.

 

한 서비스가 고장 나도 전체 서비스에는 문제가 없도록 하려고 만든 게 MSA인데 그걸 연결해주는 API에서 에러가 발생하면 전체 서비스가 마비된다.

 

언제 MSA를 사용하는가?

아래의 관점들을 비교하여 이득이 된다면 MSA 아키텍처를 사용하는 것이 좋다.

  • 비용
    MSA 아키텍처를 도입할 경우, 모놀리식 아키텍처에 비해 비용을 얼마나 절감할 수 있는가?
  • 개발 생산성
    - MSA를 요구할 만큼 시스템 복잡도가 높은가?
    - 복잡도를 지나치게 높인 마이크로 서비스가 생산성을 저해하고 있진 않은가?
  • 운영
    - 개발 팀에게 개발과 운영을 동시에 할 만큼 인프라가 준비되어 있는가?
    - 개발 인력이 마이크로 서비스를 관리할 역량이 있는가?
  • 배포
    - 배포를 충분히 자주 하고 있는가?
      (배포 일이 정해져 있고, 배포가 가끔 일어난다면 효율이 떨어진다.)

 

반응형

관련글 더보기

댓글 영역

>