DevOps Automation: Lessons from a PaaS Migration Case Study
Tags: devops, kubernetes, casestudy, automation
Published: 2022-04-18 14:19:10

It’s a great time to be part of a software development team. With resources supporting every stage of the development lifecycle - design, development, testing, deployment and hosting - modern-day software development teams are spoilt for choice. But when it comes to accessing this buffet of resources, teams need more. On-demand access without huge commitments to on-site infrastructure demands an additional layer of technical expertise - a PaaS (Platform-as-a-Service). 

PaaS is an operational cloud-based model where a vendor (such as Convox or Heroku) supplies the resources required to build and deploy user-level applications and tools. With this, teams can execute the entire development lifecycle directly from the cloud, with no need to invest in, or maintain demanding on-premise infrastructure. Each PaaS is unique, with features uniquely suited to match every phase of a development teams’ growth. This means that a PaaS solution ideal at one phase of a teams’ growth might lose its relevance at another stage of that teams’ future growth, requiring teams to adapt their PaaS choices as they grow. 

This case study lifts the hood on one such development team that has had to adapt its PaaS choices with time. We will discuss the teams’ journey towards automating its infrastructure and deployment process through a series of migrations - from [Digital Ocean](https://www.digitalocean.com/) to [Heroku](https://www.heroku.com/), to [Convox](https://convox.com/). This rare insider’s perspective mirrors the processes, problems and solutions faced by similar teams along the journey, drawing lessons and teachable moments for software development team managers.

## Case Study Objectives
This case study closely examines the primary drivers and pain points that led to Codelitt's digital migration from Heroku to Convox. We will further discuss the extent to which Convox’s infrastructure was suitably matched to Codelitt’s needs. Through this, software development team managers can understand how product development teams can benefit from the innovative and advanced solutions that Convox offers. 

## The Client
[Codelitt](https://codelitt.com/) is a software development agency that helps its clientele strategize, engineer and design custom software and solutions for various use cases -  automation, web & mobile apps, IoT, machine learning, and more. The agency relies on a globally distributed team of 30 developers to offer its services, with applications initially hosted on AWS and Digital Ocean.

## The Background
In the early days, Codelitts’ infrastructure and deployment process consisted of simply visiting the server and running a docker run command. As the teams’ product portfolio grew, so did the need to automate the deployment process. The team attempted to address this by running multiple automation scripts - a process that quickly spiraled into full-blown Linux server tutorials for junior developers. Realizing how unsustainable this approach was, the team decided to switch to Heroku.

## The Problem
At first, Heroku appeared to solve the automation problem. With no advanced knowledge requirements, junior developers could rely on the platform to deploy applications quickly. The initial costs seemed reasonable, and it did what it said on the can.

Now that Codelitt had its applications split between Heroku, Digital Ocean, and AWS, the team soon found itself in a complex, multi-cloud hybrid situation. With time, Codelitt was exposed to several flaws in Heroku's services - which we will discuss and dissect in detail below: 


![heroku_problems.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1649682463581/5tpC0tpu6.png)

## Trust Issues - Server Ownership (or lack thereof) 
One of the biggest problems Codelitt faced with Heroku was the inability to implement major changes or migrate from servers in use. As Heroku offered very limited server ownership options, Codelitt’s developers could not move software, applications, operations, etc to other platforms - so they were locked into Heroku's infrastructure. 

To change servers mid-project, developers were forced to create new environments from scratch, creating trust issues. Heroku’s privacy policies meant that Codelitt had to ask its clients to sign multiple contracts in order to use the services. In addition to this, Heroku was unsuitable for projects with high data sensitivity.

## Hidden Costs
For small projects, Heroku's initial $7 per-month cost was extremely appealing and  competitive. However, as projects grew in maturity and demanded more improvements, the cost of using each new resource jumped to $25. As the company had begun to scale in terms of the number of projects (and subsequently, the number of improvements needed), these costs soon became untenable. 

Furthermore, Codelitt found itself deploying 3 servers to every project. Because Heroku charged different rates for different stages of the product development lifecycle, the team had to create separate applications as the same server could not be used throughout every stage of the SDLC. This created the need to dedicate a developer to the task of monitoring and shutting down unused resources, as a cost-saving measure.

[Want a PaaS with an affordable, transparent cost structure? Try Convox for free.](https://console.convox.com/signup)

## Time-consuming Maintenance 
Because of the management and pricing structure of Heroku's infrastructure, Codelitt’s valuable developer resources were spent on the avoidable, time-consuming task of monitoring Heroku's database - all to keep costs to a minimum. 

Typically, developers would create various racks (segregated environments that allowed developers to deploy multiple applications simultaneously) for production, QA, staging, etc. So each rack represented a unit of compute - [the Kubernetes cluster](https://convox.com/blog/how-to-install-kubernetes-the-easy-way/), the docker deployment environment, the certificates, load balancers, networking, etc. Each application was expected to scale according to the coding of the rack, with an option for manual scaling should the need arise. Unfortunately, Heroku's limited digital infrastructure meant that developers spent valuable time building environments from  scratch whenever there was a need to change the servers. This practice consumed significant time resources and heavily impacted on Codelitt's rate of scale. 

## No Choice but Cross-Cloud 
Codelitt’s diverse operations created a reliance on multi-cloud infrastructure - Heroku,  DigitalOcean, and AWS. This hybrid operational environment proved stressful, time-consuming, and expensive as switching platforms led to interrupted workflows for developers. Codelitt’s developers wanted complete ownership of their business processes and operations by completely migrating to DigitalOcean - a dead end, as Heroku did not support the ownership and transfer of servers.

## The Solution: Convox
Convox is a cloud-agnostic PaaS that developers can use to deliver their code more efficiently. 

For Codelitt, the choice to migrate to Convox was driven by the agency’s unique needs. The preferred solution was a PaaS solution that addressed the team’s unique pain points without requiring in-house management of AWS resources. 

In its search for a viable solution to Heroku, Codelitt paid attention to the automation capabilities of shortlisted server management options. The team also wanted a solution that allowed them to maintain their standard processes of using automated deployment pipelines through GitHub actions for code updates and deployments. And Convox was a perfect match for this - supporting Codelitt's existing processes with minimal disruption.

Convox provided the perfect solution with a transition that led to an almost immediate reduction in costs, reusable resources, time savings in resource monitoring, server ownership, and improved resource management - and no dedicated DevOps staffing resource. 

Overall, the migration to Convox helped Codelitt to efficiently deploy clients’ solutions with a globally distributed team of 30 developers, 10 separate development projects, and 50 different services - all with one engineer who spent only a few hours monthly on DevOps. 

But what did this migration look like on an operational level? Let’s delve into the practical impact of the migration exercise on Codelitt’s operational efficiency.


![convox_kubernetes_management.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1649682786208/KmlTaBPZS.png)


## Cost Transparency & Optimization 
In the months following the migration, Codelitt reported approximately 50% reduction in infrastructure costs from the on-demand server management that Convox offered. 

Specifically, these savings were realized from paying for only server usage (rather than for every new application), with the majority of servers and racks hosted on Digital Ocean. Codelitts’ newly-found homogeneity allowed for granular control over new racks with the ability to define the cost of each new node through Convox’s automatic pricing that applied only when necessary.  

The cost reduction from dev and staging were estimated at 60 - 75% as a result of all resources being used and reused on-demand, without the need to turn applications on and off.  

## Ownership & Control 
Because Covox is optimized for complete control over assets, Codelitt could pick and choose which cloud service best suited their needs at any given time.  As such, the team could create the perfect hybrid solution that effectively combined the services of DigitalOcean and AWS. 

Applications could be transferred across infrastructures without the need to create environments from scratch, ultimately saving time and helping to ship solutions much faster. No problems were encountered in the 4 months following the transition, and all Codelitt’s digital products have enjoyed 100% uptime, which in turn boosted their clients’ satisfaction levels. 

## Automation and Maintenance Capabilities
The transition left Codelitt needing very little in terms of a maintenance routine, thanks to the automation that Convox’s infrastructure offered. Codelitt's developers only had to create racks according to their requirements, develop products, and deploy when ready. 


## Flexibility & Accessibility
One of Codelitt's main pre-migration requirements was a solution that allowed sufficient flexibility in its operations for the distributed team to develop digital products collaboratively. 

These requirements were met by Convox’s flexible infrastructure that granted Codelitt's developers complete freedom to access various services providers from a single-source platform. With easier access to the hybrid cloud, Codelitt’s developers enjoyed near-seamless access to their digital products whether they needed to access DigitalOcean, AWS, or others. 

Thanks to Convox’s advanced level of automation, Codelitt’s developers could change data collection sources as required by simply adding a Docker file before deployment. A previously time-consuming task for the team now only took one developer 30 minutes to 2 hours to accomplish… despite having limited experience creating Docker files. 


![convox_feedback.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1649682839377/sgPuC7_6Z.png)

## Key Takeaways 

- Asset ownership impacts on efficiency: This migration exercise allowed for ownership and control of server assets and consequently, business operations, processes, and digital products. With complete control over assets, teams face fewer operational restrictions and can be better equipped to meet their clients’ objectives. 

- Upfront cost transparency improves long-term ROI: The hidden costs that service providers impose on users can limit scaling potential. When shortlisting possible solutions, team managers should factor in not just the immediate cost of services provided, but also how these costs are likely to change as their teams scale. 

- A well-designed & optimized cloud structure improves efficiency: Poorly optimized platforms lead to interruptions in the workflow, and ultimately impact negatively on the operations and processes of teams. Team managers should document existing processes and consider how the infrastructure of proposed solutions are likely to fit in with or improve existing processes. 

- Automation capabilities support team performance: Software development companies heavily depend on their service providers to provide well-integrated automation features that enable teams to execute their processes seamlessly. By choosing solutions with high automation capabilities, team managers can ultimately drive their teams to achieve results faster. 

- Access to flexible operations: Access limitations and ‘siloed’ applications can lead to an overall loss in productivity, inefficient use of time, and ultimately, reduced earnings - especially for distributed teams. The best PaaS for teams should offer users complete flexibility over operations and compatibility with their existing service providers without the hassle of changing their workflows.
 
Convox has improved the efficiency of software development companies around the globe by helping them spend as little time as possible on mundane tasks while focusing on more strategic tasks. When considering PaaS solutions, it is imperative that team managers do due diligence to ensure that their chosen solutions don’t just address the short-term needs of the team but also fulfill longer-term goals and deliver an overall positive ROI. If you want to see how Convox fits into your teams’ needs, [register for a free trial here](https://console.convox.com/signup).