1. There is no such thing as a microservice! Chris Richardson Founder of Founder of the original Author of POJOs in Action @crichardson Copyright © 2017. Chris Richardson Consulting, Inc. All rights reserved @crichardson

2.Presentation goal Define the Microservice Architecture as an architectural style Explain what that means and why it matters @crichardson

3.About Chris @crichardson

4.About Chris Consultant and trainer focusing on modern application architectures including microservices ( @crichardson

5.About Chris Founder of a startup that is creating an open-source/SaaS platform that simplifies the development of transactional microservices ( @crichardson

6.About Chris 40% off ctwcodefreeze18 @crichardson

7.Agenda A brief refresher on software architecture From monolith to microservices Microservices != silver bullet Applying the microservice pattern language @crichardson

8. About software architecture “The software architecture of a computing system is the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both.” Documenting Software Architectures, Bass et al

9. Architecture = (elements, relations, properties) @crichardson

10. Architecture = Boxes and lines 😄 @crichardson

11. Architecture is multi-dimensional e.g. Structural, electrical, plumbing, mechanical Described by multiple views View = (elements, relations, properties) @crichardson

12.4+1 view model Logical Implementation View View Scenarios Process Deployment View View

13. 4+1 Logical view Logical Implementation Elements: classes and packages View View Relations: inheritance, associations, … Scenarios Process Deployment View View

14. 4+1 Implementation view Logical Implementation Elements: modules and components View View Relations: dependencies Scenarios Process Deployment View View

15. 4+1 Process view Logical Implementation View View Scenarios Elements: processes Process Deployment Relations: IPC View View

16. 4+1 Deployment view Logical Implementation View View Scenarios Elements: “machines” Process Deployment Relations: networking View View

17.4+1 Scenarios Logical Implementation View View Derived from use cases/stories Scenarios Process Deployment Animate the views View View

18. ""… An architectural style determines the vocabulary of components and connectors that can be used in instances of that style, together with a set of constraints on how they can be combined….. ”” David Garlan and Mary Shaw, An Introduction to Software Architecture @crichardson

19. Layered architectural style Layer N Well defined responsibilities Uses Uses Layer N - 1 Constrained Uses Uses dependencies Layer N - 2 @crichardson

20.The role of architecture Domain Requirements knowledge = Functional requirements + Non-functional requirements (-ilities) Architecture

21.Important -ilities Maintainability Development Testability velocity Deployability Evolvability Scalability Sunday afternoon 😀 Security Reliability …

22.Businesses must innovate faster Build better software faster @crichardson

23.Reducing lead time Increasing deployment frequency @crichardson

24.Modern software development: moving fast and not breaking things! 46x 440x Netflix: 16 minutes 24x 5x lower Amazon: ~0.001% @crichardson

25.Modern software development Process: DevOps/Continuous delivery/deployment Organization: Architecture: Small, autonomous ??? teams @crichardson

26.Agenda A brief refresher on software architecture From monolith to microservices Microservices != silver bullet Applying the microservice pattern language

27. Traditional: Monolithic architecture WAR/EAR StoreFrontUI HTML Catalog REST/JSON Browser/ Management MySQL Client Database Recommendation Management Review Management Order Management Tomcat/App. Server Logical view Implementation view @crichardson

28. The monolithic architecture is an architectural style that structures the application as a single executable component Implementation view @crichardson

29.-ilities of small monoliths 😄 Maintainability Testability Deployability …