Design Patterns and Architectural Principles

Share on:

Top > Transversal > People and Process > Design Patterns and Architectural Principles

  • API Design: Links Not Keys - A comprehensive account on the use of links (rather than keys) in API payloads. See also HAL and HATEOAS.  πŸŒ
  • API Design: REST, OpenAPI and REST comparison - Guidelines for choosing the most appropriate API type for a given project.  πŸŒ
  • Arc42 - A template for architecture communication and documentation.  πŸŒ
  • BFF - Backends for Frontends (BFF) is a paradigm in which each user experience channel has its own API set. This is in opposition to the traditional paradigm in which a homogenous set of APIs serves multiple channels.  πŸŒ
  • Best practices for Unicode - Blog post explaining how Unicode works in layman terms.  πŸŒ
  • Bitemporal History - A design pattern that suggest the use of two time records in order to capture retroactive changes to time-stamped data entries. This is useful to differentiate between "the view of the world" at a given time, versus "the effective state of affairs" at the same time, once we learn the correct facts in the future.   πŸŒ
  • C4 - A model for visualising software architecture based on the notions of contexts, containers, components and code.  πŸŒ
  • CAP Theorem - The CAP (Consistency, Availability, Partition Tolerance) theorem establishes that in the presence of a network partition, one has to choose between consistency and availability.  πŸŒ
  • CRDT - A conflict-free replicated data type (CRDT) is a data structure which can be replicated across multiple computers in a network, where the replicas can be updated independently and concurrently without coordination between the replicas, and where it is always mathematically possible to resolve inconsistencies that might come up.  πŸŒ
  • Cache-aside Pattern - Also known as lazy caching, it is a pattern in which data is retrieved from the data story only if absent in the cache, at which time the cache is populated.  πŸŒ
  • Cattle vs Pets - A metaphor by Bill Baker, former Microsoft employee that says that servers in a scale-out system should be like cattle: "you number them and when they get sick, you shoot them" rather than pets: "You name them and when they get sick, your nurse them back to health."  πŸŒ
  • DORA Metrics - The DevOps Research and Assessments (DORA) metrics include Deployment Frequency (DF), Mean Lead Time for changes (MLT), Mean Time to Recover (MTTR), and Change Failure Rate (CFR).  πŸŒ
  • Design Patterns for Microservices - Collection of design patterns for microservices.  πŸŒ
  • Doherty Threshold - The statement, attributed to IBM’s Walter Doherty, that an application’s response time that is below 400ms increases productivity. It has been popularised by the AMC Studio’s TV show called Halt and Catch Fire.  πŸŒ
  • Domain-Driven Hexagon Architecture - This is an opinionated architectural model for architectures based both on the DDD and CQRS principles. It is also greatly influenced by the Clean Architecture ideas from Uncle Bob.  πŸŒ   πŸŒ
  • Evolutionary Database Design - A number of techniques that allow a database design to evolve as an application develops. The techniques rely on applying continuous integration and automated refactoring to database development.  πŸŒ
  • Expand and Contract - Also known as "Expand, Transition, or Contract", or "Parallel Change", it is a pattern for changing and modernising both applications and databases. It is particularly applicable in the latter, where migrations are traditionally manual and potentially catastrophic endeavours.   πŸŒ   πŸŒ   πŸŒ
  • HAL - Hypertext Application Language (HAL) is an Internet Draft standard convention for defining hypermedia such as links to external resources within JSON or XML code. It is relevant in the HATEOAS paradigm.  πŸŒ
  • HATEOAS - Hypermedia As The Engine Of Application State (HATEOAS) is a paradigm which involves sending related actions (complete URIs) along with data in REST responses.  πŸŒ
  • IDEALS - IDEALS (Interface segregation, Deployability, Event-driven, Availability over consistency, Loose coupling, Single responsibility) is a set of design principles for microservices.  πŸŒ
  • Local-First Software - A set of principles for software that enables both collaboration and ownership for users. Local-first ideals include the ability to work offline and collaborate across multiple devices, while also improving the security, privacy, long-term preservation, and user control of data.   πŸŒ
  • Monolith First - Martin's Fowler's observation that almost all successful microservice stories have started with a monolith that got too big and was broken up whereas almost all the cases where a system that was built as a microservice system from scratch, it has ended up in serious trouble.  πŸŒ
  • Observer Pattern - A software design pattern in which an object, called the subject, maintains a list of its dependents, called observers, and notifies them automatically of any state changes.  πŸŒ
  • Reversibility - An architectural principle that states that aspects of a system that are hard to change should be identified early on so that they can be made more flexible.  πŸŒ
  • SAGA - A pattern for distributed, long-lived transactions.  πŸŒ
  • SOLID - SINGLE (Single responsibility, Open/closed, Liskov substitution, Interface segregation, Dependency inversion) is a set of design principles for the software based on the OOP paradigm.  πŸŒ
  • STRIDE - A threat model based on the following dimensions: Spoofing identity, Tempering with data, Repudiation, Information disclosure, Denial of Service, and Elevation of privilege.   πŸŒ
  • Terrifically Simple JSON - Three conventions to use JSON in Web APIs in the simplest and most regular way possible.  πŸŒ
  • The 4+1 View Model of Software Architecture - A model for describing the architecture of software-intensive systems, based on the use of multiple, concurrent views (local, process, physical, development) plus scenarios (or use cases).  πŸŒ
  • The Twelve-Factor App - The Twelve-Factor App is a methodology for "software as a service" applications published by Heroku in 2011 which describes the best practices for software written against their platform. Many in the industry equate 12 Factor App with Cloud Native but the former is silent on many aspects intrinsic to modern cloud native architectures such as immutability, zero down-time deployments, self-healing and so on.  πŸŒ
  • Trunk Based Development - A source-control branching model, where developers collaborate on code in a single branch called trunk.  πŸŒ
  • Uncle Bob's Clean Architecture - Separation of concerns between enterprise business rules, application business rules, interface adapters, and frameworks.  πŸŒ
  • Write-behind Cache Pattern - A pattern for caching in which, unlike a write-through cache, updates are not immediately propagated to the data store flushed to it asynchronously at a later time.  πŸŒ

Before You Leave

🀘 Subscribe to my 100% spam-free newsletter!

website counters