The dawn of microservices-based modern architecture has made everybody talking about it. This blog is an attempt to consolidate key tips to ensure everybody is geared towards doing the right thing rather than doing the thing right.
Feel free to share your thoughts/feedback and we will make sure we edit this blog to address it collaboratively.
As everybody interested in Microservices must have googled or read articles about it or many people might already have started the journey, we are not going to cover basics of it. Our focus here is to highlight key tips, which are essentials for microservices-based architecture.
Tip # 1 – Don’t forget the basics – do the right thing first!
Few articles or Google might help but understand the building blocks microservices-based architecture, which are:
- Domain-driven design – It is important to understand fundamentals & best practices towards complex architectural systems. The best source is an old-school approach of reading book by Eric Evans. Click here for link to this book on Amazon.
- Key principles & characteristics – A must-read blog to understand key elements by Martin Fower. Click here to read this blog.
- Cloud-native applications – Microservices on cloud is an essential and hence cloud-native microservices concepts needed to be absolutely clear. You must read about Heroku’s 12-factor app and O’Reilly’s book on this matter – Migrating to cloud-native architectures.
Tip # 2 – Don’t forget the old-style architecture (aka n-tier architecture)
Microservices is not a silver bullet – it is agreed by all industry gurus. You don’t need to force it unless it is needed. Old-fashioned n-tier architecture, if modeled & maintained, still works and the majority of industry is using it. Also, you can leverage best practices in terms of resiliency, modularity, performance & security to microservices-based modern architecture as well.
In some cases (particularly complex systems), experts recommend monolith-first approach to ensure success towards microservices-based architecture.
NB: If you mention, even by mistake, monolith architecture is better than microservices it is hard to sell this to anybody (believe us). So, be careful on how to recommend old-fashioned architecture – wordsmith it carefully is the suggestion here!
Key blogs on this topic:
- Read Martin Fowler’s blog on Monolith-first architecture by clicking here.
- Read NGINX blog on how to refactor a Monolith into Microservices by clicking here.
Tip # 3 – Outer architecture (or surrounding elements) plays a critical role
More than inner architecture of microservices itself, outer architectural elements should be established first before writing your first microservice such as:
- Management capabilities such as discovery, configuration, routing, etc.
- Operational capabilities such as monitoring, automation (DevOps tools), etc.
- Infrastructure & resources such as cloud environment, common elements such as API gateways, messaging infrastructure, etc.
NB: As there will be a large number of smaller services it is important to get this right first. Read this blog by Gartner on how outer architecture plays an important role in a microservices-driven world.
Tip # 4 – Keep a vendor/technology agnostic view of system architecture
A key challenge is different segments of vendors ,offering technical solutions for micro-services, can be confusing and your system architecture should not be influenced by them. Though these technology solutions play an important role, architectural considerations should be developed independently.
These are key vendor segments, which are influencing microservices:
- API Gateway like NGINX, ApiGee, AKANA, etc.
- Cloud Computing like Amazon’s AWS, Google Cloud Platform, Microsoft’s Azure, etc.
- Caching (inc. In-memory data grid) like Hazelcast, Gridgain, Terracotta, Oracle Coherence, etc.
To conclude, these are few key tips to keep the ball rolling when it comes to Microservices architecture. Don’t forget that industry is still learning and we will need to be observant to identify challenges, success, failures & best practices.