Бэкенд и серверная разработка
Бэкенд и серверная разработка
Бэкенд — это невидимая, но критически важная часть любого веб-приложения или сервиса. Он отвечает за обработку данных, выполнение бизнес-логики, взаимодействие с базами данных, аутентификацию пользователей и обеспечение надёжной связи между клиентом и сервером. Серверная разработка — это создание программного обеспечения, которое работает на удалённых машинах (серверах) и обслуживает запросы от множества пользователей одновременно.
Основы: данные, сети и программы
Серверная разработка начинается с понимания того, как устроены данные и как они перемещаются по сети.
- 1.09. Данные и информация
- 1.09. Виды информации
- 1.09. Типы данных в вычислительных системах
- 1.09. Типизация
- 1.09. Метаданные
- 1.09. Данные и информация — итоги — итоги — итоги — итоги — итоги
- 1.09. Данные и информация — чек-лист — чек-лист — чек-лист — чек-лист — чек-лист
Операции с данными:
- 1.10. Ввод и вывод
- 1.10. Чтение и запись
- 1.10. Кэширование
- 1.10. Манипуляции с данными
- 1.10. Базовые операции с данными — итоги — итоги — итоги — итоги — итоги
- 1.10. Базовые операции с данными — чек-лист — чек-лист — чек-лист — чек-лист — чек-лист
Сетевая среда:
- 2.03. Сеть и интернет - основы и принципы работы
- 2.03. История развития сетевых технологий
- 2.03. URL URI URN
- 2.03. Сетевые протоколы, порты и установка соединения
- 2.03. Что происходит при загрузке сайта
- 2.03. DNS - система доменных имён и её работа
- 2.03. Cookie
- 2.03. Дополнительные сетевые технологии
- 2.03. HTTP и HTTPS
- 2.03. Сетевые устройства - маршрутизаторы, коммутаторы, модемы
- 2.03. Основы IP-адресации
- 2.03. Надёжная доставка — от идеи к TCP — от идеи к TCP — от идеи к TCP — от идеи к TCP — от идеи к TCP
- 2.03. Интернет-провайдер
- 2.03. Беспроводные сети - Wi-Fi, Bluetooth, LTE
- 2.03. Как работать с сетью
- 2.03. Государственное регулирование интернета
- 2.03. Сеть и интернет — итоги — итоги — итоги — итоги — итоги
- 2.03. Сеть и интернет — чек-лист — чек-лист — чек-лист — чек-лист — чек-лист
- История интернета
Архитектура бэкенда
Бэкенд — это не просто код, а сложная система, состоящая из нескольких компонентов.
- 1.23. Фронтенд
- 1.23. Бэкенд
- 1.23. Метрики производительности веб-приложений
- 1.23. Компетенции бэкенд-разработчика
- 1.23. Linux для бэкенд-разработчика
- 1.23. Сеть для диагностики бэкенда
- 1.23. Исходящая почта на бэкенде
- 1.23. Типы веб-приложений и роль бэкенда
- 1.23. Наблюдаемость бэкенда — метрики, логи и аудит — метрики, логи и аудит — метрики, логи и аудит — метрики, логи и аудит — метрики, логи и аудит
- 1.23. Фронтенд и бэкенд — итоги — итоги — итоги — итоги — итоги
- 1.23. Фронтенд и бэкенд — чек-лист — чек-лист — чек-лист — чек-лист — чек-лист
- Архитектура веб-приложений
- Веб-серверы
- Архитектурные особенности современных веб-приложений
- Фоновая работа и офлайн-режим веб-приложений
- Хранение данных в браузере и на сервере
- Push-уведомления и рассылки
Операционные системы и серверы
Серверный код выполняется на операционных системах, чаще всего Linux.
- 2.01. Операционные системы
- 2.01. Классификация операционных систем
- 2.01. Ядро операционной системы
- 2.01. Windows
- 2.01. Linux
- 2.01. macOS
- 2.01. iOS
- 2.01. Android
- 2.01. История операционных систем
- 2.01. Требования к ОС и подходы к реализации
- 2.01. Справочник по Windows 11
- 2.01. Справочник по Linux
- 2.01. Линус Торвальдс — ядро Linux и Git — ядро Linux и Git — ядро Linux и Git — ядро Linux и Git — ядро Linux и Git
- 2.01. Справочник по iOS
- 2.01. Справочник по Android
- 2.01. Операционная система — итоги — итоги — итоги — итоги — итоги
- 2.01. Операционная система — чек-лист — чек-лист — чек-лист — чек-лист — чек-лист
- Планирование процессора — классические алгоритмы — классические алгоритмы — классические алгоритмы — классические алгоритмы — классические алгоритмы · Гонки, критические секции и разделяемая память · Тупики (deadlock) и защита от них
- Механизмы распределения памяти в ОС · Алгоритмы замещения страниц · Подсистема ввода-вывода в ОС
- Linux, Справочник по Linux
- Windows, Устройство файловой системы Windows
Работа с серверами:
- 2.06. Администрирование
- 2.06. Установка и первоначальная настройка ОС
- 2.06. ИТ-инфраструктура
- 2.06. Настройка и обслуживание серверов
- 2.06. Конфигурация рабочих станций
- 2.06. Сетевые подключения и диагностика
- 2.06. NAT и проброс портов
- 2.06. Планирование и автоматизация задач
- 2.06. Диагностика и обработка системных ошибок
- 2.06. Виртуальные машины, Home Lab и переход на Linux
- 2.06. Microsoft PowerToys и утилиты рабочей станции Windows
- 2.06. Сетевые аномалии и системные процессы
- 2.06. Организация домашней сети
- 2.06. Идентичность Microsoft Entra и RBAC
- 2.06. Windows Server — начало работы — начало работы — начало работы — начало работы — начало работы
- 2.06. Управление службами в Windows
- 2.06. Работа с базами данных в администрировании
- 2.06. Мониторинг, метрики и логирование систем
- 2.06. Администрирование Linux-систем
- 2.06. Полнотекстовый поиск для приложений
- 2.06. Windows на рабочей станции — жизненный цикл — жизненный цикл — жизненный цикл — жизненный цикл — жизненный цикл
- 2.06. GNU/Linux — рабочие столы и споры окружений — рабочие столы и споры окружений — рабочие столы и споры окружений — рабочие столы и споры окружений — рабочие столы и споры окружений
- 2.06. Windows — Store, защита, диспетчер и "сборки" — Store, защита, диспетчер и "сборки" — Store, защита, диспетчер и "сборки" — Store, защита, диспетчер и "сборки" — Store, защита, диспетчер и "сборки"
- 2.06. Системное администрирование — итоги — итоги — итоги — итоги — итоги
- 2.06. Системное администрирование — чек-лист — чек-лист — чек-лист — чек-лист — чек-лист
- 2.06. Диагностика производительности Linux
- 2.06. Системы аутентификации
- Серверные платформы
- Терминал - интерфейс командной строки
- Написание скриптов в Unix-системах
- Автоматизация задач в Windows с помощью PowerShell
Языки и платформы бэкенда
Для серверной разработки используются языки, ориентированные на производительность, масштабируемость и работу с сетью.
- 9.11. Введение в программирование
- 9.11. Блоки
- 9.11. Scratch
- 9.11. Edublocks
- 9.11. Типы данных
- 9.11. Программа на Python
- 9.11. Программа на JavaScript
- 9.11. Путеводитель по языкам
- 9.11. MIT App Inventor
- 9.11. PascalABC.NET
- 9.11. Кумир
- 9.11. Стартовые проекты MIT Scratch
- 9.11. Scratch: платформер и демосцена
- 9.11. Практика 1 — радуга — радуга — радуга — радуга
- 9.11. Практика 2 — лабиринт — лабиринт — лабиринт — лабиринт
- 9.11. Практика 3 — баскетбол — баскетбол — баскетбол — баскетбол
- 9.11. Практика 4 — арканоид — арканоид — арканоид — арканоид
- 9.11. Практика 5 — астероиды — астероиды — астероиды — астероиды
- 9.11. Практика 6 — платформер — платформер — платформер — платформер
- 9.11. Метод обучения
- 9.11. Практика — Прыг-скок — Прыг-скок — Прыг-скок — Прыг-скок
- 9.11. Python — структуры данных — структуры данных — структуры данных — структуры данных
- 9.11. Python — turtle — turtle — turtle — turtle
- 9.11. Python — классы — классы — классы — классы
- 9.11. Практика — платформер — платформер — платформер — платформер
- 9.11. Программирование — итоги — итоги — итоги — итоги
- 9.11. Введение в программирование
- 9.11. Блоки
- 9.11. Scratch
- 9.11. Edublocks
- 9.11. Типы данных
- 9.11. Программа на Python
- 9.11. Программа на JavaScript
- 9.11. Путеводитель по языкам
- 9.11. MIT App Inventor
- 9.11. PascalABC.NET
- 9.11. Кумир
- 9.11. Стартовые проекты MIT Scratch
- 9.11. Scratch: платформер и демосцена
- 9.11. Практика 1 — радуга — радуга — радуга — радуга
- 9.11. Практика 2 — лабиринт — лабиринт — лабиринт — лабиринт
- 9.11. Практика 3 — баскетбол — баскетбол — баскетбол — баскетбол
- 9.11. Практика 4 — арканоид — арканоид — арканоид — арканоид
- 9.11. Практика 5 — астероиды — астероиды — астероиды — астероиды
- 9.11. Практика 6 — платформер — платформер — платформер — платформер
- 9.11. Метод обучения
- 9.11. Практика — Прыг-скок — Прыг-скок — Прыг-скок — Прыг-скок
- 9.11. Python — структуры данных — структуры данных — структуры данных — структуры данных
- 9.11. Python — turtle — turtle — turtle — turtle
- 9.11. Python — классы — классы — классы — классы
- 9.11. Практика — платформер — платформер — платформер — платформер
- 9.11. Программирование — итоги — итоги — итоги — итоги
- 9.11. Введение в программирование
- 9.11. Блоки
- 9.11. Scratch
- 9.11. Edublocks
- 9.11. Типы данных
- 9.11. Программа на Python
- 9.11. Программа на JavaScript
- 9.11. Путеводитель по языкам
- 9.11. MIT App Inventor
- 9.11. PascalABC.NET
- 9.11. Кумир
- 9.11. Стартовые проекты MIT Scratch
- 9.11. Scratch: платформер и демосцена
- 9.11. Практика 1 — радуга — радуга — радуга — радуга
- 9.11. Практика 2 — лабиринт — лабиринт — лабиринт — лабиринт
- 9.11. Практика 3 — баскетбол — баскетбол — баскетбол — баскетбол
- 9.11. Практика 4 — арканоид — арканоид — арканоид — арканоид
- 9.11. Практика 5 — астероиды — астероиды — астероиды — астероиды
- 9.11. Практика 6 — платформер — платформер — платформер — платформер
- 9.11. Метод обучения
- 9.11. Практика — Прыг-скок — Прыг-скок — Прыг-скок — Прыг-скок
- 9.11. Python — структуры данных — структуры данных — структуры данных — структуры данных
- 9.11. Python — turtle — turtle — turtle — turtle
- 9.11. Python — классы — классы — классы — классы
- 9.11. Практика — платформер — платформер — платформер — платформер
- 9.11. Программирование — итоги — итоги — итоги — итоги
- 9.11. Введение в программирование
- 9.11. Блоки
- 9.11. Scratch
- 9.11. Edublocks
- 9.11. Типы данных
- 9.11. Программа на Python
- 9.11. Программа на JavaScript
- 9.11. Путеводитель по языкам
- 9.11. MIT App Inventor
- 9.11. PascalABC.NET
- 9.11. Кумир
- 9.11. Стартовые проекты MIT Scratch
- 9.11. Scratch: платформер и демосцена
- 9.11. Практика 1 — радуга — радуга — радуга — радуга
- 9.11. Практика 2 — лабиринт — лабиринт — лабиринт — лабиринт
- 9.11. Практика 3 — баскетбол — баскетбол — баскетбол — баскетбол
- 9.11. Практика 4 — арканоид — арканоид — арканоид — арканоид
- 9.11. Практика 5 — астероиды — астероиды — астероиды — астероиды
- 9.11. Практика 6 — платформер — платформер — платформер — платформер
- 9.11. Метод обучения
- 9.11. Практика — Прыг-скок — Прыг-скок — Прыг-скок — Прыг-скок
- 9.11. Python — структуры данных — структуры данных — структуры данных — структуры данных
- 9.11. Python — turtle — turtle — turtle — turtle
- 9.11. Python — классы — классы — классы — классы
- 9.11. Практика — платформер — платформер — платформер — платформер
- 9.11. Программирование — итоги — итоги — итоги — итоги
Общие категории:
- 1.24. Основные языки
- 1.24. Естественные и искусственные языки в цифровой среде
- 1.24. Языки запросов - SQL и его аналоги
- 1.24. Языки разметки - HTML, XML, Markdown
- 1.24. Языки стилей - CSS и препроцессоры
- 1.24. Языки программирования
- 1.24. Визуальные языки программирования и моделирования
- 1.24. Классификация языков в IT — итоги — итоги — итоги — итоги — итоги
- 1.24. Классификация языков в IT — чек-лист — чек-лист — чек-лист — чек-лист — чек-лист
Работа с данными и базами
Бэкенд тесно связан с хранением и обработкой данных.
- 3.05. Знакомство с базами данных
- 3.05. Системы управления базами данных (СУБД)
- 3.05. Внутреннее устройство баз данных
- 3.05. Теоретические основы реляционных данных
- 3.05. Двенадцать правил Кодда
- 3.05. Роль базы данных в организации
- 3.05. Конкурентный доступ к данным
- 3.05. Восстановление после сбоя
- 3.05. Entity Relationship
- 3.05. Масштабирование БД — опорные темы — опорные темы — опорные темы — опорные темы — опорные темы
- Основы баз данных — итоги — итоги — итоги — итоги — итоги
- Основы баз данных — чек-лист — чек-лист — чек-лист — чек-лист — чек-лист
- 3.05. Управление данными - Data Governance
- Проектирование баз данных
- SQL - язык структурированных запросов
- CRUD-операции и язык манипуляции данными (DML)
- Транзакции, изоляция и блокировки
- Представления (VIEW) - виртуальные таблицы
- Иерархические данные в реляционных БД
- 9.11. Введение в программирование
- 9.11. Блоки
- 9.11. Scratch
- 9.11. Edublocks
- 9.11. Типы данных
- 9.11. Программа на Python
- 9.11. Программа на JavaScript
- 9.11. Путеводитель по языкам
- 9.11. MIT App Inventor
- 9.11. PascalABC.NET
- 9.11. Кумир
- 9.11. Стартовые проекты MIT Scratch
- 9.11. Scratch: платформер и демосцена
- 9.11. Практика 1 — радуга — радуга — радуга — радуга
- 9.11. Практика 2 — лабиринт — лабиринт — лабиринт — лабиринт
- 9.11. Практика 3 — баскетбол — баскетбол — баскетбол — баскетбол
- 9.11. Практика 4 — арканоид — арканоид — арканоид — арканоид
- 9.11. Практика 5 — астероиды — астероиды — астероиды — астероиды
- 9.11. Практика 6 — платформер — платформер — платформер — платформер
- 9.11. Метод обучения
- 9.11. Практика — Прыг-скок — Прыг-скок — Прыг-скок — Прыг-скок
- 9.11. Python — структуры данных — структуры данных — структуры данных — структуры данных
- 9.11. Python — turtle — turtle — turtle — turtle
- 9.11. Python — классы — классы — классы — классы
- 9.11. Практика — платформер — платформер — платформер — платформер
- 9.11. Программирование — итоги — итоги — итоги — итоги
Форматы обмена данными:
- 3.04. Конфигурационные данные в текстовых форматах
- 3.04. XML
- 3.04. JSON
- 3.04. YAML
- 3.04. Markdown
- 3.04. XAML
- Конфигурации и данные — итоги — итоги — итоги — итоги — итоги
- Конфигурации и данные — чек-лист — чек-лист — чек-лист — чек-лист — чек-лист
- 3.04. Текстовые форматы представления данных
- 3.04. Справочник по эмодзи
- 3.04. Шрифты
- XML, XPath, XSLT, XML DOM, Справочник по XML
Интеграции и API
Современные бэкенды редко работают изолированно — они взаимодействуют с другими системами.
- 2.09. Интеграция
- 2.09. Работа с Postman и curl для тестирования API
- 2.09. Типы взаимодействия между системами
- 2.09. Интеграционные потоки данных
- 2.09. Управление сессиями в распределённых системах
- 2.09. История развития интеграционных технологий
- 2.09. Веб-сервисы
- 2.09. Модель запрос-ответ в сетевом взаимодействии
- 2.09. API - интерфейсы прикладного программирования
- 2.09. HTTP как основа веб-интеграций
- 2.09. Асинхронная коммуникация между сервисами
- 2.09. Реактивные системы и потоки данных
- 2.09. Брокеры сообщений и зачем нужны очереди
- 2.09. RabbitMQ - работа с очередями сообщений
- 2.09. Apache Kafka - потоковая обработка данных
- 2.09. Дополнительные аспекты интеграции
- 2.09. Реализация интеграционных решений
- 2.09. Протокол SOAP
- 2.09. Современные интеграционные фреймворки
- 2.09. OData — протокол открытых данных — протокол открытых данных — протокол открытых данных — протокол открытых данных — протокол открытых данных
- 2.09. Redis в интеграции и кэшировании
- 2.09. REST, GraphQL и gRPC — стили API — стили API — стили API — стили API — стили API
- 2.09. Пагинация в API — шесть распространённых схем — шесть распространённых схем — шесть распространённых схем — шесть распространённых схем — шесть распространённых схем
- 2.09. 12 советов по безопасности API
- 2.09. Идемпотентность и семантика доставки
- 2.09. Практика подключения MongoDB, Redis, RabbitMQ и Kafka в распределённой системе
- Авторизация в интеграционных сценариях
- 9.11. Введение в программирование
- 9.11. Блоки
- 9.11. Scratch
- 9.11. Edublocks
- 9.11. Типы данных
- 9.11. Программа на Python
- 9.11. Программа на JavaScript
- 9.11. Путеводитель по языкам
- 9.11. MIT App Inventor
- 9.11. PascalABC.NET
- 9.11. Кумир
- 9.11. Стартовые проекты MIT Scratch
- 9.11. Scratch: платформер и демосцена
- 9.11. Практика 1 — радуга — радуга — радуга — радуга
- 9.11. Практика 2 — лабиринт — лабиринт — лабиринт — лабиринт
- 9.11. Практика 3 — баскетбол — баскетбол — баскетбол — баскетбол
- 9.11. Практика 4 — арканоид — арканоид — арканоид — арканоид
- 9.11. Практика 5 — астероиды — астероиды — астероиды — астероиды
- 9.11. Практика 6 — платформер — платформер — платформер — платформер
- 9.11. Метод обучения
- 9.11. Практика — Прыг-скок — Прыг-скок — Прыг-скок — Прыг-скок
- 9.11. Python — структуры данных — структуры данных — структуры данных — структуры данных
- 9.11. Python — turtle — turtle — turtle — turtle
- 9.11. Python — классы — классы — классы — классы
- 9.11. Практика — платформер — платформер — платформер — платформер
- 9.11. Программирование — итоги — итоги — итоги — итоги
Архитектурные подходы
Современная серверная разработка использует модульные и распределённые подходы.
- 4.04. Проект программного обеспечения
- 4.04. Модульность и компонентный подход в разработке
- 4.04. Оптимизация размера и производительности приложений
- 4.04. Фреймворк
- 4.04. Библиотека
- 4.04. Сборка, компиляция и публикация приложений
- 4.04. Манифесты зависимостей — requirements.txt, package.json, Dockerfile — requirements.txt, package.json, Dockerfile — requirements.txt, package.json, Dockerfile — requirements.txt, package.json, Dockerfile — requirements.txt, package.json, Dockerfile
- 4.04. Основы работы с контейнерами
- 4.04. Микрофреймворк
- 4.04. Основы архитектуры
- Масштабирование микросервисных систем
- Контейнеризация
- Основы DevOps
Разработка, отладка и сопровождение
Процесс создания бэкенда включает написание, тестирование и развёртывание кода.
- 4.14. Процесс разработки программного обеспечения
- 4.14. Разработка и отладка — итоги — итоги — итоги — итоги — итоги
- 4.14. Разработка и отладка — чек-лист — чек-лист — чек-лист — чек-лист — чек-лист
- 4.14. Профессиональные практики и культура разработки
- 4.14. Типовые задачи разработчика — справочник-шпаргалка — справочник-шпаргалка — справочник-шпаргалка — справочник-шпаргалка — справочник-шпаргалка
- 4.14. Отладка
- 4.14. Анализ и оптимизация производительности приложений
- 4.14. Создание и публикация собственной библиотеки
- 4.14. Пет-проекты
- 4.14. План развития разработчика
- 4.14. Организация структуры кодовой базы
- 4.14. README для разработчика
- 4.14. Проверка и валидация
- 4.14. Разработка расширений для веб-браузеров
- Система контроля версий Git
- Установка и настройка Git
- Мониторинг, метрики и логирование систем
- Диагностика и обработка системных ошибок
Дополнительные аспекты
- 2.04. Сайты и веб-сайты
- 2.04. Дизайн веб-интерфейсов
- 2.04. Рекламные технологии в вебе
- 2.04. Адресная строка браузера
- 2.04. Архитектура веб-приложений
- 2.04. Веб-серверы
- 2.04. Конструкторы сайтов
- 2.04. Архитектурные особенности современных веб-приложений
- 2.04. Фоновая работа и офлайн-режим веб-приложений
- 2.04. Хранение данных в браузере и на сервере
- 2.04. Push-уведомления и рассылки
- 2.04. SEO-оптимизация
- 2.04. Персонализация и пользовательские предпочтения
- 2.04. Web API в браузере
- 2.04. Web API на практике - примеры кода
- 2.04. Справочник по Tilda
- 2.04. BB-код — разметка постов на форумах — разметка постов на форумах — разметка постов на форумах — разметка постов на форумах — разметка постов на форумах
- 2.04. История браузера и приватность на клиенте
- 2.04. Интернет, сайт и HTTP — связь с культурой сети — связь с культурой сети — связь с культурой сети — связь с культурой сети — связь с культурой сети
- 2.04. Движки браузеров и линейки продуктов
- 2.04. HTTPS и TLS — шифрование веба — шифрование веба — шифрование веба — шифрование веба — шифрование веба
- 2.04. Polling, Long Polling, SSE и Webhook
- 2.04. Метрики производительности веб-страницы
- Цифровая коммуникация: формы, чаты, почта — часто реализуются на бэкенде.
- Поисковые системы: интеграция с поисковыми системами, ИИ.
- Медиаплееры и обработка мультимедиа: обработка изображений, видео, аудио на сервере.
Теоретический фундамент
- 4.01. Алгоритмы
- 4.01. Алгоритмы сортировки и поиска
- 4.01. Анализ эффективности алгоритмов
- 4.01. Графы — модели и задачи — модели и задачи — модели и задачи — модели и задачи — модели и задачи
- 4.01. Тренировка алгоритмического мышления
- 4.01. Кратчайший путь — алгоритм Дейкстры — алгоритм Дейкстры — алгоритм Дейкстры — алгоритм Дейкстры — алгоритм Дейкстры
- 4.01. PageRank — ранжирование на графе — ранжирование на графе — ранжирование на графе — ранжирование на графе — ранжирование на графе
- 4.01. Евклид и классические алгоритмы на числах
- 4.01. Регулярные выражения
- 4.01. Алгоритм обработки
- Структуры данных
- Объектно-ориентированное программирование
- Программные парадигмы
- Процессы и потоки выполнения
- Стили оформления кода
Бэкенд и серверная разработка — это основа цифровых сервисов, на которой держится весь онлайн-мир. От простого блога до глобальной платформы — всё зависит от надёжности, производительности и безопасности серверной части. Современный бэкенд-разработчик сочетает навыки программирования, проектирования систем, работы с данными и понимания сетевых протоколов, чтобы создавать решения, которые работают быстро, масштабируются легко и служат пользователям годами.