Más contenido relacionado La actualidad más candente (20) Similar a Microservices. The good the bad and the ugly (20) Más de Sander Hoogendoorn (13) Microservices. The good the bad and the ugly2. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 2
@aahoogendoorn
www.ditisagile.nl
Sander Hoogendoorn
Me
Dad
Mentor, trainer, software architect, programmer
Books, articles, conferences
Work
Owner, ditisagile.nl
CTO Klaverblad Verzekeringen
[PTO Capgemini]
[Global design authority agile Capgemini]
Web
www.sanderhoogendoorn.com
www.smartusecase.com
www.speedbird9.com
@aahoogendoorn
sander@ditisagile.nl
3. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 3
@aahoogendoorn
www.ditisagile.nl
4. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 4
@aahoogendoorn
www.ditisagile.nl
On being a developer...
6. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 7
@aahoogendoorn
www.ditisagile.nl
Monoliths
Advantages
A single (layered) architecture
A single technology stack
A single code base maintained by multiple teams
Disadvantages
All parts are interconnected
Many other systems are connected to your system
Hard to change, hard to maintain
Long time between releases, thereby increasing risks
Slow innovation
Hard to move to newer technologies
Doesn’t scale very well
Product Account
Order Customer
Products Accounts
Orders Customers
7. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 8
@aahoogendoorn
www.ditisagile.nl
Dependencies will kill you
9. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 10
@aahoogendoorn
www.ditisagile.nl
Client server
10. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 11
@aahoogendoorn
www.ditisagile.nl
Component based development
11. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 12
@aahoogendoorn
www.ditisagile.nl
Service oriented architecture
12. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 13
@aahoogendoorn
www.ditisagile.nl
Microservices
14. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 15
@aahoogendoorn
www.ditisagile.nl
Microservices. Beyond the hype?
15. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 16
@aahoogendoorn
www.ditisagile.nl
Gartner hype cycle
17. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 18
@aahoogendoorn
www.ditisagile.nl
BUTFIRST…ADEFINITION
18. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 19
@aahoogendoorn
www.ditisagile.nl
Inshort,themicroservicearchitecturalstyleisanapproachtodevelopingasingleapplicationasasuiteofsmallservices,
eachrunninginitsownprocessandcommunicatingwithlightweightmechanisms,oftenanHTTPresourceAPI.
Theseservicesarebuiltaroundbusinesscapabilitiesandindependentlydeployablebyfullyautomateddeploymentmachinery.
Thereisabareminimumofcentralizedmanagementoftheseservices,whichmaybewrittenindifferentprogramminglanguages
andusedifferentdatastoragetechnologies.
MartinFowler
19. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 20
@aahoogendoorn
www.ditisagile.nl
Inshort,themicroservicearchitecturalstyleisanapproachtodevelopingasingleapplicationasasuiteofsmallservices,
eachrunninginitsownprocessandcommunicatingwithlightweightmechanisms,oftenanHTTPresourceAPI.
Theseservicesarebuiltaroundbusinesscapabilitiesandindependentlydeployablebyfullyautomateddeploymentmachinery.
Thereisabareminimumofcentralizedmanagementoftheseservices,whichmaybewrittenindifferentprogramminglanguages
andusedifferentdatastoragetechnologies.
MartinFowler
20. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 21
@aahoogendoorn
www.ditisagile.nl
Monoliths. Scalability
Product Account
Order Customer
Product Account
Order Customer
Product Account
Order Customer
21. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 22
@aahoogendoorn
www.ditisagile.nl
Microservices. Scalability
Product Account
OrderCustomer
22. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 23
@aahoogendoorn
www.ditisagile.nl
Microservices. Scalability
Product Account
OrderCustomer
Product
CustomerCustomer Customer
Account Account
23. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 24
@aahoogendoorn
www.ditisagile.nl
Microservices. Scalability
Product Account
Order
Product
Customer
Account Account
CustomerCustomer
24. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 25
@aahoogendoorn
www.ditisagile.nl
Monoliths. Persistence
Product Account
Order Customer
Products Accounts
Orders Customers
25. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 26
@aahoogendoorn
www.ditisagile.nl
Microservices. Polyglot persistence
Product Account OrderCustomer
MongoDB
Customers
MongoDB
Orders
ActiveDirectory
Accounts
Oracle
Products
26. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 27
@aahoogendoorn
www.ditisagile.nl
Microservices. Promises
Products not projects
Scalable
Decentralized governance
Replaceable parts
High performance
Technology independent
Polyglot persistence
Easy to build
Easy to test
Easier deployment than monoliths
Product
Account
Order
Customer
27. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 28
@aahoogendoorn
www.ditisagile.nl
Microservices. But…
What is a microservice exactly?
How small is a microservice?
Requirements in a microservice world
Components or services
Who owns a microservice?
What technologies do you use?
What protocols do you apply?
How to define messages
How to test microservices
How to coordinate when business services run
across components?
How to build deployment pipelines?
Product
Account
Order
Customer
28. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 29
@aahoogendoorn
www.ditisagile.nl
Opinions, opinions, opinions
32. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 33
@aahoogendoorn
www.ditisagile.nl
A major Dutch insurance company
We have
Most functionality on an expensive mainframe
A wide variety of large systems written in Java that are hard
to maintain and to test, and that are very hard to replace
Individual systems that cover large areas of functionality,
usually coupled to departments
Aging technology
No mobile strategy, allowing for new business or new
services to clients, and intermediaries
We need to
Get rid of the mainframe
Shorten time-to-market
Lower TCO
Uphold a fully secure systems landscape
33. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 34
@aahoogendoorn
www.ditisagile.nl
FORTHETHINGSWEHAVETOLEARN
BEFOREWECANDOTHEM,
WELEARNBYDOINGTHEM
Aristotle
35. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 36
@aahoogendoorn
www.ditisagile.nl
MICROSERVICESREQUIREANEVOLUTIONARYARCHITECTURE
36. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 37
@aahoogendoorn
www.ditisagile.nl
Questions, questions, questions
Communicationarchitecture.Theglue
Howdowedefineinterfacesbetweenappsandcomponent?Howdowearrangemessaging?
Howdowegluetogetherrapidlychangingappsandcomponent?
Applicationarchitecture
EnduserfacingDifferentusers,differentfastevolvingneeds
Whichtechnologyisthebestforwhichpurpose?
Componentarchitecture
Componentsandservicesareevolvingrapidly.Howdowedecidewhichcomponentsweneed?
Howdowedealwithversioning?Howdowedealwithdistributedprocessesandtransactions?
37. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 38
@aahoogendoorn
www.ditisagile.nl
Our guiding principles
We decided to go from here
Client thinks in business processes, so we implement
business processes
We move away from the mainframe, to a new systems
landscape, consisting of micro-applications and micro-
components
Requirements and documentation are modeled rather than
written
Applications implement a single (elementary) business
process
Components serve a single purpose and offer services
Applications and components all have their own bounded
context – a domain model
Applications and components will have an similar internal
software architecture to facilitate ease of maintenance and
allow for harvesting re-use
Communication between applications and components will
use a simple open protocol - REST
39. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 40
@aahoogendoorn
www.ditisagile.nl
Presentation
Process
Domain
Services
Outsideworld
Pages
Grids/Panels,Controls
Usecases
Flow
Domainobjects,Factories/Repositories
Enums/Valueobjects/Tupels/Referenceobjects
Servicegateways,Serviceclients
Infoobjects/Searchobjects
ComponentsRelations Dossiers Intermediaries Accounts Rates
41. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 42
@aahoogendoorn
www.ditisagile.nl
Serviceinterface
Process
Domain
Data/Services
Outsideworld
Resources
Representations
Usecases
Flow
Domainobjects,Factories/Repositories
Enums/Valueobjects/Tupels/Referenceobjects
Storagegateways,Storageclients
Infoobjects/Searchobjects
StorageRelations Dossiers Intermediaries DB2 MongoDB
43. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 46
@aahoogendoorn
www.ditisagile.nl
DOINGBIGUP-FRONTDESIGNISDUMB
DOINGNODESIGNISEVENDUMBER
DaveThomas
44. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 47
@aahoogendoorn
www.ditisagile.nl
The single unified domain model
Product
Vendor
Stock
Order
Client
Delivery
Payment
45. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 48
@aahoogendoorn
www.ditisagile.nl
Bounded contexts
Product
Vendor
Stock
Order
Client
Delivery
Payment
Product
47. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 51
@aahoogendoorn
www.ditisagile.nl
Smart use cases
48. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 52
@aahoogendoorn
www.ditisagile.nl
52
Application
bounded context
50. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 55
@aahoogendoorn
www.ditisagile.nl
55Resource
model
52. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 57
@aahoogendoorn
www.ditisagile.nl
HTTPRETURNCODESCHEATSHEET
1**.Holdon
2**.Hereyougo
3**.Goaway
4**.Youfuckedup
5**.Ifuckedup
53. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 58
@aahoogendoorn
www.ditisagile.nl
HTTP GET
GET
Retrieve whatever information is
identified by the request URI in the form
of an entity
The entity is usually a single or a list of
objects (of the type provided by the
service, often JSON, or XML)
GET is safe (retrieval only) and
idempotent
Unfortunately there are many ways of
creating GET requests (see examples
below)
Returns 200 (found), possibly 400 (bad
request) or 404 (not found)
Examples
Get an entire collection
localhost:8080/countries
Find objects in the collection
localhost:8080/countries?name=“stan”
Find an object in the collection by ID
localhost:8080/countries/38
Find a sub-object in the collection by ID
localhost:8080/countries/38/capital
Find object in the collection by ISO
localhost:8080/countries?isocode=“GRC”
Find object in the collection by ISO
localhost:8080/countries/isocode/GRC
Find object in the collection by ISO
localhost:8080/countries/GRC
54. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 59
@aahoogendoorn
www.ditisagile.nl
BECONSERVATIVEINWHATYOUSEND,
BELIBERALINWHATYOUACCEPT
Postel’sLaw
56. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 61
@aahoogendoorn
www.ditisagile.nl
A service development lifecycle
Code DeveloperTest Test IntegrationTest AcceptanceTest LivePrepare&Design
57. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 62
@aahoogendoorn
www.ditisagile.nl
What to test
Code DeveloperTest Test IntegrationTest AcceptanceTest LivePrepare&Design
Developers
Unittests
Developers
Q&A
Testers
Scenario’s&API’s
Testers
Scenario’s&API’s
Productowner
Product
58. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 63
@aahoogendoorn
www.ditisagile.nl
What to test automated
Code DeveloperTest Test IntegrationTest AcceptanceTest LivePrepare&Design
Developers
Unittests
Developers
Q&A
Testers
Scenario’s&API’s
Testers
Scenario’s&API’s
Productowner
Product
60. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 65
@aahoogendoorn
www.ditisagile.nl
A typical build pipeline
Code DeveloperTest Test IntegrationTest AcceptanceTest LivePrepare&Design
61. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 66
@aahoogendoorn
www.ditisagile.nl
ProductionAcceptanceIntegrationTestDevelopment
A typical build pipeline
Code DeveloperTest Test IntegrationTest AcceptanceTest LivePrepare&Design
62. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 67
@aahoogendoorn
www.ditisagile.nl
Build pipelines in Jenkins
63. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 68
@aahoogendoorn
www.ditisagile.nl
Microservices. Building a deployment pipeline
Code DeveloperTest Test AcceptanceTest Acceptance Live
Code DeveloperTest Test AcceptanceTest Acceptance Live
Code DeveloperTest Test AcceptanceTest Acceptance Live
Code DeveloperTest Test AcceptanceTest Acceptance Live
64. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 69
@aahoogendoorn
www.ditisagile.nl
Microservices. Pipeline hell?
Codev.2 DeveloperTestv.2 Testv.2 AcceptanceTestv.2 Acceptancev.2
Code DeveloperTest Test AcceptanceTest Acceptance Live
Testv.2 AcceptanceTestv.2 Acceptancev.2 Livev.2
DeveloperTest Test AcceptanceTest Acceptance Live
Codev.3 DeveloperTestv.3
Live
Codev.2
66. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 71
@aahoogendoorn
www.ditisagile.nl
Do we really need projects?
67. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 72
@aahoogendoorn
www.ditisagile.nl
Or roadmap?
68. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 73
@aahoogendoorn
www.ditisagile.nl
Minimal viable product
69. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 74
@aahoogendoorn
www.ditisagile.nl
And go with the flow
70. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 75
@aahoogendoorn
www.ditisagile.nl
Maintenance
From projects to continuous delivery?
Project
MaintenanceMVP
MaintenanceContinuousdelivery
73. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 79
@aahoogendoorn
www.ditisagile.nl
The hockey stick model
75. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 81
@aahoogendoorn
www.ditisagile.nl
ONELASTTHOUGHT…
76. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 82
@aahoogendoorn
www.ditisagile.nl
WHATWILLYOUDOIN2020?
77. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 83
@aahoogendoorn
www.ditisagile.nl
You can be anything you want…
78. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 84
@aahoogendoorn
www.ditisagile.nl
Because…
79. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 85
@aahoogendoorn
www.ditisagile.nl
With passion you can achieve amazing things…
80. MICROSERVICES? STAIRWAY TO HEAVEN OR HIGHWAY TO HELL?
©2015 ditisagile.nl. All Rights Reserved 88
@aahoogendoorn
www.ditisagile.nl
WRITINGCODEISTHEBESTJOBINTHEWORLD