본문 바로가기
CS

[CS] MSA(Micro Service Architecture)

by 시간많은백수 2023. 9. 11.
반응형

✔️MSA란?

MSA는 소프트웨어 시스템을 작은 독립적인 서비스로 나누고, 각 서비스가 서로 협력하여 전체 애플리케이션을 구성하는 아키텍처 패턴입니다. MSA는 모놀리식(monolithic) 아키텍처와 대조되며, 애플리케이션을 하나의 대규모 모놀리식 애플리케이션 대신 작고 독립적인 서비스로 분해합니다.

MONOLITHIC 와 MSA 비교

💡MSA 특징

  • 독립적인 서비스: 각 마이크로서비스는 특정한 비즈니스 기능을 수행하며, 서로 독립적으로 배포 및 확장 가능합니다.
  • 효율적인 개발 및 배포: 각 마이크로서비스는 작고 간단하기 때문에 더 빠르게 개발하고 배포할 수 있습니다. 이로 인해 개발자 팀 간 협업이 쉬워집니다.
  • 기술 다양성: 각 서비스는 자체 기술 스택을 선택할 수 있으므로 최신 기술을 도입하거나 레거시 시스템을 통합할 수 있습니다.
  • 확장성: 각 마이크로서비스는 개별적으로 확장 가능하므로 사용량 증가에 따라 필요한 부분만 확장할 수 있습니다.
  • 장애 격리: 하나의 서비스의 장애가 다른 서비스에 영향을 미치지 않도록 격리된 환경을 제공합니다.
  • API 통신: 서로 다른 마이크로서비스 간에 통신은 API를 통해 이루어집니다. RESTful API나 gRPC와 같은 프로토콜을 통해 통신합니다.
  • 자동화된 배포와 스케일링: DevOps 프로세스와 자동화된 배포 및 스케일링 도구를 활용하여 서비스를 관리합니다.
  • 데이터 관리: 데이터는 서비스 간에 분산되므로 데이터 일관성 및 동기화에 대한 관리가 필요합니다.

 

💡MSA 장점

  • 개발과 배포의 용이성: MSA는 작은 서비스로 분리되기 때문에 개발, 테스트 및 배포가 훨씬 빠르고 간편합니다. 각 서비스는 독립적으로 개발될 수 있으므로 개발자 팀 간 협업이 쉽고 빠릅니다.
  • 확장성: 서비스 단위로 확장이 가능하므로 특정 서비스에 대한 수요가 늘면 해당 서비스만 확장할 수 있습니다. 이는 리소스의 효율적인 사용을 가능하게 합니다.
  • 기술 다양성: 각 마이크로서비스는 자체 기술 스택을 선택할 수 있으므로, 새로운 기술을 도입하거나 레거시 시스템과 통합하는 데 유리합니다.
  • 장애 격리: 하나의 서비스의 장애가 다른 서비스에 영향을 미치지 않도록 격리되므로 시스템 전체의 신뢰성이 향상됩니다.
  • 비즈니스 기능 분리: 각 마이크로서비스는 특정 비즈니스 기능을 담당하므로 코드의 응집성이 높아지고 유지 보수가 쉬워집니다.

 

💡MSA

  • 운영 및 관리 복잡성: 여러 서비스를 운영, 모니터링 및 관리해야 하므로 운영 복잡성이 증가합니다. DevOps 프로세스와 자동화된 도구를 사용하여 이러한 어려움을 극복해야 합니다.
  • 데이터 관리 어려움: 데이터가 서비스 간에 분산되기 때문에 데이터 일관성과 동기화를 관리하는 것이 어렵습니다. 이로 인해 데이터 관리 복잡성이 증가할 수 있습니다.
  • 통합 오버헤드: 서로 다른 서비스 간의 통합 및 통신은 추가 오버헤드를 초래할 수 있으며, 이는 레이턴시 증가 및 복잡한 API 관리로 이어질 수 있습니다.
  • 보안 고려사항: 서비스 간의 통신 및 데이터 보안에 대한 고려가 필요합니다. 또한 인증 및 권한 부여를 관리해야 합니다.
  • 분산 시스템 복잡성: MSA는 분산 시스템이므로, 분산 시스템 특유의 문제들(예: 네트워크 문제, 시간 동기화 등)에 대한 대비가 필요합니다.

 

💡결론

MSA는 대규모 애플리케이션을 더 민첩하게 개발하고 운영하기 위한 방법으로 인기를 얻고 있습니다. 그러나 MSA를 구현하려면 적절한 계획과 도구가 필요하며, 또한 일부 도전 과제도 있을 수 있습니다. 데이터 일관성, 모니터링, 보안, 트랜잭션 관리 등에 대한 고려가 필요합니다.

 

그림 참조 - https://velog.io/@dmchoi224/Microservice-Architecture-MSA-%EA%B7%B8%EB%A6%AC%EA%B3%A0-Monolithic

반응형