[TIL] 마이크로 서비스 아키텍처(MSA)

김민재·2025년 3월 27일

TIL

목록 보기
173/194

✂️ 마이크로 서비스 아키텍처(MSA)

  • 대규모 애플리케이션을 작고 독립적인 서비스로 나누어 구축하는 아키텍처 스타일이다. 특정 비즈니스 기능을 독립적으로 배포, 관리, 확장될 수 있으며 독립적인 유닛으로 설계된다.

ex) 유저 기능 + 데이터베이스 배포 / 장바구니 기능 + 데이터베이스 배포

🕹️ 마이크로 서비스 아키텍처 특징

  1. 독립적인 서비스:
  • 각 서비스가 독립적이며, 각 서비스가 하나의 독립적인 비즈니스 도메인을 처리한다.
  • 각 서비스는 자체 데이터베이스를 갖거나, 다른 서비스와의 통신 없이 독립적으로 동작한다.
  1. 자율적인 배포:
  • 하나의 서비스를 배포 또는 업데이트할 때, 다른 서비스에 영향을 미치지 않는다.
  1. 기술 스택의 유연성: 각 마이크로서비스는 자신만의 기술 스택을 가질 수 있다. 하나의 서비스는 java 다른 서비스는 nest.js나 python 등으로 개발할 수 있다.

  2. 서비스 간 통신: API(주로 HTTP REST, gRPC, 메시지 큐 등)를 통해 서로 통신한다. 서비스 간에는 독립적인 통신이 이루어지며, 이를 통해 서비스가 상호작용한다.

📀 마이크로 서비스 아키텍처 장점

  1. 확장성: 특정 서비스만 확장될 수 있다.

  2. 장애 격리: 독립적으로 동작하므로, 한 서비스에 장애가 발생해도 전체 시스템에 영향을 미치지 않는다.

  3. 독립적인 개발 및 배포: 각 서비스는 독립적으로 개발하고 배포될 수 있다. 이로 인해, 팀 간의 독립적인 작업을 할 수 있어 개발 효율성이 증가한다. 각 서비스가 독립적으로 배포되기 때문에, 배포 주기를 단축시킬 수 있다.

  4. 기술 스택의 유연성: 각 서비스가 독립적으로 운영되므로, 각 서비스마다 다른 기술 스택을 사용할 수 있습니다.

  5. 업그레이드 및 유지보수의 용이성: 한 서비스의 업데이트가 다른 서비스에 영향을 미치지 않아서, 전체 시스템의 안정성을 유지할 수 있다.

🗜️ 마이크로 서비스 아키텍처 단점

  1. 복잡한 관리: 서비스 간 통신, 데이터 일관성 관리, 모니터링 등이 복잡해진다. 또한, 분산 시스템에서 발생할 수 있는 문제(네트워크 지연, 서비스 실패 등)에 대한 관리도 필요하다.

  2. 분산 트랜잭션 문제: 각 서비스가 독립적인 데이터베이스를 갖는 경우, 분산 트랜잭션 처리 문제에 직면할 수 있다. 서비스 간의 데이터 일관성을 유지하는 것이 어렵고, 이를 해결하기 위해 Eventual Consistency 패턴을 사용해야 한다.

  3. 배포 및 테스트의 복잡성: MSA는 여러 개의 서비스를 관리하고 배포하기 때문에, 배포 자동화와 테스트 자동화가 복잡하다.

  4. 운영 비용 증가: 인프라 비용이나 운영 비용이 증가할 수 있다.

  5. 복잡한 배포 파이프라인: 각 서비스에 대한 CI/CD 파이프라인을 구축해야 한다.

🔎 마이크로 서비스 아키텍처 추천 사용

  • 스트리밍 서비스

  • 전자 상거래 플랫폼

  • 소셜 미디어 플랫폼

  • 금융 서비스

profile
개발 경험치 쌓는 곳

0개의 댓글