Micro Service Architecture란

  • 대규모 소프트웨어 개발에 적용하기 위함
  • 단독 실행 가능하고 독립적으로 배치될 수 있는 작은 단위로 분해하여 서비스하는 아키텍처

장점

  • 빠르고 유연한 조직문화 기여
  • 출시 시간 단축
  • 유연한 확장
  • 뛰어난 복구 능력
  • 개발자 생산성 증가
  • 높은 신기술 수용력

단점

  • 개발, 운영 복잡성 증가
  • 통합 테스트의 어려움
  • 배포, 운영을 위한 자동화 필요
  • 중복성
  • 트랜젝션 처리 어려움
  • 디버깅 어려움

Monolithic Vs. MicroService

MSA 도입 시 고려 사항

  • Micro Service가 필요할 만큼 시스템 복잡도가 높은가?
  • 여러 가지 기술을 적용할 생각이 있는가?
  • 비즈니스의 변화가 많은가?
  • 특정 기능 혹은 특정 시간에 트래픽이 몰리는가?
  • DevOps문화, 기술을 받아들일 조직 문화가 구성되어 있는가?
  • 데이터 관리 방법에 대한 대안을 생각해 두었는가?
  • 도입할 경우 비용을 얼마나 절감할 수 있는가?
  • 개발과 운영을 동시에 요구할 만큼 인프라가 준비되어 있는가?

MSA 아키텍처 패턴

Art of Scalability

도메인 별 설계 방안

  • 식별된 컨텍스트 내부를 모델링하기 위한 언어 정의
  • 비즈니스를 분석하고 핵심이 되는 개념을 식별
  • 식별된 개념을 분석해서 제한된 컨텍스트를 식별
  • 식별된 컨텍스트 간 관계를 찾아서 컨텍스트 맵을 작성
  • 제안된 컨텍스트로의 분할에 따른 효과 분석을 통해 서비스의 분할 또는 통합을 검토
  • 최종적으로 마이크로서비스 도출