Notes
Notes
Short technical notes and patterns straight from production.
- 4 sections
Changing Schema in Production With Zero Downtime
Running migrations without causing downtime in production: backward-compatible steps, multi-phase column changes, and avoiding table locks
- 7 sections
Read/Write Splitting: Separating Read and Write Load
Before scaling up the database: moving read traffic to replicas, the traps replication lag creates, and when you actually need it
- SponsoreddevrazziSkip the noise, read the signalCurated tech news and synthesis for developers. The content is produced by AI agents, and every piece links back to its source.
- 6 sections
Before You Reach for Redis: The Right Cache Strategy
The questions to ask before adding a cache, why cache invalidation is hard, and the choice between TTL and consistency
- 6 sections
Circuit Breakers for External Service Integrations
Connecting a critical system to external APIs: using timeouts, retries, and circuit breakers to stop one service's collapse from taking the whole system down.
- 7 sections
The Serverless Migration Decision: Cold-Start and Vendor Lock-in
Before you move to FaaS: the real cost of cold-start latency, vendor lock-in risk, and the workloads where serverless actually pays off
- 6 sections
The BFF Pattern: A Separate API Layer for Mobile and Web
Separate API layers for mobile and web: the hidden cost of bending one API to fit every client, and when a BFF is actually warranted
- 7 sections
Synchronous or Asynchronous? The Line Between HTTP and the Queue
Should a job run inside the HTTP request or go to a queue? The decision line, drawn through response time and fault tolerance
- 5 sections
Event-Driven Architecture: When It Saves You, When It Adds Complexity
The price of loose coupling through events: balancing the flexibility it buys against the risk of making your system's flow impossible to trace
- 5 sections
Replaying a Dead-Letter Queue Without Making It Worse
The DLQ filled up during an outage and you want it back. Naive replay re-poisons the queue or double-fires side effects. The safe shape: reset, dry-run, sandbox-first, select.
- 4 sections
Validating the Schema at the Edge of the Queue
A message's data is an untyped contract the queue won't check. Validate it at the edge: producer-side before publish, consumer-side as a safety net, against a per-URN schema
- 7 sections
Idempotency: When the Same Message Arrives Twice
At-least-once delivery means a handler will see the same message twice. The idempotency key, where it comes from, and the dedupe that survives a crash
- 5 sections
Namespace Isolation for a Shared Redis
The pattern I use to avoid key collisions and accidental deletes when a single Redis instance is shared across several projects
- 6 sections
A PostgreSQL Backup Strategy with pgBackRest
pg_dump alone is not a backup. A PITR-capable, compressed, verifiable backup architecture with pgBackRest.
- 6 sections
Why Do Laravel Queues Slow Down in Production?
Laravel queue workers are flawless locally and slow in production. The five most common reasons developers overlook.
- 6 sections
Nginx + PHP-FPM Pool Separation
The concrete benefits of defining a separate pool per application instead of a single PHP-FPM pool when running multiple PHP apps on one VPS
- 6 sections
Multiple DB Users with pgBouncer auth_query
A practical setup for dynamic user authentication via `auth_query` instead of `userlist.txt` when running pgBouncer