• MSA란

    소프트웨어 개발 기법 중 하나로 작고, 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스로 구성된 프레임워크라고 할 수 있다. 마이크로서비스는 완전히 독립적으로 배포가 가능하고, 다른 기술 스택(개발 언어, 데이터베이스 등)이 사용 가능한 단일 사업 영역에 초점을 둔다.

  • 장점

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

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

    • 직접 통신

      Untitled

    • API Gateway 사용

      Untitled

      • API Gateway 란

        MSA의 문제점 중 하나는 각 서비스가 다른 서버에 분리 배포되어있기 때문에 서버 URL이 각기 다를 수 밖에 없습니다. 이때 API Gateway는 API 서버 앞 단에서 모든 API 서버들의 End-Point를 단일화하여 묶어주는 역할을 합니다. 또한 거미줄처럼 복잡한 서비스간의 API호출 구조도 단순화 시켜줍니다. 그 외에 라우팅, 로드밸런싱, 인증 역할 등등 여러 역할을 수행합니다.

      • API Gateway 주요기능

        1. 인증 및 인가
        2. 요청 절차 단순화
        3. 라우팅 및 로드밸런싱
        4. 공통 로직 처리 및 로그 수집

    References

    http://clipsoft.co.kr/wp/blog/마이크로서비스-아키텍처msa-개념/

    MSA 제대로 이해하기 -(1) MSA의 기본 개념

    API 게이트웨이 패턴과 클라이언트-마이크로 서비스 간 직접 통신

    [IT정보] 마이크로서비스 아키텍처 API 게이트웨이(MSA API Gateway) 개념