September 26, 2023

Deploying on a Friday: To Risk or Not to Risk?

Explore the age-old debate of deploying code on Fridays in the world of software development. Discover the origins of "No Deploy Fridays" and how the landscape has evolved with CI/CD practices. Learn about building confidence through testing, the importance of a robust deployment process, and the benefits of frequent deployments. Find best practices for minimizing risks and striking a balance between risk and efficiency in software releases.

Corina Craescu

Corina

Deploying on a Friday: To Risk or Not to Risk?

Image source: Pixabay

Deploying code to production is a crucial step in the software development lifecycle. It’s the moment when new features are released, bugs are fixed, and improvements become available to users.

However, there has always been a debate about whether it is wise to deploy on a Friday. The fear of ruining the weekend or forcing team members to work overtime has led to the tradition of “No Deploy Fridays.”

Along with the emergence of Continuous Integration and Continuous Deployment (CI/CD) practices, the landscape has shifted, and the pros and cons of Friday deployments need to be reevaluated.

The Origins of “No Deploy Fridays”

Did you know that Amazon Web Services (AWS) once faced a major outage due to a Friday deployment?

In 2017, a typo in a command during a routine debugging led to an hours-long AWS outage, impacting a significant portion of the internet.

This incident further fueled the reluctance toward Friday deployments.

The notion of “No Deploy Fridays” stems from the fear of releasing faulty code and the desire to protect weekends from potential disasters.

It was seen as a way to ensure that if something went wrong, there would be ample time to address the issue without disrupting the team’s personal time.

Countless horror stories of failed Friday deployments have circulated, further cementing the belief that Fridays and software releases don’t mix well.

The Rise of CI/CD and Changing Perspectives

According to a survey by DORA (DevOps Research and Assessment),

organizations that implement CI/CD practices experience a 7 times higher change success rate and can deploy code 46 times more frequently than their low-performing counterparts.

This statistic highlights the transformative power of CI/CD in making deployments more reliable.

The emergence of CI/CD practices has challenged the traditional aversion to Friday deployments. With automated testing, thorough code reviews, and staging environments that mirror production, the risk of introducing critical bugs has significantly decreased.

CI/CD pipelines allow for frequent and efficient deployments, enabling teams to release code as soon as it’s ready, regardless of the day of the week.

Building Confidence through Testing

As per the Consortium for Information and Software Quality, inadequate software quality imposes an annual financial burden of over $2.08 trillion on US companies. These expenses encompass operational disruptions, project failures, and software defects within legacy systems. (Source: Jul 9, 2023)

Effective testing, including automated and exploratory testing, has become essential in preventing such costly failures and is a critical aspect of ensuring the feasibility of Friday deployments.

One of the key factors in determining the feasibility of Friday deployments is the level of confidence in the application’s stability.

Implementing a stable and comprehensive automated test suite is crucial in mitigating risks. By focusing on both unit tests and end-to-end tests, teams can catch potential issues early in the development process.

Additionally, incorporating manual exploratory testing provides a valuable opportunity to uncover bugs that automated tests might miss.

The Importance of a Robust Deployment Process

In 2023, the average expense associated with a data breach in the United States stood at 9.48 million U.S. dollars, representing a slight increase from the previous year’s 9.44 million U.S. dollars. On a global scale, the average cost per data breach in 2023 amounted to 4.45 million U.S. dollars. (Source: Sep 4, 2023)

A robust deployment process, including a solid rollback strategy, is crucial in avoiding potential security breaches and the associated financial losses.

A well-defined and automated build and deploy process is essential for successful Friday deployments.

By streamlining the process and eliminating manual steps, organizations can reduce the chances of human error and ensure consistency.

Furthermore, having a rollback strategy in place is crucial in case a deployment goes awry. By planning for the worst-case scenario, teams can respond swiftly and minimize any potential downtime.

The Benefits of Frequent Deployments

High-performing IT organizations that practice frequent deployments experience 60 times fewer failures and can recover from failures 168 times faster than their low-performing counterparts.

This underscores how frequent deployments can enhance both software quality and resilience.

Embracing frequent deployments, including on Fridays, offers numerous benefits. Firstly, it allows teams to deliver new features and bug fixes to users faster, enhancing the overall user experience.

Additionally, smaller, more focused deployments make it easier to identify and resolve issues, as changes are isolated and easier to track.

This approach also promotes a culture of continuous improvement and innovation, as teams are constantly iterating and learning from user feedback.

Mitigating Risks: Best Practices for Friday Deployments

GitHub, a platform that relies on continuous deployment, deploys to production on average 80 times a day.

While not all organizations need to deploy this frequently, it shows that even daily deployments can be accomplished successfully with the right practices, reducing the fear associated with Friday deployments.

While Friday deployments can be viable, it’s essential to approach them strategically to minimize risks. Here are some best practices to consider:

  1. Release early, release often (also known as ship early, ship often, or time-based releases, and sometimes abbreviated RERO): Embracing the concept of “ship fast, ship often” can alleviate concerns associated with Friday deployments. By breaking down changes into smaller, manageable pieces, teams can release code more frequently. This approach reduces the scope of potential issues and enables rapid iteration and improvement. For extra details check out our article “Ship Early and Ship Often: Accelerate Your Team’s Velocity”.

  2. Optimize Your Deployment Timing: Deploying earlier in the day gives teams ample time to monitor the release and address any issues promptly. Avoiding last-minute deployments not only reduces stress but also ensures that the team has sufficient time to react and resolve any unexpected problems.

  3. Emphasize Team Coordination and Interaction: Effective communication and collaboration among team members are crucial for successful Friday deployments. By involving all stakeholders early on, teams can align expectations, address concerns, and ensure a smooth release process. Regular updates and transparent communication throughout the deployment can help build trust and reduce anxiety.

  4. Stay Vigilant and Gather Insights: After deploying on a Friday, it’s essential to closely monitor the application and collect feedback from users. By leveraging observability tools and user analytics, teams can proactively identify and address any issues that arise. Monitoring the system’s performance, error rates, and user feedback allows for timely intervention and continuous improvement.

Striking a Balance between Risk and Efficiency

In the end, the consensus seems to be that while Friday deployments are not inherently bad, they should be approached with caution and depend on factors like the company’s operational model, risk tolerance, and the robustness of the deployment processes in place.

Ultimately, the key is to strike a balance between delivering new features and maintaining system stability while minimizing disruptions for both customers and team members.

The debate over whether to deploy on a Friday continues to divide the software development community. While the fear of weekend disruptions is valid, the rise of CI/CD practices has challenged the notion of avoiding Friday deployments altogether.

By implementing robust testing processes, streamlining deployment workflows, and embracing frequent releases, teams can strike a balance between risk and efficiency.

Ultimately, the decision to deploy on a Friday should be based on the organization’s level of confidence in its application, the maturity of its processes, and the commitment to continuous improvement.

With careful planning, effective communication, and a focus on quality, Friday deployments can become a routine part of software development, ensuring timely delivery and customer satisfaction.

Follow us