[All posts](https://zcp.zsoftly.ca/blog)
Blog

# Engineering

Architecture decisions, performance, and how we build ZCP.

Engineering

April 23, 2026

### [Two Lessons From Running OPNsense in Production](https://zcp.zsoftly.ca/blog/opnsense-bare-metal-lessons)

We ran OPNsense as a VM on network-defined storage and watched a single switch fault cascade into a cluster-wide outage. Two lessons we will not relearn: put your firewall on bare metal, and if you must virtualize it, keep the disk local.

Engineering

March 23, 2026

### [Full AWS Observability With Open Source Tools](https://zcp.zsoftly.ca/blog/full-aws-observability-open-source)

CloudWatch gives you metrics. It does not give you actionable dashboards, historical trends, or alerts. We built a four-container open source stack that turns raw AWS data into full observability — no agents on app servers, no licensing costs, auto-discovery via AWS tags.

Engineering

March 9, 2026

### [Why We Moved From SigNoz to the Grafana Stack](https://zcp.zsoftly.ca/blog/signoz-to-grafana-stack)

We picked SigNoz for its OpenTelemetry-native approach. A few months in, we moved to Prometheus, Loki, Alertmanager, and Grafana, with Grafana Alloy as the single collection agent. Here is the honest breakdown.

Engineering

March 3, 2026

### [Running Your VPN Gateway Inside the Thing It Protects Is a Bad Idea](https://zcp.zsoftly.ca/blog/ops-02-subnet-router-migration)

We ran our Tailscale subnet router as an LXC container on the same Proxmox host it was providing remote access to. It worked. Until Proxmox needed attention. Here is how we fixed it.

Engineering

January 29, 2026

### [Building Private Cloud Infrastructure with Apache CloudStack - Architecture and Design Decisions](https://zcp.zsoftly.ca/blog/private-cloud-architecture-cloudstack)

Why private cloud matters for Canadian businesses, how CloudStack provides enterprise IaaS capabilities, and the key architectural decisions for deploying production-ready private cloud infrastructure.

Engineering

January 22, 2026

### [How We Cut EKS Costs 62% by Rethinking Node Architecture](https://zcp.zsoftly.ca/blog/eks-node-consolidation-platform-nodepool-karpenter)

Our sandbox cluster ran 8 EC2 instances 24/7 costing $260/month. Most were idle overnight. By separating platform services from time-based workloads and recognizing CI/CD managers as 24/7 services, we consolidated to 3 nodes saving $160/month while improving reliability.
