In this four part blog series about Microservices, we highlight the benefits, the challenges, and outline which tools are preferred to productively implement microservices into your organization’s architecture.
To understand this series, it is essential to have a comprehensive understanding of what microservices are. Read the last article for more information. The aforementioned article highlighted the many benefits of microservices. Below is a quick run-down of the features.
Figure 1: Features of microservices
As with any other major change, there are a few notable challenges to consider when moving from a traditional monolithic architecture to an agile, more scalable microservices architecture.
Potential Challenges of Microservices Architecture:
It is extremely important to define a target architecture before beginning to implement microservices, otherwise, the IT landscape may end up devolving into chaos and exhibit worse properties than the existing monolithic applications.
Due to the modular structure of this particular architecture, continual management of autonomous services becomes increasingly more complex. Instead of one deployment, your team will be dealing with hundreds of services, which depend on each other, and need to work harmoniously. There are useful tools to manage the complexity of microservices, which we will cover in the third part of this blog series.
Microservices communicate via process messages, standard protocols, serialization, and REST APIs. The sheer volume of distributed information may cause major stress on your network, which could lead to latent response times. Hundreds of services run inside of a single application, and requests typically span multiple services. To prevent network traffic between microservices, consider a network upgrade. Otherwise, your applications may run slowly.
Maintaining integrity of your data even in this decentralized approach is key. Typically, each microservice has its own database, and these databases may use different technologies. This can prove to be a challenge when one service references data in another service. Data must remain consistent across all microservices; if a certain line-item of data changes in one service, it must change in the other.
Running diagnostics on microservice based applications require much more work than running diagnostics on a monolithic based application. An application can produce a large number of logs that will need to be analyzed. Due to the hundreds and sometimes thousands of services in one application, debugging and running diagnostics can be laborious. It is imperative to have a clear-cut plan for running diagnostics on microservices.
While creating a roadmap to microservices, EAs must weigh the benefits and the challenges of microservices, and give clear-cut advice to build a framework to fit the needs of the organization. Our third blog will analyze the relationship between containers and microservices.