Your SlideShare is downloading. ×
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Agile Australia 2014: Workshop - Design and Implementation of Microservices
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Agile Australia 2014: Workshop - Design and Implementation of Microservices

882

Published on

Design and Implementation of Microservices …

Design and Implementation of Microservices
Sam Newman - Technical Consultant, ThoughtWorks
Scott Shaw - Head of Technology, ThoughtWorks

Discover a consistent and reinforcing set of tools and practices rooted in the philosophy of small and simple; this can help you move towards a microservice architecture.

Published in: Business, Technology
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
882
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
81
Comments
0
Likes
7
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Microservices ThoughtWorks
  • 2. Scott Shaw @scottwshaw Sam Newman @samnewman
  • 3. Schedule • 09:00 - 10:30 Session 1 • 10:30 - 10:45 Break • 10:45 - 12:00 Session 2 • 12:00 - 13:15 Lunch • 13:15 - 15:00 Session 3 • 15:00 - 15:30 Break • 15:30 - 17:00 Session 4
  • 4. 09:00 - 10:30 Session 1 • Introduction • Icebreaker • Why Services • Principes & Constraints • Evolutionary Architecture
  • 5. 10:45 - 12:00 Session 2 • Integration
  • 6. 13:15 - 15:00 Session 3 • Splitting Services • CAP & Transactions • Testing & CDCs • Operational Concerns
  • 7. 15:00 - 15:30 Session 4 • Deploying • UI & Mobile • Conway’s Law • Security
  • 8. http://www.flickr.com/photos/55255903@N07/6835060992
  • 9. http://www.flickr.com/photos/22154104@N00/3466383400
  • 10. http://www.flickr.com/photos/sailbit/3409405778/
  • 11. Why Services?
  • 12. or: are we building systems that are too big?
  • 13. 90% of the TCO of an application is incurred post launch
  • 14. IT  project-­related  losses  are  an  embarrassment  for  the  industry  fund  backers  –  Australian​Super,  Cbus,  HOSTPLUS,  HESTA  and  MTAA  Super  – which  pride  themselves  on  low  fees  and  improving  member  services.   Illustration:  Karl  Hilzinger A group of industry superannuation funds has revealed in accounts lodged with the Australian Securities and Investments Commission that the cost of implementing a key IT project has blown out by another $43 million. This means that a project that started in 2008 and was meant to be completed by 2010 will cost super fund members at least $250 million and will be delivered at least four years late. Superpartners, a super administration company owned by five industry retirement schemes, posted a $7.4 million loss on revenues of $257 million for the 12 months ended June 30, after being forced to take a $20.4 million impairment Superpartners’ botched IT project costs industry super funds millions Published  26  November  2013  01:17,  Updated  27  November  2013  07:46 Sally  Patten
  • 15. we have to rewrite entire ecosystems every few years
  • 16. we have to rewrite entire ecosystems every few years this doesn’t make many CFO’s happy
  • 17. scary story
  • 18. Retail Site Departure Control
  • 19. Retail Site Departure Control
  • 20. Retail Site Departure Control
  • 21. Retail Site Departure Control 48 Cores ! 256 GB RAM (NUMA) ! ~ $1 x 106 per machine
  • 22. 22
  • 23. Airline Tightly coupled “Golden Hammer Syndrome” Single point of failure Expensive to scale High operational cost High cost of failure
  • 24. 24
  • 25. Airline Retail Site Departure Control
  • 26. Airline Retail Site Departure Control
  • 27. Airline Retail Site Departure Control
  • 28. Airline Retail Site Departure Control X
  • 29. scary story
  • 30. HR UI "Middleware DB" ? ? ? Data Warehouse ? canned reports cubes / ad-hoc UIUI UI Finance UI Views of external Data Read only external data Read only external dataDirect db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access SSO UI / Service AD Direct db access Direct db access ?
  • 31. The stovepipe enterprise Stovepipes)are)“systems)procured)and)developed)to)solve)a)specific)problem,) characterized)by)a)limited)focus)and)func:onality,)and)containing)data)that) cannot)be)easily)shared)with)other)systems.”)(DOE)1999)) DOE.%Commi*ee%to%Assess%the%Policies%and%Prac7ces%of%the%Department%of%Energy,%Improving%Project% Management%in%the%Department%of%Energy,%Na7onal%Academy%Press,%Washington,%D.C.,%1999,%page%133.%
  • 32. HR UI "Middleware DB" ? ? ? Data Warehouse ? canned reports cubes / ad-hoc UIUI UI Finance UI Views of external Data Read only external data Read only external dataDirect db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access SSO UI / Service AD Direct db access Direct db access ?
  • 33. HR UI "Middleware DB" ? ? ? Data Warehouse ? canned reports cubes / ad-hoc UIUI UI Finance UI Views of external Data Read only external data Read only external dataDirect db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access SSO UI / Service AD Direct db access Direct db access ?
  • 34. HR UI "Middleware DB" ? ? ? Data Warehouse ? canned reports cubes / ad-hoc UIUI UI Finance UI Views of external Data Read only external data Read only external dataDirect db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access SSO UI / Service AD Direct db access Direct db access ? HR UI "Middleware DB" ? ? ? Data Warehouse ? canned reports cubes / ad-hoc UIUI UI Finance UI Views of external Data Read only external data Read only external dataDirect db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access SSO UI / Service AD Direct db access Direct db access ? HR UI "Middleware DB" ? ? ? Data Warehouse ? canned reports cubes / ad-hoc UIUI UI Finance UI Views of external Data Read only external data Read only external dataDirect db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access SSO UI / Service AD Direct db access Direct db access ? HR UI "Middleware DB" ? ? ? Data Warehouse ? canned reports cubes / ad-hoc Finance UI Views of external Data Read only external data Read only external dataDirect db access Direct db access Direct db access Direct db access SSO UI / Service AD Direct db access ? HR UI "Middleware DB" ? ? ? Data Warehouse ? canned reports cubes / ad-hoc UIUI UI Finance UI Views of external Data Read only external data Read only external dataDirect db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access SSO UI / Service AD Direct db access Direct db access ? HR UI "Middleware DB" ? ? ? Data Warehouse ? canned reports cubes / ad-hoc UIUI UI Finance UI Views of external Data Read only external data Read only external dataDirect db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access SSO UI / Service AD Direct db access Direct db access ? HR UI "Middleware DB" ? ? ? Data Warehouse ? canned reports cubes / ad-hoc UIUI UI Finance UI Views of external Data Read only external data Read only external dataDirect db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access SSO UI / Service AD Direct db access Direct db access ? HR UI "Middleware DB" ? ? ? Data Warehouse ? canned reports cubes / ad-hoc Finance UI Views of external Data Read only external data Read only external dataDirect db access Direct db access Direct db access Direct db access SSO UI / Service AD Direct db access ? HR UI "Middleware DB" ? ? ? Data Warehouse ? canned reports cubes / ad-hoc UIUI UI Finance UI Views of external Data Read only external data Read only external dataDirect db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access SSO UI / Service AD Direct db access Direct db access ? HR UI "Middleware DB" ? ? ? Data Warehouse ? canned reports cubes / ad-hoc UIUI UI Finance UI Views of external Data Read only external data Read only external dataDirect db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access SSO UI / Service AD Direct db access Direct db access ? HR UI "Middleware DB" ? ? ? Data Warehouse ? canned reports cubes / ad-hoc UIUI UI Finance UI Views of external Data Read only external data Read only external dataDirect db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access SSO UI / Service AD Direct db access Direct db access ? HR UI "Middleware DB" ? ? ? Data Warehouse ? canned reports cubes / ad-hoc Finance UI Views of external Data Read only external data Read only external dataDirect db access Direct db access Direct db access Direct db access SSO UI / Service AD Direct db access ? HR UI "Middleware DB" ? ? ? UIUI UI Finance UI Views of external Data Read only external data Read only external dataDirect db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access UI / Service Direct db access Direct db access HR UI "Middleware DB" ? ? ? UIUI UI Finance UI Views of external Data Read only external data Read only external dataDirect db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access UI / Service Direct db access Direct db access HR UI "Middleware DB" ? ? ? UIUI UI Finance UI Views of external Data Read only external data Read only external dataDirect db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access UI / Service Direct db access Direct db access HR UI "Middleware DB" ? ? ? Finance UI Views of external Data Read only external data Read only external dataDirect db access Direct db access Direct db access UI / Service Direct db access
  • 35. HR UI "Middleware DB" ? ? ? Data Warehouse ? canned reports cubes / ad-hoc UIUI UI Finance UI Views of external Data Read only external data Read only external dataDirect db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access SSO UI / Service AD Direct db access Direct db access ? Logic scattered all over the place Data scattered all over the place Difficult to predict the effect of changes Which system is right? BI / MI almost impossible to get at
  • 36. V1
  • 37. V2
  • 38. Go JVM NodeJS Ruby
  • 39. Go JVM NodeJS Ruby
  • 40. Go NodeJS Ruby Clojure!
  • 41. Why now?
  • 42. standing on the shoulders of giants
  • 43. Engineering for: reliability and availability Devops circuit breakers, health checks, status pages
  • 44. Strategic Design Bounded Contexts “town planning”
  • 45. web integration application protocols HATEOAS
  • 46. infrastructure automation patterns for push button deployments the lean software value stream
  • 47. Summary We understand more about building reliable distributed systems cloud compute and programmable infrastructure has matured organisations need to adapt and change quickly to survive we spend too much money on building monoliths
  • 48. Evolutionary Architecture
  • 49. “Just enough architecture”
  • 50. towns are zoned
  • 51. heavy industrial
  • 52. commercial
  • 53. light residential
  • 54. Would you build a playground next to a power station?
  • 55. Would you build a playground next to a power station?
  • 56. Would you build a playground next to a power station? a sewage works next to Macy’s?
  • 57. Towns share utilities
  • 58. Everyone uses 240V DC right?
  • 59. and it would be a bad idea not to use the same language for stop signs...
  • 60. emergent design is within the zones
  • 61. emergent design is within the zones
  • 62. evolutionary architecture is in the gaps emergent design is within the zones
  • 63. evolutionary architecture is in the gaps emergent design is within the zones
  • 64. • Things to think about: • Concentrate on the business capabilities • technical acronyms make us think the wrong way • What are the common features? Integration methods? • What different types of data live where?
  • 65. it can be a single system and its component parts or chunking up to how your systems integrate with others and if you can’t remember thats ok too, we don’t want perfect, just something to work with
  • 66. Summary do just enough up front evolutionary architecture is in the gaps emergent design is in the boxes
  • 67. Bounded Contexts
  • 68. What makes a good service?
  • 69. High Cohesion
  • 70. Loose Coupling
  • 71. The Trifle
  • 72. The Trifle Musik Web
  • 73. The Trifle Musik Web Persistence
  • 74. The Trifle Musik Web Persistence
  • 75. The Trifle Musik Web Persistence
  • 76. The Trifle Musik Web Persistence
  • 77. “A set of capabilities on an endpoint”
  • 78. Bounded Context
  • 79. "The delimited applicability of a particular model. BOUNDING CONTEXTS gives team members a clear and shared understanding of what has to be consistent and what can develop independently."
  • 80. A specific responsibility enforced by explicit boundaries ! http://www.sapiensworks.com/blog/post/ 2012/04/17/DDD-The-Bounded-Context- Explained.aspx
  • 81. Add to cart
  • 82. Add to cart Checkout
  • 83. Add to cart Checkout View Latest Releases
  • 84. Add to cart Checkout View Latest Releases Search
  • 85. Add to cart Checkout View Latest Releases Search Listen To Previews
  • 86. Add to cart Checkout View Latest Releases Search Listen To Previews
  • 87. Add to cart Checkout View Latest Releases Search Listen To Previews Shopping Cart Catalog Music Library
  • 88. Hexagonal Architectures 83 bounded contexts all the way down (and back up again)
  • 89. Object Object Object Object
  • 90. Object James’ conjecture “objects should be no bigger than my head”
  • 91. Object
  • 92. Object Object Object Object
  • 93. as we chunk up domains of abstraction, each domain should be small enough to fit in my head
  • 94. 93 in this case, it meant 100’s of lines of code per application
  • 95. Architecture Principles
  • 96. to build systems is to make trade-offs
  • 97. to build systems is to make trade-offs throughput vs cost
  • 98. to build systems is to make trade-offs throughput vs cost
  • 99. to build systems is to make trade-offs throughput vs cost portability vs deployability
  • 100. to build systems is to make trade-offs throughput vs cost portability vs deployability
  • 101. to build systems is to make trade-offs throughput vs cost portability vs deployability replacability vs maintainability
  • 102. to build systems is to make trade-offs throughput vs cost portability vs deployability replacability vs maintainability evolutionary architecture and emergent design are approaches that maximise flex
  • 103. you want to maximise the degrees of freedom of your system
  • 104. The idea of architecture principles is to try and balance these tradeoffs
  • 105. to try and balance short term gain with longer term strategic goals The idea of architecture principles is to try and balance these tradeoffs
  • 106. to try and balance short term gain with longer term strategic goals The idea of architecture principles is to try and balance these tradeoffs
  • 107. to try and balance short term gain with longer term strategic goals Where trade offs have to be made they should be done so visibility and consciously The idea of architecture principles is to try and balance these tradeoffs
  • 108. to try and balance short term gain with longer term strategic goals Where trade offs have to be made they should be done so visibility and consciously The idea of architecture principles is to try and balance these tradeoffs
  • 109. to try and balance short term gain with longer term strategic goals Where trade offs have to be made they should be done so visibility and consciously They should move you towards a state where the tradeoffs don’t happen so often or have such large impact The idea of architecture principles is to try and balance these tradeoffs
  • 110. to try and balance short term gain with longer term strategic goals Where trade offs have to be made they should be done so visibility and consciously They should move you towards a state where the tradeoffs don’t happen so often or have such large impact The idea of architecture principles is to try and balance these tradeoffs They should be driven by the goals of the business
  • 111. to try and balance short term gain with longer term strategic goals Where trade offs have to be made they should be done so visibility and consciously They should move you towards a state where the tradeoffs don’t happen so often or have such large impact The idea of architecture principles is to try and balance these tradeoffs They should be driven by the goals of the business
  • 112. to try and balance short term gain with longer term strategic goals Where trade offs have to be made they should be done so visibility and consciously They should move you towards a state where the tradeoffs don’t happen so often or have such large impact The idea of architecture principles is to try and balance these tradeoffs They should be driven by the goals of the business for the next 18-24 months
  • 113. to try and balance short term gain with longer term strategic goals Where trade offs have to be made they should be done so visibility and consciously They should move you towards a state where the tradeoffs don’t happen so often or have such large impact The idea of architecture principles is to try and balance these tradeoffs They should be driven by the goals of the business for the next 18-24 months any longer and you are only fooling yourself
  • 114. and if you don’t know what your business goals are...
  • 115. and if you don’t know what your business goals are... may we respectfully suggest that you go and find them out!
  • 116. The idea of constraints is to allow your teams the freedom to make decisions within a consistent framework
  • 117. The idea of constraints is to allow your teams the freedom to make decisions within a consistent framework
  • 118. The idea of constraints is to allow your teams the freedom to make decisions within a consistent framework this is not about “not allowed to break them”, this is about having a conversation
  • 119. The idea of constraints is to allow your teams the freedom to make decisions within a consistent framework this is not about “not allowed to break them”, this is about having a conversation
  • 120. The idea of constraints is to allow your teams the freedom to make decisions within a consistent framework this is not about “not allowed to break them”, this is about having a conversation these work best when backed up by tooling that makes it easy to do the right thing
  • 121. The idea of constraints is to allow your teams the freedom to make decisions within a consistent framework this is not about “not allowed to break them”, this is about having a conversation these work best when backed up by tooling that makes it easy to do the right thing shall we take a look at some examples?
  • 122. http://www.12factor.net/
  • 123. Heroku’s 12 factors are a mixture of principles and constraints http://www.12factor.net/
  • 124. never return directly from a POST
  • 125. favour choreography over orchestration never return directly from a POST
  • 126. favour choreography over orchestration don’t share domain code (and physically separate the codebases to ensure this) never return directly from a POST
  • 127. favour choreography over orchestration don’t share domain code (and physically separate the codebases to ensure this) scale using processes, not threads never return directly from a POST
  • 128. favour choreography over orchestration don’t share domain code (and physically separate the codebases to ensure this) scale using processes, not threads don’t use session state never return directly from a POST
  • 129. Integration
  • 130. or…
  • 131. Avoiding Babel
  • 132. Two Key Attributes Of A Good Service
  • 133. 1. High Cohesion ! 2. Loose Coupling
  • 134. 1. High Cohesion ! 2. Loose Coupling
  • 135. © 2013 Electronic Arts Inc.
  • 136. Otherwise… http://www.flickr.com/photos/mikecogh/4472054494/
  • 137. Integration Styles An Evolutionary View Data Oriented Procedure Oriented Document Oriented Resource Oriented
  • 138. Databases
  • 139. DB MusikShopMono
  • 140. DB Schema Recomendation Service MusicShopMono
  • 141. DB Schema Recomendation ServiceMusicShopMono
  • 142. DB Schema Recomendation ServiceMusicShopMono
  • 143. DB Schema Recomendation ServiceMusicShopMono No loose coupling!
  • 144. DB Schema Recomendation Service MusicShopMono DB Schema Magic ETL
  • 145. which is ok until...
  • 146. HR UI "Middleware DB" ? ? ? Data Warehouse ? canned reports cubes / ad-hoc UIUI UI Finance UI Views of External Data Read only data Read only data Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access SSO UI / Service AD Direct db access Direct db access which is ok until... and yes, this is a real world example...
  • 147. HR UI "Middleware DB" ? ? ? Data Warehouse ? canned reports cubes / ad-hoc UIUI UI Finance UI Views of External Data Read only data Read only data Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access SSO UI / Service AD Direct db access Direct db access changing anything is really really hard
  • 148. HR UI "Middleware DB" ? ? ? Data Warehouse ? canned reports cubes / ad-hoc UIUI UI Finance UI Views of external Data Read only external data Read only external dataDirect db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access SSO UI / Service AD Direct db access Direct db access ? different types of data are smeared about
  • 149. HR UI "Middleware DB" ? ? ? Data Warehouse ? canned reports cubes / ad-hoc UIUI UI Finance UI Views of external Data Read only external data Read only external dataDirect db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access SSO UI / Service AD Direct db access Direct db access ?
  • 150. systems like this are brittle HR UI "Middleware DB" ? ? ? Data Warehouse ? canned reports cubes / ad-hoc UIUI UI Finance UI Views of external Data Read only external data Read only external dataDirect db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access SSO UI / Service AD Direct db access Direct db access ?
  • 151. systems like this are brittle difficult to reason aboutHR UI "Middleware DB" ? ? ? Data Warehouse ? canned reports cubes / ad-hoc UIUI UI Finance UI Views of external Data Read only external data Read only external dataDirect db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access SSO UI / Service AD Direct db access Direct db access ?
  • 152. systems like this are brittle difficult to reason about difficult to change HR UI "Middleware DB" ? ? ? Data Warehouse ? canned reports cubes / ad-hoc UIUI UI Finance UI Views of external Data Read only external data Read only external dataDirect db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access SSO UI / Service AD Direct db access Direct db access ?
  • 153. systems like this are brittle difficult to reason about difficult to change difficult to maintain HR UI "Middleware DB" ? ? ? Data Warehouse ? canned reports cubes / ad-hoc UIUI UI Finance UI Views of external Data Read only external data Read only external dataDirect db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access Direct db access SSO UI / Service AD Direct db access Direct db access ?
  • 154. Next!
  • 155. RPC
  • 156. method calls across a process boundary
  • 157. consider a client invoking the createUser endpoint
  • 158. consider a client invoking the createUser endpoint
  • 159. createUser(id, ! firstName, ! lastName,! address) consider a client invoking the createUser endpoint
  • 160. other clients can use the same call as the first createUser(id, ! firstName, ! lastName,! address)
  • 161. other clients can use the same call as the first createUser(id, ! firstName, ! lastName,! address) so far so good
  • 162. but what happens when you want to change how one of the clients calls your service?
  • 163. but what happens when you want to change how one of the clients calls your service? maybe I don’t want to use first name and last name anymore
  • 164. I want to use the ‘fullname’ createUser(id, ! firstName, ! lastName,! address) createUserByFullname(! id, ! fullName,! address)
  • 165. or I want to specify address individually createUser(id, ! firstName, ! lastName,! address) createUserByFullname(! id, ! fullName,! address) createUserByFullnameAnd Address(! id, ! fullName,! street1,! street2,! zipcode)
  • 166. one of two things tends to happen with systems of this type
  • 167. one of two things tends to happen with systems of this type 1. you end up with very long service definitions
  • 168. one of two things tends to happen with systems of this type 1. you end up with very long service definitions 2. coordination of changes to clients becomes difficult
  • 169. 1. specifications quickly become very very long and a nightmare to maintain
  • 170. 1. specifications quickly become very very long and a nightmare to maintain createUserWithFullname(...)
  • 171. 1. specifications quickly become very very long and a nightmare to maintain createUserWithFullname(...) createUser(...)
  • 172. 1. specifications quickly become very very long and a nightmare to maintain createUserWithFullname(...) createUser(...) createUserWithFullnameAndAddress (...)
  • 173. 1. specifications quickly become very very long and a nightmare to maintain createUserWithFullname(...) createUser(...) createUserWithFullnameAndAddress (...) createUserWithAddress(...)
  • 174. 1. specifications quickly become very very long and a nightmare to maintain createUserWithFullname(...) createUser(...) createUserWithFullnameAndAddress (...) createUserWithAddress(...) every time I want to change some logic, I have to change every method call
  • 175. 2. you have to coordinate the release cycles of your clients createUser(id, ! firstName, ! lastName,! address)
  • 176. createUser(id, ! firstName, ! lastName,! address) createUser(id, ! fullname, ! address) @deprecated 2. you have to coordinate the release cycles of your clients
  • 177. createUser(id, ! firstName, ! lastName,! address) createUser(id, ! fullname, ! address) @deprecated and if you have many clients, thats no easy task 2. you have to coordinate the release cycles of your clients
  • 178. A Brief Aside…
  • 179. Who can tell me about RFC 761?
  • 180. Postel’s Law: “Be liberal in what you do, conservative in what you expect”
  • 181. Practical impact of this - only bind to what you need to reduce breaking service consumption
  • 182. Service B Service A Shared Lib v1 Shared Lib v1
  • 183. Service B Service A Shared Lib v1 Shared Lib v1
  • 184. Service B Service A Shared Lib v1 Shared Lib v1
  • 185. Service B Service A Shared Lib v1 Shared Lib v1 Shared Lib v2
  • 186. Service B Service A Shared Lib v1 Shared Lib v1 Shared Lib v2 Beware of shared serialization protocols
  • 187. Service B Service A Shared Lib v1 Shared Lib v1 Shared Lib v2 Beware of shared serialization protocols WSDL-binding
  • 188. Service B Service A Shared Lib v1 Shared Lib v1 Shared Lib v2 Beware of shared serialization protocols WSDL-binding JAXB
  • 189. Service B Service A Shared Lib v1 Shared Lib v1 Shared Lib v2 Beware of shared serialization protocols WSDL-binding JAXB Java Serialization
  • 190. Messaging
  • 191. (AMC / Associated Press)
  • 192. a bit like going back to the 50’s enterprise (AMC / Associated Press)
  • 193. a bit like going back to the 50’s enterprise except without the smoking and the rampant misogyny (AMC / Associated Press)
  • 194. back in the day, if you wanted to book a holiday, you didn’t go onto your corporate intranet to do it right?
  • 195. back in the day, if you wanted to book a holiday, you didn’t go onto your corporate intranet to do it right? you went to the cupboard
  • 196. back in the day, if you wanted to book a holiday, you didn’t go onto your corporate intranet to do it right? you went to the cupboard and you pulled out one of these
  • 197. back in the day, if you wanted to book a holiday, you didn’t go onto your corporate intranet to do it right? you went to the cupboard and you pulled out one of these and you filled it in
  • 198. james’ holiday request form and then you sent it to the HR department
  • 199. james’ holiday request form and then you sent it to the HR department where it was processed, and eventually you got another envelope back containing the approval
  • 200. and messaging is a bit like that
  • 201. and messaging is a bit like that asynchronous
  • 202. and messaging is a bit like that asynchronous after all, you wouldn’t want to block waiting for internal mail right?
  • 203. incidentally, I wasn’t actually there in the 50’s. I just have this on good authority and messaging is a bit like that asynchronous after all, you wouldn’t want to block waiting for internal mail right?
  • 204. generally you create a message composed of a document
  • 205. and you push it onto some kind of queue
  • 206. and you push it onto some kind of queue
  • 207. systems interested in your documents can pop those documents and act on them
  • 208. systems interested in your documents can pop those documents and act on them
  • 209. and return them should that be the semantics of the exchange
  • 210. the documents allowed additive changes to be made without breaking existing clients
  • 211. the documents allowed additive changes to be made without breaking existing clients If you want to add a field, you can do so as long as clients are late bound to the documents
  • 212. the documents allowed additive changes to be made without breaking existing clients If you want to add a field, you can do so as long as clients are late bound to the documents and if you want to rename something, you can do that easily too (add another one with the same name)
  • 213. and the asynchronous nature decouples the applications from each other
  • 214. and the asynchronous nature decouples the applications from each other
  • 215. and the asynchronous nature decouples the applications from each other you can change this
  • 216. and the asynchronous nature decouples the applications from each other you can change this without breaking this
  • 217. of course, there is a teensy bit more to it than that...
  • 218. Channel Adapter Channel Datatype Channel Dead Letter Channel Guaranteed Delivery ! Invalid Message Channel Message Bus Messaging Bridge Publish Subscribe Channel Aggregator Content Based Router Composed Message Message FIlter Message Router Recipient List Process Manager Splitter Routing SlipResequencer Competing Consumers Message Endpoint Durable Subscriber Event-Driven Consumer Message Dispatcher ? Selective Consumer Service Activator Polling Consumer Transactional Client Messaging Gateway quite a lot more to be perfectly frank
  • 219. Getting async comms right can be hard!
  • 220. And can require the dreaded ‘middleware’
  • 221. The ESB!
  • 222. So when to use it?
  • 223. So when to use it? Long-running jobs
  • 224. So when to use it? Long-running jobs Alternative scaling
  • 225. So when to use it? Long-running jobs Alternative scaling Resiliency
  • 226. So when to use it? Long-running jobs Alternative scaling Resiliency Broadcast
  • 227. So when to use it? Long-running jobs Alternative scaling Resiliency Broadcast Low-latency
  • 228. Next!
  • 229. Let’s take a look at the world’s most successful, distributed, scalable computing system for some tips
  • 230. The Web http://www.flickr.com/photos/photophilde/4527076709/
  • 231. Client cache Proxy cache CDN Infrastructure caches Reverse proxy cache
  • 232. HTTP -> REST!
  • 233. Leonard Richardson’s maturity heuristic
  • 234. Leonard Richardson’s maturity heuristic http://martinfowler.com/articles/richardsonMaturityModel.html
  • 235. Level 0 - POX single service endpoint, many methods
  • 236. createUserWithFullname(...) Level 0 - POX single service endpoint, many methods
  • 237. createUserWithFullname(...) createUser(...) Level 0 - POX single service endpoint, many methods
  • 238. createUserWithFullname(...) createUser(...) updateUserById(...) Level 0 - POX single service endpoint, many methods
  • 239. createUserWithFullname(...) createUser(...) updateUserById(...) updateUserByFullName(...) Level 0 - POX single service endpoint, many methods
  • 240. createUserWithFullname(...) createUser(...) updateUserById(...) updateUserByFullName(...) deleteUserById(...) Level 0 - POX single service endpoint, many methods
  • 241. createUserWithFullname(...) createUser(...) updateUserById(...) updateUserByFullName(...) deleteUserById(...) Level 0 - POX single service endpoint, many methods findUserById(...)
  • 242. • Level 1 tackles the question of handling complexity by using divide and conquer, breaking a large service endpoint down into multiple resources.
  • 243. Level 1 - resources
  • 244. Level 1 - resources
  • 245. ! ! • Level 2 introduces a standard set of verbs so that we handle similar situations in the same way, removing unnecessary variation.
  • 246. Level 2 - HTTP verbs
  • 247. Level 2 - HTTP verbs getUserById(...)
  • 248. Level 2 - HTTP verbs getUserById(...) GET /users/f3c2ac
  • 249. • Level 3 introduces discoverability, providing a way of making a protocol more self-documenting.
  • 250. Basket!
  • 251. What if consumers of a service could act in the same way?
  • 252. scottwshaw / gist:ee875a6018e1676b36ad Last active 22 minutes ago 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 var  jsonpath  =  require('JSONPath');   var  version1  =  {"results":       {"link":  {"uri":  "http://musikshop.com/search/artist=the%20brakes",          "rel":  "self"},      "releases":  [{"release":  "Tale  of  Two  Cities",                    "year":  "2008",                    "link":  {"uri":  "http://musikshop.com/api/cmVsZWFzZXMvMQ==",           "rel":  "http://musikshop.com/rels/release"}},                  {"release":  "The  Brakes",                      "year":  "2006",                    "link":  {"uri":  "http://musikshop.com/api/cmVsZWFzZXMvMg==",           "rel":  "http://musikshop.com/rels/release"}}]}};   jsonpath.eval(version1,  "$..[?(@.rel=='http://musikshop.com/rels/release')]"); gistfile1.json A Document with Hypermedia Links
  • 253. A non-breaking change to the service contract scottwshaw / gist:d531a3f35de01ea45644 Last active 20 minutes ago 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 var  jsonpath  =  require('JSONPath');   var  version2  =  {"results":  {        "link":  {"uri":  "http://musikshop.com/search/artist=the%20brakes",                          "rel":  "http://musikshop.com/rels/self"},        "fullLengthReleases":  [{"release":  "Tale  of  Two  Cities",                                                        "year":  "2008",                                                        "link":  {"uri":  "http://musikshop.com/api/cmVsZWFzZXMvMQ==",                                                                          "rel":  "http://musikshop.com/rels/release"}}],        "EPReleases":  [{"release":  "The  Brakes",                                        "year":  "2006",                                        "link":  {"uri":  "http://musikshop.com/api/cmVsZWFzZXMvMg==",                                                          "rel":  "http://musikshop.com/rels/release"}}]}}   jsonpath.eval(version2,  "$..[?(@.rel=='http://musikshop.com/rels/release')]");                       gistfile1.json
  • 254. In practice most people end up here Aim high!
  • 255. This stuff is hard to change later - so do your research and pick principles that make sense for you
  • 256. Go read more! http://martinfowler.com/articles/richardsonMaturityModel.html http://www.crummy.com/writing/speaking/2008-QCon/
  • 257. Summary • REST over HTTP is best - aim high! • Messaging is cool, but can be hard • Whatever you do, think lazy binding!
  • 258. How To Split Services
  • 259. Add to cart
  • 260. Add to cart Checkout
  • 261. Add to cart Checkout View Latest Releases
  • 262. Add to cart Checkout View Latest Releases Search
  • 263. Add to cart Checkout View Latest Releases Search Listen To Previews
  • 264. Add to cart Checkout View Latest Releases Search Listen To Previews
  • 265. Add to cart Checkout View Latest Releases Search Listen To Previews Shopping Cart Catalog Music Library
  • 266. MusikShopMono
  • 267. MusikShopMono Warehouse Finance Catalog Recommendation
  • 268. That was the easy bit
  • 269. Enter the DB
  • 270. DB MusikShopMono
  • 271. DB Schema Recomendation Service MusicShopMono
  • 272. DB Schema Recomendation ServiceMusicShopMono
  • 273. DB Schema Recomendation ServiceMusicShopMono
  • 274. DB MusikShopMono Warehouse Finance Catalog Recommendation Repository
  • 275. DB MusikShopMono Warehouse Finance Catalog Recommendation
  • 276. Catalog MusikShopMono
  • 277. Catalog Line Items MusikShopMono
  • 278. Catalog Finance Line Items MusikShopMono
  • 279. Catalog Finance Line Items Ledger MusikShopMono
  • 280. Catalog Finance Line Items Ledger MusikShopMono
  • 281. Catalog Finance Line Items Ledger MusikShopMono
  • 282. Catalog Finance Line Items Ledger MusikShopMono
  • 283. Catalog Finance Line Items Ledger MusikShopMono
  • 284. MusikShop System Finance ServiceCatalog Service
  • 285. MusikShop System Finance ServiceCatalog Service
  • 286. MusikShop System Line Items Finance ServiceCatalog Service
  • 287. MusikShop System Line Items Ledger Finance ServiceCatalog Service
  • 288. Country Codes MusikShopMono Finance Warehouse Catalog
  • 289. Catalog Finance Warehouse Country Codes Country Codes Country Codes MusikShopMono
  • 290. Catalog Finance Warehouse MusikShopMono
  • 291. Finance Warehouse Customer Record MusikShopMono
  • 292. reify
  • 293. Finance Warehouse Customer Record MusikShop
  • 294. Finance Warehouse Customer Record Customer MusikShop
  • 295. Warehouse ServiceFinance Service MusikShop System Customer Service
  • 296. Catalog Warehouse Item MusikShop
  • 297. Catalog Warehouse Item MusikShop Bee Gees Hits | $4.99 | 45
  • 298. Catalog Warehouse Item MusikShop Bee Gees Hits | $4.99 | 45
  • 299. Catalog Warehouse Item MusikShop Bee Gees Hits | $4.99 | 45
  • 300. Catalog Warehouse Catalog Item MusikShop Stock Levels
  • 301. DB
  • 302. DB Cost Of Change
  • 303. @samnewman Summary • Split around bounded contexts • Make small, incremental changes • Split inside the process boundary before splitting out services • Start coarse-grained
  • 304. CAP Theory
  • 305. http://www.flickr.com/photos/76578519@N00/4695658106
  • 306. What is CAP theory?
  • 307. It is impossible for a distributed computer system to simultaneously provide all three of the following guarantees: http://en.wikipedia.org/wiki/CAP_theorem • Consistency (all nodes see the same data at the same time) • Availability (a guarantee that every request receives a response about whether it was successful or failed) • Partition tolerance (the system continues to operate despite arbitrary message loss or failure of part of the system)
  • 308. Partition Tolerance The system continues to operate despite arbitrary message loss or failure of part of the system Typically, we need this - so end up trading off the other two
  • 309. Node 1 Inventory Service Master DB dc1 Node 2 Slave DB dc2 Load Balancer
  • 310. Node 1 Inventory Service Master DB dc1 Node 2 Slave DB dc2 Load Balancer
  • 311. Option 1: Keep Node 2 serving traffic Node 1 Master DB Node 2 Slave DB Load Balancer Inventory Service
  • 312. Option 1: Keep Node 2 serving traffic Data is potentially stale, but, we keep Node 2 up Node 1 Master DB Node 2 Slave DB Load Balancer Inventory Service
  • 313. Option 1: Keep Node 2 serving traffic Data is potentially stale, but, we keep Node 2 up We have sacrificed consistency for availability Node 1 Master DB Node 2 Slave DB Load Balancer Inventory Service
  • 314. Option 2: Remove Node 2 from service Node 1 Master DB Node 2 Slave DB Load Balancer Inventory Service
  • 315. Option 2: Remove Node 2 from service Node 1 Master DB Node 2 Slave DB Load BalancerNow we have had to degrade availability to ensure consistency Inventory Service
  • 316. Which is right?
  • 317. What about sacrificing Partition Tolerance?
  • 318. Node 1 Inventory Service Master DB dc1 Node 2 Slave DB dc2 Load Balancer
  • 319. Node 1 Inventory Service Master DB dc1 Node 2 Slave DB dc2 Load Balancer
  • 320. So in general, we talk about CP or AP systems
  • 321. And now, Eventual Consistency
  • 322. Node 1 Node 1 Catalog Service Web Shop Node 1 & 2 will have the same catalog ‘eventually’
  • 323. Node 1 Node 1 Catalog Service Web Shop ttl: 5 mins 12:00 Node 1 & 2 will have the same catalog ‘eventually’
  • 324. Node 1 Node 1 Catalog Service Web Shop ttl: 5 mins 12:00 Update12:02 Node 1 & 2 will have the same catalog ‘eventually’
  • 325. Node 1 Node 1 Catalog Service Web Shop ttl: 5 mins 12:00 Update12:02 ttl: 5 mins 12:03 Node 1 & 2 will have the same catalog ‘eventually’
  • 326. http://nathanmarz.com/blog/how-to-beat-the-cap-theorem.html
  • 327. You can’t beat CAP Theory
  • 328. It’s Maths http://lpd.epfl.ch/sgilbert/pubs/BrewersConjecture-SigAct.pdf
  • 329. http://ferd.ca/beating-the-cap-theorem-checklist.html
  • 330. You entire system doesn’t need to be CP or AP!
  • 331. Catalog Web Shop Payment ttl: 5 mins Customer
  • 332. Catalog Web Shop Payment ttl: 5 mins Customer
  • 333. Catalog Web Shop Payment ttl: 5 mins Customer
  • 334. Catalog Web Shop Payment ttl: 5 mins Customer
  • 335. Catalog Web Shop Payment ttl: 5 mins Customer
  • 336. Scary Thought
  • 337. Web Shop Master DB * - http://blogs.msdn.com/b/pathelland/archive/2007/05/15/memories-guesses-and-apologies.aspx
  • 338. Web Shop Master DB Let us consider a read * - http://blogs.msdn.com/b/pathelland/archive/2007/05/15/memories-guesses-and-apologies.aspx
  • 339. Web Shop Master DB Let us consider a read * - http://blogs.msdn.com/b/pathelland/archive/2007/05/15/memories-guesses-and-apologies.aspx
  • 340. Web Shop Master DB Let us consider a read * - http://blogs.msdn.com/b/pathelland/archive/2007/05/15/memories-guesses-and-apologies.aspx
  • 341. Web Shop Master DB Is this ‘consistent’? Let us consider a read * - http://blogs.msdn.com/b/pathelland/archive/2007/05/15/memories-guesses-and-apologies.aspx
  • 342. Web Shop Master DB Is this ‘consistent’? Let us consider a read * - http://blogs.msdn.com/b/pathelland/archive/2007/05/15/memories-guesses-and-apologies.aspx We should see this data as a memory* - we see this data as it was, we can’t (easily ) be sure what it is now
  • 343. Consistency = locks locks in distributed systems are hard and they are the enemy of scaling
  • 344. https://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/en//archive/chubby-osdi06.pdf
  • 345. Web Shop Inventory Payment Gateway http://www.flickr.com/photos/63702881@N00/5038034651/
  • 346. Web Shop Inventory Payment Gateway r http://www.flickr.com/photos/63702881@N00/5038034651/
  • 347. Web Shop Inventory Payment Gateway r http://www.flickr.com/photos/63702881@N00/5038034651/
  • 348. Web Shop Inventory Payment Gateway r http://www.flickr.com/photos/63702881@N00/5038034651/
  • 349. Web Shop Inventory Payment Gateway r http://www.flickr.com/photos/63702881@N00/5038034651/
  • 350. Transaction Club • The first rule is…don’t! • If you really, really, really have to, consider merging services first
  • 351. Summary • Understand if consistency or availability is important - and this is normally a business decision! • It isn’t all or nothing • Avoid distributed transactions if you can
  • 352. TESTING & DEPLOYING MICROSERVICES Microservices Workshop 60
  • 353. 61 Accounts Returns Invoicing Shipping Inventory Customer Service
  • 354. 61 Accounts Returns Invoicing Shipping Inventory Customer Service
  • 355. 62
  • 356. 62
  • 357. 62 DB
  • 358. 63 Small Medium Large TEST PYRAMID Increasing Scope More Confidence Faster! Better Isolation
  • 359. 64 DB Small Large Medium
  • 360. 64 DB Small Large Medium
  • 361. 65 DB Small Large Medium
  • 362. 65 DB Small Large Medium
  • 363. 66 DB Small Large Medium
  • 364. 66 DB Small Large Medium
  • 365. 66 DB Small Large Medium
  • 366. 6767 Small Medium Large TEST SNOWCONE
  • 367. 68 Small Medium Large
  • 368. 69 Small Medium Large Build Tests Tests Source Control … BUILD PIPELINE
  • 369. 69 Small Medium Large Build Tests Tests Source Control Faster Feedback … BUILD PIPELINE
  • 370. 69 Small Medium Large Build Tests Tests Source Control Faster Feedback Binary Artifact(s) … BUILD PIPELINE
  • 371. 69 Small Medium Large Build Tests Tests Source Control Faster Feedback Binary Artifact(s) … BUILD PIPELINE
  • 372. 70 DB
  • 373. 70 DB
  • 374. 71 S/M TestsBuild Large Tests UAT Prod
  • 375. 71 S/M TestsBuild Large Tests UAT Prod DB Machine CI Node Large Tests Environment Large Tests
  • 376. 72 S/M TestsBuild Large Tests UAT Prod DB Machine UAT Environment Machine
  • 377. 73 S/M TestsBuild Large Tests UAT Prod Master DB Machine Production Environment Machine Machine Machine Slave DB
  • 378. 74 S/M TestsBuild Large Tests UAT Prod More Production Like
  • 379. 74 S/M TestsBuild Large Tests UAT ProdLarge Tests More Production Like
  • 380. 74 S/M TestsBuild Large Tests UAT ProdLarge Tests Faster Feedback More Production Like
  • 381. 75 Customer Service
  • 382. 75 Customer Service S/M TestsBuild Large Tests
  • 383. 75 Customer Service S/M TestsBuild Large Tests
  • 384. 75 Customer Service S/M TestsBuild Large Tests
  • 385. 76 Customer Service Web Shop Fulfilment Service
  • 386. 76 Customer Service Web Shop Fulfilment Service Large Medium Small
  • 387. 77 Customer Service Fulfilment Service Large Medium Small
  • 388. 77 Customer Service Fulfilment Service Large Medium Small
  • 389. 77 Customer Service Large Medium Small Fulfilment Service Stub
  • 390. 78 Mountebank http://www.mbtest.org
  • 391. 79 mountebank :2525
  • 392. 79 mountebank :2525
  • 393. 79 mountebank :2525 :5555
  • 394. 79 mountebank :2525 :5555 Customer Service
  • 395. 80 S/M TestsBuild Large Tests
  • 396. 80 S/M TestsBuild Large Tests Customer Service Fulfilment Service Stub
  • 397. 81 Customer Service V1 Web Shop Fulfilment Service
  • 398. 81 Web Shop Customer Service v2 Fulfilment Service
  • 399. 81 Web Shop Customer Service v2 Fulfilment Service
  • 400. 81 Web Shop Customer Service v2 Fulfilment Service
  • 401. 82 S/M TestsBuild Large Tests Customer Service Customer Service v1 Web Shop v1 Production
  • 402. 82 S/M TestsBuild Large Tests Integration Test Customer Service Customer Service v1 Web Shop v1 Production
  • 403. 82 S/M TestsBuild Large Tests Integration Test Customer Service Customer Service v1 Web Shop v1 Production Customer Service v2 Web Shop v1 Integration Test
  • 404. 83 Customer Service v1 Web Shop v1 Production
  • 405. 83 Customer Service v1 Web Shop v1 Production S/M TestsBuild Large Tests Integration Test Customer Service Customer Service v2
  • 406. 83 S/M TestsBuild Large TestsWeb Shop Customer Service v1 Web Shop v1 Production S/M TestsBuild Large Tests Integration Test Customer Service Customer Service v2
  • 407. 83 S/M TestsBuild Large TestsWeb Shop Customer Service v1 Web Shop v1 Production S/M TestsBuild Large Tests Integration Test Customer Service Customer Service v2 Web Shop v2
  • 408. 83 S/M TestsBuild Large TestsWeb Shop Customer Service v1 Web Shop v1 Production S/M TestsBuild Large Tests Integration Test Customer Service Customer Service v2 Web Shop v2 ???
  • 409. 84 S/M TestsBuild Large TestsWeb Shop S/M TestsBuild Large Tests Customer Service
  • 410. 84 S/M TestsBuild Large TestsWeb Shop S/M TestsBuild Large Tests Customer Service Integration Test
  • 411. 84 S/M TestsBuild Large TestsWeb Shop S/M TestsBuild Large Tests Customer Service Integration Test S/M TestsBuild Large Tests Invoice Service
  • 412. 84 S/M TestsBuild Large TestsWeb Shop S/M TestsBuild Large Tests Customer Service Integration Test S/M TestsBuild Large Tests Invoice Service S/M TestsBuild Large TestsBasket
  • 413. 84 S/M TestsBuild Large TestsWeb Shop S/M TestsBuild Large Tests Customer Service Integration Test S/M TestsBuild Large Tests Invoice Service S/M TestsBuild Large TestsBasket S/M TestsBuild Large TestsFulfilment
  • 414. 85
  • 415. 85 Browsers
  • 416. 85 Timing Browsers
  • 417. 85 Provisioning of Environments Timing Browsers
  • 418. 85 Provisioning of Environments Networks Timing Browsers
  • 419. 85 Deployment Provisioning of Environments Networks Timing Browsers
  • 420. 85 Deployment Provisioning of Environments Networks Timing Browsers Diagnosis
  • 421. 86
  • 422. 86 Integration Test
  • 423. 86 Integration Test Prod…
  • 424. 86 Integration Test Prod…
  • 425. 86 Integration Test Prod…
  • 426. 86 Integration Test Prod…
  • 427. 87
  • 428. 87
  • 429. 88 John Allspaw: “Ops Metametrics” http://slidesha.re/dsSZIr
  • 430. 88 John Allspaw: “Ops Metametrics” http://slidesha.re/dsSZIr
  • 431. 89 Integration Test Prod… v1v2 v6 v4 = v10
  • 432. 89 Integration Test Prod… v1v2 v6 v4 = v10
  • 433. 90 Danger Will Robinson!
  • 434. 91 Show Tangle
  • 435. 92 Golden Rule: Get good at releasing services independently
  • 436. 93 SO NO INTEGRATION TESTS?
  • 437. 94
  • 438. 94
  • 439. 94 SEMANTIC MONITORING
  • 440. 95 Customer Service Web Shop
  • 441. 95 Customer Service Web Shop Small Medium Large
  • 442. 95 Customer Service Web Shop Small Medium Large
  • 443. 95 Customer Service Web Shop Small Medium Large Consumer Driven Contracts
  • 444. 96 Customer Service Web Shop
  • 445. 96 Customer Service Web Shop Expectations
  • 446. 96 Customer Service Web Shop Expectations
  • 447. 96 Customer Service Web Shop Expectations Prod
  • 448. 96 Customer Service Web Shop Expectations Prod
  • 449. 97
  • 450. 97 https://github.com/realestate-com-au/pact
  • 451. 98 Prod Prod Prod Prod
  • 452. 98 Prod Prod Prod Prod
  • 453. 98 Prod Prod Prod Prod QA
  • 454. 98 Prod Prod Prod Prod QA Good Monitoring
  • 455. 98 Prod Prod Prod Prod QA Good Monitoring Fast Remediation
  • 456. 98 Prod Prod Prod Prod QA Good Monitoring Fast Remediation
  • 457. 99 S/M TestsBuild Large Tests UAT ProdLarge Tests Faster Feedback More Production Like
  • 458. 99 S/M TestsBuild Large Tests UAT ProdLarge Tests Faster Feedback More Production Like
  • 459. 99 S/M TestsBuild Large Tests UAT ProdLarge Tests Faster Feedback More Production Like
  • 460. 100 DB Machine CI Node Large Tests Environment S/M TestsBuild Large Tests UAT ProdLarge TestsLarge Tests
  • 461. 100 DB Machine CI Node Large Tests Environment DB Machine UAT Environment Machine S/M TestsBuild Large Tests UAT ProdLarge Tests UAT
  • 462. 100 DB Machine CI Node Large Tests Environment DB Machine UAT Environment Machine Master DB Machine Production Environment Machine Machine Machine Slave DB S/M TestsBuild Large Tests UAT ProdLarge Tests Prod
  • 463. 101 Faster Feedback More Production Like S/M TestsBuild Large Tests UAT ProdLarge Tests
  • 464. 101 Faster Feedback More Production Like S/M TestsBuild Large Tests UAT ProdLarge Tests
  • 465. 102
  • 466. 103
  • 467. 104 Ansible Puppet Chef
  • 468. 104 Ansible Puppet Chef
  • 469. 104 Ansible Puppet Chef AWS
  • 470. 104 Ansible Puppet Chef AWS Digital Ocean
  • 471. 104 Ansible Puppet Chef AWS Digital Ocean OpenStack
  • 472. 104 Ansible Puppet Chef AWS Digital Ocean OpenStack VMWare
  • 473. 104 Ansible Puppet Chef AWS Digital Ocean OpenStack VMWare Vagrant
  • 474. 104 Ansible Puppet Chef AWS Digital Ocean OpenStack VMWare Vagrant Immutable Server