반응형 마이크로서비스: 이벤트 및 DDD(Domain-Driven Design) 모델링

in kr-dev •  2 years ago 

마이크로서비스 시스템을 모델링하는 더 나은 방법

객체 지향 프로그래밍과 서비스 지향 아키텍처의 초창기부터 전문가들은 캡슐화와 모듈 간의 느슨한 결합의 이점을 인식했습니다. Reactive Microservices는 기존 아키텍처가 할 수 없는 수준에서 격리자율성 을 제공합니다.

Reactive Microservices는 각각 단일 책임 을 가지며 프로토콜을 통해 기능을 게시합니다. 그들은 메시지 중심적이며 긴밀하게 결합되지 않고도 협력하고 협력할 수 있습니다. 이러한 특성은 새로운 개발 및 배포 패턴을 가능하게 합니다.

  • 각 마이크로 서비스는 단일 팀에서 소유합니다.
  • 마이크로서비스는 독립적으로 모니터링, 테스트 및 디버깅할 수 있습니다.
  • 마이크로서비스는 시스템의 다른 서비스에 영향을 미치지 않고 지속적으로 전달 을 지원하여 자주 업그레이드할 수 있습니다 .
  • 마이크로서비스는 독립적으로 확장 및 축소 및 축소할 수 있으며, 다른 서비스에 영향을 주지 않고 수요 변동에 따라 리소스를 추가하거나 특정 인스턴스를 추가 및 제거할 수 있습니다.

확장성과 탄력성을 제공해야 하는 Reactive Microservice는 자체 데이터를 소유하고 자율적으로 작동할 수 있어야 합니다. 자율 서비스는 기능을 수행하는 데 필요한 모든 데이터를 저장해야 합니다. 때때로 이 데이터는 다른 서비스가 소유하고 여러 위치에 저장될 수 있습니다. 분명히, 하나의 작업이 완료되도록 전체 시스템의 모든 요청을 중지하여 일관성을 보장할 수 없습니다. 이러한 복잡한 상호 작용을 처리할 수 있는 시스템을 어떻게 설계합니까?

DDD(Domain-Driven Design)는 비즈니스 및 기술 전문가가 협력하여 비즈니스 요구 사항을 중심으로 시스템을 설계하는 입증된 모델링 패턴입니다. DDD는 개별 마이크로서비스에 대한 경계와 컨텍스트를 설정하는 현실적인 방법을 제공합니다. 그러나 많은 사람들에게 어려운 것으로 판명된 것은 마이크로서비스 사이의 공간을 모델링하는 것입니다.

Events-First Domain Driven Design 은 시스템 전반의 데이터 종속성과 통신을 보다 쉽게 모델링할 수 있도록 하는 DDD의 수정으로 등장했습니다. 이벤트는 사실이며 실행 중인 시스템에서 일어날 일입니다. 예를 들어 주문 시스템에서 주문 완료는 중요한 이벤트입니다. 이벤트 스토밍( event storming ) 동안 , 당신은 그 이벤트로 이어지는 것을 탐색할 것입니다. 여기에는 예를 들어 판매세율, 배송 방법 선택 및 지불 확인에 대한 쿼리가 포함될 수 있습니다. 이렇게 하면 관련된 엔터티를 식별하고 해당 엔터티 주위에 올바른 경계를 그리는 데 도움이 됩니다.

이벤트

이벤트는 각 엔터티에 발생한 일과 발생한 시간에 대한 기록을 제공합니다. Reactive 시스템에서 마이크로 서비스는 이벤트를 지속 가능한 스토리지, 즉 이벤트 로그에 게시할 수 있습니다. 그러면 다른 마이크로서비스 또는 외부 시스템이 해당 이벤트에 액세스할 수 있습니다. 이는 마이크로서비스를 서로 분리함으로써 도움이 됩니다. 이벤트 로그는 복구 중인 마이크로 서비스가 재생하여 복구할 수 있는 기록이 되며 감사 및 디버깅을 위한 훌륭한 기반을 제공합니다.

이벤트 기반 아키텍처를 처음 접하는 개발자의 도전 과제는 상태가 변경될 때 시스템의 모든 구성 요소가 해당 변경 사항을 확인하기까지 불확실한 시간이 걸린다는 사실을 받아들이는 것입니다. 이것은 반응성 특성을 달성하기 위해 수행하는 절충안이며 최종 일관성이라고 합니다.

기능이 긴밀하게 결합되고 단일 데이터베이스와 연결된 기존의 n-계층 아키텍처에서는 강력한 일관성을 유지할 수 있었습니다. 그러나 분산 시스템에서 강력한 일관성은 확장성, 가용성 및 처리량을 제한합니다. 마이크로 서비스 설계는 일반적으로 마이크로 서비스 내에서 강력한 일관성이 필요한 위치와 일관성을 완화할 수 있는 위치를 식별해야 합니다.

패러다임의 최종 일관성으로의 전환은 세상이 작동하는 방식을 보다 정확하게 반영한다는 것을 깨달을 때 더 쉬워집니다. 우리가 관찰하는 일은 이미 일어난 일입니다. 그리고 워크플로와 상태 머신은 이벤트 모델에 맞는 일반적인 개발 방식입니다.

이벤트에 초점을 맞추고 최종 일관성을 수용하면 마이크로 서비스 시스템에서 다양한 통신 패턴을 허용합니다.

마이크로서비스 기반 아키텍처의 주요 이점 중 하나는 현실을 활용하고 세상이 작동하는 방식을 밀접하게 모방하는 시스템을 만들기 위한 도구 세트를 제공한다는 것입니다.

Reactive Microsystems, Jonas Bonér 의 The Evolution of Microservices at Scale.

출처 : https://www.lightbend.com/microservices/reactive-microservices-events-domain-driven-design-ddd

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.