Speaker: Tobias Bayer, Hendrik Still
Event: W-JAX 2015
November 2015
weitere Vorträge von inovex:
https://www.inovex.de/de/content-pool/vortraege
Microservices bringen bekanntermaßen eine ganze Reihe von Vorteilen (Skalierbarkeit, Ausfallsicherheit, Sprach- und Technologieunabhängigkeit, erhöhte Flexibilität ...) mit sich — durch den verteilten Architekturansatz aber auch einige Herausforderungen (Monitoring, verteilte Transaktionen, schwierigere Testbarkeit, Service Discovery ...).
In diesem Vortrag greifen wir die beiden Punkte „schwierigere Testbarkeit“ und „Service Discovery“ auf und zeigen mit Pact (Consumer-driven Contract Tests) und Eureka (Service Discovery) Lösungsmöglichkeiten hierzu. Abgerundet wird der Talk durch die praktische Vorführung einer Deployment-Pipeline, die das Testen mit Pact veranschaulicht.
41. Deployment-Pipeline mit CDC
#start test container
docker run ... productpriceservice:test
#wait for the container to start
sleep 10
#verify pact with specific gradle file
./gradlew -b pact_verification_ci/build.gradle /
-P pactProductPriceServiceHost=$CIP /
-P pactProductPriceServiceTag="latest/prod" pactVerify
#stop test container
docker rm -f $CID
42. Deployment-Pipeline mit CDC
#start docker instance with new image
docker run ... productpriceservice:test
#tag docker image as production
docker tag productpriceservice:test productpriceservice:prod
docker push productpriceservice:prod
46. Deployment-Pipeline mit CDC
#start docker instance with provider image
docker run ... productdetailsservice:prod
#wait for the container to start
sleep 10
#verify pact with specific gradle file
./gradlew -b pact_verification_ci/build.gradle
-P pactProductDetailsServiceHost=$CIP
-P pactProductDetailsServiceTag="latest" pactVerify_productDetailsServiceProvider
#stop test container
docker rm -f $CID
#start docker instance with provider image
docker run ... microservicesplayground_productpriceservice:prod
#wait for the container to start
sleep 10
...
47. Deployment-Pipeline mit CDC
#start docker instance with new image
docker run ... productservice:test
#tag docker image as production
docker tag user/productservice:test productservice:prod
docker push productservice:prod
48. Deployment-Pipeline mit CDC
curl -X PUT -H "Content-Type: application/json" /
http://pact-broker:9292/pacticipants/Product_Service /
/versions/1.0.0/tags/prod