Intermediate concepts in DevOps & Cloud, page 8

Kubernetes StatefulSet: Pods with Stable Identity
A StatefulSet gives Kubernetes pods a stable identity and dedicated storage, like assigning a permanent desk and locker to an employee. Use it for databases or clustered apps where nodes need to find each other and retain data across restarts.
Kubernetes: The Operating System for Your Cluster
Think of Kubernetes as an OS for your entire datacenter. It automates deploying, scaling, and managing containerized applications across a fleet of servers. The footgun is adopting it for simple projects, where its complexity outweighs its benefits.

Kubernetes Taints and Tolerations: Repelling Pods
Taints act like 'No Trespassing' signs on Kubernetes nodes, repelling pods. Tolerations are the keys that let specific pods ignore those signs. Use this to reserve nodes for special hardware or critical workloads, preventing general pods from landing there.

Kubernetes Pods: The Atomic Unit of Deployment
A Kubernetes Pod is the atomic unit of deployment, a logical host for containers sharing a network and storage. This is ideal for co-locating a main app with a helper "sidecar" container. The footgun: a Pod is not a container; you scale by adding more.
Graceful Degradation: Failing Better, Not All at Once
Instead of total failure, graceful degradation lets a system shed non-essential features to stay partially available. It's a fault tolerance strategy for when a component fails, ensuring core functions survive. The footgun is not defining what's 'core.'

Node Affinity: Tell Your Pods Where to Go
Node affinity is like giving pods a 'preferred seating' list for nodes. You guide the scheduler to nodes with specific labels, like those with GPUs or in a certain zone. The footgun is confusing 'required' (a hard rule) with 'preferred' (a suggestion).

Kubernetes Deployment: Declarative App Updates
A Kubernetes Deployment is your app's blueprint. You declare the desired state—like '3 replicas of image v2'—and Kubernetes makes it happen. It's the standard for stateless apps like APIs. The footgun: don't manage Pods directly; manage the Deployment.
Rate Limiting: Your API's Bouncer
Rate limiting acts as a bouncer for your API, controlling traffic to protect your service. It's used on public APIs to prevent abuse, ensure fair usage, and defend against denial-of-service attacks.

Kubernetes LimitRange: Setting Guardrails for Pod Resources
LimitRange acts like a bouncer for Pod resources, setting min/max CPU and memory rules for each Pod in a namespace. It's used to prevent resource hogging and apply sensible defaults.

Kubernetes Service: A Stable Address for Ephemeral Pods
A Kubernetes Service provides a stable IP address and DNS name for a group of ephemeral Pods. It acts like a load balancer, distributing traffic so you don't have to track individual Pod IPs, which can change at any time.

ResourceQuota: Namespace Resource Budgets
ResourceQuota is a namespace budget: it rejects pods once total requests hit the cap. Use it to keep multi-tenant clusters fair. The footgun: it counts requested resources, not real usage, and pods missing requests may be rejected without LimitRange defaults.

Failover: Automatic Recovery When Things Go Wrong
Failover is your system's automatic plan B. When a primary component fails, a standby takes over instantly without human intervention. It's essential for high-availability systems. The footgun is assuming the standby is perfectly in sync; it might not be.
Helm: The Package Manager for Kubernetes
Helm is the package manager for Kubernetes. It uses a packaging format called Charts to define, install, and upgrade applications, making it the standard way to manage software on a K8s cluster. It is a Cloud Native Computing Foundation (CNCF) project.
CloudEvents: The Event Data Standard
CloudEvents provides a common envelope for event data, enabling routing without custom parsers. Use it when events cross clouds, SaaS tools, or internal services. It standardizes wrappers, not payloads, so producers and consumers still need aligned schemas.
Service Discovery: How Services Find Each Other
Instead of hardcoding IP addresses, services ask a central registry for the live address of other services they need to call. This is crucial in dynamic microservice environments where IPs change constantly.

Kubernetes Ingress: The Cluster's Front Door
Kubernetes Ingress is the smart receptionist for your cluster. It routes external HTTP/S requests to internal services based on hostnames or paths, letting you expose multiple apps under one IP.
Publish/Subscribe Pattern
Publish/subscribe decouples senders from receivers: publishers emit messages to a topic without knowing who consumes them, and subscribers receive messages from topics they care about.
N+1 Redundancy: One Spare for the Whole System
N+1 redundancy is like having one spare tire for your whole car. You have N active components and one shared, passive backup. It's used in server racks or power supplies for high availability without doubling costs.

AWS SAM: A Shorthand for Serverless on AWS
Think of AWS SAM as a developer-friendly shorthand for defining serverless applications. It simplifies creating Lambda functions and APIs by abstracting away verbose CloudFormation syntax, letting you build and test locally before deploying.

Idempotent Event Handlers: Don't Double-Count Events
An idempotent event handler ensures processing the same event multiple times has the same effect as processing it once. This is vital in event-driven systems to prevent data corruption from redelivered messages. The footgun is assuming exactly-once delivery.
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