2016-08-09 5 views
-1

복잡한 cenario를 사용하는 마이크로 서비스에 대해 몇 가지 질문이 있습니다. 예를 들어, 체크 아웃.복잡한 마이크로 서비스를 구현하는 방법은 무엇입니까?

사용자 지역에 맞게 제품 세부 사항을 수정하고 재고 및 사용자 정보를 업데이트해야합니다. 으로 최종 가격을 계산하고 제품을 보내주십시오. 그래서 나는 다음과 같은 서비스를 가지고있다 :

  • ProductService;
  • 인벤토리 서비스;
  • UserService;
  • TaxesService;
  • ShippingService;
  • CheckoutService?

내 첫 번째 질문은이 모든 로직을 수행하고 최종 가격을 계산하려면 새로운 서비스 (예 : CheckoutService)가 필요합니까?

그렇다면이 새로운 서비스가 트랜잭션을 제어합니다 (예 : 2 단계 커밋)?

모든 서비스는 사용자 고유의 데이터베이스 여야합니까? 내 응용 프로그램이 amazon 환경에서 실행되는 경우 각 서비스에 대해 하나의 RDS 인스턴스가 있어야합니다.

답변

4

솔직히 대답은 당신이 얻는다면 아무도 완벽한 대답이 될 수 없습니다. 많은 것들이 디자인과 개인적인 필요에 따라 달라집니다.

다음과 같이 내가 도메인 기반 디자인 (DDD)와 긴밀하게 복잡한 microservices 아키텍처 후속 소송을 설계 할 때 타고있는 단계 :

  1. 도메인을 정의합니다 (예에서는, 전자 상거래 도메인 것 같다)
  2. 는 즉각적인 결과물에 결정 (귀하의 예제에서, 카트 체크 아웃에 항목을 추가 할 수있는 기능)
  3. 이 예에서 문맥 경계를 (정의, 체크 아웃은 자신의 상황에 맞는 경계 그리고 아마 충분히 나뭇결 괜찮 수 있습니다. 체크 아웃보다 더 정교한 당신은 아마도 t로 모험하고 있습니다. 그는 당신이 원하는 곳이 아닌 나노 서비스 영역입니다.

이제 당신은 당신의 마이크로 서비스가 될 문맥상의 경계가 있습니다. 해당 상황 경계를 구현할 때는 자체적 인 부분으로 나누어야합니다. 귀하의 예제에서, 당신이

  1. 가격/세금 계산이 나타납니다
  2. 재고 관리
  3. 주문 관리

여기에서, 당신은 당신이 각 부분에서 필요로 어떤 기능을 확인할 수 있습니다 컨텍스트 경계를 설정하고 프레젠테이션/컨트롤러, 서비스 및 리포지토리로 분리합니다.

예를 들어 주문 관리를하십시오.주문하면 주문에 관해서는

를 데이터 저장소로부터 데이터를 가져 오도록 명령에 대한 비즈니스 로직과 데이터 매핑

  • 주문 저장소를 처리 할 수 ​​

    • 주문 서비스 : 당신은 아마 뭔가를 원하는 것 관리 요구는 많은 비즈니스 규칙과 매우 복잡합니다. 이러한 요구 사항에 맞게 여러 서비스/저장소로 나누거나 어쩌면 자신의 컨텍스트 경계가 될 자격이 될 수도 있습니다.

      요 ur 체크 아웃 (물건을 계산하고 거래를 제어하는 ​​방법에 대해 질문했습니다.) 그러나 그 디자인은 당신이 그것을하기로 결정한 것입니다.

      일단 모든 것을 갖추 었으면 데이터 저장소 요구 사항과 서버 요구 사항을 파악할 수 있습니다. 처음에는 많은 사용자가 없을 것이므로 각 서비스는 동일한 프로젝트의 동일한 서버에있을 수 있으며 자체 서버에 단일 데이터베이스를 가질 수 있습니다. 하지만 분산 시스템을 통해 더 많은 사용자를 처리 할 수있는 기능이 필요할 때마다 코드를 다시 작성하지 않고도 그렇게 할 수 있습니다.

      당신이하고있는 일에 대해 알지 못해도 당신에게 줄 수있는 답변만큼 좋습니다. 여기에 단어를 넣고 구현하는 대신, 여기에 조언을 듣고 자신의 단계를 거쳐 자신의 요구에 가장 적합한 디자인을 결정합니다.

      TL; DR

      1. 프리젠 테이션/컨트롤러, 서비스로 그 조각까지
      2. 브레이크 당신의 상황에 맞는 경계의 각 부분을 결정 상황에 맞는 경계에
      3. 이별 도메인을 도메인 정의 , 및 저장소.
      4. 일단 완료되면 데이터 저장소 및 서버 요구 사항을 확인하십시오 (시작, 각 데이터 저장소에 대한 서버 (예 : 서버의 SQL 및 NoSQL/다른 가상 서버의 Blob) 및 마이크로 서비스를위한 단일 서버 그런 다음 처리 할 사용자가 더 많으면 마이크로 서비스를 배포하십시오.

      행운을 비네!

  • 관련 문제