MSA란?

MSA란?

  • 단일 애플리케이션을 작은 서비스 suite로 개발하는 방법.

  • 각각 자체 프로세스에서 실행되고 가벼운 연결방식, 대개는 HTTP 기반 API와 통신한다.

  • 비즈니스 기능을 중심으로 구축되며 완전 자동화 된 배포 머신을 통해 독립적으로 배포할 수 있다.

  • 최소한의 중앙 집중식 관리가 있으며, 다른 프로그래밍 언어로 작성되고 다른 데이터 저장 기술을 사용할 수 있다.

장점

  • 장애 격리와 복구가 쉽다. 장애난 서비스만 장애나니까.

  • 비용 효율적으로 증설이 가능하다. 증설이 필요한 서비스만 증설시키면 되기 때문이다.

  • 서비스 개선 속도가 증가한다. 빠른 배포가 가능하다.

  • 생산성 향상이 될 수 있다. 코드양이 적어 쉽게 수정이 가능하다.

  • 신기술 도입이 쉽다.

  • Polyglot을 적용할 수 있다. 서비스에 최적화된 개발 언어와 데이터베이스를 선택하기 쉽다.

고려해야할 것

  • MSA에 적합한 서비스인가?

    • 빠르고 잦은 배포를 필요로 하는가?

    • 성능에 민감한 서비스인가? 마이크로서비스면 잦은 통신이 필요하므로 성능 이슈가 있을 수 있다.

    • 분산 트랜잭션이 있는 서비스인가? 한번에 트랜잭션을 쓸 수가 없다.

  • 데이터의 중복성을 허용해야한다.

  • 배포 및 릴리즈를 자동화해야한다. 서비스가 많다보니 자동화가 되지 않으면 운영에 굉장한 부담이 발생할 수 있다.

  • MSA 서비스에 맞는 팀이 운영되어야 한다.

NHN 페이코의 도메인별 MSA 구축 사례.

소스 중복, 배포주기, 트래픽 유입, 분산트랜잭션 줄여야하는 부분들 고려해서 도메인 다시 결합했다고함.

Last updated