Monolithic applications have lost their shine over the past few years, particularly as the trend toward microservices has taken off.
The main issue with the three-tiered monolithic architecture is that, if any one piece of functionality needs to change, the entire system must undergo a release cycle. This costs more and results in slow delivery times for important new features and capabilities. Over time, some monolithic systems also struggle to keep up with the scale needed by the business, since it’s difficult to expand their capacity. This can be a major impediment to growth.
Microservices solve these problems by separating all those pieces of functionality to run independently. When business needs change, microservices make it easier to adapt quickly. And they provide virtually unlimited scalability powered by cloud containers.
They mirror the way the business and IT want to operate. Microservices architectures unleash the power of small teams, allowing their development velocity to reach its fullest potential. They allow compartmentalization, so different teams or lines of business can release features on different schedules. Their independence allows teams to use different languages and platforms and have different delivery cycles.
But microservices are not a “silver bullet.” Their advantages come at a cost that grows with scale. With dozens or even hundreds of independent microservices running in Docker cloud containers, IT must deal with many additional operational challenges. Martin Fowler, one of the thought leaders of microservices, flagged “operational complexity” as a key issue.
When they're not running in a single monolithic application, how will these services they find each other? How can they securely connect to each other? How can failures be detected, and services retried? How does an application log, monitor and trace what's happening - code it in each microservice? This is not only time-consuming, but almost impossible to maintain when you want to make changes.
Gartner analyst Gary Olliffe said in a recent talk: “The downside of microservices is that they push complexity to the edge.”
But what if you could manage all this complexity effectively? With different kinds of tools that have evolved to address these problems? Kubernetes gives you an easier way to manage your Docker containers, much like a virtual data center in the cloud. Service mesh handles network-layer requirements for service discovery, observe-ability, security, and fault tolerance.
Although service mesh is an essential capability, it’s incomplete; it lacks the application awareness needed to manage your API-led integrations from a product perspective.
App Mesh to the rescue
The answer is App Mesh, a configurable control plane for microservices and APIs working together as an application. An App Mesh can help you to perform application context-aware transformation and routing without any change to the underlying microservices. You can add new services to the mesh and they will inherit existing policies and behavior rules.
App Mesh also handles application-level governance, security and monitoring. It provides a level of abstraction so you can build, deploy, monitor, and secure your application without changes to existing services, bringing more agility to your software development lifecycle. Finally, App Mesh is easier to use and more intuitive, allowing you to quickly get up and running with the latest best practices with a minimum time investment.
As cloud-based distributed environments become more pervasive and technology and security challenges evolve faster than ever, it’s worth investigating what an App Mesh can add to your toolkit.