Skip to Content

Avoiding Cloud Legacy

Capgemini
2020-03-26

Modern software development often adopts Agile methods to make development teams better equipped to handle change. To be successful in using Agile, the entire organization and not only the development teams have to adopt an agile mindset. What I often see when I work with clients is an eager to push new content and features to improve the customer experience or increase the number of customers – this should of course be the main objective for the entire organization.

It’s not all about the customer base and their experience. To deliver a digital service to the customers there is a need for at least some tech stuff. Over the last few years most of my clients have spent a lot of time and money on moving to the cloud using a mixed set of approaches. The first step might have been a lift-and-shift operation where on-prem solutions have been moved to the cloud, essentially replacing on-prem physical computers and virtual machines with virtual machines in the cloud – in AWS’ cloud referred to as EC2 instances.

Benefits of Living in the Cloud

Taking this step allowed the organization to enjoy a greater flexibility in designing their environments, reducing cost, and scaling in a more cost-efficient manner by only paying for actual usage and not investing in over capacity. Instead of placing an order for new hardware and waiting for days on the shipment and installation, developers were able to spin up a new server in seconds. This might not save money, but in the cloud it’s as easy to “sell off” the equipment instead of leaving it idling in the on-prem datacenter for future use. The cost for cloud instances is only there when equipment is in operation.

Evolution of Cloud

Since the introduction of EC2 compute instances in 2006 AWS there has happened quite a lot in terms of what you can do and how you can run things on AWS. In the early days it was all about EC2 instances and S3 storage. Now, 14 years later, and as of writing this AWS offers a whopping 212 services. You can still run EC2 instances and use S3 for storage, but this might no longer be the optimal cloud solution for you. A solution running on virtual machines today might be considered somewhat of a legacy solution and is not something that I come across when working with my clients. They have all started to adopt PaaS and SaaS to at least some extent, running IaaS adds a bit of complexity and requires a different skillset compared to running PaaS and SaaS. You can care less about IP ranges and networking and utilize resource groups to organize and compartmentalize services and functionality.

Cloud Legacy?

However, even though adopting some of the more recent services of AWS I’d say that some of the solutions that I work on are starting to feel outdated – cloud legacy solutions. The reason for this is not the lack of innovative services from the cloud providers. Rather it is a state of mind from the people delivering applications and services on cloud, they tend to stick with what is known and comfortable instead of questioning status quo.

Evolving with Cloud

In my role as a solutions architect I try to stay up-to-date on the latest offerings from the major cloud providers, perhaps with a slight bias towards AWS, just to be able to know how to leverage the power of cloud and reap the benefits of the complete service offering from the cloud vendors.

Some might argue that modernizing legacy is a cost, and yes there is an investment required. But if it is done in a structured and agile way it will reduce cost in the long run. As the development teams work on new features, or updates existing features, they should make sure to review status quo and spend some time on the available alternatives to implement a feature or re-factor a feature. There is certainly more than one available option that will simplify maintenance and future development. When working with cloud solutions it is important to keep up-to-date and keep your skillset evolving together with the evolution of new services offered by your cloud vendor. The same story applies to all bits and pieces of software development, you can’t stand still at one point in time with your solution. Being stationary will eventually cause a pile of technical debt to crawl up on you.

Today the cloud is not just virtual machines, there are plenty of PaaS services out there that through configuration or sometimes even without any configuration can cut away large chunks of code that no longer needs to be tested, documented and maintained. Your cloud vendor provides the functionality for you – tested, documented and ready to use.

Develop Your Software by Developing Your Skills

In my daily work I often come across developers that are masters in one programming language, this is a great asset. However, in agile organizations of today we often see a need to be T-shaped not only to be able to help your teammates out when they are under pressure but also to be able to detect new enablers on your radar that will help you deliver what is considered best practice. If you halt your skill development and stick to what you know, your knowledge will soon be outdated. Imagine if you had sticked to using physical hardware instead of adopting virtual machines. I don’t exclude that there are solutions that is best fit to run on physical hardware, but with the majority of solutions I see in my line of work there is a need to scale both up and down over time while minimizing downtime.

The biggest hurdle to overcome is most often the lack of skills in the development team – they don’t know what services to use and how to use them. Developers might be lazy and hesitant to adopt new cloud services due to a skills gap, but most of them enjoy learning new stuff – not to forget it’s warm and comfy in your comfort zone.

Agility Required

As the team skills evolves over time, they find new solutions to old problems. Essentially, they become aware of how they could have written that piece of code from last sprint in a different and more efficient way. In some organizations they are allowed to immediately go back and re-factor that building block or at least create a work item in the backlog to be prioritized for later. This continuous improvement is what will enable a solution to adhere to what is the current best practice over time and stay away from maintaining a legacy solution.

Part of this is knowing what, when and how to leverage the service offerings from your cloud vendor. Everyone needs to adopt an agile mindset and the best way to succeed is to realize the fact that in an ever-changing environment sticking with what you know today will be outdated tomorrow.

Leverage Cloud Services to Reduce Maintenance

Training and knowledge sharing should be a vital part of everyone’s personal development plan. Allowing time and space to adapt your solution to fit better into and utilize the service offerings of the cloud today and tomorrow will save money in the long run by reducing the time spent on maintenance. As the cloud vendors increase the number of services in their offerings there will more opportunities to replace application code with services and configurations requiring less maintenance.

Less time and money on maintenance means more of your budget can be invested in the most important part – delivering a better user experience today and tomorrow.

henrik soderqvist

Published by: Henrik Soderqvist
Cloud Solution architect

With 15+ years of experience, Henrik is passionate about the latest technologies and he leverages his experiences to provide innovative and cost-effective IT solutions to his clients. Henrik is certified on the professional level as AWS Solutions Architect. In co-operation with AWS he delivers Well-Architected Reviews to aid clients in adopting best-practice for their cloud workloads. He enjoys building and coaching technology teams to bring new products and services to the market. His ability to understand both application software and hardware has proven fruitful when connecting physical products in IoT solutions. He daily navigates complex IT environments and never hesitates to take on challenging tasks. His deep technical knowledge and eager to explore new technologies strengthens his role as an architect when being able to give pointers to more information and hands-on examples directly to guide the development teams in their daily work.