block 1
Профессия бэкенд-разработчик
Что делает бэкенд, как клиент и сервер обмениваются запросами и ответами, что такое метод, путь, код статуса и тело ответа, как устроен обработчик запроса и зачем каждый запрос пишет строку в лог.
profession
level
3Backend builds what sits behind the screen: it takes requests, checks access, stores data and answers fast.
monthly pay
junior 120 000 ₽ · mid 250 000 ₽ · senior 400 000 ₽
The job is the service behind the screen.
20 blocks · 160 lessons
A profession cannot start free. It opens together with Python. Every course · 3899 ₽ / month
progress
0%
block 1
Что делает бэкенд, как клиент и сервер обмениваются запросами и ответами, что такое метод, путь, код статуса и тело ответа, как устроен обработчик запроса и зачем каждый запрос пишет строку в лог.
block 2
Класс кода статуса через целочисленное деление, доля ошибок 5xx, время ответа в миллисекундах и секундах, средний и пиковый RPS, число страниц и offset при пагинации, ограничение лимита выдачи, запас мощности инстансов и размер ответа в килобайтах.
block 3
Нормализация пути через strip, lower и replace, путь и query-строка через find и срезы, значение параметра запроса, имена заголовков без учёта регистра, поиск в заголовках, тело ответа f-строкой, slug из заголовка статьи и маскирование токена в логе.
block 4
Маршрутизация цепочкой if/elif/else по пути и методу, ответы 404 Not Found и 405 Method Not Allowed, проверка токена и ролей через and/or/not, разница между 401 и 403, валидация тела запроса и порядок проверок при выборе ответа.
block 5
Rate limiting циклом while: счётчик запросов в окне, ответ 429 и Retry-After, повтор запроса к внешнему API с лимитом попыток и break на успехе, экспоненциальная пауза и суммарное ожидание, какие ошибки повторять, обработка очереди фоновых задач, continue для пропуска и таймаут воркера по суммарному времени.
block 6
Обработка пачки запросов из параллельных списков, статистика по классам кодов, доступность эндпоинтов по доле 5xx, среднее время GET и POST и самый медленный запрос, ссылки на страницы пагинации через range, проверка всех id, отдача файла частями и расчёт серверов под пиковую нагрузку.
block 7
Списки в логах сервиса: сбор медленных запросов через append, сортировка времён, медиана и p95 по индексу, топ эндпоинтов через count, страница результатов срезом, удаление повторных платежей по порядку, очередь фоновых задач на pop(0), объединение логов двух серверов и порядок middleware через insert и remove.
block 8
Запросы и ответы парами: zip для путей, кодов и размеров, enumerate для номеров строк с ошибкой, all для заполненных полей формы, any для запрещённых символов, сравнение ответов старой и новой версии API, фильтры и маскирование токенов через comprehension и сводка по эндпоинтам.
block 9
Обработчик запроса как функция, возвращающая статус и тело, роутер функцией с 404 и 405, функция-валидатор со списком ошибок, middleware логирования и проверки токена, таблица маршрутов с функциями-значениями, параметры по умолчанию для limit и offset и прогон лога через цепочку функций.
block 10
HTTP-запрос как текст: стартовая строка через split, query-строка в список пар, заголовки «Name: value» без учёта регистра, сборка ответа через join, префиксы версий API через startswith и endswith, id в пути через isdigit, cookie-строка и разбор сырого запроса с проверкой Content-Length.
block 11
Запрос и ответ словарями, «база» пользователей в словаре и CRUD: создание с новым id, чтение с 404, частичное обновление и удаление, маршрутная таблица, индекс по email и счётчики запросов по эндпоинтам.
block 12
Права ролей множествами: проверка права через in и пересечение, объединение прав нескольких ролей, разность «чего не хватает», составной ключ-кортеж (user_id, resource_id), уникальные пользователи за сутки, белый список CORS и аудит изменения прав.
block 13
Ошибки в обработчиках: битый ввод через try/except и ответ 400, отсутствующее поле, свои ошибки через raise ValueError и KeyError, словарь «исключение → код», 500 вместо падения сервера, finally для возврата соединения, единый формат ошибки и скрытие внутренних деталей.
block 14
Список словарей как таблица базы: SELECT нужных колонок, WHERE фильтром, ORDER BY через sorted с lambda по одной и двум колонкам, LIMIT и OFFSET срезом, JOIN через индекс-словарь, GROUP BY с подсчётом и проблема N+1 против загрузки одним проходом.
block 15
Модули стандартной библиотеки для бэкенда: json.loads и json.dumps для тела запроса и ensure_ascii, хеш пароля через hashlib.sha256 с солью и его проверка, токен со сроком действия на datetime, подпись токена через hmac, коды подтверждения через random с seed и secrets, base64 в заголовке Basic auth.
block 16
Раскладываем сервис по слоям классами: модели-dataclass, репозиторий с CRUD, исключения с HTTP-кодом, сервис с бизнес-правилами, роутер, middleware-классы, наследование репозиториев и сборка всех слоёв в одно приложение.
block 17
Сервис хранит данные на диске: база в JSON-файле с загрузкой при старте, атомарная запись через временный файл и os.replace, версия схемы и миграции, журнал запросов в режиме дозаписи, импорт пользователей из CSV с валидацией, резервные копии и восстановление после сбоя.
block 18
Проектируем REST API книжного каталога: ресурсы и методы GET/POST/PUT/PATCH/DELETE, коды 201, 204, 400, 404, 409, валидация тела, фильтры и пагинация в query, версии API, идемпотентный POST по ключу Idempotency-Key и кэширование по ETag.
block 19
Собираем API интернет-магазина: модели и репозиторий, каркас приложения с единым форматом ошибок, регистрация с хешем пароля, вход по токену, каталог с фильтром и пагинацией, корзина и заказ с проверкой остатков, права администратора и итоговый прогон сценария.
block 20
Расследуем инцидент «после релиза сервис тормозит»: перцентили вместо среднего, поиск медленного эндпоинта по логам, N+1 в трассировке и его исправление, индекс вместо перебора, кэш с TTL и hit rate, ошибка 500 в одном обработчике и постмортем.