Sefism is free for learners. We are here to help you grow, one step at a time.Join for free
Sefism.
Cloud & DevOps

Deployment Pipeline with Progressive Rollout and Automatic Rollback

A deployment controller for small engineering teams on Kubernetes that sends a new release to a small share of traffic, compares its error rate and latency against the current version, and promotes or rolls back automatically. An advanced DevOps final year project where you write the control loop and the statistics yourself.

Difficulty

Advanced

Needs a team, real planning, and a supervisor who knows the area.
Effort

1 semester · 2 to 3 students

Deliverables

7 to ship

3 optional extras

Suggested stack

GoKubernetes and client-goNGINX Ingress or Gateway APIPrometheusGitHub ActionsReactPostgreSQL
A suggestion, not a requirement. Swap anything for what you already know.

What you should ship

  • A Kubernetes controller with a custom resource describing a release: image, traffic steps, observation window and thresholds
  • Traffic splitting between baseline and canary at configurable percentages (for example 5, 25, 50, 100) through ingress weights
  • A metric judge that compares canary against baseline on error rate and p95 latency over the same window, with a minimum sample size
  • Automated promotion or rollback with every decision stored alongside the metric evidence that caused it
  • A GitHub Actions workflow that builds an image and creates a release object, so a push starts a progressive rollout
  • A web page listing releases, their current step, live comparison graphs and the decision history
  • A fault catalogue of at least 4 deliberately broken releases, with measured detection time and rollback time for each

If you have time left

  • A nonparametric test such as Mann-Whitney U for latency so a noisy sample does not trigger a false rollback
  • Rollback triggered by degradation in a downstream service, not only in the deployed one
  • Sticky sessions so a user does not bounce between versions mid-session

The problem with all-or-nothing deployments

Most small teams deploy by replacing every instance of the old version with the new one. If the release has a bug that only shows under real traffic, every user sees it at once, and it is found by customers or a support ticket rather than by the team. Progressive delivery fixes this by exposing a new version to a small slice of traffic first, but doing it by hand means someone watching dashboards and deciding when to continue. That does not scale, and it does not happen at three in the morning.

The decision itself is harder than it looks. Is a 1.2 percent error rate on the canary worse than 0.9 percent on the old version, or just noise from 300 requests? That question is statistics, and it is the heart of this project.

What already exists and the gap

  • Argo Rollouts is a Kubernetes controller for blue-green and canary deployments, with analysis steps that query Prometheus, Datadog and others to promote or roll back.
  • Flagger automates canary releases on service meshes and ingress controllers, shifting traffic while checking metrics and rolling back on failure.
  • Kayenta, built by Netflix and Google, performs automated canary analysis by statistically comparing canary and baseline metrics.

These tools are mature, and configuring one is an operations task, not a final year project. The gap for you is understanding: writing the control loop, the traffic shifting and the judge yourself, then measuring how well your judgement works on known bad releases. The result is a small, readable controller that teaches how the big ones work, and a report with numbers most students never produce.

What you build

  • Release resource: a custom Kubernetes object stating the new image, the traffic steps, how long to observe each step and the thresholds.
  • Controller: a reconcile loop that creates the canary deployment, sets ingress weights, waits for the window, asks the judge and moves forward or back.
  • Judge: queries Prometheus for canary and baseline over the same window and returns pass, fail or not enough data.
  • Dashboard: releases, current step, graphs, and the decision log with evidence.
  • Pipeline: a GitHub Actions job that builds the image and creates the release object.

The technically interesting part

The judge. Compare canary against baseline, not against a fixed threshold, because a spike that hits both versions is an environment problem, not a bad release. Require a minimum number of requests before any decision, or you will roll back on three unlucky requests. Error rates are proportions, so use a test for proportions; latency is skewed, so compare percentiles or use a rank-based test such as Mann-Whitney U, the kind of comparison automated canary analysis tools use.

The controller must also be safe to restart. Store the release state in the custom resource status, make every step idempotent, and show your examiner that killing the controller mid-rollout leaves traffic in a known state and resumes correctly.

How to evaluate it

  • Detection table: ship broken releases: 5 percent errors, slow only under load, failing only for one endpoint, and a memory leak. Report detection time, rollback time and the share of users exposed for each.
  • False rollbacks: run 20 healthy releases under realistic noisy load from k6 and count how many were wrongly rolled back.
  • Sensitivity curve: vary minimum sample size and observation window, and plot detection time against false rollback rate.
  • Resilience: kill the controller at each step and confirm correct recovery.

Suggested plan

  1. Weeks 1 to 2: read Argo Rollouts and Flagger docs, build a sample service with Prometheus metrics and a load generator.
  2. Weeks 3 to 5: custom resource, controller skeleton, canary deployment and ingress weights.
  3. Weeks 6 to 8: the judge, minimum samples, decision log.
  4. Weeks 9 to 10: dashboard and GitHub Actions trigger.
  5. Weeks 11 to 14: broken release catalogue, experiments, sensitivity curve.
  6. Week 15: write-up and demo with a live bad release being rolled back.

Path to a product

This is a portfolio centrepiece more than a SaaS. Publish it as open source with a clear README and the detection table; that project gets conversations with platform and SRE teams. A realistic commercial angle is consulting: helping small companies in Pakistan and elsewhere move from manual deploys to progressive delivery, where your controller or an established tool is the delivery vehicle. A hosted version would compete with mature tools, so do not start there.

Scope warning

One strategy, canary with traffic weights, done properly. Do not build blue-green, feature flags, a full CD platform or multi-cluster support. Do not add a service mesh unless your ingress cannot split traffic. The statistics and the experiments are the contribution.

Learn what you need on Sefism

Get help with this idea

The usual trap is spending weeks on Kubernetes setup and leaving the judge and experiments for the last fortnight. Tauseef can help you plan the order of work, choose a traffic splitting method that fits your cluster, and design the detection table. If you are new here, create a free account first.

Ideas and guidance, not finished projects

These are project ideas and scoping guidance, published free for students to use as a starting point. I do not build, write, or sell final-year projects, and I do not complete coursework for anyone. Take an idea, make it yours, and build it.

Not sure this one fits you?

I help students pick an idea that matches their skills and their deadline, then scope it down until it is finishable. Guidance only, never done for you.

Discuss this idea
Work with me

Stuck on something specific?

Writing only gets you so far. If you want an answer to your situation rather than the general case, book a session and we will work through it together. Sessions are free for approved Sefism members, and a few slots open each week.