Easy concepts in DevOps & Cloud, page 6

Containerization: Packaging Apps to Run Anywhere
Think of a container as a standardized box for your app, bundling its code and all dependencies. This ensures it runs the same everywhere, solving "it works on my machine" problems. The footgun is confusing them with VMs; containers are less isolated.

Docker Engine: Shipping Your Code in a Standard Box
Think of Docker as a standard shipping container for your code. It packages an app and all its dependencies into one unit that runs anywhere, solving the classic "it works on my machine" problem. The footgun is confusing it with a full VM; it's lighter.

Software Containers: Portable, Isolated Applications
Think of a container as a standardized box for your app, bundling its code and all dependencies. This lets you run it consistently anywhere, from your laptop to the cloud.

Dockerfile: The Recipe for Your Container
A Dockerfile is a recipe for building a container image. It's a text file of commands that automates an application's environment setup, ensuring it runs identically anywhere. The footgun is creating bloated images with unnecessary build tools.
Container Image: A Blueprint for Your Application
A container image is a static blueprint for your application, bundling code, runtime, and settings. You build images to ship software for Docker or Kubernetes, which then run them as live containers.
Non-Functional Requirements: How a System Should Be, Not Just What It Does
Non-Functional Requirements (NFRs) define *how well* a system performs its tasks, not *what* tasks it performs. They're the adjectives (fast, secure, reliable) for a system's verbs.

Docker Compose: A Tool for Containerized Applications
Docker Compose is a tool in the Docker suite for running applications in containers. It ensures your app runs the same everywhere by packaging it with its dependencies, solving the 'works on my machine' problem.

Single Point of Failure: Your System's Achilles' Heel
A single point of failure (SPOF) is your system's Achilles' heel—one component whose failure causes a total outage. This is critical in high-availability design, like ensuring a website survives a server crash. The footgun is missing implicit SPOFs.
Horizontal Scaling: Add More Machines, Not Bigger Ones
Horizontal scaling (scaling out) means handling more load by adding more machines to your resource pool, not upgrading a single one. It’s used for web servers behind a load balancer. The footgun is that your app must be stateless to avoid losing user data.
API Gateway: The Front Door for Your Microservices
An API Gateway is the single front door for all your backend services. It handles tasks like authentication and rate limiting before routing requests to the correct microservice. The footgun is treating it as a simple proxy; it can become a bottleneck.

Serverless Cold Starts: The Price of 'Pay-per-Use'
A serverless cold start is the initial delay when a function boots from scratch, like waking a computer from being off versus asleep. It happens on the first request or after inactivity.
Dead-Letter Queues: A Message Queue's Lost-and-Found
A Dead-Letter Queue (DLQ) is a message queue's lost-and-found, catching messages that can't be delivered. It's used to isolate "poison pill" messages that crash consumers or messages that have expired.

Kubernetes RBAC: Roles vs. ClusterRoles
Think of Kubernetes RBAC Roles as permissions for a single room (a Namespace), while ClusterRoles grant access to the entire building (the cluster). Use Roles for namespaced apps and ClusterRoles for admin tasks.
Chaos Engineering: Finding Weaknesses Before They Find You
Chaos Engineering intentionally breaks parts of your system to find weaknesses before they cause real outages. It's used to test resilience against events like server crashes or network failures.
Steady State Hypothesis: The Core of Chaos Engineering
The steady state hypothesis is the core of chaos engineering: you bet your system's key metrics won't change when you break something. It's used to test resilience by defining "normal" (e.g., latency <200ms) and then trying to disrupt it with faults.

Rolling Deployment: Update Servers Without Downtime
A rolling deployment upgrades servers one by one, like swapping train cars while the train moves. A load balancer directs users to active servers, keeping the app online. The main footgun is incompatibility between old and new code running at the same time.
Deployment Rollbacks: Your CI/CD Undo Button
A rollback strategy is your CI/CD's undo button, letting you revert to a known good state when a new deployment fails. It's essential for production environments. The biggest mistake is not having one, forcing a frantic 'hotfix' under pressure.
Centralized Logging: A Universal Inbox for Your Systems
Centralized logging is a universal inbox for all your system events. Instead of SSHing into each server, agents forward logs to one searchable location, making it possible to debug issues that span multiple services. The footgun is inconsistent log formats.

The Three Pillars of Observability
Observability isn't one tool; it's a three-legged stool of metrics, logs, and traces. Metrics give the 'what' (CPU is high), logs the 'why' (an error loop), and traces the 'where' (which service is slow). The footgun is treating them as separate silos.
Kubernetes Events: The Cluster's Short-Term Memory
Think of Kubernetes Events as a cluster's temporary log, recording state changes like a Pod starting or a container failing. Use them with kubectl describe to debug issues in real-time.
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