Skip to content

zhashkevych/awesome-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 

Repository files navigation

Awesome Backend Engineer

Awesome PRs Welcome License: CC0-1.0

EN A curated and opinionated list of resources (English & Russian) for Backend developers that will help you organize & structure your learning path and knowledges. Inspired by Awesome CTO.

RU Структурированный список ресурсов для изучения Backend разработки, который поможет систематизировать свои знания и составить план обучения. Основан на личном опыте и самостоятельном изучении данной области. Вдохновлено Awesome CTO.

Contents

Basics

Computer Science

Main topics Основные темы
What is a computer and how it works? Что такое компьютер и как он работает?
Why do we need programming languages? What types of programming languages are out there? Зачем нужны языки программирования? Какие типы бывают?
Algorithms & Data Structures Алгоритмы и структуры данных
OOP Объектно ориентированное программирование
Concurrency & Parallelism Конкурентность и параллелизм

Resources (Ресурсы)

Programming Languages

Main topics Основные темы
Which language should you pick as a backend engineer? Какой язык выбрать backend-инженеру?
Trade-offs between compiled vs interpreted, typed vs dynamic Компромиссы: компилируемые vs интерпретируемые, типизированные vs динамические
Language-specific backend ecosystem (frameworks, package managers, tooling) Экосистема бэкенд-разработки для конкретного языка (фреймворки, пакетные менеджеры, тулинг)

Resources (Ресурсы)

Operating Systems & Linux

Main topics Основные темы
Processes, threads, memory management Процессы, потоки, управление памятью
File systems, I/O, syscalls Файловые системы, I/O, системные вызовы
Linux fundamentals for backend engineers Основы Linux для backend-инженеров
Shell scripting Shell-скриптинг

Resources (Ресурсы)

Version Control

Main topics Основные темы
Git fundamentals: commits, branches, merge, rebase Основы Git: коммиты, ветки, merge, rebase
Git workflows (trunk-based, GitFlow, GitHub Flow) Git-воркфлоу (trunk-based, GitFlow, GitHub Flow)
Resolving conflicts and undoing mistakes Разрешение конфликтов и отмена ошибок

Resources (Ресурсы)

Web Development & Networking

Main topics Основные темы
What is client-server architecture and HTTP? Что такое клиент-серверная архитектура и HTTP?
What is TCP/IP? Что такое стек TCP/IP?
What is DNS? Что такое DNS?
How authorization & authentication works? What is JWT? Как работает авторизация и аутентификация? Что такое JWT?
Proxy & Reverse Proxy Прокси и обратный прокси
Web servers. Nginx. Веб-сервер. Nginx
REST API Design Principles Принципы проектирования REST API

Resources (Ресурсы)

API Design

Main topics Основные темы
REST API design principles and maturity model Принципы проектирования REST и модель зрелости
GraphQL: when to use, trade-offs GraphQL: когда использовать, компромиссы
gRPC and Protocol Buffers gRPC и Protocol Buffers
API versioning strategies Стратегии версионирования API
OpenAPI/Swagger for documentation OpenAPI/Swagger для документации
Idempotency and error handling Идемпотентность и обработка ошибок

Resources (Ресурсы)

Databases

Main topics Основные темы
What are database and DBMS? Что такое база данных и СУБД?
What is a relational database? What is SQL? Что такое реляционная БД и SQL?
What are indexes & transactions? Что такое индексы и транзакции?
What are ACID properties? Which Isolation levels are out there? Что такое свойства ACID? Какие есть уровни изоляции транзакций?
What are NoSQL Databases? What are the differences between NoSQL & SQL? Что такое NoSQL? Какие различия между NoSQL и SQL?
What is databases normalization? Что такое нормализация БД?
What is Caching? What is Redis? Что такое кэширование? Что такое Redis?
What are replication and sharding? Что такое репликация и шардирование?
How to read query plans (EXPLAIN/ANALYZE)? Как читать план запроса (EXPLAIN/ANALYZE)?
What is Change Data Capture (CDC)? Что такое Change Data Capture (CDC)?
What are vector databases and when do you need them? Что такое векторные БД и когда они нужны?

Resources (Ресурсы)

Security

Main topics Основные темы
What is HTTPS and how does it work? Что такое HTTPS и как он работает?
What are main types of attacks and vulnurabilities in web applications? Какие существуют основные типы атак и уязвимостей в веб-приложениях?
What is SQL Injection? How to prevent it? Что такое SQL инъекция? Как ее предотвратить?
What is XSS Attack? How to prevent it? Что такое XSS атака? Как ее предотвратить?
How to store passwords/secrets in web app? Как хранить пароли/секреты в веб приложении?
How do OAuth2 and OpenID Connect work? Как работают OAuth2 и OpenID Connect?
What is CSRF and how to prevent it? Что такое CSRF и как его предотвратить?
How to manage secrets (Vault, KMS, env vars)? Как управлять секретами (Vault, KMS, env vars)?
Rate limiting as a defense against abuse and DoS Rate limiting как защита от злоупотреблений и DoS

Resources (Ресурсы)

Testing

Main topics Основные темы
The test pyramid: unit, integration, e2e Пирамида тестирования: unit, integration, e2e
Test-Driven Development (TDD) Разработка через тестирование (TDD)
Mocks, stubs, fakes — when to use which Mocks, stubs, fakes — когда использовать что
Contract testing for microservices Контрактное тестирование для микросервисов
Property-based testing Property-based тестирование
Load and performance testing Нагрузочное и performance тестирование

Resources (Ресурсы)

Design Patterns

Main topics Основные темы
SOLID principles Принципы SOLID
GoF patterns: creational, structural, behavioral GoF паттерны: порождающие, структурные, поведенческие
Enterprise application patterns (PoEAA) Паттерны корпоративных приложений (PoEAA)
Anti-patterns and when NOT to apply a pattern Антипаттерны и когда НЕ нужно применять паттерн

Resources (Ресурсы)

Architecture & Infrastructure

Main topics Основные темы
What are distributed systems? Что такое распределеные системы?
What is scaling? Horizontal vs Vertical scaling? How to scale web apps and databases? Что такое масштабирование? Горизонтальное vs Вертикальное масштабирование? Как масштабировать веб-приложения и базы данных?
What is CAP Theorem? What are CP and AP systems? Что такое CAP теорема? Как выглядят CP и AP системы?
What are Microservices? What patterns do they use? How to design microservices architecture? Что такое микросервисы? Какие паттерны они используют? Как их проектировать?
What is Event-Driven Architecture? Что такое Event-Driven архитектура?
What is Clean Architecture? How to implement it using your programming language / framework? Что такое Чистая Архитектура? Как имплеменировать ее в вашем ЯП / фреймворке?
How to deploy web applications? What is VPS? What is SSH? Как развертывать веб-приложения? Что такое VPS? Что такое SSH?
What is Docker? Why do we need it? Что такое Docker? Зачем он нужен?
What are cloud providers? How do you use them? Что такое клауд провайдеры и зачем они нужны?
How to automize testing & deployment? What is CI/CD? How to implement it? Как автоматизировать тестирование и деплоймент? Что такое CI/CD и как его настроить?
What is SSL Certificate? How to set it up for your web app? Что такое SSL сертификат? Как его настроить?
What is Kubernetes? When should you use it? Что такое и зачем нужен Kubernetes?
What is DDD? Что такое Domain Driven Design?
What are Message Queues? What is Kafka? Что такое очереди сообщений? Что такое Kafka?
What is Observability? What are logs, metrics and traces? Что такое наблюдаемость? Что такое логи, метрики и трейсы?
What are Saga, Outbox, CQRS, Event Sourcing patterns? Что такое паттерны Saga, Outbox, CQRS, Event Sourcing?
What is idempotency? Why does it matter in distributed systems? Что такое идемпотентность? Почему она важна в распределённых системах?
What are circuit breakers, retries, timeouts, bulkheads? Что такое circuit breaker, retry, timeout, bulkhead?

Resources (Ресурсы)

DevOps & CI/CD

Main topics Основные темы
What is DevOps? What does a DevOps culture look like? Что такое DevOps? Как выглядит DevOps-культура?
Infrastructure as Code (IaC): Terraform, Pulumi, Ansible Инфраструктура как код (IaC): Terraform, Pulumi, Ansible
CI/CD pipelines: GitHub Actions, GitLab CI, ArgoCD CI/CD пайплайны: GitHub Actions, GitLab CI, ArgoCD
GitOps principles Принципы GitOps
Cloud providers: AWS, GCP, Azure fundamentals Клауд-провайдеры: основы AWS, GCP, Azure

Resources (Ресурсы)

System Design & Interviews

Main topics Основные темы
How to approach a system design interview Как подходить к system design интервью
Designing for scale: back-of-envelope estimates Проектирование под нагрузку: оценки «на салфетке»
Common building blocks: LB, cache, queue, DB, CDN Типовые строительные блоки: LB, кэш, очередь, БД, CDN
Trade-offs and capacity planning Компромиссы и планирование ёмкости

Resources (Ресурсы)

Newsletters, Podcasts & Blogs

Newsletters

Podcasts

Blogs & YouTube

Related Links

Books

📚 📚
Grokking Algorithms Грокаем Алгоритмы
"Clean Code" by Robert Martin "Чистый Код" Роберт Мартин
"Clean Architecture" by Robert Martin "Чистая Архитектура" Роберт Мартин
"Code Complete" by Steve McConnell "Совершенный Код" Стив Макконелл
"Building Microservices" by Sam Newman "Создание Микросервисов" Сэм Ньюман
"Microservices Patterns" by Chris Richardson "Микросервисы. Паттерны разработки и рефакторинга" Крис Ричардсон
"Designing Data-Intensive Applications" by Martin Kleppmann "Высоконагруженные приложения" Мартин Клеппманн
"System Design Interview" Vol I & II by Alex Xu
"Database Internals" by Alex Petrov
"Release It!" by Michael Nygard
"The Pragmatic Programmer" by Hunt & Thomas "Программист-прагматик"
"Understanding Distributed Systems" by Roberto Vitillo
"Fundamentals of Software Architecture" by Richards & Ford

About

🚀 A curated and opinionated list of resources (English & Russian) for Backend developers | Структурированный список ресурсов для изучения Backend разработки

Topics

Resources

Stars

Watchers

Forks

Contributors