Advanced concepts in DevOps & Cloud, page 2

AWS Placement Groups: Control Where Your Instances Run
AWS Placement Groups let you control where EC2 instances run relative to each other. Use a Cluster group for low-latency HPC, or Spread/Partition groups to reduce correlated hardware failures. The main footgun is picking the wrong strategy for your workload.
Monorepo vs. Polyrepo: One Repository or Many?
A monorepo is one repository for all projects, like a city; a polyrepo is one per project, like separate towns. Monorepos simplify code sharing and atomic refactors but require complex tooling. Polyrepos offer autonomy but can create dependency hell.

AWS Dedicated Hosts: Your Own Physical Server in the Cloud
An AWS Dedicated Host is your own physical server in the cloud, providing single-tenant hardware. Use it for "bring your own license" (BYOL) software tied to physical cores, or for compliance rules that forbid multi-tenancy.

Git LFS: Versioning Large Files Without Bloating Your Repo
Git LFS replaces large files with text pointers in your repo, storing the actual data on a remote server. This keeps clones fast when versioning videos, datasets, or graphics. Footgun: git lfs track only affects new files, not existing ones.
Docker Compose Profiles: Activate Service Groups
Docker Compose profiles let you toggle groups of services on or off within a single compose.yaml file. Use it to separate your core app from debugging utilities or to define a "local dev" setup versus a "CI" setup.
Extending Compose Files for Different Environments
Think of extending Compose files like CSS for your services; a base file defines the structure, and override files style it for different environments. This is used to manage settings like local code mounts for dev vs. restart policies for prod.
Docker Compose Secrets: Keep Credentials Out of Your Code
Docker Compose Secrets inject sensitive data into containers as files at runtime, keeping credentials out of your version-controlled docker-compose.yml. Use them for API keys and passwords. The footgun: your app must read from a file, not an env var.
Object Versioning: A Safety Net for Cloud Files
Object Versioning treats every file change as a new version, not a replacement. It's used in cloud storage to recover from accidental overwrites or deletions. The footgun: you pay for all versions, so costs can multiply without cleanup policies.
Incremental Build: Develop and Ship Software in Pieces
Incremental builds deliver software in usable chunks, not one big release. This lets you ship value and gather feedback early on large projects. The footgun is poor planning, leading to disconnected features and architectural debt instead of a cohesive…
Presigned URLs: Temporary Access to Private Files
A presigned URL is a temporary, authenticated link to a private cloud storage object, bundling credentials into the URL. Use it to let users upload or download private files directly, bypassing your server. The URL is a bearer token, so set short expirations.
Reproducible Builds: Trust What You Run
A reproducible build guarantees that the same source code always compiles into the exact same binary. This is crucial for verifying that a distributed application wasn't tampered with.
Context Propagation: Stitching Microservices Together
Context propagation stitches a user request's journey across microservices by passing a shared ID. It's essential for distributed tracing, letting you see one request flow through many APIs.
Storage Gateway: Your On-Prem to Cloud Translator
A storage gateway is a translator, letting your on-prem applications talk to cloud storage without learning its native API language. It presents cloud storage as a local file share or block device, enabling hybrid cloud backups and data tiering.
Cross-Compilation: Build Anywhere, Run Elsewhere
A cross-compiler builds code for a different machine than the one it runs on. This lets you use a powerful PC to compile for a tiny IoT device or a mobile phone. The footgun is forgetting that the target's OS and libraries matter, not just.
Telemetry Processors: The Middle of the OTel Pipeline
A Telemetry Processor is a configurable stage in an OpenTelemetry Collector pipeline, sitting between data reception and export. You configure them in config.yaml to act on telemetry data.
Eventual Consistency: Availability Over Immediacy
Eventual consistency trades immediate correctness for high availability. It's used in distributed systems where being online is critical. The footgun is assuming "eventual" implies a specific timeframe; it only guarantees convergence if updates cease.

Build Matrix: Test All The Combinations
A build matrix automatically creates multiple jobs by combining different configurations. Use it to test your code across various operating systems, language versions, or dependencies without duplicating your workflow file.

Prometheus Exemplars: Link Your Metrics to Traces
Exemplars are like footnotes for your metrics, linking a data point like a latency spike directly to a specific trace ID. This lets you jump from a 'what' on a dashboard to the 'why' in your tracing system.
OCI Image Manifest: The Recipe for a Container Image
An OCI Image Manifest is the recipe for a single container image, listing its configuration and filesystem layers for one specific architecture. It's what a runtime uses to assemble an image like ubuntu:22.04 on your linux/amd64 machine.
Harbor: A Private, Secure Artifact Registry
Think of Harbor as a private Docker Hub with built-in security. Use it to scan images for vulnerabilities, enforce role-based access control, and sign artifacts before deploying to Kubernetes.
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