- The popularity of microservices is growing day by day. Many IT giants have already used the microservice architecture. Our company doesn’t stand aside and has already started to adopt microservice – based architecture in some projects.
For example, we are creating a microservice application for an US-based company with more than 5,500 employees. The client’s domain is risk management together with asset protection software and services. The company has a manifesto with very strict requirements to the software architecture standards, code development standards and processes, QA and Agility standards. The integration with the existing client’s infrastructure would not be possible without Microservice architecture. Our team has analyzed the requirements, split the functionality into Microservices, got the Architecture design approved by the Customer’s System Architect and successfully implemented it.
What is the reason of the microservices hype? Flexibility or just new wave in software architecture? What benefits and business values does it bring? Let’s figure it out.
Technopedia says, that Microservices is an architectural style of developing a single software application with a combination of small, independent services. Monolithic architecture in comparison with microservice architecture means the code’s components are united, working together and usually sharing the same memory space. Monolithic architecture is not so flexible as microservices, it will be hard to use new technology or platform, because this kind of modification in one part of the solution will lead to the rewriting of the overall solution.
Besides the flexibility, what are the other key benefits of the microservices? Why is it important to consider such an architecture in solution development?
Benefits of microservices
- Independent Teams
- Business Focusing
It is easier to build and maintain applications when they’re separate in fragments, thus it’s not so hard to control the process of coding. Microservices architecture allows to use different various programming languages, databases and software environments. Microservices can be developed based on their individual features, as well as be individually deployed or re-deployed. In case of any problems with microservices the system won’t be affected. Failed microservice can be fixed in short period of time. In addition, you can put each microservice into production one after another. That helps to avoid mistakes and make the process easier.
As it was mentioned, each microservices module can be written using different technology. This helps to select the most convenient technological stack for the definitive task or necessity. Each module, being in different server nodes, is independent and can be scaled horizontally. This thing won’t be easy for a large monolithic service. Microservice architecture allows to add new items to the system without any problem and scale the microservices independently form each other.
Using microservices you can improve productivity and speed of the development processes. This fact that different teams work on various fragments at the same time and don’t wait for each other to finish the task results in speed increase. For example, some developed components can be changed or improved by one team while another team is working on another fragment. This process leads to a high level of productivity, QA and a fast product release.
Microservice architecture is a good choice for distributed teams. Programmers can work independently and individually without spending time on tech decision making as is usual in the big teams. Cross-functional and autonomous teams have an influence on the quality of solution and delivery time of the projects.
Martin Fowler says that “the microservice approach to division is different, splitting up into services organized around business capability”. Using microservice architecture you will focus on building business functionality rather than just writing code. Microservices can be used in more than one business process depending on business needs. Microservice architecture offers adaptation in multiple contexts.
To sum up, microservices architecture is a great option for large projects and big solutions, because it makes them easier to develop or improve. Flexibility, high-level of productivity, adaptability are important features of microservices and usual needs for business solutions. Of course, like any architectural approach, microservices have their pros and cons. For example, the possibility of using various languages, libraries and technologies can be problematic for some organization. By the way, such benefits that offered by microservices architecture as independence and autonomy won’t suit for some teams. Everything depends on the specific need, task, structure of an organization or team.
This article is based on https://martinfowler.com, you can find more detailed info or pictures there.
If you have any questions about architecture approaches, don’t hesitate to ask our specialists. We will share our experience and find the best solution.