Raktim Singh

Home Digital Transformation What is Micro-Service? All About What are Micro Services

What is Micro-Service? All About What are Micro Services

0
What is Micro-Service? All About What are Micro Services

What is Micro-Service? All About What are Micro Services… Microservice is an architectural approach to build applications where each core function, is built and deployed independently.

It is composed of many loosely coupled and independently deployable smaller services. Microservice architecture is distributed and loosely coupled.

Microservices are preferred for agility, easy development, deployment & to achieve scalability on CLOUD.

Netflix, PayPal, Amazon, and other tech platforms have transformed from monolithic to microservices architecture.

Earlier, monolith applications were built. Monolith application is built as a single, autonomous unit.

In monolith application, any update or modification done to a small section of code required building and deploying an entirely new version of the software.

Also, scaling some functions of an application means that you need to scale up the entire application.

Microservices resolve the limitations of monolithic systems by being as modular as possible.

In simple terms, microservices help to build an application as a suite of small services, each running individually and are independently deployable.

These services can use different data storage techniques and might be written in different programming languages.

One of the early adopters of microservice architecture is Netflix.

This streaming platform receives one billion calls every day from more than 800 different types of devices to its streaming-video API.

They had successfully transitioned from monolith architecture to microservices architecture. 

Amazon has also adopted microservices.

It also gets a big number of calls from a range of applications including applications that manage the web service API as well as the website itself.

It comprises several autonomous applications with each one executing the business logic for different function areas.

Characteristics of Microservices

Multiple Independent Components

As the definition gives away, software built as microservices is broken down into multiple component services.

Each of the services can be easily deployable, tweaked and redeployed independently without comprising the application’s integrity.

It helps to make a change to one or more distinct services rather than redeploying the entire application.

Business Savvy

The microservice is uniquely organized around business capabilities and importance.

Contrary to the monolithic development approach where different teams have specific components to focus on like UIs, technology layers, or databases – microservice architecture leverages cross-functional teams.

Each team is responsible to make specific products based on one or more individual services.

Here one team has the responsibility as well as ownership to do domain-driven design or business-driven development.

Simple Routing

Microservices work like the classical UNIX system. It receives requests, processes them, and generates a response accordingly.

This is quite different from how other products such as ESBs (Enterprise Service Buses) work, where high-tech systems are leveraged to message routing, choreography, and apply business rules.

Microservice has smart endpoints that process information and apply logic to generate information.

Decentralized

Since microservice uses a variety of technologies and platforms, traditional methods of centralized governance aren’t suitable.

Decentralized governance is utilized by the microservice community because it allows developers to produce effective tools that are useful for others to resolve problems.

Just like decentralized governance, microservice architecture also favors decentralized data management.

Monolithic systems use a single logical database across all different applications while microservice applications manage unique databases for each service.

It helps in the continuous delivery software development process.

A change to a small part of the application only requires rebuilding and redeploying only one or a small number of services.

CLOUD-NATIVE APPLICATION

Microservices architecture helps you in building cloud-native applications.

Suppose there is one travel application, which is built using a monolithic approach. In this travel application, there are three functions, namely ‘booking a ride’, ‘payment’ & ‘notification to customer’.

Now, even if you want to scale say, the booking function, full travel application (supporting all three functions) would have to be scaled in its entirety.

So, in this scenario, all three functions (booking, payment & notification) will get scaled up, even though transactions for the ‘payment’ & ‘notification’ function are very few (& doesn’t required to be scaled up).

On the other hand, in microservices architecture, these 3 functions will be designed & developed as 3 different microservice. So here, individual microservices can be individually scaled up.

Pros and Cons of Microservices

If you are thinking of implementing microservices then you must be aware of their impacts.

Whether microservice architecture is ideal for you or not depends on your requirements.

Here’s a quick rundown of some of the pros and cons of microservices –

Benefits of Microservices

  • Microservice architecture provides developers with the freedom to develop and deploy services independently.
  • Design, development & deployment of microservices can be done with a small team.
  • You can write codes for different services in different programming languages.
  • The developers can leverage the tools and technologies, as per their microservice requirements.
  • One can think of a polyglot application, where each business function (& hence microservice), can choose its own technology stack, which is ‘fit for purpose.

So based on the need (accuracy/response time ..), one microservice can be developed on the RDBMS database, while other microservice can follow, non-RDBMS type of database.

  • The code is organized for business requirements.
  • It’s easy to understand and modify by developers. Hence it helps in onboarding a new team member quickly.
  • Allows easy integration and automatic deployment using continuous integration tools like Jenkins, Hudson, Concourse, Drone, Gitlab
  • It accepts the change to certain parts of the application and allows the related services to be modified and redeployed rather than modifying and redeploying the entire application.
  • Easy to scale and integrate with third-party services.

Things to watch out for in Microservices Architecture

  • Testing can become complicated and tiring due to the distributed deployment. One needs to automate a full application as manual testing in a microservice architecture is almost impossible.
  • The distributed system can result in duplication of effort.
  • The microservice architecture brings more complexity as the developers must reduce fault tolerance, network latency and deal with a range of message formats as well as load balancing.
  • As the number of services increases, integration and managing whole products becomes very difficult and complicated. It can become a galaxy of stars. You need to maintain configurations for hundreds of components across environments.
  • Handling use cases that span more than one service without using distributed transactions is not only difficult but also requires communication and cooperation between different teams.
  • Debugging

As it becomes granular, debugging & tracking down the service, which is causing failure is very difficult job.
You might need to investigate multiple services across different components. One needs to have a proper error or failure message logging system & real-time dashboards to monitor the health of each microservice instance.

One key step in defining a microservice architecture is figuring out how big an individual microservice should be. There is no consensus & it’s little subjective. Here, the right answer depends on the business context.

If the microservice is very small or too fine-grained, then the runtime overhead and the operational complexity can outweigh the benefits of the microservice approach.

In this scenario, alternative approaches like packaging the function as a library, moving the function into other microservices, should be looked upon.

Conclusion : What is Micro-Service? All About What are Micro Services

A microservice is a self-contained piece of business functionality with clear interfaces.

Whether microservice architecture becomes the preferred style of developers or not in the future, it’s quite clearly an excellent idea with a range of benefits for designing and implementing enterprise applications.

LEAVE A REPLY

Please enter your comment!
Please enter your name here