Awesome Backend Engineer
EN A curated and opinionated list of resources (English & Russian) for Backend developers that will help you orginize & structure your learning path and knowledges. Inspired by Awesome CTO.
RU Структурированный список ресурсов для изучения Backend разработки, который поможет систематизировать свои знания и составить план обучения. Основан на личном опыте и самостоятельном изучении данной области. Вдохновленно Awesome CTO.
На правах рекламы Если вы интересуетесь бекендом и хотите прокачать теоретическую базу, советую познакомится с курсом "Архитектура Современных Веб-Приложений"
Contents
- Basics
- Computer Science
- Web Development & Networking
- Databases
- Security
- Architecture & Infrastracture
- Related links
- Books
Basics
- Developer Roadmap
- How to Become a Good Backend Engineer (Fundamentals)
- Learn to become a Backend Developer (2018)
- Advice for beginner backend engineers who just started their new jobs in software companies
Computer Science
Main topics | Основные темы |
---|---|
What is 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 | Конкурентность и параллелизм |
Resouses (Ресурсы)
- What is Computer Science
- Map of Computer Science
- CS50 by Harvard. EN / RU
- Computer Science Crash Course
- How do computers read code?
- The Forgotten History of OOP
- Concurrency is not Parallelism
- Структуры данных для самых маленьких
- Алгоритмы и структуры данных. Подготовительный курс (весна 2016)
- ООП в картинках
- Многопроцессность, многопоточность, асинхронность в Python и не только. Что это и как работает?
- Конкурентность и Параллелизм. Просто о сложном
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 |
Resouses (Ресурсы)
- Web Development In 2021 - A Practical Guide
- What is TCP/IP?
- Hyper Text Transfer Protocol Crash Course - HTTP 1.0, 1.1, HTTP/2, HTTP/3
- HTTP Crash Course & Exploration
- TCP vs UDP Crash Course
- REST API concepts and examples
- RESTful API
- 2 Hours NginX Crash Course + Bonus Content
- JWT - JSON Web Token Crash Course (NodeJS & Postgres)
- Proxy vs Reverse Proxy Server Explained
- How HTTP/2 Works, Performance, Pros & Cons and More
- How DNS Works - Computerphile
- gRPC Crash Course - Modes, Examples, Pros & Cons and more
- Курс. Языки веб-программирования
- 6. Web-технологии. Протокол HTTP | Технострим
- Веб-разработка для начинающих
🚀 Как устроены веб-приложения? (Frontend/Backend) - Архитектура Web Приложений / от простых до высоконагруженных
- Аутентификация в Веб-Приложениях
👨💻 JWT и Сессии - Введение в REST API — RESTful веб-сервисы
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? | Что такое нормализация БД? |
Resouses (Ресурсы)
- What is a Database?
- What is Database & SQL?
- SQL Tutorial - Full Database Course for Beginners
- Database Design Course - Learn how to design and plan a database for beginners
- Database Indexing Explained (with PostgreSQL)
- SQL vs NoSQL or MySQL vs MongoDB
- Introduction to NoSQL databases
- MongoDB Basics
- MongoDB for SQL Pros
- ACID
🔥 Разбираем SQL на примере PostgreSQL — SELECT, JOIN, GROUP, HAVING, Coalesce и др.- Курс "Использование баз данных" (2019)
- Курс "Базы данных. Лаборатория Tarantool" (2018)
- Руководство для начинающих: ACID и транзакции БД
- Как бы я сейчас объяснил молодому себе зачем существуют требования ACID для баз данных?
- Основы правил проектирования базы данных
- Нормализация отношений. Шесть нормальных форм
- Руководство по проектированию реляционных баз данных (1-3 часть из 15)
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? | Как хранить пароли/секреты в веб приложении? |
Resouses (Ресурсы)
- 9. Securing Web Applications
- How does HTTPS work? What's a CA? What's a self-signed Certificate?
- Password Cracking - Computerphile
- Running an SQL Injection Attack - Computerphile
- How NOT to Store Passwords! - Computerphile
- Cracking Websites with Cross Site Scripting - Computerphile
- Cross-Site Scripting (XSS) Explained
- Why LocalStorage is Vulnerable to XSS (and cookies are too)
- OWASP Cheat Sheat
- Как работает HTTPS?
- Безопасность интернет-приложений (2020)
- Как хранить пароли и ключи в коде проектов? Всё о переменных окружения. Пример с Django
- SQL-инъекция. Оборона и нападение (часть 1)
- Что такое XSS-уязвимость и как тестировщику не пропустить ее
Architecture & Infrastracture
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? |
Resources (Ресурсы)
- Approaching Distributed Systems
- Scalable Web Architectures Concepts & Design
- How to Scale SQL and NoSQL Databases
- Scaling Your Web Application
- CAP Theorem in Distributed Systems
- How to Design a Web Application: Software Architecture 101
- Introduction to Microservices
- Microservice Architecture at Medium
- Mastering Chaos - A Netflix Guide to Microservices
- GOTO 2020 • When To Use Microservices (And When Not To!) • Sam Newman & Martin Fowler
- Modern Banking in 1500 Microservices
- Managing Data in Microservices
- What is DDD - Eric Evans - DDD Europe 2019
- The Clean Architecture
- Learn Docker in 12 Minutes
🐳 - Docker Tutorial for Beginners - A Full DevOps Course on How to Run Applications in Containers
- What is a Multitenancy Architecture and Why Is it becoming popular?
- The Twelve-Factor App
- Блог HighLoad
- Архитектура высоких нагрузок
- CAP-теорема простым, доступным языком
- Создание архитектуры программы или как проектировать табуретку
- Как получить и настроить LetsEncrypt SSL сертификат для сайта?
- Поднимаем Debian сервер для Python/Django — установка и настройка с нуля. Как настроить сервер?
🚀 Деплой Fullstack Приложения [Golang+JS]. СI/CD, DigitalOcean, Github Actions- Чистая архитектура
- Основы Docker. Большой практический выпуск
- Артём Антоненко «Domain Driven Design»
- Настраиваем авторизацию SSH по ключу в Linux / Unix
🚀 Собираем масштабируемую архитектуру веб-приложения. Горизонтальное и вертикальное масштабирование
Related Links
- Good enough engineering to start an Internet company
- The boring technology behind a one-person Internet company
- API as a product. How to sell your work when all you know is a back-end
- UML for beginners
- The other side of technical skill: domain knowledge and long-term vision
- Going from Developer to CTO
- What Truly Makes a Senior Developer
- Что стоит за простой загрузкой веб-странички в браузере
Books
Grokking Algorithms | Грокаем Алгоритмы |
"Clean Code" by Robert Martin | "Чистый Код" Роберт Мартин |
"Clean Architecture" by Robert Martin | "Чистая Архитектура" Роберт Мартин |
"Professional Software Development" by Steve McConnel | “Профессиональная Разработка ПО” Стив Макконел |
"Building Microservices" by Sam Newman | "Создание Микросервисов" Сэм Ньюман |
"Microservices Patterns" by Chris Richardson | "Микросервисы. Паттерны разработки и рефакторинга" Крис Ричардсон |