Cloud Migration and DevOps Transformation

Challenges:

1. Cloud Migration Deadline: The client had set a critical deadline for the cloud migration project, and failure to meet it would result in significant operational costs. The pressure was on to ensure a seamless transition to AWS.

2. AWS Oracle RDS licensing issues: At the time of this migration project, AWS Oracle RDS licensing restricted the client to smaller instances of RDS.  These RDS instances were not large enough to support the full client base that the previous hardware was able to support.

3. Infrastructure as Code (IAC) Adoption: The organization had not previously embraced Infrastructure as Code practices, making it essential to introduce IAC tools for efficient infrastructure management in the cloud environment.

4. Deployment Automation: The client aimed to improve deployment processes and reduce downtime during deployments. They sought to implement blue/green deployments for their applications.

5. Local Development Bottlenecks: The lack of a local development environment hindered the development team's efficiency and ability to test code changes effectively.

Solutions:

1. Successful Cloud Migration:

Curt led the cloud migration project from start to finish, ensuring all systems and applications were migrated to AWS within the set deadline. This involved meticulous planning, coordination with various teams, and rigorous testing to mitigate risks.  Meeting the migration deadline and avoiding the auto renewal in the hosting contract meant a realized savings of several million dollars to the organization each year.

2. Introducing Application and Oracle DB sharding: At the time of this migration project, the client was not able to use the larger Oracle RDS instances offered by AWS.  In order to support the full user load, the client base had to be split into shards, multiple instances of the application and databases were deployed to AWS, clients were assigned to one of several new instances of the application, and a load balancer handled request routing to the correct shard.  This authentication layer was re-written to be shard aware, but the rest of the application needed very minimal updates to function properly.

3. Introduction of Terraform and Ansible:

Recognizing the need for Infrastructure as Code, Curt introduced Terraform as a key tool to create AWS infrastructure and Ansible to configure the VMs and deploy the application. This decision brought in several benefits, including version control, infrastructure consistency, and the ability to automate deployments.

4. Blue/Green Deployments:

Curt implemented blue/green deployments using a combination of Ansible, Python, and Boto 3. This approach allowed the client to deploy new features and bug fixes to the applications with minimal downtime and rollback capabilities, ensuring a high level of reliability during deployments.

5. Vagrant for Local Development:

To address the complexity in replicating the production infrastructure in a local development environment, Curt introduced Hashicorp Vagrant. This enabled developers to create and manage lightweight, reproducible development environments on their local machines. The same Ansible scripts that configured production EC2s we used to configure local Vagrant managed VMs.  This meant a local dev environment nearly perfectly matched what was running in production. This change improved the development team's productivity and made it possible to quickly and reliably reproduce issues locally.

Results:

Curt's contributions and leadership had a profound impact on the clients IT operations:

- On-time Cloud Migration: The client successfully migrated to AWS without any major disruptions, meeting the critical deadline and saving significant amounts of money.

- Improved Infrastructure Management: Terraform and Ansible allowed the client to manage their AWS infrastructure efficiently, leading to reduced manual errors and increased scalability.

- Efficient Deployments: Blue/green deployments improved the reliability of application updates, reducing downtime and minimizing the impact on users.

- Enhanced Development Productivity: Vagrant enabled local development, empowering developers to work more efficiently and collaborate effectively.

Conclusion:

Curt's expertise as a Platform Engineer and his strategic approach to the cloud migration and DevOps transformation project played a pivotal role in Client Healthcare Staffing's success. The client not only achieved its immediate goal of migrating to AWS but also established a foundation for efficient, automated infrastructure management and deployment practices, ultimately enhancing its ability to deliver high-quality healthcare staffing solutions. Curt's contributions exemplify the value of experienced consultants in driving critical technology initiatives.