Skip to main content

Software Architecture Patterns

General

Diagramming Software

  • Creating Software with Modern Diagramming Techniques • Discussing his book about creating version-controlled diagrams with Mermaid • Ashley Peacock 📺
  • Add more diagrams to repos? At multiple folder levels? Benefit vs risk of falling out of date?

Small vs Large Scale Architecture Patterns

  • Larger Scale Software Development (and a Big Trap) • An overview of a number of simple-to-complex app architecture patterns with the overall recommendation to build even small side projects with scaling in mind • Code to the Moon 📺

Distributed systems

Messaging / event streaming / pub-sub

State machines

Domain-Driven Design

  • What Is Event Storming? | Lucidchart Blog
  • Really enjoying Scott Wlaschin’s approach to implementing DDD using a functional paradigm (instead of the traditional OOP one):
    • The software is implemented as a pipeline composed of smaller pipelines, built by composing small functions
    • I/O is kept separate from domain logic and ideally pushed to the start/end of each use case
    • The domain is modeled using the type system by avoiding primitive types and preferring types named using ubiquitous domain language that compose smaller types and eventually model the entire system in terms of inputs and outputs at every level
    • Encourages ensuring every function takes inputs and returns a result making explicit what it accomplished, even if that was just a decision (which can be represented by an enum expressed in domain-specific terms)
    • Beware any function that takes no inputs or returns no result! That makes the domain modeling less explicit.
    • Resources:

Microservices

  • Stop Creating Microservices | Prime Reacts • To avoid network latency and deployment complexity, you probably want modules in a monolith instead • The Primeagen 📺
  • Death By A Thousand MicroService | Prime Reacts • A monolith is almost always a simpler and more performant architecture than microservices, which sounds like a great way to break down a problem into smaller pieces but end up adding maintenance complexity and network/serialization lag • The Primeagen 📺

Hexagonal Architecture

Clean Architecture

Folder Structure

  • The BIGGEST Folder Structure MISTAKE on .NET • Regardless of your application architecture, organizing folders by feature rather than by technical concepts will always make your codebase more understandable to new teammates • Gui Ferreira 📺

Inbox