In today, blog, I would like to share my thoughts on why it’s important to adapt to Microservices architecture for any established or growing business to help meet their technological and business needs.
Before we delve further into the topic, let’s define Microservices in a simpler way. There is way too much information and hype over this topic. Let’s do a reality check and run through monoliths and microservices and confirm if Microservices are really ‘The Thing’.
To start with, Monoliths are simple to develop, test, deploy and allow simple scaling. Gradually they become cumbersome and reach their size limit and managing them becomes a challenge. Additionally, the size of the application slowdowns its start time and any update demand a complete redeployment of the application which is not something anyone would like. Some code changes require extensive manual testing, which further delays the final deployment. The pain points further add up due to the lack of autoscaling features and over reliability of modules. Any bug or malware attack can affect rest of the instances and the entire application may become crippled and unavailable for an undefined time.
Today’s buzz words are automation and scalability. Monolith are not truly scalable in today’s age of dirt-cheap cloud computing. Also, monolithic applications are resistant to change as changes to existing frameworks or languages are bit on the higher side of the cost factor. So, here is my take on what microservices are and what purposes it should solve if implemented in any organization.
Microservices by its very name is opposed to anything that is monolithic in nature. As technology and work processes evolved over time, the need for a simple process arose that should be modelled around the business capabilities, be loosely coupled, easily understandable, and its various modules should be highly independent.
Its key desired features should be
modular in nature
autonomous
have implementation details
highly automated
autonomous
highly observable
Microservices ticks most of the above requirements and then a few more.
Like users, Google too loves the website that works with bolstering speed. Because it understands that the page load time is the key for the better user experience and hence, they rank websites higher that have a faster load time compared to the rest. So, if your page load time is slow, then Google and your competitors will be bypassing you soon. Research has further confirmed that mobile users do not wait more than 3 seconds for a page to load or content to appear. Here are some interesting stats:
Google can easily track such user behavior and obviously ranks a site low for more page load time
I have listed down below a few conditions and triggers which suit or rather demand use of microservices based architecture.
If you want to mirror the fast changing demands of the customers and market, then you should be able to incorporate all that feedback into the product, making the product more viable, effective, thus giving the end users a great value for money and high brand recall, you need to embrace microservices.
If you require a shorter Go-To-Market time and minimum downtime for end users and increased product reliability.
If you want reduced cost for making any real-time product changes.
In order to leverage auto-scaling benefits for your LOB application.
If you want to withstand and control variable, unpredictable traffic to your website.
If you really need continuous deployment for your application.
If you need your business to have Failure Resiliency and High Availability features.
If you want a smaller footprint for your application.
If you want to optimize the performance of all your core teams involved with every aspect of that product.
If you want to adopt a new technology stack or keep evolving to new ones.
If you want to enable your developers with tools for making code changes.
If you want agile, strong independent teams contributing their part of the product.
The code should not intimidate developers especially the new ones, and if you really want the benefits of continuous development and deployment.
The drawbacks if any, are the increased complexity of managing multiple services and the teams that manage those services.
Having a great monitoring and debugging tool like Logstash and Kibana is key. To conclude we shouldn’t be afraid in investing in newer technologies and systems, some will work, some won’t, but that one strategic decision would help you and your organization keep growing.