monolithic to microservices migration

monolithic to microservices migration

Advantages and Disadvantages of Microservices

It is a good idea to understand microservices disadvantages and advantages when they first begin to evaluate if a microservices migration makes sense for their organization. While the potential of microservices is great, and many organizations have seen amazing results, their are challenges one must consider before moving forward. This article seeks to educate you on the top advantages and disadvantages of microservices before you begin.

Before We Begin, What Are Microservices?

Microservices is an architecture used to refactor a monolithic application into independently deployable services. These services benefit from being loosely coupled and highly cohesive. This approach is typically taken by companies that are feeling the pains involved growing data stores and slow deployment times that are characteristic of enormous enterprise applications. Companies that migrate their existing applications are better able to leverage the cloud and automation, resulting in highly scalable, quickly deployable, and resilient applications. 


While a microservices architecture can provide a multitude of benefits, they are not the ideal solution for every organization. When considering undertaking a microservices initiative it will be very important to ensure your organization culture, and business needs align with shifts that will be brought upon by a microservices migration. A good first step in determining if microservices is the right fit will be evaluating the disadvantages and challenges that a highly distributed application can pose, and determining whether or not your organization is prepared to make the switch.

The purpose of this article is to provide an overview of the pitfalls of a microservices architecture in order to provide you with information you will need to address and overcome these issues as part of your microservices migration planning.

The Top 4 Disadvantages of a Microservices Architecture

Disadvantage #1: Microservices Are More Complex

The biggest disadvantage of a microservices architecture is its increased complexity over a monolithic application. The complexity of a microservices based application is directly correlated with the number of services involved. This type of architecture has many more moving parts than traditional applications, requiring enormous effort, careful planning, and especially automation in order to handle inter-service communication, monitoring, testing, and deployment. The reasons for the increased complexity are:

  • Existing tools are not designed to work with service dependencies.
  • Increase in language and frameworks can cause the application to become hard to maintain.
  • As each service has its own database, transaction management and data consistency can become a nightmare.
  • Each service has to be testing and monitored increasing demand for automation.
  • The initial refactoring of a monolithic application can be exceedingly complex for large enterprise applications.
  • Number of processes can grow exponentially when load balancing and messaging middleware are considered.
  • Increases in documentation overhead as organization has to keep schemas and interface documents up to date.
  • Numerous microservices patterns exist, will have to determine which is the best fit for your application.

Disadvantage #2: Microservices Require Cultural Changes

A microservices initiative will require a cultural shift in organizations seeking to adopt them. They require a mature agile and DevOps culture. With a microservices based application, teams need to be enabled to manage the entire lifecycle of a service. This often requires migrating competencies and decision-making from managers and architects to individual teams. This change in hierarchy can be difficult for some people within the organization to accept. Therefore, ensuring experienced members and upper management have bought into the initiative is an important first step. Also, communication between individuals and teams becomes much more challenging as teams may not always have visibility of the big picture and how individual services must work with each other to create a usable application.

An organization will also need to determine if their people possess the skills and experience necessary to take on a microservices based application. Because a team may be responsible for a single service, developers must be knowledgeable about developing, deploying, testing, and monitoring an application. It will also be a requirement to ensure you have DevOps and release automation skills as a component to each team.

Disadvantage #3: Microservices Are More Expensive

Among other microservice disadvantages in its architecture is growing costs. Services will need to communicate with each other, resulting in a lot of remote calls. These remote calls result in higher costs associated with network latency and processing than with traditional architectures. Developers will want to put forth their best efforts in order to reduce the number of calls. Another driver of increased cost is a higher resource demand as each service will require its own runtime environment and CPU. This is a requirement to keep each instance isolated. Also, due to each service utilizing its own language and technology stack, these application design and architecture non-uniformities can drive up the overall resources the organization expends on management and maintenance.

Disadvantage #4: Microservices Pose Security Challenges

Compare a monolithic application to microservices and you will see microservices can pose enormous security challenges due to the increases in inter-service communication over the network. All of these interactions create an opportunity to outside entities to gain access to the system.



Advantages of a Microservices Architecture

The software industry is a fast paced and extremely competitive space. As such, the industry is constantly flooded with new technologies, processes and tools that attempt to keep pace with the demands of the day. Most of these products and concepts that hit the market are extremely trendy and have a short life. This makes it extremely difficult for companies to determine what to adopt, and when to adopt it. This brings us to a fairly recent trend that is seeing ever increasing adoption, microservices.

Microservices was created as an architectural framework to address the limitations of monolithic architectures. They have succeeded in their goal and the advantages of microservices over their monolithic ancestors are many. Microservices architectures are a derivative of service oriented architecture in the way that they seek to modularize an application into unique services in order to increase granularity. Even a decade later after its conception, it is still difficult for companies to determine if microservices architecture will be a good fit for their organization and its applications. Part of the reason for this is that microservices and its approaches are constantly evolving, with new tools such as Docker and Kubernetes, and new patterns and approaches.

We have assisted many companies with decoupling their monolithic applications into microservices and are firm believers that this is not a trend that will disappear in the near future. We carry this belief due to the long list of advantages a microservices architecture can offer. If after evaluating the advantages of a microservices architecture you are interested learning more, please check out our more detailed overview on microservices.

Here Are Some of the Top Advantages of a Microservices Architecture

Advantage #1: Microservices Make On-Boarding Easier

Because microservices are modular in design, each independent service is much smaller in scope when compared to a monolithic or SOA architecture. Each service can handle all of the components required in order to perform its function, including data storage and communication. As a result, small teams can be assigned to developing, testing, and deploying a single service. A smaller scope creates an enormous advantage when on-boarding new developers. A single microservices is much easier understand, because new developers do not need to understand the functionality and interdependence of each service.

Advantage #2: Microservices Reduce Risk

Monolithic and SOA applications can take a long time to develop, test and deploy. A microservices architecture stands in contrast to the traditional approach in that each service can be developed and deployed independently. This reduces risk, because a failure in one service will not result in failure of other services, or even the entire application. This grants developers the ability updates a single service, and to roll back buggy updates without having to redeploy the entire application.

Advantage #3: Microservices Provide Flexible Data Storage

One of the greatest advantages of a microservices architecture is their ability to leverage polyglot persistence. Each service is free to use its own data storage. Monolithic and SOA architectures can only leverage a single data store. While this works well enough when data volumes are small and homogenous, as data volumes grow and data begins to have varied characteristics, companies begin to have issues addressing the processing requirements of their data. With a microservices architecture, developers are free to choose the data storage type that works best with the data being gathered and used by each service.

Advantage #4: Microservices Enable Polyglot Programming

In line with the ability to use a data storage type for each service, developers are also free to utilize a programming language of their choosing for each service. Each programming language has its own set of functionality and purposes. Being able to choose the programming language that is best suited to address the functionality of a service is one of the greatest advantages of a microservices architecture.

Advantage #5: Microservices Reduce Clutter

Over time monolithic applications can become very large, and functionality that is deprecated and is no longer used begin to accumulate. Decoupling a monolithic application into microservices is a great opportunity to reduce the size of your code base by removing unused functionality. The speed and ease of future deployment will also enable you to keep your application free of unused functionality in the future.

Advantage #6: Microservices Increase Fault Tolerance and Fault Isolation

Another advantage of a microservices architecture is an increase in fault tolerance and fault isolation. An important feature of a microservice is that they are very loosely coupled. A microservice should contain all of the components necessary in order to perform its function. This is in stark contrast with monolithic applications that exist as a single block of code and each module being highly interdependent on each other. As a result of being so loosely coupled, microservices are extremely fault tolerant. A failure of any service will not have an effect on another service. Issues also become extremely easy to locate and isolate to a single service, which aids in resolving issues quickly.

Advantage #7: Microservices Increase Speed of Deployment

By far the greatest advantage of a microservices architecture are their ability to align with Agile, DevOps, and CICD. As companies embrace these ideologies and automate testing and deployment they are able to significantly increase their deployment velocities. Also, small teams can be developing, testing, and deploying multiple microservices at the same time, greatly reducing cycle time.

Advantage #8: Microservice Provide Scalability and Flexibility

A major advantage of a microservices architecture is the scalability and flexibility the provide. The flexibility microservices provide can also help eliminate vendor and technology commitments as microservices leave you free to utilize new technology stacks on a single service. Microservices architecture extremely loosely coupled, allowing you to scale them both horizontally and independently.

Advantage #9: Microservices Simplify Security Monitoring

Each service is isolated from other services in the application. This makes identifying the source of a security issue easy to locate and keeps issues from effecting other areas of the application.

Microservices Are Here to Stay

After reviewing microservices disadvantages and advantages it is easy to see with such a long list of advantages it is apparent why so many companies are looking to decouple their unruly monolithic applications into microservices. We have seen first-hand the profound improvements organization can make on performance, efficiency, and overall culture by taking on a microservices initiative. But before you get started, make sure you check out this article on microservices disadvantages.

Conclusion

While microservices can pave the way to substantial improvements to an organizations culture, capabilities, and ability to complete, they are not without risk. Understanding and planning for the advantages and disadvantages of a microservices migration is the key to success. We hope after reading this article you are more aware and better prepared to tackle the challenge.

Begin Leveraging the Awesome Power of Microservices Today

Struggling to decouple your monolithic application? Not sure how to begin? We can help. Tiempo has assisted many organizations modernize their applications, leveraging the most current technologies. From strategy and planning to dedicated agile teams ready execute on your vision, Tiempo has the resources you need to make your initiative a success.



Reference :


要查看或添加评论,请登录

Mohammad Ramezani的更多文章

社区洞察

其他会员也浏览了