Articles

9 Essential Lessons for Modernization of your Legacy Application

9 Essential learnings for Modernization of your legacy Application
Surya Challa - Founder Cloud Accel
Surya Challa

Feb 11, 2022

In 2021, we had the pleasure of being part of the modernization of a multi-country enterprise system that handles billions of dollars in revenue. It was a once-a-decade initiative that touched the entire organization across departments, software stacks, development teams, etc. We led the cloud architecture for backend services. As evidenced from the increased morale across the organization and other Key Performance Indicators (e.g., increased user engagement, feature velocity, greater agility, system availability, etc.), the initiative was an immense success. Below are nine things we learned that played crucial roles in our enterprise modernization and that will be of tremendous value for those embarking on their own modernizations of legacy systems.

9 Essential Lessons for Modernization of your legacy Application

1. Event Driven, Distributed, Microservices

Event Driven Distributed Microservices

If you must pick only one thing you can change, event-driven refactoring delivers the greatest impact. A well-designed event-driven distributed microservices architecture will take your system ahead by orders of magnitude. Legacy systems get bogged down because of technical debt and associated band-aid processes. You will untie multiple knots in one go, from visibility, control to reliability, scalability, agility, and productivity. It is not easy by any means, but well worth the effort.

2. Which Cloud?

Which Cloud

It does not matter! All significant clouds (AWS, Azure, or GCP) have sufficient capabilities in compute, storage, networking, and other essential services required for most scenarios. Success comes from how well the necessary cloud services are configured for your specific case. It boils down to the expertise you can assemble, so choose a cloud based on your team’s expertise.

3. Serverless or not

Serverless or not

Should you be setting up a self-hosted K8s/Kafka/Mongo/Mysql/Redis? Or are you better off using managed services from a cloud provider? Modernization involves getting hundreds of decisions right, many right off the bat. Managed services reduce operational overhead significantly, freeing up bandwidth to focus on areas without such optionsManaged services may trigger cost or vendor lock-in concerns, but you can always switch to self-hosted services later.

At the application level, AWS Lambda offers extraordinary operational simplicity. AWS Lambda/Azure functions/GCP CloudRun frees you from having to provision-maintain compute, configure scaling, etc. We did face issues with a lambda cold start that hindered latencies. We resolved it by moving to containers to achieve predictable latencies.

4. Databases

Databases

These days db heaven has come to the Earth. With the aid of document and columnar databases, serverless dbs (such as AWS Athena or Azure Datalake), inverted index search engines, fault-tolerant storage, and unlimited capacity, it is now easy as pie to achieve millisecond latencies at scale. Picking suitable databases for various use cases can still be a bit of challenge. But once the right choices are made, we do not have to sweat to scale to insane levels that were once the exclusive domain of Fortune 100 companies.

5. Api Gateways

ApiGateways

Api Gateways decouple backend services from their clients, and they provide API security, rate limitation, analytics, and more. You get powerful controls out of the box from cloud providers (such as AWS Api Gateway, GCP Apigee, or Azure API Management). Now backend services can focus solely on business functionality.

6. Logs, Monitoring Splunk/ElasticSearch

The first step in a successful cloud modernization is to weave visibility into the entire system. One facet of this involves gathering logs from all services, indexing them for searchability, and setting up alerts for conditions that warrant attention. The most popular tool for this today is Splunk, but others, including ElasticSearch, are also available. You will have mountains of logs from hundreds of services. When you are investigating a particular exception, or a word (error/fail), these beasts help you find that needle in the haystack in a breeze.

A second facet involves the collection of metrics and organizing them in a way to speed up homing in on failed components. APM tools such as AppDynamics and NewRelic are lifesavers. Alternatively, a poor man’s APM can be stitched together using out-of-box tools from cloud providers.

A third facet involves tracing calls through multiple layers of software stacks. Commercial APM tools have excellent features in this area too. Lower-cost options include those from cloud providers (e.g., AWS Xray) or open source (e.g., Zipkin).

7. Load testing

Load testing

A shiny new system that crashes under the weight of old traffic is a nightmare that you want to avoid at all costs. Load testing is your friend here. You might try to leave significant headroom at various layers. But with the increased number of layers in modern distributed systems, the only way to verify overall throughput is with a comprehensive load test. As the modernization works its way through multiple phases, rigorous load testing — right from pilot stages — helps avert awful surprises post-launch.

8. Process & Tools: Build, Release

8. Process & Tools: Build, Release

The impact of a well-understood build-release-and-deploy process will be as clear as our Florida sunshine. Ops without stable DevOps processes will end up in a tangled mess. If these processes are not simple, then team will be reluctant to deploy changes frequently. This problem can snowball, accumulating changes over longer periods, increasing the risk of deployments.

Azure DevOps has been delightful to use. But other open-source and commercial options are equally good. These tools have a significant impact on the speed and quality of the project.

9. Business buy-in

Business buy-in

The impact of a well-understood build-release-and-deploy process will be as clear as our Florida sunshine. Ops without stable DevOps processes will end up in a tangled mess. If these processes are not simple, then team will be reluctant to deploy changes frequently. This problem can snowball, accumulating changes over longer periods, increasing the risk of deployments.

Azure DevOps has been delightful to use. But other open-source and commercial options are equally good. These tools have a significant impact on the speed and quality of the project.

CONCLUSION

When complete, modernization brings greater vigor to organizations. It is beautiful to sit back and watch its impact. Multiple bottlenecks disappear across the organization. Modernization does propel your organization to next level within the industry, helping it stay ahead of the competition. Above lessons should help you with a glimpse of some of our eventful journey.

 

I am Surya Challa, Founder-CEO@CloudAccel. Our Managed Cloud Optimization Service, LeanCloud – Continuous Cloud Optimization platform has been reducing cloud costs by 30-65%. Want to learn more?

Download this article

PDF will be sent to your inbox

Scroll to Top