StackPractices

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.

intermediate

Design a Scalable API Gateway for Microservices

Build an API gateway that routes requests, handles authentication, rate limiting, caching, and...

intermediate

Build Resilient Systems with the Circuit Breaker Pattern

How to prevent cascading failures in distributed systems using circuit breakers with open, closed,...

intermediate

Dependency Injection

Implement dependency injection to write testable, decoupled code across languages and frameworks.

intermediate

Design Event-Driven Systems with Event Buses and Brokers

How to build loosely coupled systems using events, event buses, message brokers, and event sourcing...

intermediate

Distribute Traffic with Load Balancing Algorithms

How to distribute incoming requests across multiple servers using round-robin, least-connections,...

advanced

Microservices Communication Patterns

Choose between synchronous and asynchronous communication patterns for resilient microservices...

advanced

Resilient Microservices with Circuit Breakers, Retries

How to build fault-tolerant distributed systems using microservices patterns including circuit...

advanced

Multi-Tenancy Architecture

Design multi-tenant applications with shared or isolated databases, tenant-aware routing, and data...

intermediate

Retry with Exponential Backoff

Implement resilient retry strategies with exponential backoff, jitter, and circuit breaker...

advanced

Manage Distributed Transactions with the Saga Pattern

How to implement saga orchestration and choreography to maintain data consistency across...

intermediate

Service Discovery

Implement service discovery with health checks, DNS-based resolution, and service registries for...

advanced

Secure and Observe Microservices with a Service Mesh

How to deploy Istio or Linkerd to add mTLS, traffic management, observability, and policy...

advanced

Workflow Engines

Orchestrate complex business processes with workflow engines, state machines, and long-running task...

intermediate

Build Async Pipelines with C# async/await and Task.Run

Build async pipelines in C# using async/await, Task.Run, Task.WhenAll, Task.WhenAny,...

intermediate

Concurrent Patterns with Go Goroutines and Channels

Build concurrent systems in Go using goroutines, channels, select statements, worker pools,...

intermediate

Scale Concurrent Applications with Java Virtual Threads

Scale Java applications with virtual threads from Project Loom. Use Thread.ofVirtual,...

java virtual-threads concurrency
intermediate

Build Async Systems with Rust Tokio Runtime

Build async systems in Rust using the Tokio runtime with tasks, channels, select, synchronization...

advanced

Set Up a GraphQL Federation Gateway with Apollo

Compose multiple GraphQL services into a single federated supergraph using Apollo Federation and a...

advanced

Implement Event Sourcing with CQRS in Python

Build an event-sourced system with CQRS separation using Python, event store persistence,...

advanced

Kafka Consumer Groups with Python for Scalable Streaming

Create Kafka consumer groups in Python with partition assignment, offset management, commit...

No results found.