CI/CD, deployment, containers, and cloud infrastructure.
Automate testing and deployment with a GitHub Actions workflow.
See DevOps as one feedback loop, then practise the tools in the order they become useful.
DevOps is a feedback-oriented way of delivering and operating software, not a job title or toolchain. Product, development, security, and operations share responsibility from planning through production learning.
The command line becomes safer when you always know the current directory, preview targets, quote paths, read help, and prefer reversible operations. Commands compose through files, streams, pipes, and exit codes.
An IP address identifies a network endpoint, DNS maps names to records, ports distinguish services on a host, and firewalls allow or deny traffic by policy. Debug them layer by layer.
A branching strategy controls integration risk. Most teams benefit from a protected main branch, short-lived feature branches, automated checks, small pull requests, and releases derived from known commits.
Shell expresses executable steps; YAML usually describes configuration consumed by another tool. Reliable automation pins assumptions, quotes data, fails clearly, validates configuration, and is safe to rerun.
A container image is an immutable package of filesystem layers and metadata; a container is a running instance with a writable layer, process, network, and configured resources.
A Dockerfile defines one reproducible image; Compose defines how multiple containers, networks, volumes, health checks, and environment values run together for a development or test stack.
Kubernetes reconciles declared desired state. The control plane stores and schedules intent; nodes run Pods; Deployments manage replicated rollout; Services provide stable discovery across changing Pods.
ConfigMaps hold non-secret configuration, Secrets carry sensitive values with careful handling, Ingress routes external HTTP traffic, and RBAC grants identities only the Kubernetes API actions they need.
Continuous integration gives every change the same reproducible checks before merge. A useful pipeline starts small—locked install, formatting or lint, types, tests, content validation, and build—then adds only checks that catch real risk.
Deployment strategy controls how a new version receives traffic and how quickly risk can be contained. Rolling, blue-green, and canary releases trade infrastructure cost, speed, observability, and blast radius.
Terraform compares declarative configuration with recorded state and provider APIs to plan infrastructure changes. Modules package a coherent interface, but state, versioning, review, and lifecycle rules determine operational safety.
Cloud computing rents programmable compute, storage, networking, identity, and managed services. Vendor-neutral design begins with workload requirements and portable concepts, then accepts provider-specific features deliberately where their value exceeds switching cost.
Logs describe discrete events, metrics summarize numeric behavior over time, and traces connect work across service boundaries. Together they help answer what happened, how much, where, and for whom.
Prometheus scrapes and stores labeled time-series metrics; Grafana queries data sources and presents dashboards and alerts. A useful lab begins with a few service-level signals, not hundreds of panels.
An SLO states a reliability target for a user-visible service indicator; alerts should fire on meaningful risk to that objective; incident response restores service, communicates, and learns without blame.