Microservices is a software architecture approach that advocates using smaller, independent units of software in place of monolithic all-in-one services. The following collection of informative resources gives you a great foundation of knowledge for getting started and succeeding with microservices.
Learn the basics
Martin Fowler is a renowned software engineer, author, and speaker. His website contains lots of great insights related to microservices in particular and software development in general. Acquainting yourself with Martin Fowler’s work is a great first step in understanding the best practices in software development and architecture.
Microservices for the Grumpy Neckbeard
A short introduction to the topic of microservices with focus on implementation and interfaces.
Blogs and select posts
- SoundCloud Developers Blog
- Riot Games Engineering Blog
- SOA Service & Microservice cheat sheet
- Netflix: A microscope on microservices
- InfoQ on microservices
- Microservices in production
- Business SOA
- How to write a “Hello, world!” microservice
- Load balancing microservices at scale
- How to load-balance a database among microservices
- #microservices (Twitter)
- Dynatrace Ruxit microservices Twitter list
- Microservices subreddit on Reddit
- SOA subreddit on Reddit
- Microservices Weekly (The weekly microservices newsletter)
Open Source Software
Tools and Platforms
In the coming weeks we’ll compile digests like this one for the related topics listed below.
This topic covers software architecture in general. In 2004, a book with this title was published. Many ideas included in this book are seen as prerequisites for being able to apply microservices successfully. Most notably the concept of bounded contexts.
Going down microservices lane requires more than just the application of a new style of software architecture. It also requires a new mindset. The DevOps approach is the right mindset. To get started on this topic, read our DevOps digest.
REST-style APIs are one way to interface your microservices for the rest of the world to access.
Continuous integration aims to provide a toolchain that maintains a certain level of code quality by automatically running tests, collecting code metrics, and more.
Continuous deployment and containers (Docker, LXC, etc)
The goal of continuous deployment is to make publishing your changes as automated and error-free as possible.