2.8d Infrastructure
← 2.8c Architecture | Home | Next: 2.8e Security →
- Virtual machines vs. containers: VMs have a full guest OS—strong isolation, high resource overhead. Containers share the host kernel—fast startup, high density.
- Processes vs. threads: A process is the basic unit of resource allocation (independent memory space). A thread is the basic unit of CPU scheduling (shares process memory). Process isolation is safer but communication is costlier; threads communicate cheaply but shared memory introduces concurrency bugs.
- Controller-agent / Primary-replica patterns: Common distributed system topologies.
- IaaS, PaaS, SaaS: From bottom to top, management responsibility shifts from the user to the cloud provider—IaaS you manage above the OS; PaaS you only manage your code; SaaS you only use the service.
- Web servers / Reverse proxies / Load balancing: Receive requests → distribute to backends → return responses (Nginx, HAProxy).
- Redundancy: Eliminate single points of failure—multiple replicas, multi-region, automatic failover.
- Latency: The time for data to travel from source to destination. Focus on P50/P95/P99 percentiles, not averages.
- Observability: Going beyond traditional monitoring (predefined thresholds and known problems), observability is about being able to ask arbitrary questions about your environment without having to know ahead of time what you wanted to ask.
Three pillars: - Wide structured events: Collect rich runtime context. - Iterative querying: Group, filter, and aggregate by any dimension. - Distributed tracing: Track the path of execution through your distributed system.
The goal: address issues before they impact customers, safely experiment and implement optimizations, and promote knowledge transfer across teams.
Sources
- Honeycomb — Introduction to Observability: https://docs.honeycomb.io/learning-about-observability/intro-to-observability/
← 2.8c Architecture | Home | Next: 2.8e Security →