awesome-software-architecture

Architecture guides

A curated collection of resources and articles on software architecture, patterns, and principles.

🚀 A curated list of awesome articles, videos, and other resources to learn and practice software architecture, patterns, and principles.

GitHub

8k stars
122 watching
666 forks
last commit: 23 days ago
Linked from 2 awesome lists

architectural-patternsarchitectural-stylesarchitectureawesome-listclean-architecturedddddd-architecturedesign-patterndesign-patternsdesign-systemsevent-driven-architecturemicroservicemicroservicesmicroservices-architecturemodular-monolithsonion-architectureoopsoftware-architecturesystem-designvertical-slice-architecture

Awesome Software Architecture / Contents / Software Architecture

Software Architecture

Awesome Software Architecture / Contents / Actor Model Architecture

Actor Model Architecture
Akka .NET
Microsoft Orleans
ProtoActor

Awesome Software Architecture / Contents / Algorithms

Algorithms

Awesome Software Architecture / Contents / AI

AI
AI - RAG

Awesome Software Architecture / Contents / Clean Architecture

Clean Architecture

Awesome Software Architecture / Contents / Onion Architecture

Onion Architecture

Awesome Software Architecture / Contents / Hexagonal Architecture

Hexagonal Architecture

Awesome Software Architecture / Contents / Vertical Slice Architecture

Vertical Slice Architecture

Awesome Software Architecture / Contents / Event Driven Architecture

Event Driven Architecture

Awesome Software Architecture / Contents / Service Oriented Architecture

Service Oriented Architecture

Awesome Software Architecture / Contents / Domain Driven Design

Domain Driven Design
Value Objects
Aggregation
Anemic Domain Model
Rich Domain Model
Domain Model
Domain Service
Application Service
Domain Events
Integration Events
Bounded Context
Infrastructure
Tactical Design Patterns
Strategic Design Patterns
Mappings
Domain Primitives
Enum
Exception and Validation

Awesome Software Architecture / Contents / Data Driven Design

Data Driven Design

Awesome Software Architecture / Contents / CQRS

CQRS

Awesome Software Architecture / Contents / Microservices

Microservices
Communication
Composite UI
Service Boundaries
Testing
API Gateway
API Gateway - Ambassador
API Gateway - Kong
API Gateway - Ocelot
Observability
Observability - Distributed Tracing
Observability - Monitoring
Observability - Diagnostics
Observability - Logging
Observability - CorrelationId
Observability - Tools - EFK
Observability - Tools - ELK
Observability - Tools - Fluent Bit
Observability - Tools - FluentD
Observability - Tools - Loki
Resiliency
Resiliency - Idempotency
Resiliency - High Availability
Security
Security - Key Vault
Tools - CAP
Tools - Dapr
Tools - Mass Transit
Tools - NService Bus
Tools - SteelToe
Tools - Tye
Tools - wolverine

Awesome Software Architecture / Contents / Modular Monolith

Modular Monolith

Awesome Software Architecture / Contents / Architectural Design Principles

Architectural Design Principles
CAP
Cohesion
Coupling
Command Query Separation
Cross Cutting Concerns
Dependency Inversion
DRY
Encapsulation
Fail Fast Design Principles
Composition Over Inheritance
GRASP
Interface Segregation
Inversion Control
KISS
Open Closed Principles
Persistence Ignorance
Single Responsibility
Strangler Fig Pattern
Solid
Yagni

Awesome Software Architecture / Contents / Design Patterns

Design Patterns
Adapter Pattern
Builder
Chain of Responsibility
Command Message Pattern
Command Pattern
Decorator Patterns
Factory Patterns
Mediator Patterns
Observer Patterns
Query-Object Patterns
Repository Pattern
REPR
Service Locator
Singleton
Specification Pattern
State Pattern
Strategy Patterns
Transaction-Script Patterns

Awesome Software Architecture / Contents / Cloud Design Patterns

Cloud Design Patterns
Ambassador Pattern
Anti Corruption Layer Pattern
BFF
Bulkhead Pattern
Circuit Breaker
Exactly One Delivery
Gateway Aggregation
Gateway Pattern
Inbox Patterns
Outbox Patterns
Saga Patterns
Sidecar Patterns
Strangler Fig Patterns

Awesome Software Architecture / Contents / Cloud Best Practices

Cloud Best Practices

Awesome Software Architecture / Contents / Cloud Native

Cloud Native

Awesome Software Architecture / Contents / Platform as a Service

Heroku
Netlify
OpenShift
Rancher

Awesome Software Architecture / Contents / Infrastructure as a Service

Infrastructure as a Service
Nomad
Pulumi
Terraform

Awesome Software Architecture / Contents / DevOps

Containerd
Docker
Docker - Docker Compose
Kubernetes
Kubernetes - Services
Kubernetes - Deployment Strategies
Kubernetes - Deployment Tools - ArgoCd
Kubernetes - Deployment Tools - Flux
Kubernetes - Deployment Tools - Helm
Kubernetes - Deployment Tools - Jenkins
Kubernetes - Deployment Tools - Kubernetes Operator
Kubernetes - Deployment Tools - Kustomize
Kubernetes - Ingress Controller
Kubernetes - Ingress Controller - Nginx
Kubernetes - Ingress Controller - Traefik
Kubernetes - Other Tools - K3s
Kubernetes - Other Tools - Kind
Kubernetes - Other Tools - Tilt

Awesome Software Architecture / Contents / Reverse Proxy - Load Balancing

Load Balancing
Reverse Proxy
Envoy
HAProxy
MetalLB
Nginx
Traefik
Yarp

Awesome Software Architecture / Contents / Service Discovery And Registry

Service Discovery
Consul
Eureka

Awesome Software Architecture / Contents / Service Mesh

Service Mesh
Istio
Linkerd
Maesh

Awesome Software Architecture / Contents / Object Oriented Design

Object Oriented Design

Awesome Software Architecture / Contents / Systems Design

Systems Design
Consistent Hash

Awesome Software Architecture / Contents / Scaling

Scaling

Awesome Software Architecture / Contents / Back Pressure

Back Pressure

Awesome Software Architecture / Contents / Clean Code

Clean Code

Awesome Software Architecture / Contents / Abstraction

Abstraction

Awesome Software Architecture / Contents / Design Best Practices

Design Best Practices
12 Factor
Strongly Typed Ids
Thin Controllers

Awesome Software Architecture / Contents / Anti Patterns

Anti Patterns
Big Ball of Mud
Code Smells
God Object
Leaky Abstractions
Partial Object
Static Cling

Awesome Software Architecture / Contents / Eventual Consistency

Eventual Consistency

Awesome Software Architecture / Contents / Distributed Transactions

Distributed Transactions

Awesome Software Architecture / Contents / Distributed Locking

Distributed Locking

Awesome Software Architecture / Contents / Eventual Consistency

Eventual Consistency

Awesome Software Architecture / Contents / RESTful API Design

RESTful API Design

Awesome Software Architecture / Contents / gRPC

gRPC

Awesome Software Architecture / Contents / Caching

Caching

Awesome Software Architecture / Contents / Functional Programming

Functional Programming

Awesome Software Architecture / Contents / Concurrency

Concurrency

Awesome Software Architecture / Contents / Sharding

Sharding

Awesome Software Architecture / Contents / Refactoring

Refactoring

Awesome Software Architecture / Contents / Database

Database - NoSQL - NoSQL
Database - NoSQL - MongoDB
Database - NoSQL - RavenDB
Database - NoSQL - Cosmosdb
Database - NoSQL - Documentdb
Database - Relational - Relational Database
Database - Relational - Postgres
Database - Relational - SQL
Database - Replication
Database - Sharding

Awesome Software Architecture / Contents / Microsoft Azure Cloud

Microsoft Azure Cloud
AKS
Azure API Management
Azure App Service Plan
Azure App Service
Azure Arc
Azure Configuration
Azure Functions
Azure Load Balancing
Azure Logic App
Azure Resource
Azure Resource Manager
Azure SQL Server
Azure Security - Azure Key Vault
Azure Security - Azure Active Directory
Azure Messaging
Azure Messaging - Azure Service Bus
Azure Messaging - Azure Event Grid
Azure Messaging - Azure Event Hub
Azure Messaging - Azure Queue
Azure Messaging - Azure Web Pub Sub
Azure NoSQL
Azure NoSQL - CosmosDB
Azure Storage
Azure Storage - Blob Storage
Azure Storage - File Storage
Azure Storage - Queue Storage
Azure Storage - Table Storage

Awesome Software Architecture / Contents / Modeling

Modeling
Architecture Diagram
Class Diagram
Component Diagram
Conceptual Modeling
Data Model Notations
Domain Stroytelling
ER Diagrams
Event Modeling
Event Storming
Logical Modeling

Awesome Software Architecture / Contents / Open Source

Open Source

Awesome Software Architecture / Contents / Code Review

Code Review

Awesome Software Architecture / Contents / Interview

Interview

Awesome Software Architecture / Contents / Architecture Decision Records (ADR)

Architecture Decision Records (ADR)

Awesome Software Architecture / Contents / Micro-Frontend

Micro-Frontend

Awesome Software Architecture / Contents / Others

Others

Backlinks from these awesome lists: