도메인 기반 설계와 마이크로서비스를 융합하는 방법

in hive-137029 •  3 years ago 



각각 단일 기능을 수행하도록 설계된 세분화된 마이크로서비스를 작업하는 개발자는 해당 서비스를 특정 비즈니스 요구 및 프로세스에 연결해야 합니다. 그러나 그들은 또한 분산된 상태 비저장 및 모델 기반 아키텍처의 우선 순위를 지정해야 합니다. 개발 프로세스는 이 두 가지 우선 순위에 맞게 조정되어야 합니다.

DDD(Domain-Driven Design) 는 비즈니스 문제 전문가와 소프트웨어 개발자를 통합 하여 비즈니스 요구에 초점을 맞춥니다 . 도메인 은 지식의 영역을 말하며, 조직에는 핵심 영역과 하위 영역이 있습니다.

DDD를 마이크로서비스 아키텍처에 통합하려면 팀은 다음을 수행해야 합니다.

  • 비즈니스 도메인과 기능을 제한된 컨텍스트로 분할합니다.
  • 통합된 유비쿼터스 언어를 만듭니다. 그리고
  • 아키텍처 고려 사항에서 기능적 기능 문제를 분리합니다.

제한된 컨텍스트

DDD에서 목표는 비즈니스를 광범위한 기능으로 나누는 것입니다. 그런 다음 이러한 도메인을 특정 비즈니스 활동을 위한 개별 하위 도메인으로 더 나눕니다. 이러한 도메인 및 하위 도메인 은 제한된 컨텍스트 (특정 애플리케이션 서비스와 관련될 수 있는 책임의 실질적인 분할)를 정의 합니다.

올바르게 사용되면 경계 컨텍스트는 도메인 중심 설계로 변환되는 구조적 목표를 나타냅니다. 개발 팀은 경계 컨텍스트를 도표화하고 매핑한 다음 해당 컨텍스트를 해당 비즈니스 애플리케이션을 구성하는 코드로 변환할 수 있습니다. 이상적으로 이러한 제한된 컨텍스트는 단일하고 단순한 관계에 중점을 둡니다. 명확한 관계를 통해 경계를 올바르게 정의했는지 여부를 더 쉽게 테스트할 수 있습니다.

DDD와 마이크로서비스가 함께 작동하도록 하려면 사용자-애플리케이션 관계 목표를 경계 컨텍스트로 정의하십시오. 예를 들어, 가상 데스크톱을 통해 사용자에게 애플리케이션을 노출하려는 경우 이는 제한된 컨텍스트를 나타내는 비즈니스 목표입니다.

유비쿼터스 언어

일반적인 DDD 연습 은 유비쿼터스 언어 의 사용을 요구합니다 . 그러나 소프트웨어 프로젝트에 관련된 모든 사람이 코드를 쉽게 읽고 검토할 수 없다면 언어는 유비쿼터스하지 않습니다. 그리고 도메인 전문가에게 프로그래밍 방법을 가르치는 것은 실용적이지 않습니다.

이 시점에서 맹목적으로 코드 작성을 시작하지 마십시오. 대신 잘 명명된 변수를 참조하고 명확하게 정의된 절차를 호출하는 주요 기능 논리 흐름을 작성하십시오. 이를 통해 도메인 전문가는 기능 흐름을 검토하고 도메인 중심 설계에서 자신의 역할을 수행하는 데 필요한 상위 수준의 보기를 얻을 수 있습니다.

도메인 기반 소프트웨어를 위한 최고의 언어는 구조화되고 절차적이어서 필요한 개체 정의, 기능, 클래스 및 읽을 수 있는 이름을 허용합니다. 적절한 구성 요소 화 및 이름 지정을 통해 개발 언어가 진정한 유비쿼터스 언어 역할을 할 수 있습니다.

또한 좋은 유비쿼터스 언어 설명은 구조적 흐름과 분리된 기능적 흐름을 전달해야 합니다. 소프트웨어 구현 및 배포 방법에 대한 세부 정보와 소프트웨어가 수행하는 작업을 설명하는 세부 정보를 분리해야 합니다. 각 상위 수준 흐름은 절차를 호출하고 이러한 절차를 구현하는 방식은 마이크로서비스의 효과적인 사용을 촉진하거나 실수로 탈선합니다.

공유 가능한 구성 요소 정의

다시 말하지만 구성 요소화는 마이크로서비스와 도메인이 작동하도록 하는 주요 결정입니다. 적절하게 명명된 프로시저가 이름만으로 공통 기능을 식별하기 때문에 언어 수준에서 공유 가능한 구성 요소를 만드는 것이 더 쉽습니다. 그런 다음 마이크로서비스 개발자는 구현을 조화시키고 여러 요구 사항 집합을 충족하기 위해 작업할 수 있습니다. 공유 가능한 모든 것은 독립 구성 요소 및 마이크로 서비스로 변환할 수 있는 후보입니다.

일부 비공유 기능 또는 절차도 마이크로서비스의 후보입니다. 예를 들어, 부하 가 있는 상태 에서 확장할 수 있을 만큼 충분히 복잡 하고 병렬 프로세스로 간주할 수 있을 만큼 독립적인 함수를 찾으십시오. 마이크로서비스 아키텍처의 이점은 재사용성 그 이상입니다.

이 모든 작업이 완료되면 경계 컨텍스트 맵을 다시 도표화하여 각 컨텍스트를 상위 수준 프로세스로 분해합니다. 또한 공유 프로세스를 처리에 기여하는 다른 모든 제한된 컨텍스트와 관계가 있는 새 컨텍스트로 추출합니다. 최종 검토 후 유비쿼터스 언어를 최종 애플리케이션 코드로 다듬습니다.

DDD와 마이크로서비스는 조직이 기능 및 아키텍처 고려 사항을 혼합할 수 있을 때 함께 작동합니다. 이는 도메인 전문가가 기능적 측면에 기여하고 소프트웨어 설계자가 아키텍처를 제어할 수 있도록 허용하는 것을 의미합니다. 초기에 공동 작업을 시작하고 세부 설계에서 코드로의 변환에 집중하십시오.



https://www.techtarget.com/searchapparchitecture/tip/How-to-fuse-domain-driven-design-and-microservices

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 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.