KTH/devops-course

Continuous deployment / delivery / pipelines

monperrus opened this issue · 32 comments

Releasy, a tool that aims at supporting
projects that use continuous delivery by generating and reporting their
release provenance: http://arxiv.org/abs/1809.10265

https://www.terraform.io/ is an excellent tool for "infrastructure as code". We use it to develop, spin up, update, upgrade and kill pretty large kubernetes/docker deployments.

"One size does not fit all - an empirical study of containerized continuous deployment workflows."
https://www.researchgate.net/publication/326696302_One_Size_Does_Not_Fit_All_An_Empirical_Study_of_Containerized_Continuous_Deployment_Workflows

Concepts: feature flags, dark launching.

Concept: canary service, canary release

Figure 3 of "Holistic Configuration Management at Facebook"

Figure 14: Latency in seconds between committing a config change and the new config reaching the production server

Advanced Concept: "delta execution" see "Efficient online validation with delta execution" (ASPLOS 2009)

Search-Based Scheduling of Experiments in Continuous Deployment
https://www.ifi.uzh.ch/dam/jcr:1cc880b3-a5fd-40e9-a4aa-4c93123526c7/icsme18_preprint.pdf

Mozilla's CI/CD pipeline for building and publishing multiple whale containers as microservices within a mono repository.
https://github.com/MozillaSecurity/orion

Dokku A docker-powered PaaS that helps you build and manage the lifecycle of applications
https://github.com/dokku/dokku

Reproducible build initiative at Debian
https://wiki.debian.org/ReproducibleBuilds

Spinnaker is an open source, multi-cloud continuous delivery platform
https://www.spinnaker.io/

Go continuous delivery
https://www.gocd.org/

JFrog: Universal package repository, SecOps, CI/CD and software distribution all in one platform.
https://jfrog.com/

Iter8

Release engineering platform for Kubernetes
Iter8 automates SLO validation, A/B or A/B/n testing, and progressive rollouts with advanced traffic engineering.

https://iter8.tools/

  • Simple rollout & rollback
  • BlueGreen
  • Dark launch with built-in load/metrics
  • Dark launch with mirroring (shadowing)
  • Canary with fixed-%-split
  • Canary with progressive traffic shift
  • Canary with user segmentation
  • Canary with session affinity

The practice and future of release engineering: A roundtable with three release engineers
https://resources.sei.cmu.edu/asset_files/Article/2015_101_001_442658.pdf

Infrastructure-as-code and tools such as Terraform and Ansible, are key technology for CD

Automating Staged Rollout with Reinforcement Learning https://arxiv.org/pdf/2204.02189.pdf

Drone is a continuous delivery system built on container technology.
https://github.com/harness/drone

An open source build platform designed for continuous delivery
https://github.com/screwdriver-cd/screwdriver

https://github.com/googleapis/release-please
Release Please automates CHANGELOG generation, the creation of GitHub releases, and version bumps for your projects.

jreleaser: 'the quick and effortless way to release your project!'
https://jreleaser.org/