Skip to content
StackPractices

Tag: design

Browse 23 practical software engineering resources tagged with "design". Discover code recipes, design patterns, documentation templates, and in-depth guides to help you build, deploy, and maintain production-ready solutions involving design.

Design a Scalable API Gateway for Microservices

How to build an API gateway that routes requests, handles authentication, rate limiting, caching, and protocol translation between clients and backend microservices.

Build Resilient Systems with the Circuit Breaker Pattern

How to prevent cascading failures in distributed systems using circuit breakers with open, closed, and half-open states in Java, TypeScript, and Python.

Design Event-Driven Systems with Event Buses and Brokers

How to build loosely coupled systems using events, event buses, message brokers, and event sourcing for growth-ready asynchronous communication between services.

Distribute Traffic with Load Balancing Algorithms

How to distribute incoming requests across multiple servers using round-robin, least-connections, weighted, and consistent hashing algorithms with health checks and failover.

Microservices Communication Patterns

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

Resilient Microservices with Circuit Breakers, Retries

How to build fault-tolerant distributed systems using microservices patterns including circuit breakers, bulkheads, retries with backoff, and sagas for transaction management.

Multi-Tenancy Architecture

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

Retry with Exponential Backoff

Implement resilient retry strategies with exponential backoff, jitter, and circuit breaker integration for transient failure recovery.

Manage Distributed Transactions with the Saga Pattern

How to implement saga orchestration and choreography to maintain data consistency across microservices without distributed transactions or two-phase commit.

Service Discovery

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

Secure and Observe Microservices with a Service Mesh

How to deploy Istio or Linkerd to add mTLS, traffic management, observability, and policy enforcement to microservices without changing application code.

Workflow Engines

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

Bridge Incompatible Interfaces with the Adapter Pattern

How to integrate legacy APIs, third-party libraries, and incompatible interfaces using object adapters, class adapters, and facade adapters in Java, TypeScript, and Python.

Scale Read and Write Workloads with CQRS

How to separate read and write models using Command Query Responsibility Segregation for optimized queries, event sourcing, and independent scaling of read and write paths.

Model Complex Business Domains with Domain-Driven Design

How to structure code around business concepts using bounded contexts, aggregates, entities, value objects, and domain events to manage complexity in large applications.

Create Objects Flexibly with the Factory Pattern

How to use factory methods, abstract factories, and dependency injection containers to decouple object creation from usage and improve testability.

Build Maintainable Applications with Hexagonal Architecture

How to structure applications using ports and adapters to isolate business logic from frameworks, databases, and external services for testability and flexibility.

Implement Reactive Systems with the Observer Pattern

How to build event-driven, reactive systems using the observer pattern with pub/sub, event emitters, and reactive streams in JavaScript, Java, and Python.

Ensure a Single Instance with the Singleton Pattern

How to guarantee exactly one instance of a class exists in an application using lazy initialization, thread-safe creation, and registry-based singletons.

Swap Algorithms at Runtime with the Strategy Pattern

How to encapsulate interchangeable algorithms and behaviors using the strategy pattern with dependency injection, function pointers, and lambda strategies in Java, TypeScript, and Python.

Technical Specification Template

A template for writing technical specification documents for software projects.

ADR Template

A reusable template for Architecture Decision Records that capture context, decision, and consequences.

Domain-Driven Design (DDD) — A Practical Guide

Learn DDD fundamentals: bounded contexts, entities, value objects, aggregates, and how to model complex business domains in code.