Journey to Microservices

Artigo em inglês

The development of new applications today is directly related to the speed of delivery. The broad move towards agile environment, which has been in progress for several years, promotes a sense of easy and fast software implementation.

One of the trends that has helped accelerate application development is the rise of microservices, and IT leaders from various companies may want to consider this software development technique for their organizations if they have not already.

As a Service Oriented Architecture (SOA) variant, microservices are an architectural style in which applications are broken down into coupled services, providing increased modularity, making applications easier to deploy, test, deploy, change and maintain.

Challenges

The move to microservices represents a radical change and organizations need to be prepared for it. There are many challenges, inlcuding determining the right boundaries between services; overcoming the difficulty of sharing code between teams; and the complexity of change management as teams are releasing code independently. Evolving to microservices is like evolving from horse to bike, or from bike to automobile.

As we go through the stages of evolution, we find even more moving parts. Each mobile part requires its own level of maintenance, and the support and supervision of so many elements not only makes the solution more complex, but also increases the associated costs. Consequently, we must examine our decisions to ensure that they are not only the best technological decision, but also the most economical.

Another challenge is security. We have to determine if we want to implement a single verification solution for the whole set or if we want each microservice to have its own verification process. This is a decision that must be made on a case-by-case basis and that each project team must do alone.

Establish Guidelines for Code Libraries

It’s much harder to share codes between teams in a world of microservices. Unlike a monolith, where the common code is just a method call, with a microservice architecture, the code must be packaged in a shared library.

Adoption of these libraries is often slow and making changes requires coordination between the library owner and various services. Therefore, it is important that organizations adopt a robust set of common library guidelines and release expectations.

Do not Share Databases between Microservices

By building our decoupled services, we are allowing our development teams to create their own database, which limits the dependencies of other development teams. Development teams push their recordings to the backend for all others to absorb, and that information is managed by our data team.

The concept should continue to be plug-and-play. If you need to replace a service, simply remove it and connect the new one. Because micro-services are modular by design, the development process is predominantly plug-and-play, making it extremely easy to solve any problems that may arise.

Because the code is not propagated across the platform, we can quickly isolate problems for a specific source and track them in the micro-services. This makes it easy to update applications, allowing upgrades and upgrades through microservices. You can imagine upgrading a system piece by piece, one piece at a time, instead of being forced to replace everything. This concept alone revolutionizes the development of the system.

Address Safety Concerns

As with anything else related to IT, microservices have their own security issues. Organizations should look for known vulnerabilities – in advance and often – in the software development lifecycle.

An important point for any IT staff operating in our fast-paced world is to identify and fix vulnerabilities of local solutions as well as third-party software. It is essential for maintaining safety. It is critical to have an overview of the software ecosystem to understand how it works together and where potential problems reside.

Software patch implementation is much easier to test when using microservices. It’s not just for home code. IT engineers can test third-party software for vulnerabilities alongside their own software development. In case a vulnerability is found, a fix can be deployed more quickly than with previous monolithic code structures.

Avoid Complexity

Complexities can occur very easily in large deployments of microservices. There may even be recursive data paths if organizations are not careful about ensuring there is a system architecture. Between using standalone multifunctional teams and service repositories, you can see dependencies that can cause the system to override the principles of microservices.

A single microservice shall be capable of being altered or removed without significant impact on the system as a whole. A best practice is to involve the enterprise architecture to validate microservice projects.

Measure Performance by Scaling

Monolithic applications can be staggered in their entirety to meet an increase in demand by adding servers. In the case of microservices, the modular architecture allows only parts of the system to be dimensioned. However, microservices require a very different approach to scalability, because a typical deployment of microservice architecture can consist of several components running on different servers, virtualized or not, working together.

This adds the challenge of identifying which individual components should be improved. This is where performance measurement becomes critical and tools such as an application delivery controller can help measure and detect performance issues. Companies should also consider defining Service Level Agreements (SLAs) for each microservice to ensure performance and reliability based on business priorities.

Focus on Change Management

Companies need to update the change management and change control processes, along with supporting documentation, to benefit from switching from monolithic to micro-service architecture.

A faster development process is great, but do not miss the benefits of microservices, letting go of change control and other important governance processes. Be sure to align the change tracking and approval process to match your agile development lifecycle.

Source: TMC Net

Author: Lenildo Morais, Project Manager at Ustore, a leader in the Brazilian cloud storage market, based at the Porto Digital technology campus in Recife. He is also a Researcher at the ASSERT Research Technologies Laboratory – Advanced System and Software Engineering. Lenildo has experience in Software Engineering, working in the following research topics: software quality, methodologies and processes of software development, requirements engineering, software testing and project management software. He earned a Master in Computer Science at the Center of Informatics of the Federal University of Pernambuco.