Microservices architecture is considered to be a refined idea of service-oriented architecture, or simply SOA, and a great choice when you need to provide the support for a variety of devices and platforms (including mobile, web, IoT, wearables) or to create a multifunctional software system.

Netflix, Amazon, eBay, Twitter, PayPal, Walmart, Bluemix, The Guardian, – they all have moved to microservices architectures, which allowed them to highly improve their performance and better correspond to the market requirements.

What is Microservices architecture

Microservices architecture, or simply microservices, is a method of creating an application as a set of small services, each building around a single process and performing a certain feature.

This approach implies that all services are almost independent of each other but together form a functioning system.

Decentralized data management, the ability to use different tools for developing each service and apply different data storage technologies are the main characteristics of this architectural method. Also, each service has its unique database and communicates with other services through HTTP connections.

Let’s imagine that you are building an e-commerce application that takes orders from customers, verifies inventory and available credit, and ships them.

The application consists of several components including the StoreFrontUI, which implements the user interface, along with some backend services for checking credit, maintaining inventory and shipping orders. The application consists of a set of services. Take a look at the image.

Advantages of Microservices architecture

1. Flexible and independent scalability

Flexibility to scale is one of the main advantages of microservices architecture. Unlike in monolithic architecture, there each module can scale horizontally and independently of other modules. Thus, microservices architecture perfectly suits large projects.

2. Independent tech stack

In microservices architecture, software engineers have the opportunity to build applications with various tools and technologies. The code can be written in different programming languages, which adds, even more, flexibility to the app development process.

3. Better fault isolation

If one service fails, it doesn’t impact the functioning of other services. Comparing to other architectural styles, while in microservices the system continues to work, in monolithic the problems with one module can affect the entire application.

4. Easy to deploy and integrate

While in cases of even small code changes developers have to deploy the application again, in microservices architecture the deployment goes faster and easier.

Since all services are built around single business processes, programmers don’t have to modify and redeploy the entire app, only the area that you need. Hence, to improve the product is also more simple.

Microservices can be independently deployable by fully automated deployment machinery. Also, by using open-source continuous integration tools like Jenkins and Hudson developers significantly simplify the integration with third-party services.

5. Easy to understand

Another advantage of microservices architecture is that it’s easy to understand how the system works and how it was developed. It’s especially helpful when a new team member comes to the project and has to quickly delve into it.

There are other types of app architecture like service-oriented architecture and monolithic.

Find out what are the differences between microservices, SOA, and monolithic and which types of projects they suit for in the other post part.

The biggest challenge I've had with microservices is getting enterprise wide cooperation and coordination. If someone doesn't have the task to bring the various elements together and the authority to drive the effort, it will fail due to office politics. The technical side is easy compared to getting people to work together, particularly when the corporate culture has long standing divisions or when separate companies are merged into one.