Skip links

Blog

API Design Patterns That Scale

Every API starts simple. A handful of endpoints, a few hundred requests per day, one or two client applications. Then it grows. New consumers appear — a mobile app, a partner integration, an internal analytics dashboard. Request volume goes from hundreds to hundreds of thousands.

Kubernetes in Production: What They Don’t Tell You

Every Kubernetes tutorial ends at the same place: you have a deployment, a service, and an ingress. Your application is running. kubectl get pods shows healthy green status. The tutorial declares success and moves on. What the tutorial does not cover is the next twelve

The Case for Monorepos in Small Companies

We spent eighteen months running Harbor Software’s codebase as separate repositories: one for the API, one for the frontend, one for shared libraries, one for infrastructure, one for the admin dashboard, and several more for smaller services and tools. We had 12 repositories for a

Building Resilient Microservices with RabbitMQ

Synchronous HTTP calls between microservices are a reliability liability. When Service A calls Service B over HTTP and Service B is slow or down, Service A is also slow or down. The caller inherits the callee’s failure mode. Multiply this by ten services and you
Developer hands on keyboard with security vulnerability dashboard showing alerts

Why Most Security Tools Fail Small Engineering Teams

Security tooling has a small-team problem. The market is flooded with enterprise security products that assume you have a dedicated security team, a CISO with budget authority, and developers who will tolerate adding 15 minutes to their build pipeline for the privilege of triaging 800

Infrastructure as Code with Terraform: Lessons from Production

We migrated Harbor Software’s infrastructure to Terraform three years ago. In that time, we have managed over 400 resources across three AWS accounts, handled two major Terraform version upgrades, and recovered from exactly one state file corruption incident that cost us a full day of
Person in hoodie at cybersecurity workstation with multiple monitors showing threat detection

Automated Vulnerability Scanning: Beyond the Basics

Most engineering teams treat vulnerability scanning like a checkbox. Install Snyk or Dependabot, enable automated PRs, merge the updates, and call it a day. The problem is that this approach catches roughly 30% of the vulnerabilities that actually matter in production. The rest live in

The Architecture of Real-Time WebSocket Applications

HTTP is a request-response protocol. The client asks, the server answers, the connection closes. For most web applications, this model works perfectly. But when you need the server to push data to the client—live notifications, real-time collaboration, streaming inference results, chat messages, live dashboards—you need

CI/CD for Small Teams: Getting Maximum Value With Minimal Overhead

CI/CD pipelines at large companies are maintained by dedicated platform engineering teams with six-figure infrastructure budgets. At a 4-person startup, you are the platform engineering team, the SRE team, and the development team—simultaneously. Your CI budget is whatever GitHub Actions’ free tier provides, and every
Explore
Drag