This is the slide deck for my keynote at the Software Architect conference in London, October 2015.
The development and maintenance of monoliths presents organisations with increasing challenges, resulting in high costs and a decreasing time-to-market. More and more organisations are therefore attempting to componentise their applications.
The latest and greatest paradigm “microservices” finally seems to deliver on the promises of service-oriented architecture: shortening time-to-market, scalability, autonomy, and exchangeability of technology and databases. The challenges of delivering microservices however are equally big.
In this keynote presentation, Sander will elaborate on his personal experiences with implementing microservices architectures. He’ll be certain to address the good parts, but he does not shy away from also tackling the bad and ugly parts.
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. @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
4. @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
17. @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
18. @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
19. @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
26. @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
27. @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…
63. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 70
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
80. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 90
@aahoogendoorn | www.ditisagile.nl
Deploying
microservices
Kaizen, minimal viable
products and continuous
delivery
94. @aahoogendoorn | www.ditisagile.nlMicroservices. The good, the bad and the ugly 108
@aahoogendoorn | www.ditisagile.nl
References
and questions
www.sanderhoogendoorn.com
www.smartusecase.com
www.speedbird9.com
sander@ditisagile.nl
@aahoogendoorn