architecture
Practical resources about architecture for software engineers.
186 results
Designing Systems That Scale
Software architecture is the art of making trade-offs. Every pattern — from microservices to event-driven systems — solves specific problems while introducing new constraints. Understanding these trade-offs is what makes an engineer an architect.
This hub collects guides and patterns for API gateways, load balancing, circuit breakers, sagas, and service meshes. Whether you are designing a new system or modernizing a legacy monolith, these resources provide the mental models and implementation details you need.
Design a Scalable API Gateway for Microservices
Build an API gateway that routes requests, handles authentication, rate limiting, caching, and...
Build Resilient Systems with the Circuit Breaker Pattern
How to prevent cascading failures in distributed systems using circuit breakers with open, closed,...
Dependency Injection
Implement dependency injection to write testable, decoupled code across languages and frameworks.
Design Event-Driven Systems with Event Buses and Brokers
How to build loosely coupled systems using events, event buses, message brokers, and event sourcing...
Distribute Traffic with Load Balancing Algorithms
How to distribute incoming requests across multiple servers using round-robin, least-connections,...
Microservices Communication Patterns
Choose between synchronous and asynchronous communication patterns for resilient microservices...
Resilient Microservices with Circuit Breakers, Retries
How to build fault-tolerant distributed systems using microservices patterns including circuit...
Multi-Tenancy Architecture
Design multi-tenant applications with shared or isolated databases, tenant-aware routing, and data...
Retry with Exponential Backoff
Implement resilient retry strategies with exponential backoff, jitter, and circuit breaker...
Manage Distributed Transactions with the Saga Pattern
How to implement saga orchestration and choreography to maintain data consistency across...
Service Discovery
Implement service discovery with health checks, DNS-based resolution, and service registries for...
Secure and Observe Microservices with a Service Mesh
How to deploy Istio or Linkerd to add mTLS, traffic management, observability, and policy...
Workflow Engines
Orchestrate complex business processes with workflow engines, state machines, and long-running task...
Build Async Pipelines with C# async/await and Task.Run
Build async pipelines in C# using async/await, Task.Run, Task.WhenAll, Task.WhenAny,...
Concurrent Patterns with Go Goroutines and Channels
Build concurrent systems in Go using goroutines, channels, select statements, worker pools,...
Scale Concurrent Applications with Java Virtual Threads
Scale Java applications with virtual threads from Project Loom. Use Thread.ofVirtual,...
Build Async Systems with Rust Tokio Runtime
Build async systems in Rust using the Tokio runtime with tasks, channels, select, synchronization...
Set Up a GraphQL Federation Gateway with Apollo
Compose multiple GraphQL services into a single federated supergraph using Apollo Federation and a...
Implement Event Sourcing with CQRS in Python
Build an event-sourced system with CQRS separation using Python, event store persistence,...
Kafka Consumer Groups with Python for Scalable Streaming
Create Kafka consumer groups in Python with partition assignment, offset management, commit...
No results found.