Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 1
@aahoogendoorn | www.ditisagile.nl
Micro...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 2
Sander Hoogendoorn
Me
Dad
Mentor, traine...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 3
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 4
As a project manager
I would like to dem...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 5
@aahoogendoorn | www.ditisagile.nl
Monol...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 7
Advantages
A single (layered) architectu...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 8
Dependencies will kill you
A typical sys...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 9
@aahoogendoorn | www.ditisagile.nl
A bri...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 10
Client server
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 11
Component based development
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 12
Service oriented architecture
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 13
Microservices
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 14
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 15
@aahoogendoorn | www.ditisagile.nl
Micr...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 16
Microservices
Beyond the hype?
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 17
Gartner hype cycle
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 18
@aahoogendoorn | www.ditisagile.nl
Micr...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 19
But first … a definition
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 20
In short, the microservice architectura...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 21
In short, the microservice architectura...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 22
In short, the microservice architectura...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 23
Monoliths
Scalability
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 24
Microservices
Scalability
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 25
Microservices
Scalability
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 26
Microservices
Running in their own proc...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 27
Monoliths
Persistence
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 28
Microservices
Polyglot persistence
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 29
Products not projects
Scalable
Decentra...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 30
What is a microservice exactly?
How sma...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 31
Opinions, opinions, opinions
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 32
@aahoogendoorn | www.ditisagile.nl
Are ...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 33
@aahoogendoorn | www.ditisagile.nl
Or a...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 34
@aahoogendoorn | www.ditisagile.nl
Two ...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 35
A major insurance company
Case 1
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 36
Where do we come from?
Case 1
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 37
Where do we come from?
Case 1
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 38
Outsourcing didn’t work
Case 1
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 39
Where are we going to?
Case 1
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 40
A product development company
Case 2
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 41
Where do we come from?
Case 2
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 42
Where do we come from?
Case 2
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 43
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 44
For the things we have to learn
before ...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 45
@aahoogendoorn | www.ditisagile.nl
So w...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 46
Microservices require
an evolutionary a...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 47
@aahoogendoorn | www.ditisagile.nl
Star...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 48
We decided to go from here
Client think...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 49
@aahoogendoorn | www.ditisagile.nl
Busi...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 50
Different levels of processes (and requ...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 51
Smart use cases
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 52
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 53
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 55
@aahoogendoorn | www.ditisagile.nl
Arch...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 56
Current architectural layout
Case 2
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 57
New architectural layout
Case 2
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 58
New architectural layout
Case 2
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 59
Brownfield migration…
Case 2
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 60
Questions, questions, questions
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 61
@aahoogendoorn | www.ditisagile.nl
Desi...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 62
Doing big up-front design is dumb,
doin...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 63
Bounded contexts
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 64
Single responsibility principle (SRP)
S...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 65
Bounded context
Domain driven design
 ...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 66
The single unified domain model
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 67
Bounded contexts
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 68
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 69
@aahoogendoorn | www.ditisagile.nl
Mode...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 70
Interpretations of
interpretations inte...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 71
Root resource (component)
GET the colle...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 72
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 73
@aahoogendoorn | www.ditisagile.nl
Bein...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 74
HTTP return codes cheat sheet
1**. Hold...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 75
Be conservative in what you
send, be li...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 77
@aahoogendoorn | www.ditisagile.nl
Test...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 78
If you fail, fail fast
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 79
A service development lifecycle
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 80
What to test
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 81
Even though you might have brilliant te...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 82
… please automate your tests
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 83
What about these services
being indepen...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 84
@aahoogendoorn | www.ditisagile.nl
Depl...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 85
A typical build pipeline
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 86
A typical build pipeline
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 87
Build pipelines in Jenkins
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 90
There is no one tool to rule them all
W...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 91
@aahoogendoorn | www.ditisagile.nl
Depl...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 92
Small but continuous
improvements creat...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 93
Small increments or big releases?
What ...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 95
Roadmaps over plans
While there is valu...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 96
Minimal viable product
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 97
From projects to continuous delivery
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 98
An approach in which teams ensure that ...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 99
You build it, you run it
Werner Vogels
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 100
Moving towards DevOps is not easy
It f...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 102
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 103
@aahoogendoorn | www.ditisagile.nl
In ...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 104
Microservices are not for everyone
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 105
Minimal viable product
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 106
@aahoogendoorn | www.ditisagile.nl
All...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 107
The hockey stick model
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 108
Will it work?
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 109
One last thought…
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 110
What will you do in 2020?
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 111
You can be anything you want…
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 112
Because…
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 113
With passion you can achieve amazing t...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 116
Writing code is the best job in the wo...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 117
@aahoogendoorn | www.ditisagile.nl
And...
@aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 118
@aahoogendoorn | www.ditisagile.nl
Ref...
Upcoming SlideShare
Loading in …5
×

Microservices. Stairway to heaven or highway to hell

1,800 views

Published on

This is the deck on microservices, domain driven design and continuous delivery I've used for my talk at the TI Conference Days at the Karel de Grote Hogeschool in Antwerp, Belgium, november 2015. See http://www.tievents.be/conferencedays/.

Published in: Software
  • Be the first to comment

Microservices. Stairway to heaven or highway to hell

  1. 1. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 1 @aahoogendoorn | www.ditisagile.nl Microservices. Stairway to heaven or highway to hell? Sander Hoogendoorn ditisagile.nl ​Mentoring ▪ Consulting ▪ Training Agile ▪ Software architecture ▪ Code
  2. 2. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 2 Sander Hoogendoorn Me Dad Mentor, trainer, software architect, programmer Books, articles, conferences Work Owner ditisagile.nl CTO Klaverblad Insurances Web www.sanderhoogendoorn.com @aahoogendoorn sander@ditisagile.nl
  3. 3. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 3
  4. 4. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 4 As a project manager I would like to demo untested code so I embarrass myself
  5. 5. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 5 @aahoogendoorn | www.ditisagile.nl Monoliths Hard to deliver, even harder to test and impossible to maintain
  6. 6. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 7 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 Monoliths Advantages and disadvantages
  7. 7. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 8 Dependencies will kill you A typical systems landscape
  8. 8. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 9 @aahoogendoorn | www.ditisagile.nl A brief history of components and services
  9. 9. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 10 Client server
  10. 10. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 11 Component based development
  11. 11. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 12 Service oriented architecture
  12. 12. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 13 Microservices
  13. 13. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 14
  14. 14. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 15 @aahoogendoorn | www.ditisagile.nl Microservices Beyond the hype?
  15. 15. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 16 Microservices Beyond the hype?
  16. 16. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 17 Gartner hype cycle
  17. 17. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 18 @aahoogendoorn | www.ditisagile.nl Microservices The clear benefits
  18. 18. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 19 But first … a definition
  19. 19. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 20 In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies. Martin Fowler
  20. 20. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 21 In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies. Martin Fowler
  21. 21. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 22 In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies. Martin Fowler
  22. 22. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 23 Monoliths Scalability
  23. 23. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 24 Microservices Scalability
  24. 24. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 25 Microservices Scalability
  25. 25. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 26 Microservices Running in their own processes
  26. 26. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 27 Monoliths Persistence
  27. 27. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 28 Microservices Polyglot persistence
  28. 28. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 29 Products not projects Scalable Decentralized governance Replaceable parts High performance Technology independent Polyglot persistence Easy to build Easy to test Easier deployment than monoliths Microservices Promises
  29. 29. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 30 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? Microservices But…
  30. 30. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 31 Opinions, opinions, opinions
  31. 31. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 32 @aahoogendoorn | www.ditisagile.nl Are microservices a stairway to heaven?
  32. 32. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 33 @aahoogendoorn | www.ditisagile.nl Or are they a highway to hell?
  33. 33. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 34 @aahoogendoorn | www.ditisagile.nl Two real world cases
  34. 34. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 35 A major insurance company Case 1
  35. 35. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 36 Where do we come from? Case 1
  36. 36. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 37 Where do we come from? Case 1
  37. 37. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 38 Outsourcing didn’t work Case 1
  38. 38. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 39 Where are we going to? Case 1
  39. 39. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 40 A product development company Case 2
  40. 40. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 41 Where do we come from? Case 2
  41. 41. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 42 Where do we come from? Case 2
  42. 42. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 43
  43. 43. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 44 For the things we have to learn before we can do them, we learn by doing themAristotle
  44. 44. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 45 @aahoogendoorn | www.ditisagile.nl So what did we learn?
  45. 45. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 46 Microservices require an evolutionary architecture
  46. 46. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 47 @aahoogendoorn | www.ditisagile.nl Start with some guiding principles
  47. 47. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 48 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 Our guiding principles Case 1
  48. 48. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 49 @aahoogendoorn | www.ditisagile.nl Business processes first Case 1
  49. 49. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 50 Different levels of processes (and requirements)
  50. 50. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 51 Smart use cases
  51. 51. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 52
  52. 52. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 53
  53. 53. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 55 @aahoogendoorn | www.ditisagile.nl Architecture first Case 2
  54. 54. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 56 Current architectural layout Case 2
  55. 55. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 57 New architectural layout Case 2
  56. 56. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 58 New architectural layout Case 2
  57. 57. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 59 Brownfield migration… Case 2
  58. 58. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 60 Questions, questions, questions
  59. 59. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 61 @aahoogendoorn | www.ditisagile.nl Designing microservices Modular design and bounded contexts
  60. 60. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 62 Doing big up-front design is dumb, doing no design is even dumber Dave Thomas
  61. 61. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 63 Bounded contexts
  62. 62. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 64 Single responsibility principle (SRP) SOLID  Single Responsibility Principle  Open Closed Principle  Liskov Substituion Principle  Interface Segregation Principle  Dependency Inversion Principle Single Responsibility Principle  Every module should have responsibility over a single part of the functionality provided by the software,  That responsibility should be entirely encapsulated by the class  All its services should be narrowly aligned with that responsibility Therefore  Group together things that change together  Separate things that change for different reason
  63. 63. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 65 Bounded context Domain driven design  The paradigm of designing software based on models of the underlying domain  The domain model helps the business and the developers to reason about the functionality  A model needs to be unified – internally consistent without contradictions Bounded context  The bounded context is a central pattern in domain driven design  When you model larger domains, it becomes progressively harder to create this single unified model  So, instead of creating a single unified model, you create several, all valid within their bounded context
  64. 64. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 66 The single unified domain model
  65. 65. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 67 Bounded contexts
  66. 66. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 68
  67. 67. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 69 @aahoogendoorn | www.ditisagile.nl Modeling resources
  68. 68. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 70 Interpretations of interpretations interpreted James Joyce (on REST)
  69. 69. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 71 Root resource (component) GET the collection, but only limited to this representation (but with locations likely) GET a single item from the collection, but with representation Modeling resources
  70. 70. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 72
  71. 71. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 73 @aahoogendoorn | www.ditisagile.nl Being RESTful is not as easy as it seems
  72. 72. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 74 HTTP return codes cheat sheet 1**. Hold on 2**. Here you go 3**. Go away 4**. You fucked up 5**. I fucked up
  73. 73. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 75 Be conservative in what you send, be liberal in what you acceptPostel’s Law
  74. 74. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 77 @aahoogendoorn | www.ditisagile.nl Testing microservices
  75. 75. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 78 If you fail, fail fast
  76. 76. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 79 A service development lifecycle
  77. 77. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 80 What to test
  78. 78. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 81 Even though you might have brilliant testers…
  79. 79. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 82 … please automate your tests
  80. 80. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 83 What about these services being independently deployable?
  81. 81. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 84 @aahoogendoorn | www.ditisagile.nl Deploying microservices Continuous integration and build pipelines
  82. 82. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 85 A typical build pipeline
  83. 83. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 86 A typical build pipeline
  84. 84. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 87 Build pipelines in Jenkins
  85. 85. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 90 There is no one tool to rule them all We tried Jenkins, Bamboo, Team City, GoCD and then Jenkins again…
  86. 86. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 91 @aahoogendoorn | www.ditisagile.nl Deploying microservices Kaizen, minimal viable products and continuous delivery
  87. 87. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 92 Small but continuous improvements create long-lasting results (Kaizen)W. Edwards Deming (sort of)
  88. 88. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 93 Small increments or big releases? What if Twitter…
  89. 89. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 95 Roadmaps over plans While there is value in the items on the right, we value the items on the left more
  90. 90. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 96 Minimal viable product
  91. 91. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 97 From projects to continuous delivery
  92. 92. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 98 An approach in which teams ensure that every change to the system is releasable, and that we can release any version at the push of a button. Aimed to make releases boring, so we can deliver frequently and get fast feedback on what users care about. Jez Humble
  93. 93. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 99 You build it, you run it Werner Vogels
  94. 94. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 100 Moving towards DevOps is not easy It feels like showing up at the wrong re-enactment
  95. 95. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 102
  96. 96. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 103 @aahoogendoorn | www.ditisagile.nl In retrospective Some final thoughts
  97. 97. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 104 Microservices are not for everyone
  98. 98. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 105 Minimal viable product
  99. 99. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 106 @aahoogendoorn | www.ditisagile.nl Allow your teams to learn continuously…
  100. 100. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 107 The hockey stick model
  101. 101. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 108 Will it work?
  102. 102. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 109 One last thought…
  103. 103. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 110 What will you do in 2020?
  104. 104. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 111 You can be anything you want…
  105. 105. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 112 Because…
  106. 106. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 113 With passion you can achieve amazing things…
  107. 107. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 116 Writing code is the best job in the world
  108. 108. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 117 @aahoogendoorn | www.ditisagile.nl And don’t forget to have fun
  109. 109. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 118 @aahoogendoorn | www.ditisagile.nl References and questions www.sanderhoogendoorn.com www.smartusecase.com www.speedbird9.com sander@ditisagile.nl @aahoogendoorn

×