Словарь построен по категориям, а не по алфавиту: рядом стоят понятия, которые встречаются на одном этапе работы. Внутри категории термины идут от базовых к производным.
Определения сокращены до рабочего минимума — без учебных аналогий и истории появления. Команды приведены там, где термин обозначает конкретное действие, а не свойство.
- Git и командная работа
- Репозиторий
- Коммит
- Ветка
- Мерж (merge)
- Ребейз (rebase)
- Конфликт
- Squash
- Cherry-pick
- Pull request (merge request)
- Форк
- Тег и семантическое версионирование
- Conventional commits
- Monorepo
- Зависимости, сборка, окружения
- Зависимость
- Пакетный менеджер
- Лок-файл
- Сборка (build)
- Артефакт
- Образ и контейнер
- Multi-stage build
- Тег образа и digest
- Окружение (environment)
- Переменные окружения
- IaC (infrastructure as code)
- Идемпотентность применения
- Качество кода и статические проверки
- Статический анализ
- Линтер
- Форматтер
- Type checker
- Git-хук и pre-commit
- Code review
- Рефакторинг
- Технический долг
- Легаси
- Хотфикс
- DRY, YAGNI, KISS
- Тестирование
- Пирамида тестирования
- Модульный тест (unit)
- Интеграционный тест
- E2E-тест
- Смоук-тест
- Sanity-проверка
- Регрессионный тест
- Флаки-тест
- Фикстура
- Мок и стаб
- Покрытие кода
- Снапшот-тест
- Нагрузочное тестирование
- CI/CD и доставка
- CI (continuous integration)
- CD (continuous delivery и deployment)
- Пайплайн, job, step, runner
- Кеш и матрица
- Деплой
- Миграция схемы
- Blue-green и canary
- Rollback
- Feature flag
- Zero-downtime deployment
- Реестр (registry)
- API, данные, архитектура
- API и endpoint
- REST
- JSON и схема
- Вебхук
- Идемпотентность
- Rate limiting
- Монолит и микросервисы
- Очередь и брокер
- Кеш и инвалидация
- ORM и миграции моделей
- Индекс и план запроса
- Транзакция
- Эксплуатация и наблюдаемость
- Логи, метрики, трейсы
- Observability
- Latency и перцентили
- Throughput
- Healthcheck: liveness и readiness
- Graceful shutdown
- Горизонтальное и вертикальное масштабирование
- SLI, SLO, error budget
- Инцидент и постмортем
- Алерт и дежурство
- Бэкап и RPO/RTO
- Доступы и безопасность
- Аутентификация и авторизация
- Токен и JWT
- Секрет и secret management
- Принцип минимальных прав
- CVE и SCA
- SBOM
- Supply chain security
- FAQ
- Чем линтер отличается от компилятора?
- Смоук-тест и healthcheck — это одно и то же?
- Какое покрытие кода считается достаточным?
- Почему флаки-тест хуже упавшего?
- Мерж или ребейз для рабочих ветвей?
- Что запускать первым при ограниченном времени?
- Заключение
Git и командная работа
Репозиторий
Каталог проекта вместе с полной историей изменений. Локальная копия содержит всю историю, а не только текущее состояние.
Коммит
Зафиксированное состояние файлов с сообщением об изменении и хешем. Единица истории и единица отката.
Ветка
Подвижный указатель на коммит. Создание ветки не копирует файлы, поэтому операция мгновенная независимо от размера проекта.
git switch -c feature/smoke-tests Мерж (merge)
Объединение двух ветвей с созданием отдельного коммита слияния. Фактическая история ветвления сохраняется.
Ребейз (rebase)
Перенос коммитов ветки на новое основание. Даёт линейную историю ценой перезаписи хешей — отправка требует принудительного пуша.
git fetch origin
git rebase origin/main
git push --force-with-lease Флаг --force-with-lease вместо --force отменяет отправку, если в удалённую ветку попали чужие коммиты. Обязательное правило для веток, доступных нескольким участникам.
Конфликт
Расхождение изменений в одних и тех же строках, которое git не разрешает автоматически. Требует ручного выбора итогового варианта.
Squash
Сжатие нескольких коммитов ветки в один при слиянии. Применяется, чтобы промежуточные правки не попадали в историю основной ветки.
Cherry-pick
Перенос одного конкретного коммита в другую ветку. Типовой приём для доставки хотфикса в релизную ветку без остальных изменений.
Pull request (merge request)
Заявка на слияние ветки с запуском автоматических проверок и обязательным ревью. Точка контроля перед попаданием кода в основную ветку.
Форк
Независимая копия репозитория под своей учётной записью. Стандартный способ участия в проектах без прав на запись.
Тег и семантическое версионирование
Тег — неподвижная метка на коммите, обычно номер версии. Семвер кодирует характер изменений в формате MAJOR.MINOR.PATCH: несовместимое изменение, новая совместимая функциональность, исправление.
Conventional commits
Соглашение о формате сообщения: feat:, fix:, chore:, docs:, refactor:. Позволяет собирать changelog и вычислять следующую версию автоматически.
Monorepo
Хранение нескольких сервисов или пакетов в одном репозитории с общей историей. Упрощает согласованные изменения, усложняет сборку и права доступа.
Зависимости, сборка, окружения
Зависимость
Внешняя библиотека, необходимая проекту. Прямые зависимости объявляются явно, транзитивные подтягиваются вместе с ними.
Пакетный менеджер
Инструмент установки и разрешения версий зависимостей: npm, pnpm, pip, uv, cargo, go modules.
Лок-файл
Файл с точными версиями и хешами всех зависимостей, включая транзитивные. Гарантирует воспроизводимость сборки и обязателен к коммиту.
Сборка (build)
Преобразование исходного кода в пригодный для запуска вид: компиляция, транспиляция, минификация, упаковка образа.
Артефакт
Результат сборки, продвигаемый по окружениям без пересборки: образ контейнера, архив, бинарный файл, отчёт.
Образ и контейнер
Образ — неизменяемый шаблон файловой системы с приложением и зависимостями. Контейнер — запущенный экземпляр образа с собственным состоянием.
docker build -t registry.example/api:1.4.2 /srv/app
docker run --rm -p 8000:8000 registry.example/api:1.4.2 Multi-stage build
Сборка образа в несколько стадий: инструменты компиляции остаются в промежуточной стадии, в финальный образ попадает только результат. Сокращает размер образа и площадь атаки.
Тег образа и digest
Тег — изменяемая ссылка на образ, digest — неизменяемый хеш содержимого. В production-контуре используется digest либо иммутабельный тег версии, но не latest.
Окружение (environment)
Изолированный контур запуска с собственной конфигурацией: dev, staging, production. Код одинаковый, конфигурация различается.
Переменные окружения
Способ передачи конфигурации процессу извне. Значения не попадают в образ, что позволяет продвигать один артефакт по всем окружениям.
APP_ENV=production
DATABASE_URL=postgresql://app:<PASSWORD>@db:5432/app
LOG_LEVEL=info IaC (infrastructure as code)
Описание инфраструктуры декларативными файлами вместо ручных операций в панели. Состояние воспроизводимо и версионируется в git.
Идемпотентность применения
Свойство описания инфраструктуры: повторный запуск на неизменённой конфигурации не производит изменений. Базовое требование к IaC-инструментам.
Качество кода и статические проверки
Статический анализ
Проверка исходного кода без его запуска: разбор синтаксиса, построение дерева, поиск отклонений от правил.
Линтер
Находит потенциальные дефекты и нарушения соглашений: неиспользованные переменные, недостижимый код, опасные конструкции, избыточную сложность функций.
ruff check /srv/app
eslint /srv/app/src --max-warnings=0 Форматтер
Механически приводит код к единому стилю: отступы, длина строк, порядок импортов. Не рассуждает о смысле, а перезаписывает файл.
Type checker
Проверяет согласованность типов данных до запуска. Обнаруживает несоответствия, которые линтер не видит.
mypy --strict /srv/app
tsc --noEmit Git-хук и pre-commit
Хук — скрипт, запускаемый git в определённый момент. Pre-commit срабатывает до создания коммита и блокирует его при непройденных проверках.
pre-commit install
pre-commit run --all-files Локальные хуки сокращают цикл обратной связи с минут до секунд. CI при этом остаётся обязательным контуром: хуки на стороне разработчика обходятся флагом --no-verify.
Code review
Проверка изменений другим участником или агентом перед слиянием. Контролирует не только корректность, но и соответствие принятым решениям в проекте.
Рефакторинг
Изменение внутренней структуры кода без изменения внешнего поведения. Критерий корректности — прежний набор тестов продолжает проходить.
Технический долг
Накопленные упрощения, которые ускорили выпуск и увеличили стоимость последующих изменений: обойдённая абстракция, отсутствующий тест, захардкоженное значение.
Легаси
Код в эксплуатации, не покрытый тестами. Риск изменения определяется отсутствием проверок, а не возрастом кода.
Хотфикс
Срочное минимальное исправление в обход обычного цикла, применяемое к релизной ветке и затем переносимое в основную.
DRY, YAGNI, KISS
DRY — устранение дублирования знания, а не любых похожих строк. YAGNI — отказ от реализации функциональности «на будущее». KISS — предпочтение простого решения при равном результате.
Тестирование
Пирамида тестирования
Модель распределения проверок по стоимости: много быстрых модульных тестов внизу, единицы медленных сквозных наверху.
Модульный тест (unit)
Проверяет одну функцию или класс в изоляции от сети, базы данных и файловой системы. Время выполнения — миллисекунды.
Интеграционный тест
Проверяет связку компонентов с реальными зависимостями: код плюс база данных, код плюс брокер сообщений. Требует поднятого окружения.
E2E-тест
Проходит сценарий целиком со стороны потребителя: открытие страницы, заполнение формы, проверка результата. Самые медленные и хрупкие проверки.
Смоук-тест
Минимальный набор проверок работоспособности сборки: приложение запускается, отвечает на служебный маршрут, соединение с базой установлено, миграции применены.
Отвечает на вопрос, имеет ли смысл запускать полный набор тестов на этой сборке.
pytest -m smoke --maxfail=1 -q
curl --fail --silent --max-time 5 http://127.0.0.1:8000/healthz Sanity-проверка
Узкая проверка одной области после точечной правки. Смоук идёт широко и поверхностно, sanity — узко и чуть глубже.
Регрессионный тест
Фиксирует поведение, которое уже работало. Порядок появления: обнаружен дефект — написан воспроизводящий тест — дефект исправлен — тест остаётся в наборе.
Флаки-тест
Тест с нестабильным результатом на неизменном коде. Причины: зависимость от порядка выполнения, реального времени, сетевых задержек, общего состояния между тестами.
Автоматический повтор упавших тестов маскирует флаки и обесценивает весь набор: красному статусу перестают доверять и перезапускают пайплайн вслепую. Нестабильный тест выносят из основного контура и устраняют причину.
Фикстура
Подготовленное состояние для теста: заполненная таблица, временный каталог, авторизованная сессия. Создаётся до теста и убирается после.
Мок и стаб
Заменители внешних зависимостей. Стаб возвращает заранее заданный ответ, мок дополнительно фиксирует факт и параметры вызова.
Покрытие кода
Доля строк или ветвлений, выполненных при тестовом прогоне. Показывает непроверенные участки, но не гарантирует корректности проверенных.
pytest --cov=app --cov-report=term-missing --cov-fail-under=80 Снапшот-тест
Сравнивает текущий вывод с эталоном на диске. Удобен для разметки и структур данных, провоцирует бездумное обновление эталона при расхождении.
Нагрузочное тестирование
Измерение поведения системы под заданным потоком запросов: деградация latency, точка отказа, поведение при исчерпании пула соединений.
CI/CD и доставка
CI (continuous integration)
Частое слияние изменений в общую ветку с автоматическим запуском проверок на каждое изменение. Поломки обнаруживаются в момент появления.
CD (continuous delivery и deployment)
Delivery — автоматическая подготовка каждой успешной сборки к развёртыванию с ручным решением о выпуске. Deployment — развёртывание без ручного шага.
Пайплайн, job, step, runner
Пайплайн — описанная последовательность этапов. Job — независимая задача в своём окружении. Step — отдельная команда внутри job. Runner — машина или контейнер исполнения.
name: quality
on: [push, pull_request]
jobs:
static:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: ruff check .
- run: mypy .
tests:
needs: static
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: pytest -m smoke -q
- run: pytest -m "not slow" --cov=app --cov-fail-under=80 Кеш и матрица
Кеш сохраняет зависимости между запусками и сокращает время сборки. Матрица размножает job по комбинациям версий и платформ.
Деплой
Перевод артефакта в рабочее окружение с применением конфигурации и миграций. Отделяется от выпуска функциональности флагами.
Миграция схемы
Версионированное изменение структуры базы данных. Требование к контуру без простоя — обратная совместимость: новая схема работает с предыдущей версией кода.
Blue-green и canary
Blue-green — два идентичных окружения с полным переключением трафика. Canary — новая версия получает малую долю трафика, доля растёт при отсутствии роста ошибок.
Rollback
Возврат на предыдущий артефакт. Скорость отката определяется тем, обратимы ли применённые миграции.
Feature flag
Переключатель, отделяющий развёртывание кода от включения функциональности. Код уже в production и неактивен до изменения флага.
Zero-downtime deployment
Обновление без разрыва обслуживания: новые экземпляры поднимаются и проходят readiness, старые выводятся из балансировки после дорабатывания запросов.
Реестр (registry)
Хранилище образов и пакетов с версиями и правами доступа. Промежуточное звено между сборкой и развёртыванием.
API, данные, архитектура
API и endpoint
API — контракт взаимодействия между системами. Endpoint — конкретный адрес, реализующий часть контракта.
REST
Стиль построения HTTP-API: ресурсы как адреса, действия через методы GET, POST, PUT, PATCH, DELETE, состояние не хранится между запросами.
JSON и схема
Формат обмена структурированными данными. Схема описывает допустимую структуру и используется для валидации на границе сервиса.
{
"id": 42,
"status": "active",
"created_at": "2026-03-14T09:20:00Z"
} Вебхук
Обратный вызов: внешняя система сама отправляет HTTP-запрос при событии вместо периодического опроса со стороны приложения.
Идемпотентность
Свойство операции давать одинаковый результат при повторном выполнении. Обязательное условие безопасных повторов при сетевых сбоях.
Rate limiting
Ограничение частоты запросов от одного источника. Защищает сервис от исчерпания ресурсов и формирует предсказуемую нагрузку.
Монолит и микросервисы
Монолит — единый развёртываемый процесс. Микросервисы — набор независимо развёртываемых сервисов, обменивающихся по сети. Второй вариант меняет сложность кода на сложность инфраструктуры.
Очередь и брокер
Промежуточное хранилище задач между отправителем и обработчиком. Сглаживает пиковую нагрузку и позволяет обрабатывать задачи асинхронно.
Кеш и инвалидация
Кеш хранит результат дорогой операции для повторного использования. Инвалидация — удаление устаревших значений; основной источник дефектов в кешируемых системах.
ORM и миграции моделей
ORM отображает таблицы базы на объекты кода. Изменение модели требует соответствующей миграции схемы — они не синхронизируются автоматически.
Индекс и план запроса
Индекс ускоряет поиск по столбцу за счёт дополнительной структуры и замедляет запись. План запроса показывает, использовал ли планировщик индекс фактически.
Транзакция
Группа операций, применяемая целиком либо не применяемая вовсе. Уровень изоляции определяет, какие аномалии возможны при параллельном доступе.
Эксплуатация и наблюдаемость
Логи, метрики, трейсы
Логи — дискретные события с контекстом. Метрики — числовые ряды во времени. Трейсы — путь одного запроса через сервисы с временем на каждом участке.
Observability
Свойство инфраструктуры, при котором причину нештатного поведения устанавливают по уже собираемым данным, без добавления отладочной сборки.
Latency и перцентили
Задержка обработки одного запроса, оцениваемая по p50, p95, p99. Средняя задержка скрывает проблему: при p50 в 40 мс значение p99 может достигать двух секунд.
Throughput
Количество обработанных запросов в единицу времени. Рассматривается вместе с latency: рост throughput при деградации p99 не является улучшением.
Healthcheck: liveness и readiness
Liveness отвечает на вопрос «процесс жив» — отрицательный ответ ведёт к перезапуску. Readiness отвечает «готов принимать трафик» — отрицательный ответ исключает экземпляр из балансировки без перезапуска.
services:
api:
image: registry.example/api:1.4.2
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1:8000/healthz"]
interval: 30s
timeout: 5s
retries: 3
start_period: 20s Graceful shutdown
Корректное завершение: процесс перестаёт принимать новые запросы, дорабатывает текущие, закрывает соединения. Без этого обновление обрывает часть запросов.
Горизонтальное и вертикальное масштабирование
Горизонтальное — добавление экземпляров за балансировщиком, требует отсутствия состояния в процессе. Вертикальное — увеличение ресурсов одной машины, ограничено физическим потолком.
SLI, SLO, error budget
SLI — измеряемый показатель качества. SLO — целевое значение показателя. Error budget — допустимый объём нарушений за период; исчерпание переводит приоритет с функциональности на надёжность.
Инцидент и постмортем
Инцидент — нарушение обслуживания, требующее реакции. Постмортем — разбор причин и мер без поиска виновных, с проверяемыми пунктами на выходе.
Алерт и дежурство
Алерт — автоматическое оповещение при выходе показателя за порог. Алерт без описанного действия создаёт шум и снижает реакцию на значимые оповещения.
Бэкап и RPO/RTO
RPO — допустимый объём потерянных данных, RTO — допустимое время восстановления. Бэкап без проверенного восстановления не является бэкапом.
Доступы и безопасность
Аутентификация и авторизация
Аутентификация подтверждает, кто обращается. Авторизация определяет, что этому субъекту разрешено. Порядок всегда такой.
Токен и JWT
Токен — переносимое подтверждение прав с ограниченным сроком. JWT содержит данные и подпись, проверяемую без обращения к хранилищу сессий.
Секрет и secret management
Секрет — пароль, ключ, токен доступа. Хранится вне репозитория и передаётся процессу через переменные окружения или хранилище секретов.
Секрет, однажды попавший в git, считается скомпрометированным навсегда: он остаётся в истории и в клонах даже после удаления из текущего состояния. Единственная корректная мера — ротация значения.
Принцип минимальных прав
Субъект получает только права, необходимые для его задачи. Применяется к учётным записям базы, ключам развёртывания и токенам CI.
CVE и SCA
CVE — идентификатор известной уязвимости. SCA — анализ состава зависимостей на наличие таких уязвимостей, встраивается в пайплайн отдельным job.
SBOM
Машиночитаемый перечень всех компонентов артефакта с версиями. Позволяет за минуты определить, затронут ли контур новой уязвимостью.
Supply chain security
Защита цепочки поставки: закреплённые версии зависимостей, проверка подписей образов, ограничение прав токенов CI, изоляция раннеров.
FAQ
Чем линтер отличается от компилятора?
Компилятор проверяет корректность по правилам языка и создаёт исполняемый код. Линтер проверяет соответствие соглашениям и наличие подозрительных шаблонов в синтаксически корректном коде.
Смоук-тест и healthcheck — это одно и то же?
Нет. Healthcheck — периодическая проверка работающего экземпляра силами платформы. Смоук-тест — разовый набор проверок после сборки или развёртывания, влияющий на решение о продвижении артефакта.
Какое покрытие кода считается достаточным?
Практический ориентир — 70–85% для прикладного кода при обязательном покрытии критичных путей. Важнее абсолютного значения динамика: покрытие не должно снижаться от изменения к изменению.
Почему флаки-тест хуже упавшего?
Упавший тест даёт однозначный сигнал. Флаки-тест разрушает доверие ко всему набору: перезапуск пайплайна становится привычкой, и реальная поломка проходит незамеченной.
Мерж или ребейз для рабочих ветвей?
Ребейз применяют к личным ветвям до слияния, получая линейную историю. К ветвям с несколькими участниками применяют мерж, поскольку ребейз перезаписывает уже опубликованные коммиты.
Что запускать первым при ограниченном времени?
Форматтер и линтер, затем смоук-набор. Связка отсекает основную долю нерабочих сборок за наименьшее время.
Заключение
Терминология разработки описывает не абстракции, а конкретные шаги с известной стоимостью и известным типом дефектов, который каждый из них отсекает. Точное различение линтера и type checker, смоука и регресса, latency и throughput позволяет читать логи CI без догадок, формулировать проверяемые задачи агентам и выстраивать production-ready контур, где дешёвые проверки идут первыми, а дорогие запускаются только на заведомо жизнеспособных сборках. Структура словаря по категориям с якорями на уровне h2 рассчитана на дополнение: новый термин добавляется внутрь нужного блока без правки оглавления и остальных разделов.









