Skip to content

Latest commit

 

History

History
660 lines (542 loc) · 35.3 KB

README.md

File metadata and controls

660 lines (542 loc) · 35.3 KB

Software Architect Handbook

UPDATE!: I will be updating this repository with a new structure that better supports Obsidian. This README won't be updated anymore and it will reference content from the /legacy folder. I'll iteratively move new versions of such content (and new stuff!) to ./READMEv2.md which will eventually become the main README and can be opened with Obsidian for better navigation.

What is software architecture?

System design

For a complete System Design study, you should also be familiar with Databases related topics such as CAP Theorem. This section assumes prior knowledge about such topics, but you can also read about those in this very same repo.

System Design - Case Studies

Problems Solutions
Instagram News Feed - Gaurav Sen Solution
Key-value store Solution
Unique ID generator in distributed systems Solution
URL shortener Solution
Web crawler Solution
Notification system Solution
News feed system Solution
Chat system Solution
Search autocomplete system Solution
Youtube Solution
Google Drive Solution

Design principles

Design patterns

What is a design pattern?

Base patterns

System-level or architectural patterns

Gang of Four Patterns

Please check the this repository for a detailed explanation and examples of each of the following patterns.

Creational Structural Behavioral
Abstract Factory Adapter Chain of Responsibility
Builder Bridge Command
Factory Method Composite Interpreter
Prototype Decorator Iterator
Singleton Facade Mediator
Flyweight Memento
Proxy Observer
State
Strategy
Template Method
Visitor

Domain logic patterns

Data source & persistence patterns

Object relational patterns

Behavioral patterns

Structural patterns

Metadata mapping patterns

Web presentation patterns

What are web presentation patterns?

Distribution patterns

Offline concurrency patterns

Session state patterns

Anti-Patterns

What is an Anti-Pattern?

Architectural Styles & Patterns

Recommended book: https://en.wikipedia.org/wiki/Pattern-Oriented_Software_Architecture

Three-Layer System (Martin Fowler)

REST: Representational State Transfer

Recommended reference: restfulapi.net

Domain-Driven Design

Overview

Microservices

Overview

Tools

Data storage

General concepts

Data Consistency

Data partitioning

Types

Relational Databases

Wide-column store

GraphQL

Software types

Although some techniques and patterns are relevant for all kinds of software, many are relevant for only one particular branch.

Operating systems

Linux

Refactoring & code smells

Programming paradigms

Structured programming

What is structured programming?

OOP: Object-oriented programming

Functional programming

What is functional programming?

Software Engineering Culture

Laws & Theorems

Working Methodologies

Testing

General concepts

About system-design and architecture

About software engineering

Common jargon

Tooling - Language Agnostic

  • Telepresence: tool that is aiming to make a hybrid local/remote developer workflow easier for Kubernetes users.
  • Pact: customer-driven contracts.

Technology specifics

Frontend

Frontend developer roadmap.