CS

[프로그래밍] MAS란? 마이크로서비스 아키텍처

juhwan 2023. 9. 30. 14:40

마이크로서비스 아키텍처는 하나의 큰 애플리케이션을 작은, 독립적인 서비스들로 분할하는 방법론이다.

각각 서비스는 자체적으로 실행 가능하며, 다른 서비스와 네트워크를 통해 통신한다

기존 Monolithic Architecture의 한계점을 극복하기 위해 사용한 방식이다

쉽게 이해하자면 개별 컴포넌트 또는 기능의 독립적인 배포가 어렵다는거다(하나의 수정으로 모든 빌드 배포를 실행해야 한다)

  1. 배포 복잡성 증가: 작은 변화에도 전체 시스템을 재배치해야 하므로 배포 과정이 복잡해진다.
  2. 장애 영향도 증가: 한 부분에 문제가 생겼을 때, 그 영향이 전체 시스템으로 확산될 가능성이 있다.
  3. 확장성 제한: 특정 기능에 대한 요청이 증가하더라도, 해당 기능만 독립적으로 확장하기 어렵다.

마이크로서비스 아키텍처

위와 같은 문제들을 해결하기 위해 마이크로서비스 아키텍처가 등장하였다.

장점

  1. 독립적 배포 및 확장: 각 마이크로서비스는 독립적으로 배포 및 확장할 수 있으며, 이렇게 되면 한 서비스에 문제가 생겨도 다른 서비스에 영향을 미치지 않으며, 특정 서비스에 대한 요청이 증가할 경우 해당 서비스만 확장할 수 있다.
  2. 기술 스택 유연성: 각 마이크로서비스는 다른 기술 스택을 사용하여 개발될 수 있으며, 이렇게 되면 개발팀은 해당 문제를 가장 잘 해결할 수 있는 기술을 선택할 수 있다.
  3. 빠른 제품 출시 시간: 작은 단위로 개발되고 배포되므로 제품 출시 시간을 단축시킬 수 있다.

단점

  1. 분산 시스템 복잡성: 여러 마이크로서비스가 네트워크를 통해 통신하므로, 분산 시스템의 복잡성과 함께 관련된 문제(네트워크 지연, 비동기 프로그래밍 등)을 처리해야 한다
  2. 데이터 일관성 유지 어려움: 각 마이크로서비스는 자체 데이터베이스를 가질 수 있으므로 전체 시스템에서 데이터 일관성을 유지하는 것이 어려울 수 있다.
  3. DevOps 및 모니터링 필요성 증가: 독립적으로 운영되는 여러 서비스를 관리하고 모니터링 하기 위해서는 DevOps 역량과 좋은 모니터링 도구가 필요하다.