Monolithic applications are the backbone of most large organizations. While they drive stable streams of revenue that are critical to keeping businesses running, they are often tied to complex processes and platforms for development, release management, and project management. As a result, these blocks of monolithic system functionality – or silos – represent one of the biggest pain points facing enterprises today.
In this post, we share expert advice from Carlos Ponce, former Product Owner at ThermoFisher, on the benefits of breaking away from monolithic applications and the basic steps for transitioning towards microservices with NGINX.
Enterprise Monoliths Impede Modern Development
As development teams struggle to keep pace with new technology and consumer expectations, monolithic systems have become barriers to innovation and generation of new revenues.
“Traditional organizations tend to maintain large monolithic applications because they drive a significant amount of revenue for the business,” says Carlos. “At the same time, these monoliths are connected to siloed platforms that block current development processes.”
As monoliths grow in size and scope, their code typically becomes tightly coupled, making them extremely difficult to extend or change. The interconnected modules of monolithic systems not only slow development down, they are at high risk of failure every time a new feature is deployed.
Speed Is a Crucial Factor for Survival
Companies are now ranked on how fast they can transform ideas into products and generate new value for customers. In fact, 80% of enterprises expect to compete mainly based on customer experience (CX). And the painful reality is that monolithic systems prevent continuous deployment and delivery, often causing application teams to miss key time-to-market windows.
In contrast, companies that have taken steps towards delivering technology services with the help of DevOps and agile methodologies have raised the bar.
For instance, Amazon transitioned to DevOps as well as moving their physical servers to the Amazon Web Services (AWS) cloud about a decade ago. By 2015, they were able to achieve 50 million deployments per day to development, testing, and production hosts – an average of one deployment each second. Imagine what Amazon developers are able to do now.
“It’s similar to the manufacturing revolution in the 1980s – companies that adopted lean principles to help them control quality, collect better feedback, and be more productive gained more market share. Those [companies] left behind went out of business or suffered significant losses,” Carlos notes.
“The same story is playing out today – it all comes down to faster and more reliable deployments. Companies with large monolithic applications can’t deliver new features when they are wanted.”
How to Get Started
To succeed in the future, continuous delivery, constant experimentation, and customer feedback are crucial for large organizations. For many, this means making the move away from monolithic architectures towards microservices.
So what’s the best plan of attack?
According to Carlos, there are three important things to consider:
Are Microservices the Right Choice?
It goes without saying that transitioning to microservices requires extremely careful and thorough planning. However, it is also important first to establish that it is the right choice. Monolithic decomposition is not only a significant engineering investment, it typically requires a broader structural transition – where aligning vision, purpose, and people across an organization is a prerequisite for success.
Carlos recommends taking the time to step back and honestly evaluate. “You need to analyze carefully whether it’s really worth the effort. If you implement microservices without adopting an agile culture, for example, you won’t really reap the benefits of this type of transition.”
Choosing the Right Implementation
The biggest change in application design and architecture when a company decides to move to a microservices architecture is that communication with functional components happens over the network. By comparison, monolithic applications communicate in memory. As a result, it is critical to get network design and implementation right when migrating applications or starting a greenfield project.
To help, Carlos suggests using the NGINX Microservices Reference Architecture (MRA), a set of ready-to-use models aimed at helping organizations create microservices applications.
“NGINX has been around since the microservices movement began – it’s high‑performance, lightweight, and flexible, making it a perfect fit for microservices,” explains Carlos.
The models range from simple to more complex:
- Proxy Model – A simple networking model suitable for implementing NGINX Plus as a controller or API gateway for a microservices application. This is a good starting point when the monolithic application is fairly simple.
- Router Mesh Model – A more robust approach to networking, with a load balancer on each host and management of the connections between systems. This is a great fit for more complex monoliths.
- Fabric Model – This model has NGINX Plus in each container, acting as a forward and reverse proxy. It works well for high‑load systems and supports SSL/TLS at all levels, with NGINX Plus providing service discovery, reduced latency, and persistent SSL/TLS connections.
Building the Right Pipeline
To truly take advantage of the benefits of cloud‑native apps and architecture, Carlos believes it is essential to have strong continuous delivery (CD) pipelines in place.
Many enterprises have become interested in leveraging DevOps to deliver applications at a faster pace, shifting away from dedicated teams to more autonomous teams that have more responsibility of the end-to-end delivery cycle.
“This is not about buzzwords,” he says. “Adopting a company‑wide agile mindset and DevOps methodologies allows organizations to benefit from increased business value, improved flexibility, and responsiveness. DevOps removes barriers to continuous delivery, enabling teams to experiment, receive feedback, and release new features to customers as quickly as possible.”
NGINX Plus helps facilitate DevOps by providing:
- Customizable monitoring, which provides live feedback on application status along with a JSON feed of status metrics that can be incorporated directly into deployment pipelines.
- Dynamic reconfiguration of groups of backend servers to support continuous deployment, enabling automatic discovery of backend servers without manually rewriting and reloading configuration files.
- Load balancing automation offers flexibility and configurability to automate configurations with DevOps tools, such as Ansible, Chef, and Puppet.
But DevOps is far from a silver bullet, warns Carlos. Without a strong DevOps foundation, companies will fail before they even start.
“The adoption of agile methodologies alone does not indicate success. If development teams are conducting scrums, but nothing else changes, the company won’t be agile. The shift has to be cultural as well, and companies should take the time to evaluate whether it’s the right step and whether it’s worth it.”
To find out more about how NGINX Plus can help you break apart monolithic applications and support a DevOps approach, check out our many written and video resources, start a free 30-day trial of NGINX Plus, or contact us to discuss your use cases.
Designing and Deploying Microservices (a free eBook compilation of our seminal blog series)
Microservices Reference Architecture (a free eBook compilation of our blog series)