展开查看详情
1. There is no such thing as a microservice! Chris Richardson Founder of Eventuate.io Founder of the original CloudFoundry.com Author of POJOs in Action @crichardson chris@chrisrichardson.net http://microservices.io http://eventuate.io http://plainoldobjects.com 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 (http://www.chrisrichardson.net/) @crichardson
5.About Chris Founder of a startup that is creating an open-source/SaaS platform that simplifies the development of transactional microservices (http://eventuate.io) @crichardson
6.About Chris 40% off ctwcodefreeze18 http://learnmicroservices.io @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 … https://en.wikipedia.org/wiki/Non-functional_requirement
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 … https://en.wikipedia.org/wiki/Non-functional_requirement