Software Design and Architectural Patterns

Table of Contents

1. Software Design

1.1. SOLID

In software engineering, SOLID is a mnemonic acronym for five design principles intended to make software designs more understandable, flexible, and maintainable.

1.5. Annotation

1.7. DSLs

1.9. ERD

2. Systems Architecture

2.4. Rainbow Architecture

  • Black: Cloud Provider with Platform Engineering
  • Grey: Application Containers with Vertical Infrastructure
  • White: Business and Product

2.5. PET Architecture

2.5.1. D: Dog

  • Provider
  • Accounts
  • Persistence

2.5.2. C: Cat

  • Container
  • Execution

2.5.3. F: Fish

  • Eventing
  • Application
  • Messaging
  • Mesh
  • Cache

2.5.4. B: Bird

  • CI/CD
  • Automation
  • Testing
  • Release Engineering

2.5.5. R: Reptile

  • Onboarding
  • Developer Tooling
  • Libraries

2.6. Reactive Design Patterns, Roland Kuhn with Brian Hanafee and Jamie Allen

  • Functional and Reactive Domain Modeling, Stephen Blackheath and Anthony Jones
  • Functional Reactive Programming, Stephen Blackheath and Anthony Jones
  • Functional and Reactive Domain Modeling, Debasish Ghosh
  • https://www.reactivemanifesto.org/

2.8. Event-Driven Architecture

Event-driven architecture (EDA) is a software architecture paradigm promoting the production, detection, consumption of, and reaction to events.

2.10. Federation

2.11. API Registry

3. Architectural Patterns

4. System Diagrams

5. Methodologies