Concepts in CI/CD & Automation, page 7
Structured Logging: Logs as Data, Not Strings
Treat logs as structured data (like JSON), not just plain text. This makes them machine-readable and queryable, letting you filter, search, and create dashboards on specific fields (e.g., user_id, trace_id).
Bug Tracking Systems: The Central Log for Software Defects
A bug tracker is the central log for a project's known defects. It’s used in software development to keep track of reported bugs, coordinate fixes, and manage the lifecycle of an issue. The footgun is undervaluing the quality of bug reports.
Distributed Tracing: Following a Request Across Microservices
Distributed tracing is like a passport for a request, stamped at every service it visits. It's essential for debugging microservices where one click can trigger many calls. The footgun is trying to debug without it, piecing together isolated logs.
Service Level Objective (SLO): A Measurable Promise
An SLO is a precise, measurable promise about your service's performance, like "99.9% of requests will succeed." It's the internal engineering target that backs up a customer-facing SLA. The footgun is setting a 100% SLO, which leaves no room for failure.
Real User Monitoring (RUM): See Your App Through Users' Eyes
Real User Monitoring (RUM) is like a flight recorder for your app, capturing real user clicks, load times, and errors. It's used to measure actual performance and diagnose slowdowns, revealing issues that lab testing misses.
Synthetic Monitoring: Probing Your App Like a Robot User
Synthetic monitoring is like having a robot user click through your app's critical paths 24/7 to catch issues before real users do. It tests key flows like login or checkout, providing a consistent baseline for performance.
DORA Metrics: Vital Signs for Your CI/CD Pipeline
DORA metrics are four vital signs for your software delivery process, balancing speed and stability. They benchmark DevOps performance from commit to production. The main footgun is optimizing for speed while ignoring stability, leading to frequent outages.
Pipeline Analytics: Measuring Your CI/CD Health
Pipeline analytics is a fitness tracker for your CI/CD, revealing if builds are getting slower or less reliable. Use it to spot bottlenecks, track failure rates, and compare branches. The footgun is ignoring the P95 duration, which hides worst-case outliers.
Analyzing Flaky Tests
A flaky test passes and fails randomly without code changes, eroding trust in your CI pipeline. It often points to race conditions or external dependencies. The biggest footgun is ignoring them, as this teaches developers to dismiss real failures.
Chaos Engineering: Break Systems to Build Confidence
Chaos Engineering is like a fire drill for your software: you intentionally break things in a controlled way to find weaknesses. It's used in distributed systems to test resilience against server failures or network latency.

eBPF: Run Sandboxed Programs in the Linux Kernel
eBPF lets you run sandboxed programs directly in the Linux kernel, like adding programmable event handlers to your OS. This enables high-performance networking, security, and observability without changing kernel code.
Kustomize: Template-Free Kubernetes Configs
Kustomize manages environment-specific Kubernetes configs by layering patches on a base YAML, avoiding complex templating. Use it to tweak deployments for dev, staging, or prod. The footgun: the kubectl version can lag, causing unexpected behavior.

Flux CD: Git as the Source of Truth for Kubernetes
Flux CD makes Git your cluster's source of truth. It automatically syncs Kubernetes manifests from a repo to your cluster, ensuring the live state matches your config. This is for continuous delivery, not CI.
The GitOps Reconciliation Loop
Think of it as a thermostat for your infrastructure. A GitOps agent continuously compares your live system's state against the desired state in Git. If it detects drift, it automatically corrects it.

App of Apps Pattern: Manage Application Fleets, Not Individuals
The App of Apps pattern uses a single parent Argo CD application to declaratively manage a fleet of child applications. This is ideal for bootstrapping entire environments from one Git repo.
Argo Rollouts: Beyond Kubernetes Rolling Updates
Argo Rollouts replaces Kubernetes' basic RollingUpdate with safer, controlled strategies like canary and blue-green. It gradually shifts traffic to new versions while monitoring metrics, automating rollbacks if KPIs degrade.

Flux HelmRelease: Declarative Helm Charts in Git
A Flux HelmRelease is like putting your helm install command into a YAML file and checking it into Git. It lets you declaratively manage Helm charts for any application via GitOps.
Flagger: Progressive Delivery for Kubernetes
Flagger is an automated traffic cop for Kubernetes releases. It gradually shifts traffic to new versions while monitoring metrics, enabling safe canary or blue/green deployments with service meshes or ingress controllers.
Argo CD Image Updater: Automate Image Updates
An Image Updater automates deployments by watching for new container image versions and telling Argo CD to update your app. It's used to automatically roll out new builds, but misconfiguring update strategies can accidentally deploy unstable tags to…
Argo CD ApplicationSet: Manage Many Applications as One
Think of an ApplicationSet as a factory for Argo CD Applications. It uses a template and generators to automatically create apps for many clusters or services in a monorepo.
We are hiring for this. Every open role lists the topics its interview covers, so you can prepare for the real thing rather than guessing.
See open roles