# Awesome Software and Architectural Design Patterns

> A curated list of software and architecture related design patterns.

Software design pattern - A general, reusable solution to a commonly occurring problem within a given context in software design. It is a description or template for how to solve a problem that can be used in many different situations.

## Contents

- Programming language design patterns
- General Architecture
- Cloud Architecture
- Serverless Architecture
- Micro services & Distributed Systems
- Internet of things
- Big Data
- Machine Learning
- Databases and storage
- DevOps & containers
- Mobile
- Front End Development
- Security

## Programming Language Design Patterns

- AngularJS
  - design patterns
- C#
  - design-patterns
  - design-patterns-for-human - ultra simplified explanation to design patterns.
  - Design Patterns Library
- C++
  - design-patterns
- Closure
  - design-patterns
- Go
  - design-patterns
- Java
  - sourcemaking - patterns and anti patterns.
  - oodesign - patterns catalog with UML diagrams.
  - design-patterns
  - effective-java patterns - patterns from the Effective Java book.
  - Design patterns implemented in Java
  - Effective-Java-3rd-Joshua-Bloch
- JavaScript
  - es6 design patterns
  - humans - ultra simplified explanation to design patterns.
  - design-patterns
  - design patterns by addy osmani
- Kotlin
  - design-patterns
- Node
  - Real world design patterns with Node.js
  - Node.js Design Patterns
- Object Oriented
  - Design-Patterns-Elements-Reusable-Object-Oriented
  - Head-First-Design-Patterns-Brain-Friendly
  - Object Design Style Guide
- PHP
  - humans - ultra simplified explanation to design patterns.
  - design-patterns
- Python
  - design-patterns
  - PyPattyrn - A simple library for implementing common design patterns.
  - Python Design Patterns
  - Design Patterns in Python
  - Django Design Patterns and Best Practices
- React
  - design-patterns
  - react-bits
  - reactpatterns.com
- Ruby
  - design-patterns
- Rust
  - design-patterns
- Scala
  - design-patterns
- Swift
  - design-patterns
- TypeScript
  - design-patterns
- UML
  - design-patterns quick reference
  - design-patterns cheat-sheet
- Vue.js
  - Vue Patterns - Useful Vue patterns, techniques, tips and tricks and curated helpful links.
- Elixir
  - design-patterns
  - the-pipeline - The Pipeline is defined by a collection of functions that take a data structure as an argument and return the same type of data structure

## General Architecture

- 10 common architectural patterns - 10 Common software architectural patterns in a nutshell.
- reactive design patterns - This website accompanies the book Reactive Design Patterns by Roland Kuhn.
- scalable System Design Patterns - Scalable system design techniques.
- martin fowler - Catalog of Patterns of Enterprise Application Architecture.
- system-design-primer - Design large-scale systems.
- architecting-for-reliability - Architecting for Reliability Part 1/3.
- InnerSource Patterns - Patterns for implementing InnerSource, the use of open source principles and practices for software development within the confines of an organization.

## Cloud Architecture

- Cloud cost hacking - Patterns for reducing cloud costs.
- AWS cloud design patterns - The AWS Cloud Design Patterns (CDP).
- Azure cloud design patterns - Building reliable, scalable, secure applications in the cloud.
- cloud computing patterns - Cloud Computing Patterns.
- Google Cloud Solutions - Real business cases solutions with diagrams on GCP.
- saas tenant isolation strategies - Isolating Resources in a Multi-Tenant Environment
- design patterns for multi-tenancy - Architectural design patterns for multi-tenancy on AWS

## Serverless Architecture

- serverless architecture - Serverless Architecture: Five Design Patterns.
- solving problems in serverless - Patterns for Solving Problems in Serverless Architectures.
- serverless patterns - serverless microservice patterns for aws.
- serverless-reference-architectures - serverless microservice patterns with deployment scripts.
- serverless-patterns-collection - Serverless Patterns Collection.
- serverless-design-patterns-and-best-practices

## Micro services & Distributed Systems

- microservices - A pattern language for microservices.
- microservices-anti patterns - Microservices antipatterns and pitfalls.
- 12factor - The twelve-factor methodology.
- microservices-sync-vs-async - Microservices patterns, synchronous and asynchronous.
- message-queues - Comparing-message-queue-architectures.
- enterprise Integration Patterns - Patterns and Best Practices for Enterprise Integration.
- martinfowler - Patterns of Distributed Systems.

## Internet of things

- iot-communication-patterns - Strengths and Weaknesses of IoT Communication Patterns.
- design-patterns-for-iot - A Design Pattern Framework for IoT Architecture.

## Big Data

- mapreduce-patterns - Map-reduce patterns.
- streaming-realtime-analytics - 13 Stream Processing Patterns for building Streaming and Realtime Applications.

## Machine Learning

- distributed-ml-patterns - Distributed machine learning system patterns.

## Databases and Storage

- SQL
  - database tenancy patterns - Multi-tenant SaaS database tenancy patterns
  - databaseanswers - Industry-specific SQL Data Models in 50 categories.
  - database-programmer - Table-design-patterns.
  - red-gate - five simple database design errors you should avoid.
  - talend - Data model design best practices.
  - sqlcheck - Anti-patterns in SQL queries.
  - Data warehouse patterns - ETL and ELT design patterns for lake house architecture using Amazon Redshift
- NOSQL
  - nosql resilience patterns - Practical NoSQL resilience design pattern for the enterprise.
  - nosql-patterns - Pragmatic Programming Techniques.
  - mongodb - Mongodb design patterns.
  - MongoDB Applied Design Patterns
  - DynamoDB design patterns- Advnaced design patterns for Amazon DynamoDB
  - Redis applied design patterns - Redis Applied Design Patterns book
- Storage
  - storage patterns- Comparing your on-premises storage patterns with AWS Storage services
  - S3 Design Patterns - Best Practices Design Patterns: Optimizing Amazon S3 Performance

## DevOps & containers

- containerspatterns - There are a Thousand Ways to Use Containers.
- kubernetes - Kubernetes Production Patterns.
- container-design-patterns - Container Design Patterns for Kubernetes Pods Design.
- best-practices-for-shell-scripts - Best practices for shell scripts.
- kubernetes patterns - Presentation around the book kubernetes paterns.
- kubernetes patterns book
- cdk patterns - cdk patterns.
- CDK Construct Catalog - CDK construct catalog.

## Mobile

- IOS
  - ios-architecture-patterns
- Android
  - design-patterns-for-android - Common Design Patterns for Android.
  - mvc-mvp-and-mvvm - The MVC, MVP, and MVVM Smackdown.

## Front-End Development

- user Interface - User Interface Design patterns.
- oocss-acss-bem-smacss - OOCSS, ACSS, BEM, SMACSS: what are they? What should I use?
- css-protips - A collection of tips to help take your CSS skills pro.
- responsive design patterns - A collection of patterns and modules for responsive designs.
- [front-End Architecture]
  - mv* - MVC/MVP/MVVM/CLEAN/VIPER/REDUX/MVI/PRNSAASPFRUICC.
  - martinfowler - GUI Architectures.

## Security

- opensecurityarchitecture - Security Architecture Patterns.
- martinfowler - Web-security-basics.
- cloud-security - Cloud security architecture intro.
- owasp - Security by Design Principles.
- azure-security - Azure security best practices and patterns.

## Books

- Django Design Patterns and Best Practices
- MongoDB Applied Design Patterns
- Design-Patterns-Elements-Reusable-Object-Oriented
- Head-First-Design-Patterns-Brain-Friendly
- Effective-Java-3rd-Joshua-Bloch
- Node.js Design Patterns
- Game Programming Patterns
- Object Design Style Guide
- Spring Boot in Practice
- Designing Microservices

## Other Awesome Lists

- Other amazingly awesome lists can be found in the awesome list.

## Contributing

- Your contributions are always welcome! Please read the contribution guidelines first.

## License

To the extent possible under law, Dov Amir has waived all copyright and related or neighboring rights to this work.