2014-12-31 2 views
2

저는 Spring Boot와 RabbitMQ를 사용하여 마이크로 서비스 아키텍처를 테스트하고 있습니다. 지금은 두 개의 작은 서비스가여러 서비스가 종속되어있을 때 마이크로 서비스 아키텍처에서 자체 생성 아티팩트를 처리하는 방법은 무엇입니까?

: UserRegistrationService는 GetUserInfo 모든 사용자 별 서비스가 같은 DB를 사용하도록 내가 선택한

(같은 DB에서 사용자를 반환) (A DB에 사용자를 등록합니다) .

두 서비스 모두 "사용자"(JPA) 엔터티를 사용하고 있습니다. (이것은 가장 똑똑한 방법이 아닐 수도 있습니다)

이 종속성을 효과적으로 처리하는 방법이 있습니까? (두 개의 서비스가 같은 개체에 의존 함) 엔티티 (사용자)를 별도의 프로젝트로 만들고 이슈 저장소를 사용해야합니까?

답변

1

예. 재사용 가능성과 유지 보수 용이성을 위해 공통 구성 요소를 별도의 jar 아티팩트로 게시하고 각 마이크로 서비스의 종속성으로 참조해야 할 수도 있습니다.

샘플 프로젝트 구조는 다음과 같이 될 수

enter image description here

2

네,하지만 당신은 한 단계 더 나아가 데이터베이스 표현에서 메시지 표현을 분리해야한다. 각 서비스 API의 어휘 객체에 대한 단순한 DTO 만 포함하는 API 아티팩트를 정의하고 관련 DTD를 참조하여 메시지 기반 POJO를 구현합니다. (만약 당신이 Spring Integration을 사용하고 있다면, 스프링 컨버터를 등록하여 자동으로 앞뒤로 매핑 할 수 있습니다.)

+0

멋진 아이디어! 자바에서이 작업을 수행하는 방법을 알고 있지만 언어 의존성이 적은 수준에서이 작업을 수행 할 수있는 방법이 있습니까? JSON 메시지의 구조와 같습니다. 서비스가 다른 언어로 다른 서비스로 전환되면 어떻게됩니까? – khazrak

+0

@khazrak 아니요. 이것은 본질적으로 특정 JSON 형식에 대한 언어 바인딩이며 JSON 용 프로토콜 버퍼와 유사한 도구는 모릅니다. JSON API에 대한 코드 기반 정의를 제공하여 다른 언어 바인딩을 작성할 수 있습니다 (바인딩이 필요한 경우 JS 및 Ruby가 필요하지 않은 경우). – chrylis

관련 문제