Exploring Software Design and Architectural Patterns

Table of Contents

Software Design

SOLID

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

Combinators

Annotation

Pattern Matching

DSLs

ERD

Active Record

Systems Architecture

SOA

Business value is given more importance than technical strategy.

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

Intrinsic interoperability is given more importance than custom integration.

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

Flexibility is given more importance than optimization.

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

Microservices Architecture Pattern

Rainbow Architecture

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

PET Architecture

D: Dog

  • Provider
  • Accounts
  • Persistence

C: Cat

  • Container
  • Execution

F: Fish

  • Eventing
  • Application
  • Messaging
  • Mesh
  • Cache

B: Bird

  • CI/CD
  • Automation
  • Testing
  • Release Engineering

R: Reptile

  • Onboarding
  • Developer Tooling
  • Libraries

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/

Functional Design and Architecture, Alexander Granin

Event-Driven Architecture

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

Layered Architecture

Federation

API Registry

Architectural Patterns

Master-slave pattern

Pipe-filter pattern

Broker pattern

Peer-to-peer pattern

Event-bus pattern

Model-view-controller pattern

Blackboard pattern

Interpreter pattern

System Diagrams

C4

Context diagrams (level 1)

Container diagrams (level 2)

Component diagrams (level 3)

Code diagrams (level 4)

Methodologies

Author: Jason Walsh

j@wal.sh

Last Updated: 2024-10-30 16:43:54