Architecting secure, automated infrastructure at scale. This site is a live case study of a zero-ingress cloud environment — spanning bare-metal constraints, serverless migration, and cost optimization.
Five phases of infrastructure design — from bare-metal polling to zero-ingress serverless and back to a hardened VM.
Constraint: GCP e2-micro with 1GB RAM. CI/CD runners risk OOM.
Architecture: Pull-based GitOps loop via systemd.timer + Bash script.
Polled GitHub API every 2 min for SHA deltas — minimal memory overhead.
Requirement: Instant push-based deploys while keeping zero-ingress security.
Architecture: Replaced polling with GitHub Actions. Used GCP IAP to tunnel SSH deploys over port 22 — no public port exposed.
Optimization: Building on the VM triggered OOM. Telemetry confined inside container network boundaries.
Architecture: Unprivileged Nginx image built & pushed to GHCR in CI. Telemetry daemon runs natively on host under systemd, proxied via bridge.
Optimization: VM + Cloudflare tunnel + systemd daemons added operational overhead.
Architecture: Transitioned to Cloud Run (serverless). Workload Identity Federation for keyless GitHub Actions deploys via Artifact Registry.
Constraint: Cloud Run + Artifact Registry + Firestore storage costs accumulated.
Architecture: Returned to free-tier e2-micro VM. Nginx + Cloudflared
in private Docker Compose stack. Retained WIF for IAP SSH deploys.
Current production topology and how code reaches production.
Cloudflare Pages serves the static site directly from the edge. GitHub Actions renders the resume PDF, then
deploys the site/ directory via wrangler. The GCP e2-micro VM
(Phase 5) is on hold for future work.
Serverless configuration using Cloud Run for frontend Nginx + Go microservice connected to Firestore for visitor and session telemetry.
Why Phase 5 exists, what it costs, and how it stays secure.
While serverless (Phase 4) eliminated VM maintenance and tunnels, it introduced unexpected cost vectors. Artifact Registry storage for multiple Docker image tags plus Firestore reads/writes from the visitor tracker accumulated charges. For a low-traffic personal portfolio, this defeated our "100% Free Tier" objective.
We retired Cloud Run + Firestore and returned to a single GCP e2-micro VM — fully covered under the Always Free program.
Result: $0/month, zero open ports, container-isolated networking, automated keyless deployments.