MirahLabs Engineering Blog
Technical insights, tutorials, and architectures written by our design and backend engineers.
Database Isolation Levels: Read Uncommitted, Read Committed, Repeatable Read, and Serializable
Understand transaction isolation in relational databases. Learn how isolation levels prevent dirty reads, non-repeatable reads, and phantom reads.
The API-First Design Workflow: Designing APIs with OpenAPI and Swagger
Writing code before defining API specifications leads to integration delays. Discover the API-First design workflow using OpenAPI schemas and automated mock servers.
Database Sharding Strategies: When and How to Shard PostgreSQL
Database sharding distributes data across multiple PostgreSQL instances to scale beyond what a single server can handle. Learn horizontal sharding strategies, Citus, and when sharding is actually necessary.
Designing Notification Systems at Scale: Push, Email, SMS, and In-App
Notification systems are deceptively complex at scale. Learn how to design a unified notification engine that handles push, email, SMS, and in-app notifications with preference management, rate limiting, and retry logic.
CQRS and Event Sourcing: Patterns for High-Throughput Systems
CQRS (Command Query Responsibility Segregation) and Event Sourcing are powerful patterns for systems that need separate read and write optimization. Learn how they work together.
Event-Driven Architecture with Apache Kafka: Patterns and Pitfalls
Kafka enables high-throughput event streaming for decoupled microservices. Learn producer/consumer patterns, consumer groups, schema evolution, and how to avoid the most common EDA mistakes.