If you have had anything to do with APIs in the past several years, chances are you've heard of microservices. If you've tried Googling afterward, chances are also that you've been overwhelmed by the deluge of tutorials, tips, and treacle within an easy click.
After a year's worth of writing the Net API Notes Newsletter, I've been there. To help shortcut the learning process I've collected some of the best resources in one place. Enjoy, and if there is an essential reference that I've missed, let me know - I'd be glad to check it out.
What are microservices? Here's where to start:
- While Martin Fowler made "microservices" famous, he neither coined the term or claims to have done so. Still, his post that launched dozens of conference session speakers is essential reading.
- David Simons has a slide deck that hammers home the most basic tenets of microservices.
- Sam Newman, a colleague of Martin Fowler, has written a hugely influential O'Reilly book, "Building Microservices". For the distilled version, try "Deploying and Operating Microservices" on YouTube. (There's also plenty more where that came from.
Where to Start Building?
RESTful API design has enough ideological quagmires. Microservices are no exception. Should developers start with a monolithic software architecture or opt for fine grained services? There's no right answer. But for an introduction to both sides:
- The pros of beginning with microservices in mind.
- The advantages of starting with a monolithic architecture and decomposing later.
Sami Lamti not only attended a workshop by Sam Newman, but shared his impressions of the content. The four part series includes:
- Defining Microservices
- Applying Microservices to Existing Code
- Security, Orchestration, Choregraphy, and Testing
- Testing and Versioning
Problems and Pitfalls
Irakli Nadareishvili is a frequent API speaker. Like Sam, he has a couple of online videos worth looking at:
- Microservice Architecture: The Blind Spots
- API360 Summit: APIs Are Your Best Products (for best time usage, skip to the 18:30 mark for Irakli's comments on unbundling)
At some point when you have numerous, tiny services you have to put them back together again. That may be either through choreography or orchestration. For an example of how Netflix does it, check out Daniel Jacobson's article on "The Future of API Design: The Orchestration Layer".
Microservices in Practice
It makes no sense to fill up on theory and ignore the body of first-hand accounts from those that have built microservices. A couple notable accounts include:
- How SoundCloud Ended Up with Microservices.
- The Complexity of Microservices and Partial Failure at Comcast
- Nginx and Determining Microservice Success
While I've tried to only provide the highlights, there's plenty more for those with the time (or the inclination) to go further:
- Adrian Cockroft, of Netflix infrastructure fame, has a 40-page PDF available for free entitled "Migrating to Microservices".
- Adrian also has a presentation on The State of the Art in Microservices on YouTube
- Werner Vogels shares Amazon's transformational story.
- Neal Ford muses on how microservices are the first post-DevOps revolution architecture.