Micro Services are little building blocks of the digital native world. It’s a progression of services oriented architecture. This blog explains what it is, its advantages, who uses micro services and what the future holds.
Before understanding microservices…
…Let’s build cars
Building a car is a complex process. A car has 30,000 parts, each delivering a specific value and connected to other components. Same is true for software development.
Do you know OEMs like Honda, Toyota don’t manufacture these parts? There is an insane level of outsourcing and subcontracting involved. Why?
- Complexity
- Difficulty of managing everything in house
- Speed of production slows down
Thus, OEMs consume the services of others. Same is true with almost all manufacturing companies. Let’s see how multi-tier outsourcing works from the diagram below.
A car producer, Toyota in our case, outsources manufacturing of engine, tyres, and outer body production to tier 1 suppliers along with specifications. Tier 1 suppliers further outsource this to tier 2 suppliers (1 to 9) along with requirements. Toyota just assembles a car.
The above process requires consuming the services of others to create something complex and beautiful. That’s what “micro” - “services” do as well. It helps you create complex and scalable apps.
What are “Micro”-“Services”?
It’s a software development practice, also called software architecture It structures an application as a collection of services Objective is to weed out complexities so that one can build interconnected applications on top of multiple components. Each component is called a service
Service as the name suggests performs a function. If we were to consider an ecommerce portal, such services could be Authentication, Listing, Cataloging, Delivery or Payment.
A service is a distinct component of a huge software development project with its own codebase, infrastructure, and database. They are loosely coupled because each of these services could use different language, infrastructure or database architecture.
But the question arises. How do these components consume the services of others? Short answer is APIs. APIs are communication protocols. It's a way of exchanging information.
Features of Micro Services
The microservice architecture enables the rapid, frequent and reliable delivery of large, complex applications
Advantages of micro services over Monolithic Architecture?
Disadvantages of Monolithic Architecture like large code base, difficulty of understanding and maintaining the code, slow deployment, loaded IDE, scalability of application, etc are solved through microservices approach.
- Rapid and easy deployment: Each service performs a special function. Therefore, it is easy to work on that service and deploy it without affecting other services
- Easy to understand and maintain: Monolithic architecture has a large code base. It’s difficult to understand such codes. Modularity improves understanding.
- Scalability: Given modular architecture, one can add, modify, delete services independent of other services. Therefore, scaling systems becomes a lot more manageable
- Hybrid cloud or multi cloud hosting: With the micro-services, emerged the standardization for packaging and for managing the lifecycle of it. And having some standard APIs makes it possible to move applications from one cloud to another thus supporting multi-cloud without much effort.
- Multi-Language and framework support: As each microservice has a different codebase and they communicate with each other through APIs only, we have the opportunity to develop each of them with different and most suitable languages and frameworks for that type of service.
- Portability across environment: Micro Services are built on containerisation frameworks that abstracts the underlying complexity of hardware or OS . Therefore such microservices are easier to deploy on any type of hardware, OS and environments.
- Robustness: If one service fails, the other can still function. It’s easy to identify faults , reduced impact radius and faster recovery time.
Summarizing key pros and cons of microservices architecture
Microservices are all around you
Many companies use microservices, be it Fintechs, Digital Banks, Traditional banks and of course Big Tech (FAANG). If the company is publishing a tech blog, most probably you will find a mention of microservices.
Fintech landscape is evolving fast and thus requires fast adoption of new technologies and business logics. This requires continuous innovation and shipping of new features so that you don’t fall behind. Monolith Architecture will make you slow and error prone. This makes microservices architecture a necessary approach.
Consumer Tech : Netflix was one of the early adopters. Uber and SoundCloud have recently switched to microservices architecture. Uber was facing growing pains and repeated issues with deployment that often resulted in code rollback. Thus, a new approach was necessary.
Fintech: Tinkoff, Revolut, N26, Klarna to name a few. The list keeps growing
Digital transformation (Deloitte, TCS and Infosys) : Microservices based architecture is the foundation of platform banking. If you want to embark on platform banking journey, this article by Deloitte is a must read. TCS Global Banking Platform is based on microservices. Finacle (core banking platform by Infosys) also leverages microservices.
When to choose Microservices?
I am pretty sure if you are reading this, you will have to deal with complex and scalable projects, which involves numerous teams, multiple programming languages, and faster shipping of new features. Isn’t the choice obvious then?
Future of Microservices
Microservices technologies are seeing rapid advancement which will make business running standard monolithic architecture obsolete and slow to innovate and compete with businesses which are on microservices tech stack.
Below are the few prominent technologies in microservices architectures
Serverless Architecture: Cloud provider allocates machine resources on demand, taking care of the servers on behalf of their customers
Function as a Service : These is a cloud computing service that provides a platform allowing customers to develop, run, and manage application functionalities without the complexity of building and maintaining the infrastructure
Multi cloud environment: It will enable the use of microservices across multiple cloud environments which brings added advantage of their specific features.
Still not sure?
If you need a consultation or a partner to discuss problems, we are here to help.
We at Nuclei, have 25+ years of combined experience working with microservices. Our tech team has worked across companies like Amazon, Samsung R&D, and fintech startups which were sold to the likes of Amazon. Even today, we leverage microservices architecture to build modular code, which is trusted by 18 banks and telecom companies. We are frontrunner in adopting and improving new cutting edge technologies in microservices and Saas technologies space.
Problems we can help you with
- How to ship features fast by avoiding dependency on internal teams
- How to build scalable products and other interesting use cases
- How to have Faster Time to Market
- How to Improve ROI with reduced TCO for the application
What do we expect in return? An engaging discussion. We believe coaching is selfish. When we teach others, we learn a few things that help us improve.
References