본문 바로가기
프로그래머

마이크로서비스패턴 | 마이크로서비스아키텍처패턴

by 정보경험 2023. 12. 14.
반응형

여전히 핫하고 대용량 트랙픽에 대해서 인프라 비용을 많이 들이지 않고 어플리케이션 레벨에서 해결할수 있는 최고의 방법은 저는 여전히 마이크로서비스 아키텍처라고 생각 합니다.

 

일단 제가 알고 있는 마이크로서비스 아키텍처에 대한 최고의 웹사이트에 대해서 공유합니다. 해당 사이트의 주인장님은 아래 마이크로서비스아키텍처 패턴 책을 집필 하신 크리스트 리차드슨 님이십니다. ( Chris Richardson ) 

 

해외 원서 표지 

 

 

국내 번역서 표지 

 

마이크로서비스패턴
교보문고 마이크로서비스 패턴 책소개에서 퍼왔습니다.

 

 

해당 작가님의 웹 사이트에 나온 내역 주요 부분을 정리하여 보았습니다. 

 

 

https://microservices.io/index.html

 

What are microservices?

Microservices - also known as the microservice architecture - is an architectural style that structures an application as a collection of loosely coupled services, which implement business capabilities. The microservice architecture enables the continuous

microservices.io

 

1.  마이크로 서비스란? 

 

 

마이크로서비스 아키텍처라고도 하는 마이크로서비스는 애플리케이션을 다음과 같은 서비스 집합으로 구조화하는 아키텍처 스타일입니다:

 

  • 독립적으로 배포 가능
  • 느슨하게 결합됨
  • 비즈니스 역량 중심으로 구성
  • 소규모 팀 소유

마이크로서비스 아키텍처를 통해 조직은 크고 복잡한 애플리케이션을 신속하고, 자주, 안정적이고, 지속 가능하게 제공할 수 있으며, 이는 오늘날의 세계에서 경쟁하고 이기기 위한 필수 요소입니다.

소프트웨어를 신속하고 자주 안정적으로 지속 가능하게 제공하는 것이 중요한 이유에 대해 살펴보겠습니다.

 



2. 신속하고 빈번하며 안정적인 소프트웨어 배포 가능하게 만들기 

오늘날의 불안정하고 불확실하며 복잡하며 모호한 세상에서 번창하기 위해서는 비즈니스가 민첩하고 민첩하며 혁신 속도가 빨라야 합니다. 또한 현대의 비즈니스는 소프트웨어를 기반으로 하므로 IT 부서는 DORA 메트릭으로 측정한 소프트웨어를 신속하고 자주 안정적으로 제공해야 합니다.

신속하고 빈번하며 신뢰할 수 있고 지속 가능한 제공을 위해서는 다음 세 가지를 조합한 성공 삼각형이 필요합니다:

 

  • 프로세스 - DevOps 핸드북에 정의된 DevOps
  • 조직 - 소규모의 느슨하게 결합된 교차 기능 팀들의 네트워크
  • 아키텍처 - 느슨하게 결합되고 테스트 가능하며 배포 가능한 아키텍처

팀은 대부분의 경우 독립적으로 작업을 수행하여 자동화된 구축 파이프라인을 통해 테스트되고 프로덕션에 구현되는 작고 빈번한 변경사항 스트림을 생성합니다.

이제 느슨하게 결합되고 테스트 가능하며 배포 가능한 아키텍처를 구축하기 위해 일반적으로 마이크로 서비스를 사용해야 하는 경우에 대해 살펴보겠습니다.

 

 


3.  Monolithic 아키텍처 기반에서 갑작스럽게 사용자가 급증을 한다면?

 

단일 아키텍처의 상황에서 비지니스가 급성장을 할경우 크리티컬한 비즈니스 애플리케이션을 담당하고 있으며 비즈니스 요구사항을 충족하기 위해 고군분투하고 있다고 가정해 보겠습니다. 마이크로서비스 아키텍처로 마이그레이션하는 것을 고려해야 합니까? 간단한 답은 다음과 같습니다.

예를 들어 DevOps를 채택하고 느슨하게 결합된 소규모 팀으로 재구성하는 등의 단일 아키텍처를 최대한 활용하는 것이 중요합니다.

대부분의 경우 성공 삼각형을 수용한 후에는 단일 아키텍처를 충분히 느슨하게 결합하고 테스트할 수 있으며 배포 가능하여 신속한 소프트웨어 제공이 가능합니다.

그러나 때로는 애플리케이션이 단일 아키텍처를 능가하여 빠르고 빈번하며 신뢰할 수 있는 소프트웨어 제공에 장애물이 될 수 있습니다. 이는 일반적으로 애플리케이션이 크고 복잡해질 때 발생하며 많은 팀에서 개발합니다. 예를 들어, 애플리케이션의 배포 파이프라인이 병목 현상이 됩니다. 이러한 현상이 발생하면 마이크로서비스로 마이그레이션하는 것을 고려해야 합니다.

 

 

4. 마이크로서비스 아키텍처 설계

 
Kubernetes, 메시지 브로커 등 기술 선택이 중요합니다

하지만 결정적으로 중요한 것은 좋은 서비스 아키텍처를 설계하는 것입니다. 서비스를 식별하고, 그 책임을 정의하고, API와 협업을 정의하는 것입니다. 잘못 이해하면 분산된 모노리스를 생성할 위험이 있고, 이로 인해 소프트웨어 제공이 느려질 것입니다.

또한 서비스 아키텍처를 설계하는 것은 매뉴얼에서 구입, 다운로드 또는 읽을 수 있는 것이 아니라 창의적인 활동이기 때문에 어렵습니다.

어셈블리지는 마이크로서비스 아키텍처를 정의하는 데 사용할 수 있는 아키텍처 정의 프로세스입니다. 요구사항을 시스템 운영 및 하위 도메인으로 확장하고, 암흑 에너지 및 암흑 물질의 힘을 사용하여 하위 도메인을 서비스로 그룹화하고, 분산된 시스템 운영을 설계합니다.


Assemblage works 에 대해서 TA 설계를 할때 반드시 마이크로서비스 패턴 언어를 고려해서 해야합니댜

대상 마이크로서비스 아키텍처를 정의한 후에는 기존의 모노리딕 아키텍처를  모두 리펙토링을 해야 합니다.

 

 

Assemblage 개요 

 

 

 

마이크로서비스 아키텍처에 대해서 고려를 하고 있다고 하시면 반드시 위 책과 이 사이트의 정보를 참조하시기 바랍니다. 

 

반응형