IT공부/Software design

[Microservice] Architecture

태애니 2023. 3. 27. 18:31
728x90

https://learn.microsoft.com/ko-kr/azure/architecture/guide/architecture-styles/microservices

 

마이크로 서비스 아키텍처 스타일 - Azure Architecture Center

Azure에서 마이크로 서비스 아키텍처 스타일의 이점, 과제 및 모범 사례에 대해 알아봅니다.

learn.microsoft.com

 

 

마이크로서비스 (Microservice)는 대규모 애플리케이션을 작은 단위로 분해한 아키텍처 스타일을 말한다.

전통적인 모놀리틱(Monolithic) 아키텍처에서는 애플리케이션의 모든 기능이 단일 서비스에 구현되어 있기 때문에 대규모의 애플리케이션을 개발하고 관리하는 것이 복잡하고 어렵다.

 

마이크로서비스 아키텍처는 애플리케이션을 작은 기능 단위로 분해하고 각각의 기능을 독립적으로 개발, 배포, 운영할 수 있다. 각각의 마이크로서비스는 독립적인 데이터베이스를 가지며, REST API, 메시징 등을 통해 다른 마이크로서비스와 통신한다.

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

  • 각각의 마이크로서비스는 독립적으로 개발, 배포, 운영이 가능하기 때문에 개발 및 운영의 유연성이 증가한다.
  • 서비스 간의 의존성이 낮아져 시스템이 유연하고 확장성이 좋아진다.
  • 기능별로 서비스를 분리하기 때문에, 서비스의 장애가 전체 시스템의 장애로 이어지지 않는다.
  • 팀별로 각각의 마이크로서비스를 개발, 배포, 운영할 수 있기 때문에 팀의 자율성이 높아진다.

 

단점

  • 서비스 간의 통신과 데이터 처리에 대한 복잡성이 증가할 수 있다.
  • 서비스 단위로 분할되기 때문에, 전체 시스템이 많은 서비스들로 구성되므로 이를 관리하기 위한 추가적인 인프라스트럭처와 도구들이 필요하다.

 

 

 

ESB (Enterprise Service Bus)는 MSA에서 각 서비스 간의 통신을 관리하기 위한 중간 계층으로. ESB는 서로 다른 프로토콜을 사용하는 서비스 간의 통신을 가능하게 하고, 데이터 변환, 라우팅, 보안, 메시지 큐 등의 기능을 제공한다.


장점
다양한 프로토콜을 지원하기 때문에 서비스 간의 통신을 표준화할 수 있다.
서비스 간의 통신을 관리하고, 데이터 변환, 라우팅, 보안 등의 기능을 제공하기 때문에 서비스 간의 통신에 대한 복잡성을 줄일 수 있다.


단점:
ESB를 도입하면서 시스템 전체적인 복잡성이 증가할 수 있다.
ESB는 단일 장애 지점(Single Point of Failure)이 될 가능성이 있다.

 

 

 

 

 

Building Monolithic Applications
Microservice

 

 

 

MicroService 는

작고, 독립적이고 느슨한 결합의 아키텍쳐 스타일을 말한다

각 서비스를 독립적으로 분리하고 제한된 Context 내에서 단일 비즈니스 기능을 구현한다

제한된 Context란 비즈니스 내의 자연스러운 분할로 도메인 모델로 명시적 경계를 제공한다

 

 

microservices

 

각 서비스는 독립적으로 배포할 수 있고, 전체 애플리케이션 rebuild 후 재배치 없이도 기존 서비스를 업데이트할 수 있다.

서비스는 해당 데이터 및 외부 상태를 유지하는 것을 목표로 한다.

별도의 데이터레이어가 데이터 지속성을 처리하는 기존 모델과 차이가 있다.

잘 정의된 API를 사용하여 서로 통신하며, 각 서비스 내부 구현 세부 정보를 다른 서비스에 숨긴다

다중 저장소 프로그래밍을 지원하여, 서비스가 동일한 기술 스택, 라이브러리 또는 프레임워크를 공유할 필요가 없다

 

 

 

마이크로서비스 아키텍처를 사용하는 경우, 개발 및 운영이 더 복잡해질 수 있으며, 서비스 간의 통신이 빈번하게 발생하기 때문에 이에 대한 대응책이 필요하다.

 

 

The twelve-factor app is a methodology for building software-as-a-service apps that:

https://12factor.net/

 

The Twelve-Factor App

Background The contributors to this document have been directly involved in the development and deployment of hundreds of apps, and indirectly witnessed the development, operation, and scaling of hundreds of thousands of apps via our work on the Heroku pla

12factor.net

 

 

 



참고 링크:

MSA: https://microservices.io/
ESB: https://www.ibm.com/cloud/learn/esb

728x90

'IT공부 > Software design' 카테고리의 다른 글

[Architecture] Monolithic / SOA / MSA  (0) 2023.03.28
[Microservice] Service Mesh  (0) 2023.03.27