Concepts in DevOps & Cloud, page 6
Static Analysis: Read Code, Don't Run It
Static analysis is like a spell checker for your code, catching errors before you run the program. It powers linters and security scanners in CI pipelines to find bugs and vulnerabilities. The footgun: it can't understand intent, leading to false positives.
OpenTelemetry SDK: The Engine for Your Telemetry
The OpenTelemetry SDK is the engine that processes and exports your telemetry data. It implements the OTel API, letting you configure how traces and metrics are sampled, batched, and sent to a backend.
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.
Cloud Storage Tiers: Match Cost to Access Frequency
Storage tiers match data cost to access frequency. 'Hot' tiers are fast and expensive for active files; 'cold' tiers are cheap for archives. Use for data that cools over time, like logs. The footgun: retrieving cold data unexpectedly is slow and costly.
Apache Maven: Convention Over Configuration for Builds
Maven standardizes your build process using a 'convention over configuration' model, defining project structure and dependencies declaratively. It's the backbone of many Java projects, ensuring consistent builds. The footgun is fighting its conventions.
OpenTelemetry Collector: The Swiss Army Knife for Telemetry Data
The OpenTelemetry Collector is a universal adapter for your telemetry data. It receives data in one format, processes it, and exports it to multiple backends, letting you centralize configuration and avoid vendor lock-in.
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.

Block Storage Snapshots Are Incremental Backups
A snapshot is an incremental, point-in-time backup of a disk volume, saving only changed data blocks. Use it for disaster recovery to restore a volume's exact state. The footgun: deleting an older snapshot may not save money if a newer one needs its data.
Gradle: Code-Based Builds, Not XML
Gradle treats your build process like code, not configuration, using a flexible Groovy or Kotlin DSL instead of rigid XML. It's used for compiling and packaging multi-language projects.
Span: The Building Block of a Distributed Trace
A Span is a single unit of work in a request's journey, like one leg of a flight. Spans capture the duration and context of individual operations (e.g., a DB query), helping you debug latency in distributed systems.

Cross-Region Replication (CRR): Geographic Data Copying
Cross-Region Replication automatically copies data to another geographic region, like a live backup. Use it for disaster recovery, lower latency for global users, or compliance. The footgun: it only copies *new* objects, not what's already in the bucket.
Maven's Build Lifecycle: A Sequence of Build Phases
Maven's build lifecycle is a predefined sequence of phases like compile, test, and package. Running a phase executes all preceding ones, ensuring a consistent build.
OpenTelemetry Semantic Conventions: A Shared Vocabulary
Think of Semantic Conventions as a universal dictionary for telemetry. They standardize attribute names like http.method across all services, letting you correlate data from different languages, libraries, and platforms seamlessly.
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.
Encryption at Rest: Securing Your Data When It's Not Moving
Encryption at rest is like locking your data in a safe when it's not moving. It protects raw files on disk if storage is stolen, a default on platforms like Google Cloud. The footgun: it doesn't stop a compromised app with valid keys from reading.
Code Coverage: What Your Tests Don't Tell You
Code coverage measures which lines of code your tests execute, not how well they're tested. It's used in CI to enforce a testing baseline, but the footgun is mistaking high coverage for high quality—100% coverage can exist with zero useful assertions.
OpenTelemetry Protocol (OTLP): The Universal Adapter for Telemetry
OTLP is the universal adapter for observability, providing a single vendor-neutral protocol for traces, metrics, and logs. Use it to send data from an OpenTelemetry SDK to a collector.
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…
OpenTelemetry Resource: The 'Who' of Your Telemetry
An OpenTelemetry Resource is the return address for your telemetry, describing the service instance that produced it. It attaches stable context like service name and version to every signal, enabling filtering.
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