<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/shipyard-how-we-built-slack-s-next-generation-ec2-platform-gu06w8ca0" -->

---
title: Shipyard: How We Built Slack’s Next-Generation EC2 Platform
description: Slack's engineering team describes Shipyard, their next-generation EC2 platform built around immutable infrastructure principles. Rather than continuously...
canonical: https://daily.dev/posts/shipyard-how-we-built-slack-s-next-generation-ec2-platform-gu06w8ca0
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Shipyard: How We Built Slack’s Next-Generation EC2 Platform | daily.dev
og:description: Slack's engineering team describes Shipyard, their next-generation EC2 platform built around immutable infrastructure principles. Rather than continuously...
og:url: https://daily.dev/posts/shipyard-how-we-built-slack-s-next-generation-ec2-platform-gu06w8ca0
og:image: https://api.daily.dev/og/posts/gu06W8ca0.png
og:image:alt: Shipyard: How We Built Slack’s Next-Generation EC2 Platform
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Shipyard: How We Built Slack’s Next-Generation EC2 Platform

**[Slack engineering](https://daily.dev/sources/slack)** · 15 min read · 2 upvotes · 0 comments

## Summary

Slack's engineering team describes Shipyard, their next-generation EC2 platform built around immutable infrastructure principles. Rather than continuously updating long-lived instances with Chef, Shipyard treats EC2 instances as deployable artifacts using layered AMIs. A shared 'slack-zero' golden base image provides OS hardening, networking, monitoring, and security agents, while service teams build on top of it. AWS Image Builder replaces Packer for baking images, with EventBridge and Lambda triggering downstream pipelines automatically. Deployments use progressive rollouts via Gondola, their internal orchestrator, with metrics-based automated rollback. A component called The Reaper enforces instance lifecycle by replacing tainted or aged instances. An inventory system called Peekaboo provides real-time fleet visibility via AWS EventBridge, OpenSearch, and Lambda. The platform also includes Ship Quick, a developer testing workflow that validates cookbook changes on real infrastructure before merging. Secrets remain dynamic via Consul Template and Vault, making the system semi-immutable. Future work targets long-lived instances like data nodes and singleton services.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://slack.engineering/shipyard-how-we-built-slacks-next-generation-ec2-platform>

## Questions this post answers

### How does Slack manage immutable EC2 instances at scale without configuration drift?

Slack built a platform called Shipyard that treats EC2 instances as deployable artifacts rather than mutable machines. A shared base image called slack-zero, built with AWS Image Builder, provides hardened OS, networking, and monitoring components, and service teams layer their own AMIs on top. Instances are short-lived and rotated on a schedule by a component called the Reaper to limit drift and vulnerability exposure.

_See how teams weigh immutable image pipelines against long-running EC2 fleets on daily.dev._

### How do you handle secrets in an immutable EC2 infrastructure model?

Secrets are handled as an exception to immutability using Consul Template, which allows credentials and certificates to be rolled out dynamically from Vault without cycling the fleet. Packages and configuration remain fixed at bake time, making the system semi-immutable: stable at the code and configuration layer while sensitive runtime data can still refresh safely as needed.

_Developers designing secret-rotation strategies can track infrastructure patterns like this on daily.dev._

### Why did Slack switch from Packer to AWS Image Builder for building base machine images?

AWS Image Builder offers automatic AMI lifecycle cleanup, SSM parameter publishing so pipelines always reference the latest base image, event-driven automation via EventBridge and Lambda to trigger downstream rebuilds, and built-in validation testing before publishing an AMI, none of which the previous Packer-based workflow provided as natively.

_Engineers evaluating AMI build tooling can compare approaches like this on daily.dev._

## Similar posts on daily.dev

- [Slack Enhances Chef Infrastructure to Improve Safety and Reduce Blast Radius in Deployments](https://daily.dev/posts/slack-enhances-chef-infrastructure-to-improve-safety-and-reduce-blast-radius-in-deployments-bbqstolyp) · InfoQ · 0 upvotes · 0 comments
- [The Pipeline That Thinks: Building an AI-Powered DevSecOps Pipeline on AWS EKS](https://daily.dev/posts/the-pipeline-that-thinks-building-an-ai-powered-devsecops-pipeline-on-aws-eks-kztltafof) · Cloud Native Now · 0 upvotes · 0 comments
- [How Company 3 Streamlines Studio Image Management with EC2 Image Builder and AWS CDK](https://daily.dev/posts/how-company-3-streamlines-studio-image-management-with-ec2-image-builder-and-aws-cdk-rruzmyibe) · AWS · 0 upvotes · 0 comments
- [What building Shippy taught us about building agents](https://daily.dev/posts/what-building-shippy-taught-us-about-building-agents-dgvbcxdcx) · Hugging Face · 2 upvotes · 0 comments
- [Advancing Our Chef Infrastructure: Safety Without Disruption](https://daily.dev/posts/advancing-our-chef-infrastructure-safety-without-disruption-ppgcybokx) · Slack engineering · 1 upvotes · 0 comments

---

Tags: [#aws-ec2](https://daily.dev/tags/aws-ec2), [#chef](https://daily.dev/tags/chef)

[View this post on daily.dev](https://daily.dev/posts/shipyard-how-we-built-slack-s-next-generation-ec2-platform-gu06w8ca0)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Shipyard: How We Built Slack’s Next-Generation EC2 Platform","url":"https://daily.dev/posts/shipyard-how-we-built-slack-s-next-generation-ec2-platform-gu06w8ca0","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/shipyard-how-we-built-slack-s-next-generation-ec2-platform-gu06w8ca0"},"datePublished":"2026-07-14T16:15:48.542Z","dateModified":"2026-09-14T08:52:37.782Z","description":"Slack's engineering team describes Shipyard, their next-generation EC2 platform built around immutable infrastructure principles. Rather than continuously...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/ee8ca72f3d988c40435a32403840c689?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/ee8ca72f3d988c40435a32403840c689?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Slack engineering","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Slack engineering","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/f96745b95f204498816ad834bf964380","url":"https://daily.dev/sources/slack"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/shipyard-how-we-built-slack-s-next-generation-ec2-platform-gu06w8ca0","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":2},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"aws-ec2,chef","timeRequired":"PT15M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Slack engineering","item":"https://daily.dev/sources/slack"},{"@type":"ListItem","position":3,"name":"Shipyard: How We Built Slack’s Next-Generation EC2 Platform"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/shipyard-how-we-built-slack-s-next-generation-ec2-platform-gu06w8ca0#faq","mainEntity":[{"@type":"Question","name":"How does Slack manage immutable EC2 instances at scale without configuration drift?","acceptedAnswer":{"@type":"Answer","text":"Slack built a platform called Shipyard that treats EC2 instances as deployable artifacts rather than mutable machines. A shared base image called slack-zero, built with AWS Image Builder, provides hardened OS, networking, and monitoring components, and service teams layer their own AMIs on top. Instances are short-lived and rotated on a schedule by a component called the Reaper to limit drift and vulnerability exposure. See how teams weigh immutable image pipelines against long-running EC2 fleets on daily.dev."}},{"@type":"Question","name":"How do you handle secrets in an immutable EC2 infrastructure model?","acceptedAnswer":{"@type":"Answer","text":"Secrets are handled as an exception to immutability using Consul Template, which allows credentials and certificates to be rolled out dynamically from Vault without cycling the fleet. Packages and configuration remain fixed at bake time, making the system semi-immutable: stable at the code and configuration layer while sensitive runtime data can still refresh safely as needed. Developers designing secret-rotation strategies can track infrastructure patterns like this on daily.dev."}},{"@type":"Question","name":"Why did Slack switch from Packer to AWS Image Builder for building base machine images?","acceptedAnswer":{"@type":"Answer","text":"AWS Image Builder offers automatic AMI lifecycle cleanup, SSM parameter publishing so pipelines always reference the latest base image, event-driven automation via EventBridge and Lambda to trigger downstream rebuilds, and built-in validation testing before publishing an AMI, none of which the previous Packer-based workflow provided as natively. Engineers evaluating AMI build tooling can compare approaches like this on daily.dev."}}]}
```

