Software architecture
I love the idea of building truly offline first software where backend failing isn't a big deal. All operations are done locally (fast), then sync deltas to server. Like Replicache. Good example of such app is Linear.
My current preferred stack is NextJS/Prisma/Postgres/PostGraphile with some Go/Deno services. The Architecture of Open Source Applications has nice architecture insights.
Inspiration
Other
- Things Network Stack for LoRaWAN V3 - Lovely contribution + github & git flow + good docs.
- Deno Website
- gh CLI
Notes
- Two traits of a good architecture: 1. It should nudge you to do things in a scalable way by default. You should only pay for what you use. 2. When something gets slow, there should be a straightforward way to fix it.
- Tips to build a better software system
- Incremental improvement - implement a small version that works in a basic use case, then extend. Don't build it all in once.
- Reuse code. Don't reinvent the wheel
- Five whys - get to the root cause of why something should be done by asking yourself why many times. Understand the problem well before acting.
- Keep the solution as simple as possible. Minimization.
- Perfection can't be reached, so don't aim there. Be as good as necessary.
- Postpone complexity and introduce it only when really needed.
- Duplication is cheaper than the wrong abstraction, it's true. The right abstraction is still cheaper than both of those. Sometimes it's so much cheaper I've seen people build entire businesses from one insight. Duplicate where appropriate but don't stop hunting for the pattern.
- Real-time local sync engine is very important in providing great user experiences.
Links
- Awesome Software Architecture
- Awesome Software Architecture 2
- Software architect roadmap
- Ask HN: Resources on how Google/Facebook etc. approach software design? (2019)
- Unidirectional user interface architectures (2015)
- Software Architecture is Overrated, Clear and Simple Design is Underrated (2019) (Lobsters)
- Structurizr - Software architecture documentation hub.
- Ask HN: Are there any openly available software architecture documents? (2020)
- Depending Less on Structure (2019)
- Zero trust architecture design principles
- Real Life Architectures Archive
- Become a Better Software Architect
- Run Book / Operations Manual template for modern software systems
- How I write backends (HN) (Reddit)
- Universal Design Pattern (2008) (HN)
- The 12 Factor App - Methodology for building software-as-a-service apps. (Code) (HN)
- Introduction to Computer Systems course (2019)
- The Cloud (2019) (HN)
- Ask HN: Which are the best resources to learn software architecture? (2020)
- Cosmic Python - Simple patterns for building complex applications. (Code) (Book) (Article)
- Computer Systems: A Programmer's Perspective (Lab Assignments)
- Introduction to Computer Systems course (2019)
- Diagrams - Lets you draw the cloud system architecture in Python code. (Code) (HN) (TS lib) (HN)
- Scaling to 100k Users (2020)
- MVC is dead, it's time to MOVE on (2012) (HN)
- Krste Asanović Teaching - Great courses on software architecture.
- High Scalability - All Time Favorites
- Modern Software Over-Engineering Mistakes (2016)
- Simple Systems Have Less Downtime (2020) (HN)
- A primer on functional architecture (2020)
- Colloquium on Computer Systems videos
- Data-Oriented Architecture (2020) (HN) (HN)
- Ready for changes with Hexagonal Architecture (2020) (HN)
- List of Post-mortems (HN)
- Simplify Full-Stack Development with a Unified Architecture (2019)
- System Design Interview Questions – Concepts You Should Know (2020)
- The Twitter stack (2013)
- Data Oriented Design Resources
- Building Secure and Reliable Systems (2020) - Best practices for designing, implementing & maintaining systems. (HN) (PDF)
- Systems that defy detailed understanding (2020) (HN)
- Functional Design Patterns - Scott Wlaschin (2017)
- Combining event sourcing and stateful systems (2020)
- Solution Architecture links, articles, books, video lessons
- Increment - Print and digital magazine about how teams build and operate software systems at scale..
- Ask HN: I've been promoted to Architect. What do I need to learn/do to excel? (2020)
- Drawing good architecture diagrams (2020)
- Hints and Principles for Computer System Design (2019) (Updated)
- The Architecture of Open Source Applications (HN)
- What your developers are using: the application stack
- Ladders and Tar Pits - Using concepts from the papers “Out of the Tar Pit” and “Ladder of Abstraction”, we’ll examine what it means to build robust abstractions.
- 3factor app - Architecture pattern for modern full stack apps. (Code)
- Create diagrams with code using Graphviz (2020) (HN)
- Evolution of the precise code intel backend (2020)
- Hyperdeck Tech Stack (2020)
- HEY Stack (2020)
- Ask HN: How to avoid over-engineering software design for future use cases? (2020)
- The C4 model for visualising software architecture - Context, Containers, Components and Code.
- Modelling software architecture with PlantUML (2020)
- A terrible, horrible, no-good, bad day at Slack (2020) (HN)
- LOOPY - Tool for thinking in systems. (HN)
- Systems Performance: Enterprise and the Cloud book (2020)
- People of Systems & Architecture: James Mickens (2020)
- Systems design for advanced beginners (2020) (HN)
- Awesome System Design
- The System Design Manual - Learn how to design, build and operate large scale distributed systems.
- Organizing architectural katas (2020)
- Architecture Playbook - Use it to create better and faster (IT)Architectures. OSS Tools, templates and more for solving IT problems using real open architecture tools that work. (Code)
- Multi-tenant Architectures (2020) (HN)
- Principles for better design (HN)
- Clouddraw - Create cloud architecture diagrams in minutes.
- Introduction to the Modeling and Analysis of Complex Systems (2015)
- Performance Engineering of Software Systems MIT course (2018)
- SRE Classroom: exercises for non-abstract large systems design
- SRE Classroom: Distributed PubSub
- Monolith -> Services: A Sketchy Approach (2020) (HN)
- Testing Hexagonal Architecture (2020)
- Ask HN: What are good resources to learn system design? (2020)
- Modern-Day Architecture Design Patterns for Software Professionals (2020) (HN)
- A Modern Reddit Frontend (2016)
- What's your tech stack? (2020)
- The Importance of End-to-End Thinking in System Design (2020) (HN)
- System design for Twitter (2018)
- Unikernel and Immutable Infrastructures
- Backend development best practices
- Systems and failure reading list
- Real-world SRE: What not FAANG companies are doing (2020) (HN)
- Make Your Back End Layer as Thin as Possible (2020) (HN)
- Cloud Design Patterns
- Solutions Architecture Patterns - Contains solution architecture patterns which can be reused to build enterprise software systems. (Web)
- Scaling Cache Infrastructure at Pinterest (2020)
- Clean architecture: Domain-driven design (2020)
- BrainBoard - Design, Deploy and Depict powerful architectures.
- Uber’s Real-Time Push Platform (2020) (HN)
- Defold engine code overview (2020) (HN)
- System Design Interview - An Insider's Guide (Review) (HN) (Review)
- Great Ideas in Computer Architecture (Machine Structures) Course (2020)
- A Simple and Efficient Real Time Application Powered by Materialize’s TAIL Command (2021)
- Behaviors to avoid in a software architecture role (HN)
- Architecture.md (2021) (HN) (Lobsters)
- Architectural Decision Records - Software design choice that addresses a functional or non-functional requirement that is architecturally significant. (HN)
- Markdown Architectural Decision Records (Code)
- How to Communicate Architecture (2021)
- Building a modular software toolkit at Airtable (2021)
- Introduction to Event-Driven Architecture (2021)
- A Clear Architecture - Pragmatic & opinionated implementation of the Clean Architecture with a fixed base layout and simple-to-follow rules and conventions.
- Requirements in Model-Based Systems Engineering (2021)
- Importance of Conceptual Integrity in System Design (HN)
- Monolith First (2015) (HN)
- Domain-Driven Hexagon - Guide on Domain-Driven Design, Hexagonal architecture, best practices etc.
- Modules, monoliths, and microservices (2021) (HN)
- Tiered Cache Smart Topology (2021)
- Using Betas to Deploy New Features Safely (2021)
- How DogeHouse will Scale to the Moon (2021)
- Data-Oriented Programming Book (2021) (Code)
- Internet Archive Infrastructure (2021) (HN)
- Michael Perry on Immutable Architecture (2021)
- In Search for a Perfect Access Control System (2021)
- Preemptive Pluralization is (Probably) Not Evil
- Patterns in application-layer protocol design
- The Architecture Behind A One-Person Tech Startup (2021) (HN)
- What event sourcing is not about (2021)
- Scaling LiveJournal (2007)
- Software Infrastructure 2.0: A Wishlist (2021) (HN)
- Computer Architecture - Thoughts from Jon Masters.
- DataHub: Popular metadata architectures explained (2020)
- Domain Driven Design —— Can it work on Infrastructure Software Development? (2021)
- Product Hunt Architecture (2021)
- Immutable Infrastructure: Reliability, consistency and confidence through immutability (2020)
- Awesome Software Architecture Books (HN)
- The Baked Data architectural pattern (2021) (HN) (Lobsters)
- Ask HN: Has anyone fully embraced an event-driven architecture? (2021)
- What tech stack do you use in your SAAS product? (2021)
- Ask HN: Companies of one, what is your tech stack? (2021)
- From synchronous service calls to message-passing dataflow systems (2019)
- The Persistent Gravity of Cross Platform (2021) (HN)
- MangaDex infrastructure overview (HN)
- Multiperspective Diagramming (2021) - Guide for system, software, cloud, network, and other engineers.
- Architecting Modern Data Platforms Book (2018) (Review)
- Opinionated project architecture for Full-Stack JavaScript Applications
- Clean Architecture by Robert C. Martin Book (2007) (Notes)
- Technology decisions for startups (2021)
- Scaling Large Production Clusters with Partitioned Synchronization (2021)
- Local-first software with Martin Kleppmann (2021)
- How to Safely Think in Systems (2021) (HN)
- The lost art of software design (2021)
- Software Architecture Patterns (2021) (HN)
- Software architecture patterns Book (2015)
- Fundamentals of Software Architecture Book (2020)
- Netflix's Cloud Edge Architecture (2021) (Tweet)
- Processing billions of events in real time (2021) (HN)
- Simlin - System dynamics modeling tool. (Code)
- Living with single-tenant and multi-tenant architectures (2021)
- Event Sourcing Is Hard (2019) (HN)
- Cache warming at Netflix: Leveraging EBS for moving petabytes of data (2021) (HN)
- System Design Mock Interview: Design TikTok ft. Google TPM (2021)
- Amazon System Design Interview: Design Parking Garage (2021)
- Event Sourcing Explained (2020)
- Widget Driven Development (2021) (HN)
- Ask HN: What tech stack would you use to build a new web app today? (2021)
- Ask HN: Which tech stack is the most fun? (2021)
- Prodspec and Annealing (2021)
- 1 Year of Event Sourcing and CQRS (2018)
- SystemDesign.org - Textbook for System Design Interviews.
- The Software Architecture Chronicles (Code)
- Documenting Software Architecture (2019)
- Give me /events, not webhooks (2021) (HN)
- Desired state systems (2022)
- Designing WhatsApp (2022)
- Data-Oriented Programming is dope (2022)
- Domain Message Flow Modelling
- Causal's multi-dimensional spreadsheet calculation engine
- Session-lived Application Backends (2022) (HN)
- Building single-page-apps with PostgREST (HN)
- Read “Data and Reality” (2022) (HN)
- Single dependency stacks (HN)
- ADR Tools - Command-line tools for working with Architecture Decision Records.
- Ask HN: Easiest way to build a CRUD app (2022)
- The different types of events in event-driven systems (2022) (HN)
- How we split our code base down the middle (2019)
- Recurring ideas in software development and architecture (2022)
- Successful ($1B+) tech companies that use an architecture that's a monolith (2022)
- Asynchronous Messaging and Eventing Resources
- Some benefits of simple software architectures (2022)
- A Sketch of the Biggest Idea in Software Architecture (2022)
- The Catalog of Design Patterns
- Ask HN: Where are all the cool architecture diagrams? (2022)
- Log4brains - Log and publish your architecture decisions (ADR).
- No Ghosts! (2022) - Proposes and explores a design principle for components in complex software systems.
- Polylith is a functional software architecture at the system scale (HN)
- Data Mesh Architecture (HN)
- Ask HN: Codebases with great, easy to read code? (2022)
- Backend best practices
- You Are Not Google (2017) (HN)
- In defense of simple architectures (HN)
- Ask HN: How to Learn Software Architecture? (2022)
- Ask HN: Where can I see many examples of real companies' software architecture? (2022)
- Good sample multi-tier web apps for demos (2022)
- More control with idempotency (2022)
- Examples of web apps built with Entity Component System (2022)
- Simple Framework For Mobile System Design Interviews
- Clean Architecture Example Project - Use-case based hexagonal architecture, or ports and adapters architecture.
- Design Deck - Open-source collection of 160+ system design flash cards.
- Luma's Tech Stack (2021)
- System Design Repository - All things System Design. Books, Blog Posts, Interview questions etc.
- System Design Resources
- Let's build an Entity Component System from scratch (2022) (Tweet)
- What would you use to build a real-time sync & offline app in 2022?
- Ask HN: Visualizing software designs, especially of large systems (if at all)? (2022)
- Entity Component System FAQ
- Ask HN: Why aren't code diagram generating tools more common? (2022)
- Evolutionary Architecture - Collection of best practices when designing an server-side and client-side architecture.
- Learnings from clean architecture
- The cost of convenience (2022)
- Tools for managing (i.e. analysing and enforcing) the architecture of your code base
- Blackbird: A reference architecture for local-first connected mobile apps (2022)
- W, X, and Z: The Layers of a System (2022)
- Diagrams as Code 2.0 • Simon Brown (2021) (HN)
- Target: Hardening the Registers (2022) (HN)
- Companies Using RFCs or Design Docs and Examples of These (2022)
- Revisiting the principles of data-oriented programming (2022) (HN)
- System Design Bytes for Enthusiasts
- Domain Driven Design (2022)
- Improving distributed caching performance and efficiency at Pinterest (2022) (HN)
- Gitlab Architecture Overview (HN)
- Ask HN: Resources on learning System Design (back end/data engineering)? (2022)
- Awesome Software Architecture
- Ask HN: What is best way to do hands-on practice for system design? (2022)
- Nile - Build the control plane for your infrastructure SaaS product.
- The disproportionate influence of early tech decisions (2022) (HN)
- Scale up your app with Microfeatures (2022)
- Ask HN: Who do you talk to about system architecture and design? (2022)
- Ask HN: Is my software stack choice sound? (2022)
- What do you use to visualize your infrastructure? (2022)
- Architecture Notes - System Design & Software Architectures Explained.