herrera-ignacio / architect-handbook

Software Architect Handbook

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Software Architect Handbook

What is software architecture?

General Concerns

About Architecture

About Engineering

Design Principles

Refactoring

Programming Paradigms

OOP: Object Oriented Programming

Design Patterns

What is a design pattern?

Base Patterns

General / Architectural

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

Data Source & Persistence

Object Relational

Behavioral

Structural

Metadata Mapping

Distribution

Offline Concurrency

Session State

Anti-Patterns

What is an Anti-Pattern?

Types of Software

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

System Design

For a complete System Design study, you should also be familiar with Databases related topics such as CAP Theorem.

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

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

Data Consistency

Data partitioning

Relational Databases

Wide-column store

GraphQL

Technology specifics

Specifics that should be considered while developing a software solution relying on a particular technology.

Operating Systems

Linux

Data Science & Big Data

Software Engineering Culture

Laws & Theorems

Working Methodologies

Testing

Frontend

Frontend developer roadmap.

Glossary

Tooling - Language Agnostic

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

Z-Index, other repositories

About

Software Architect Handbook


Languages

Language:HTML 100.0%