Git Product home page Git Product logo

architect-handbook's Introduction

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.