A capital-markets firm has 60 engineers across 25 services: order routing, market-data handlers, risk and post-trade. Today every production change needs a ticket, a weekly change advisory board, and an ops engineer who deploys by hand from a runbook, so lead time is about nine days and the team ships twice a week. An internal audit found two changes approved by their own authors, and the business wants faster delivery without a worse audit.
The interviewer asks“Auditors require that the person who writes a change, the person who approves it and the thing that deploys it are all different. Design a CI/CD system that enforces that and produces the evidence automatically, while getting us from two releases a week to many a day.”
I'd enforce segregation of duties with systems, not people: the author writes the PR, a different CODEOWNER must approve the latest commit, and only the pipeline's own identity can deploy, with no human holding production credentials. Every artifact is built once, signed with cosign and given SLSA provenance, and the cluster admits only signed images. Changes are risk-tiered by policy as code: standard changes are pre-approved and flow automatically, normal changes need one change approver, emergencies get post-hoc review. Each deployment writes an evidence bundle to immutable storage, and we track DORA metrics to prove velocity went up without change failure rate going up.
A free account unlocks the rest of it, and saves your progress across every track.
bash: variables Shell variables: assign, quote, default and exportbash: if Conditions: if, elif, else, test brackets and casebash: loops Loops: for, while read, until and retrybash: functions Functions: name a block, pass arguments, return a statusbash: arrays Arrays: lists and key-value maps in bashbash: exit codes Exit codes, $?, set -euo pipefail and trapbash: redirection Redirection: stdout, stderr, 2>&1, /dev/null and here-docsbash: arguments Script arguments: $1, $#, "$@", shift and getopts