Microservices, a very brief introduction
Software Design
Microservices
· GOTO
· ThoughtWorks
· Martin Fowler
Nowadays everybody talks about microservices and microservices architecture in software development. But this is not a new concept and has been around in the last years. Well, everybody talks about them but it doesn’t mean everybody has been able to refactor their platform in this direction, although might be willing to.
As an introduction to the microservice approach, I recommend this video from Martin Fowler, a british software developer 1 quite popular and author, among others, of books such as Refactoring: Improving the Design of Existing Code or Patterns of Enterprise Application Architecture. This talk was part of the well-known GOTO conferences that took place in Berlin in 2014.
Fowler summarizes the common characteristics of Microservices in the following list that I want to keep for myself here:
- Componentization via services.
- Organized around business capabilities.
- Product not Projects.
- Smart endpoints and dumb pipes.
- Decentralized Governance.
- Decentralized Data Management.
- Infrastructure Automation.
- Design for failure.
- Evolutionary Design.
Another point to keep in mind, the comparison between Monolith vs. Microservice, as follows:
MONOLITH | MICROSERVICE |
---|---|
Simplicity | Partial Deployment |
Consistency | Availability |
Inter-module refactoring | Preserve Modularity |
Multiple Platforms |
Other ingredients of microservice architectures:
- Traceable Business Transactions.
- Continuous Delivery.
- Product-centered Teams 2.
- Multi-Dev Environment.
- Rapid Provisioning.
- Basic Monitoring.
- Rapid Application Deployment.
- DevOps Culture.
Really convincing arguments to abandon the monolith path that soon turns into a Big Ball of Mud and follow the microservice way, right? What do you think?
For further reference, see also this article from Mr. Fowler (and recommended in the video).
Regards!
-
Martin Fowler works at ThoughtWorks (June, 2018). ↩
-
This is currently the matter of active discussion in the company of a good friend of mine (which I’m not going to mention here, sorry). ↩