2017-12-27 6 views
3

스프링 부트 1.5.9를 사용 중이며 다른 마이크로 서비스와 연결되는 마이크로 서비스가 있습니다.여러 마이크로 서비스를 어떻게 관리하고 개발 환경 (테스트가 아닌)에서 조롱하는가?

(개발자 컴퓨터)의 통합 테스트 및 의 경우 다른 마이크로 서비스에 대한 나머지 호출을 모의 또는 스텁하고 싶습니다. unit/integration 테스트에서이 질문은 이미 여러 번 답변되었습니다 : WireMock, MockBean, MockRestServiceServer는 좋은 툴입니다. 그러나 개발을위한 나는 최선의 접근 방법을 찾으려고 노력하고있다.

왜? 실제 마이크로 서비스가 의존하는 각 마이크로 서비스를 시작하는 데 문제가 있습니다. 따라서 아이디어는 마이크로 서비스를 독립적으로 만들고 개발자의 컴퓨터 또는 다른 장소에서 실행중인 추가 서버없이 시작됩니다. 그래서, 간단한 'mvn spring-boot run'은 다른 마이크로 서비스에 대한 걱정없이 나의 마이크로 서비스를 시작하고 작업하기에 충분합니다.

제 질문은 다음과 같습니다. mock/stub rest를 호출 할 때 권장되는 개발 방법은 무엇입니까? Wiremock은이 경우에도 좋은 접근 방법입니까?

내 프로젝트

내가 src/main/java/resources/에 두 개의 프로파일이 있습니다 (개발에 사용 application-dev.properties) '기본'(application.properties, 그 다른 환경에 사용되는)와 'dev에'.

내 테스트 (src/test/java/resources/)에는 application-dev.properties의 기본 사본 인 application.properties가 하나뿐입니다.

이미 통합 테스트에 Wiremock을 사용하려고합니다. 그러나 JAR에서 개발에만 사용되는 의존성을 소개하는 아이디어가 너무 마음에 들지 않으므로 개발 용으로 사용하고 싶지 않습니다. 제 의도는 통합 테스트 및 개발과 동일한 전략을 사용하는 것입니다.

그래서 옵션은 무엇입니까?

+0

두 번째 웹 서비스 용 클라이언트를 스프링 빈으로 작성하고 단위 테스트에서이 스프링 빈을 조롱하지 않는 이유는 무엇입니까? DAO를 데이터베이스의 클라이언트로 작성하고 유닛 테스트에서 DAO를 조롱하는 것과 같은 방법입니다. –

+0

안녕하세요. 단위/통합 테스트 문제가 해결되었습니다 (Wiremock 사용). 제 질문은 봄 부팅을 할 때의 일반적인 개발 환경에 관한 것입니다. 나는 같은 접근법을 사용하는 것이 "옳은"일인지 여부를 모른다. – Dherik

+1

관련 : https://stackoverflow.com/questions/39891218, https://softwareengineering.stackexchange.com/questions/332972, https://softwareengineering.stackexchange.com/questions/334609 – tkruse

답변

2

예를 들어 로컬로 마이크로 서비스를 시작하려고합니다. 수동 테스트를 위해, 그러나 당신이 의존하는 다른 모든 마이크로 서비스를 시작하고 싶지는 않습니다.

팀은 다음 중 하나를 수행합니다

  • 연결 지역 microservice 공유, 배포 microservice 인스턴스에 (스테이징 환경) 다른 microservices의 쉬운 출시 고정 표시기의 이미지
  • 연결 지역 microservice
  • 일부 또는 모든 다른 마이크로 서비스를 모방 한 로컬 실행중인 단일 와이어 인스턴스에 연결하십시오. 당신은
  • 아무것도 연결하지 마십시오 (일부 비즈니스 로직을 수행하는 경우 wiremock보다는 단지 더 나은) 다른 microservices의 최소 경량 사용자 정의 모의를 작성하여 microservice
  • 별도로, 그것을 위해 wiremock의 독립을 시작하지만 더미 값을 반환 할 수 있습니다 내부 API 클라이언트로부터.
  • 사실 로컬 당신을 위해 최선의 그 작품의 환경에 따라 달라지며, 정확히 다른 microserivce 종속성이 기능으로 제공

다른 모든 microservices를 시작합니다. 모든 팀과 모든 상황에 가장 적합한 총알이 될 것으로 기대할 수는 없습니다.

+0

나는 대답을 정말 좋아한다. 다른 개발자가 이러한 상황을 어떻게 관리하는지 알고 싶습니다. 제 우려는 제가 문제를 해결하기 위해 정말로 "이상한"것을 생각하고 있었지만, 당신의 대답은 제가 틀 렸음을 보여줍니다. – Dherik