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.4. Combinators

1.5. Annotation

1.6. Pattern Matching

1.7. DSLs

1.9. ERD

1.10. Active Record

2. Systems Architecture

2.1. SOA

2.1.1. Business value is given more importance than technical strategy.

2.1.2. Strategic goals are given more importance than project-specific benefits.

2.1.3. Intrinsic interoperability is given more importance than custom integration.

2.1.4. Shared services are given more importance than specific-purpose implementations.

2.1.5. Flexibility is given more importance than optimization.

2.1.6. Evolutionary refinement is given more importance than pursuit of initial perfection.

2.2. Microservices Architecture Pattern

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.7. Functional Design and Architecture, Alexander Granin

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.9. Layered Architecture

2.10. Federation

2.11. API Registry

3. Architectural Patterns

3.3. Master-slave pattern

3.4. Pipe-filter pattern

3.5. Broker pattern

3.6. Peer-to-peer pattern

3.7. Event-bus pattern

3.8. Model-view-controller pattern

3.9. Blackboard pattern

3.10. Interpreter pattern

4. System Diagrams

4.1. C4

4.1.1. Context diagrams (level 1)

4.1.2. Container diagrams (level 2)

4.1.3. Component diagrams (level 3)

4.1.4. Code diagrams (level 4)

5. Methodologies

Author: Jason Walsh

Created: 2023-10-24 Tue 12:05

Validate