The Pragmatic Engineer

CI/CD with Robert Erez

· Summarized

Share this episode
Anyone with this link can open it.
Share Link
Start at 0:00

Key takeaways

  • Most teams aim to ship software confidently by rolling features forward rather than back, especially with schema changes.
  • Kubernetes has become the dominant platform both in cloud and on-premise due to its declarative, portable nature, and versatility.
  • GitOps is more about declarative infrastructure management and continuous reconciliation rather than strictly about Git repositories.
  • Organizational scaling improves through platform teams that define standards and enable self-service, preventing operational silos.
  • AI is transforming CI/CD by increasing code and test automation, but managing risks like schema changes remains crucial.
  • Progressive delivery practices such as canary deployments and feature toggles help mitigate risks and enable safer, faster releases.
  • In systems with data and state, roll-forwards with feature flags are often safer and more practical than traditional rollbacks.
  • Development environments are shifting toward ephemeral, cloud-based setups, but complexity increases with multi-service, stateful systems.
  • Many organizations still rely on self-hosted, on-premise CI/CD owing to control, compliance, or legacy reasons, impacting how tools evolve.

Summary

The Evolution of CI/CD and Deployment Practices

Rob Erez shares insights from his extensive experience in CI/CD, starting from his early days at Skype where weekly deployments and canary testing with New Zealand as a canary region were common. He discusses the progression to modern practices, emphasizing the importance of minimizing risks and using feature toggles to control deployments. Rob highlights that most teams aim to ship software confidently, often by rolling features forward rather than back, especially when dealing with database schema changes.

Kubernetes and the Rise of Kubernetes on-Premise and Multi-Cloud

Rob explains why Kubernetes has become dominant in cloud and on-prem environments due to its declarative configuration, portability, and control. He presents real-world examples of on-prem Kubernetes deployments in various industries, including financial institutions and even on research vessels. The discussion touches on how Kubernetes interacts with infrastructure tools like Terraform and its use outside of cloud providers, emphasizing its role in enabling organizations to manage complex, multi-environment deployments.

GitOps and Infrastructure as Code

The conversation explores GitOps, its principles, and how it emphasizes declaring infrastructure state in Git, which is then automatically reconciled with actual systems. Rob points out misconceptions, such as the idea that GitOps is solely about Git repositories, and clarifies that its pillars include declarative configuration, immutability, pull-based approaches, and continuous reconciliation. The discussion highlights that many teams prefer pragmatic solutions over dogmatic adherence to Git, especially for secrets and imperatives.

Platform Teams and Organizational Scaling in Deployment Pipelines

Rob discusses the emergence of platform teams as a way to manage the complexity of deployment processes in large organizations. These teams define standards, provide self-service tools, and offload operational burdens from application teams. The trend is driven by the need to scale DevOps practices without fragmenting deployment strategies or creating operational silos, aiming to strike a balance between control and agility.

The Impact of AI on CI/CD and Deployment Strategies

Rob addresses how AI is transforming software development and deployment by increasing code output and testing automation. He points out that faster pipelines may become less critical if AI handles code generation and validation, but risk management—particularly with AI-generated code—remains vital. The conversation covers the use of feature toggles, progressive delivery, and how AI might enable more granular, safer deployments at scale.

Progressive Delivery: Strategies and Best Practices

The episode delves into progressive delivery as the next step after continuous deployment. Techniques like Canary deployments, blue-green, and feature toggles are explained, highlighting their roles in de-risking releases. Rob emphasizes that feature toggles offer precise control and quick rollbacks, especially useful when dealing with application logic changes and schema migrations. The importance of designing for incremental releases and managing complex dependencies is underscored.

Strategies for Rollbacks and Roll-forwards in Large-Scale Systems

Rob emphasizes the concepts of roll-forward rather than relying on rollbacks, especially when dealing with data and schema changes. He discusses the complexities of systems with state, the limitations of traditional rollback mechanisms, and recommends fast, controlled fixes—like hotfixes—to address issues quickly. The importance of feature flags for safe decommissioning or disabling features with minimal risk is also highlighted.

Evolution of Development Environments and Cloud Development Environments (CDEs)

The discussion covers how development environments are evolving from local setups to ephemeral, cloud-based, or feature-branch environments. Rob observes that while CDEs and preview environments promise quick feedback, their complexity increases with multi-service architectures and stateful systems. The trend aims to speed up iteration, integration, and collaboration by providing on-demand, isolated environments for development and testing.

Maintaining On-Prem and Self-Hosted CI/CD Systems in a Cloud-Dominated World

Rob reflects on how many organizations, especially regulated ones like banks, prefer or need to maintain on-prem and self-hosted CI/CD solutions due to control, compliance, or legacy reasons. He notes that these systems tend to update slowly—sometimes years behind—yet remain critical for these clients. The ongoing support for such environments influences the design and features of tools like Octopus Deploy.

Getting Started with Progressive Delivery and Key Takeaways

Rob advises engineers interested in adopting progressive delivery to start small—such as using feature toggles—before gradually expanding. He stresses the importance of hygiene, monitoring, and fast fixes. Key lessons include the utility of feature flags for safer, more controlled releases, and understanding that most teams value reliability over raw speed. Rob also recommends books like 'The Phoenix Project' for process understanding and emphasizes that pragmatic, flexible approaches often outperform dogmatic methodologies.

Sponsors

  • Antithesis · verify your system's correctness without human review or traditional integration tests and avoid bugs or outages.
  • WorkOS · brings enterprise authentication features like SSO, SCIM, R back, built to handle real load and compliance requirements, enabling enterprise authentication without infrastructure projects.
  • TurboPuffer · a vector and full-text search engine built on object storage, fast, cheap, and scalable, supporting AI products with fast retrieval over billions of documents.

Show notes

Brought to You By:

• Antithesis – verify your system’s correctness without human review or traditional integration tests – and avoid bugs or outages.

• WorkOS – everything you need to make your app enterprise ready.

• turbopuffer – a vector and full-text search engine built on object storage. It’s fast, cheap, and extremely scalable.

—

Robert Erez is a principal engineer at Octopus Deploy, and a longtime expert in CI/CD, deployment systems, and software delivery. Rob and I were also once colleagues on the Skype web team, working on large-scale deployments and release processes.

In this episode of The Pragmatic Engineer, I sit down with Rob to discuss how teams deploy software safely and efficiently at scale. We cover Kubernetes, GitOps, platform engineering, progressive delivery, feature flags, cloud development environments, and the growing role of AI in CI/CD workflows. We also get into the tradeoffs in different deployment approaches, why self-hosted software still matters for some organizations, and the recent evolution of software delivery practices.

—

Timestamps

00:00 Intro

02:09 Canary deployments at Skype

05:01 Joining at Octopus Deploy

06:15 Continuous deployment

10:26 Why Kubernetes won

15:51 Kubernetes on-prem

18:50 How GitOps works

25:00 The uses and limitations of GitOps

31:04 The rise of platform teams

35:51 How AI is changing CI/CD

39:49 Progressive delivery explained

47:31 Rollbacks and roll-forwards

50:14 Feature flags

54:32 How development environments are evolving

57:40 Cloud development environments (CDEs)

1:03:45 Self-hosting CI/CD

1:09:25 Getting started with progressive delivery

1:11:15 Book recommendations

—

The Pragmatic Engineer deepdives relevant for this episode:

• Kubernetes and retiring at the top with Kelsey Hightower

• The past and future of modern backend practices

• Microsoft is dogfooding AI dev tools’ future

• How Kubernetes is built with Kat Cosgrove

• How Linux is builtwith Greg KH

—

Production and marketing by ⁠⁠⁠⁠⁠⁠⁠⁠https://penname.co/⁠⁠⁠⁠⁠⁠⁠⁠. For inquiries about sponsoring the podcast, email podcast@pragmaticengineer.com.



Get full access to The Pragmatic Engineer at newsletter.pragmaticengineer.com/subscribe

Follow this show on AudioBrevity and new episodes get summarized for you. Create a free account

Couldn't load the audio. A blocker may be stopping the show's tracking links. Open the file