Copying and pasting code from one Windows folder to another as a deployment method can cause downtime. Jemma Hussein Allen presented how they automated their deployments and the benefits that they got from it at QCon London.
The main challenges with manual deployments of application and infrastructure code were due to environmental inconsistencies that happened due to a range of factors, of which the main one was aligning code deployment with deployments of dependent resources such as databases, Hussein Allen said. Before options such as blue/green deployment became available, changes that were not backward compatible meant brief periods where the database schema and code were out of sync and caused failed requests during deployments, she added.
Hussein Allen mentioned that general human error also plays its part, where certain file updates are missed, or incorrect versions are copied to the new environment. Human error can also be a big factor in testing if there are no mandated safety checks and local testing is the responsibility of individual developers:
Process automation helps to remove the human error component, and with intelligent deployment mechanisms, checks such as file share latency can be checked before deployments to ensure downtime isn’t an issue.
Manual deployment involving file shares can pose significant challenges if the synchronization of file copies is not managed properly, as it may lead to incomplete deployments, according to Hussein Allen. She recommended that updates to dependent resources should be codified and synchronized to ensure that deployments are executed in the correct sequence.
In modern contexts, deployment automation and blue/green deployment strategies allow for new versions to be deployed and rigorously tested in a live production environment before release to the general user base.
The initial stage of automating deployments involved meticulously documenting every step of the process, Hussein Allen explained. Key factors to consider included whether the steps were manual or automated, any dependencies on other resources, and necessary access configurations, permissions, or secrets required for implementation. This detailed documentation provided a comprehensive view of the existing deployment process and identified any steps that would require significant effort to automate.
With a solid understanding of the deployment procedures, the team then explored existing tools to evaluate their appropriateness. They also considered the deployment tools currently used within their organization to determine their suitability, emphasizing the value of leveraging experience with familiar tools.
Unfortunately, none of the existing tools were suitable for this type of workload, so we carried out a wider search to assess the suitability of other tools, taking into account support for the workload type and how they integrated with the existing company tooling.
Once the assessment stage was complete, they started to implement a proof of concept in the development environment.
We started with a small part of the application, and once we had successfully set things up in development for a specific application segment, we moved that deployment process to the staging environment.
As staging had slightly more policy constraints than development, testing in this environment was important, Hussein Allen mentioned.
After successfully completing the initial testing phase, the team evaluated how the developed solution could be expanded across different application areas and environments with minimal interruption.
Automating deployment processes leads to faster and more efficient releases, particularly in collaborative settings, according to Hussein Allen. She emphasized that having centralized logs and tracking tools for deployments enhances visibility for all involved teams.
Hussein Allen also highlighted that by standardizing deployment procedures, teams can better understand and navigate the standardized methods for app testing and deployment. The standard approach, described by the CNCF as a “golden path”, involves using “Templated compositions of well-integrated code and capabilities for rapid project development“. She noted how adopting such predetermined paths has gained traction among sizeable entities as they streamline the integration of company-specific practices and tools among developers:
The utilization of carefully designed templates significantly bolsters the ability of development teams to swiftly incorporate organization-specific tools and logic into their applications, Hussein Allen observed.
Automation will almost always save time and effort in the long run, even if it takes slightly more effort initially, Hussein Allen concluded.
Welcome to DediRock, your trusted partner in high-performance hosting solutions. At DediRock, we specialize in providing dedicated servers, VPS hosting, and cloud services tailored to meet the unique needs of businesses and individuals alike. Our mission is to deliver reliable, scalable, and secure hosting solutions that empower our clients to achieve their digital goals. With a commitment to exceptional customer support, cutting-edge technology, and robust infrastructure, DediRock stands out as a leader in the hosting industry. Join us and experience the difference that dedicated service and unwavering reliability can make for your online presence. Launch our website.