This primer covers what software is, how DevOps shapes delivery, where containers and servers fit, how data flows on a network, and what “code” and “instructions” mean in practice.
Software and its types
- System software: Operating systems, device drivers, utilities that keep hardware usable.
- Application software: Apps users interact with—web, mobile, desktop, SaaS.
- Middleware: Glue between apps and systems—message brokers, API gateways.
- Embedded/firmware: Software on devices, routers, IoT, appliances.
Intro to DevOps
- Goal: Ship changes quickly and safely by aligning dev + ops with automation and feedback loops.
- Practices: CI/CD, infrastructure as code, monitoring/observability, incident response, blameless postmortems.
- Culture: Shared ownership, small frequent changes, measurable reliability.
Containers
- What: Lightweight, isolated runtime using the host kernel; ships code + dependencies together.
- Why: Consistency across environments, fast start/stop, efficient resource use.
- Common tools: Docker/OCI images, containerd, Kubernetes/Helm for orchestration.
Servers
- Physical/virtual: Bare metal vs VMs; cloud instances (EC2, GCE) as virtual servers.
- Container hosts: Nodes running containers or Kubernetes.
- Managed services: Serverless/FaaS, PaaS (App Engine/Heroku) abstract the server details.
Network flow (simple view)
- Client sends a request (HTTP/HTTPS) → DNS resolves hostname → packets route through the internet.
- Load balancer/ingress receives traffic → routes to a service/pod.
- Service talks to downstreams (DB/cache/queues) → response returns to client.
- Observability wraps around: logs, metrics, traces for each hop.
Program, code, instructions
- Code: Human-readable source (Python, JavaScript, Go).
- Instructions: Statements the CPU executes after compilation/interpretation.
- Program: Organized code + data that performs tasks when run.
- Build & run: Source → compiled or interpreted → executed as a process/container/service.
How it fits together
- Write code (instructions) for a program.
- Package it (container or binary) with its dependencies.
- Deploy to servers (VMs, containers on Kubernetes, or managed platforms).
- Expose over a network (ingress/load balancer) and monitor behavior.
- Use DevOps practices (CI/CD, IaC, observability) to ship changes safely.
With these foundations—what software is, how DevOps works, where containers/servers fit, and how network requests flow—you have the building blocks for the rest of the course.