Skip to main content

Modernizing Applications to Improve Agility

You’ve moved a critical application to the cloud, expecting infrastructure and operational expenses to decrease.  It didn’t play out like you thought.  You are paying much more than you planned, making you reconsider why you moved it to the cloud in the first place.  But there was a reason you moved to the cloud, and running an application on your infrastructure just puts you right back where you started.

3 Major Components Driving Cloud Costs

The major components of your cloud cost are compute, storage, and network bandwidth fees.  This means the application is consuming more resources than you expected, eroding or eliminating your savings.

Applications have an architecture.  They consist of components with responsibilities that interact with each other to deliver value.  The problem is, in many cases, that architecture emerged from a series of expedient decisions over a long period of time.  It is an accidental architecture.  It wasn’t designed – it just happened.  This is as much a consequence of poor decision-making as it is technology or bad code.

You probably noticed the application getting more problematic to change over time.  Releases take longer and longer.  More time is spent fixing defects than adding new features.  And you moved this to the cloud.  If the application wasn’t designed for the cloud, then it isn’t going to make efficient use of the cloud.

A Different Approach to App Modernization

We believe there is a path to realizing the benefits you expected when you began your cloud journey.  Modernizing applications allows you to take advantage of what the cloud offers and generate savings.

Modernizing an application that has been built over the years can seem like a daunting proposition.  You may have already tried in the past and failed.  The most significant success factor will be to develop a roadmap of improvements, economically justify them, and take it a step at a time.  This way, you can manage risk and generate returns as you go.  There are four key principles to keep in mind:

  • Find the seams
  • Eliminate technical debt
  • Scale what needs to be scaled
  • Make better bets

Find the Seams

Divide the application into components focused on business capabilities or customer problems.  Extract each component in order of value or return, focusing on the seams where they interact with other parts of the application.  Place the component behind a contract barrier using APIs, messages, or events.  Develop automated tests that validate the component’s contracts.  Then, wire the component back into the application using the new contracts.

Eliminate Technical Debt

Now that the component is hidden behind a contract, it can be safely improved without affecting the rest of the application.  This is where the first level of value can be obtained.  Refactor the component to take advantage of the economies offered by the cloud provider.  Look for less expensive, less resource-heavy solutions.

Scale What Needs to be Scaled

All components are not created equal.  Some are used more heavily than others, and some are subject to varying demand and peaks.  These components can be placed in serverless functions or auto-scaling groups so that you only pay for what you use.  This is the second level of economic value.

Make Better Bets

Nobody wants to create a mess.  But the temptation to fall into the tyranny of the urgent is strong.  Unless you fix how you make decisions (governance), you could easily wind up in the same fix again.  Recognize that the development process is a system and create an agile system of delivery that owns the total problem – the health and hygiene of the solution as well as the features to be developed.  With the proper structure, governance, and metrics, you can avoid technical debt and expedient decisions.

Your application may be old, and it is costing you more than you expected.  By finding the seams, eliminating technical debt, scaling what needs to be scaled, and making better bets, it is possible to realize the promise of cloud computing.

Related

Watch
How DevOps Enables Business Architecture Alignment | Matt Van Vleet 11 Min Watch

This video discusses opportunities to implement DevOps practices alongside to improve your metrics, accelerate business alignment, and achieve your desired business goals.

Watch
Video
5 Silent Killers of Business Agility 35 Min Watch

In this talk Matt Van Vleet discusses five non-obvious DevOps barriers to Agility in large organizations.

Watch
Video
Creating the Conditions for High-Performance Development Teams 35 Min Watch

You only get the full benefits of agile methods and technical practices when certain conditions are met in the organization. Otherwise teams will be forced to make compromises, reducing their performance.

Watch
White Paper
Keep legacy applications from standing in your way.

How can a “fully Agile” software team learn all the new practices, be re-organized and financed as a product instead of a project, yet still take weeks or months to get a new feature into production? The problem may be embedded in the legacy software itself.

View