Modernizing core systems has become one of the most challenging and important objectives for application leaders. Organizations have accrued millions of lines of custom software code, but are now finding that the mission-critical systems their code was written for need to change and evolve.
In recent posts on application modernization, we covered starting with why you’re modernizing and choosing a cloud platform from among the three big providers. Polaris has you covered every step of the way from there, too. We’ve executed many successful digital transformations, and from that experience we’ve compiled this guide to help you build your app mod plan and stay on budget.
Comparing App Mod Dev Approaches
Any successful modernization will require application leaders to carefully select from among these key modernization approaches:
Lift-and-Shift – Level 1
If you’re hosted in on-prem virtual machines (VMs), the simplest way to start utilizing cloud resources is to move those VMs to a cloud provider. This can be appealing because it requires the least amount of code changes. Architecture and design don’t have to change, and infrastructure concerns will be familiar to existing staff. However, because changes are minimal this approach can miss many of the biggest business benefits of app mod, like improving application design, scalability, and resilience. Lift-and-Shift does nothing to help break legacy applications apart into more manageable slices.
Refactor Monoliths – Level 2
In contrast to Lift-and-Shift, Refactoring can help you restructure and enhance existing code and break apart large, legacy apps into a more modern, cloud-native architecture, all without changing external behavior. The benefits of this option include the enablement of event-driven patterns, loose coupling of major system components, better scalability, and new channels for connecting with third parties through microservices. The cons are it requires a new, more regimented development pipeline, a more complex infrastructure and dev environment, and may even require new delivery practices and team structures.
Containers – Level 3
Containers allow refactored applications to be hosted on virtually any infrastructure that supports containerized apps. This option offers all the benefits of Refactor Monoliths plus it means applications will always be deployed into known environments with no infrastructure surprises and can be fairly easily packaged and deployed to support stamping out instances for clients. Containers will make you cloud-provider-agnostic. They also come with all the cons of Refactor Monoliths, plus you’ll find you need highly skilled technical staff to create, manage, and maintain container structures.
An Important Aside – Database Migration
Similar to the application tier, here are some considerations that need to be taken into account with respect to your application database management system (DBMS). Weigh the pros and cons of these approaches with your team to help you find a clear path forward:
How To Avoid Busting Your App Mod Budget
Once you’ve picked a dev approach and have an app modernization plan, your next priority is staying on budget while executing it. This is where many organizations go wrong and over-invest in their app modernization, with unexpected expenses as they go. According to a study by Insight, an average 40% of IT budgets are spent on modernization initiatives. Blowing past that budget could seriously impact your other critical initiatives. Here are four guidelines Polaris uses to keep our projects on budget:
- Monitor cloud resources closely. The majority of organizations in Insight’s study reported that their public cloud costs were, on average, 62% higher than anticipated. Avoid this by monitoring for and eliminating unused/underused cloud resources and making sure resource costs are transparent to everyone. Leverage dynamic scaling of resources wherever possible.
- Use agile delivery practices. Start quickly, deliver often, and communicate continuously. Focus on the most valuable components and be radically transparent, especially about challenges.
- Have the right staff. Don’t reinvent the wheel; make sure your staff has access to knowledge on how to architect and design for whichever app mod selection you’ve made from above. Support them by bringing in experts to kick start projects and instill new skills. And don’t forget support staff, including QA, BA, UX, and DevOps.
- Practice efficient software development. Eliminate code duplication by having toolkits available for common tasks/scenarios, prioritize automated tests and create them alongside application code, and ensure developer and tester environments can be spooled up on-demand.
An external team of modernization experts can help you navigate the considerations and potential budget pitfalls above, or you could work to organize a team internally. We’ll dig deeper in an upcoming post on how to measure the success of your modernization team, from reductions in the cost to operate your software to improved delivery time for new features and changes.