Architecture of Open-Source Applications (books)
High-level resources/links around software architecture--styles, analysis, etc.
The 12-Factor App:
* I. Codebase: One codebase tracked in revision control, many deploys
* II. Dependencies: Explicitly declare and isolate dependencies
* III. Config: Store config in the environment
* IV. Backing services: Treat backing services as attached resources
* V. Build, release, run: Strictly separate build and run stages
* VI. Processes: Execute the app as one or more stateless processes
* VII. Port binding: Export services via port binding
* VIII. Concurrency: Scale out via the process model
* IX. Disposability: Maximize robustness with fast startup and graceful shutdown
* X. Dev/prod parity: Keep development, staging, and production as similar as possible
* XI. Logs: Treat logs as event streams
* XII. Admin processes: Run admin/management tasks as one-off processes
Don't Start with Microservices--Monoliths are your friend
Reading
- Architectural Styles and the Design of Network-based Software Architectures - Roy Thomas Fielding
- Best Kept Secrets of Peer Code Review
- Building Secure & Reliable Systems - Heather Adkins, Betsy Beyer, Paul Blankinship, Piotr Lewandowski, Ana Oprea & Adam Stubblefield (PDF)
- Domain Driven Design Quickly
- Domain-Driven Design Reference - Eric Evans
- Domain-Driven Design: The First 15 Years. Essays from the DDD community - Domain-Driven Design Europe (HTML, PDF, ePub) (Leanpub account or valid email requested)
- Exploring CQRS and Event Sourcing - Dominic Betts, Julián Domínguez, Grigori Melnik, Mani Subramanian, Fernando Simonazzi (EPUB, PDF - code samples)
- Guide to the Software Engineering Body of Knowledge (email adddress requested)
- How to Design Programs
- How to Write Unmaintainable Code
- Migrating to Cloud-Native Application Architectures (email address requested) (PDF)
- OAuth - The Big Picture (email address requested)
- Practicing Domain-Driven Design - Part 1 - Scott Millett (Leanpub account or valid email requested)
- Serverless apps: Architecture, patterns, and Azure implementation
- Serverless Design Patterns and Best Practices - Brian Zambrano (Packt account required)
- Shape Up - Stop Running in Circles and Ship Work that Matters - Ryan Singer (PDF)
- Site Reliability Engineering
- Software Architecture Patterns (email address requested, not required)
- Software Engineering for Internet Applications
- Source Making Design Patterns and UML
- Test Driven Development, Extensive Tutorial - Grzegorz Gałęzowski
- The Site Reliability Workbook - Betsy Beyer, Niall Richard Murphy, David K. Rensin, Kent Kawahara and Stephen Thorne
Interesting exemplars/templates/links
Detail Pages:
- "Grow Your Own BaaS" In this paper, the concepts of growing your own Backend-as-a-Service (BaaS) platform using vendor agnostic concepts are explored. The proposal is to define, architect, and design a heterogeneous micro-applications based platform.
- "Serverless" The serverless architecture, usually implying smaller atoms of functionality executing on cloud servers.
- Archimate DSL A DSL for generating Archimate diagrams from source.
- Architectural Decision Records (ADR) An Architectural Decision Record captures a single Architectural Decision, such as often done when writing personal notes or meeting minutes; the collection of ADRs created and maintained in a project constitute its decision log. All of these are within the topic of Architectural Knowledge Management.
- Clean Architecture Bob Martin's screed on architecture. Captured for pedagogical analysis.
- Data, context, and interaction (DCI) A paradigm used in architecture to program systems of communicating objects; it separates the domain model (data) from use cases (context) and roles that objects play (interaction).
- Data-Oriented Design A data-centric design approach, typically guided by low-level performance concerns in game development scenarios.
- Design Docs (Google) How Google does design docs
- Diagrams
- Diagrams As Code Generate valid diagrams from source code.
- Effective Enterprise Java A collection of topics for effective enterprise systems.
- Entity Component Systems (ECS) A common architecture/design pattern for building games.
- Event-Driven .NET An Event Driven Microservices Platform for .NET.
- Event Sourcing
- FIDO Authentication "The answer to the world's password problem."
- Free Programming Books A collection of free learning resources (books).
- Handbook of Software Architecture Grady Booch's "thoughts" site.
- Hexagonal architecture Divides work inside and outside of an app instead of into layers.
- High Scalability (Website) notes Collection of notes from the blog http://highscalability.com/
- Icepanel Bridge the gap between design and reality with collaborative modelling; designed for agile teams.
- Ilograph Diagramming Language (IDL) Ilograph diagrams are defined using a the Ilograph Diagramming Language (IDL). IDL is a powerful, declarative, YAML-based language. Each Ilograph diagram defines its resources and perspectives in IDL.
- JAMStack Javascript, APIs, and Markdown presentation layer
- Lawrence Livermore National Labs (LLNL) Software portal for projects built at LLNL.
- Mermaid Generation of diagram and flowchart from text in a similar manner as markdown.
- Microservices Reading on microservices architecture.
- Onion Architecture Layers presented as circles, each wrapping around a previous one, forming an "onion".
- Package by Feature Architecture Capitalizes on cohesion and coupling by moving the layering a level down — to the class level — and focusing on coupling and cohesion at a higher level by keeping all classes related to the same feature in the same package/module.
- Patterns A collection of books and reading on patterns.
- Platform Revolution How networked markets are transforming the economy and how to make them work for you.
- Polylith A software architecture that applies functional thinking at the system scale. It helps us build simple, maintainable, testable, and scalable backend systems.
- Project Tye An experimental developer tool that makes developing, testing, and deploying microservices and distributed applications easier.
- Representational State Transfer (REST) Collection of links and reading and notes on Fielding's dissertation.
- Semantic Web A model of the web based more around its founder's original intent (hyperlinks and full-state "documents").
- Service Design Patterns Collection of patterns specific to services.
- SOA Design Patterns A collection of patterns specific to service-orientation.
- Software reading A collection of reading about software.
- Structurizr Builds upon "diagrams as code", allowing you to create multiple diagrams from a single model, using a number of tools and programming languages.
- Teach Yourself Computer Science A collection of links for learning CS for those who didn't study it at school.
- WWW-Architecture Architecture thoughts about the Web itself
- yUML Create and share simple UML diagrams in your wikis, forums and issue trackers.
Last modified 05 July 2022