Перейти к основному содержимому

Основы инфраструктуры

Разработчику Аналитику Тестировщику Инженеру

Инфраструктура (infrastructure) — всё, что нужно, чтобы программа работала у пользователей после написания кода:

  • машины или контейнеры, где выполняется процесс;
  • сеть, DNS (Domain Name System, система имён доменов), балансировщики нагрузки;
  • база данных и файловое хранилище;
  • процесс выкладки обновлений (деплой, deployment);
  • резервные копии (бэкапы, backup);
  • журналы (логи) и метрики;
  • учётные записи, секреты и политики доступа.

Информационная безопасность (ИБ) — практики, которые защищают данные и сервисы: шифрование, учётные записи, патчи, реагирование на инциденты. В зрелых командах безопасность встроена в разработку и эксплуатацию с первого дня (DevSecOps, Secure SDLC).

Раздел 8 не обязан читаться целиком. Аналитику достаточно облаков и API; разработчику — Git, среды и основ ИБ; инженеру — DevOps, контейнеры и мониторинг. Ниже — общая схема, разбор компонентов и три маршрута чтения.


От кода до пользователя

Когда вы запускаете npm start на ноутбуке, вы одновременно играете роли разработчика, системного администратора и сетевого инженера. В продакшене эти роли распределены, а каждый шаг документирован и автоматизирован.

Таблица элементов цепочки

ЭлементЧто этоПодробнее
GitИстория версий кода, ветки, code review4.13 Git, 8.03
CI (Continuous Integration)Автоматическая сборка и тесты после каждого изменения8.04 CI/CD
CD (Continuous Delivery)Автоматическая или полуавтоматическая выкладка в среду8.04 CI/CD
АртефактРезультат сборки — Docker-образ, JAR, wheel8.06
Среда выполненияМесто, где крутится процесс — VPS, Docker, Kubernetes, serverless8.06
База данныхХранение структурированных данных3.05
HTTPSШифрованный HTTP; сертификат подтверждает сайтSSL/TLS, как работают сайты
Наблюдаемость (observability)Логи, метрики, трассировки — понять, что сломалось8.04/19
БэкапКопия данных для восстановления8.03/117, практикум DR

Пример — pet-проект на GitHub Pages и API на VPS

ШагЧто происходитИнструмент
1Push в mainGit
2GitHub Actions собирает фронтендCI
3Статика уезжает на PagesCD
4Бэкенд в Docker на VPSСреда выполнения
5PostgreSQL на том же VPS или managed DBДанные
6Let's Encrypt для HTTPSСеть
7UptimeRobot пингует /healthНаблюдаемость

Такой стек — минимальная инфраструктура, с которой стоит познакомиться до Kubernetes.


Компоненты инфраструктуры подробно

Вычисления (compute)

VPS (Virtual Private Server, виртуальный сервер) — арендованная виртуальная машина с root-доступом. Вы сами ставите ОС-пакеты, Docker, nginx.

Контейнер — изолированный процесс с файловой системой образа. Легче переносить между средами, чем "голый" сервер.

Kubernetes (K8s) — оркестратор, который держит нужное число реплик контейнера, перезапускает упавшие, раскатывает обновления.

Serverless (FaaS, Function as a Service) — вы загружаете функцию, провайдер запускает её по событию. Меньше операционной работы, больше ограничений по времени выполнения и холодному старту.

Сравнение моделей облака — 8.01/1.

Сеть

КомпонентРоль
DNSПревращает api.example.com в IP-адрес
Load balancerРаспределяет трафик между несколькими экземплярами приложения
Reverse proxy (nginx, Caddy)TLS-терминация, кэш, маршрутизация
Firewall / Security GroupФильтрация портов и IP
CDN (Content Delivery Network)Кэш статики ближе к пользователю

Запрос пользователя к API проходит цепочку: DNS → CDN (если есть) → load balancer → proxy → приложение. Подробнее — как работают сайты.

Данные

ТипПримерыКогда
Реляционная БДPostgreSQL, MySQLТранзакции, отчёты, связи
КэшRedis, MemcachedСессии, горячие данные
ОчередьRabbitMQ, KafkaАсинхронные задачи
Object storageS3, MinIOФайлы, бэкапы, артефакты

Потеря данных без бэкапа — один из самых дорогих инцидентов. См. 8.03 и DR.

Секреты и конфигурация

Секрет — пароль, API-ключ, приватный ключ TLS. Хранят вне Git — в переменных CI, Vault (HashiCorp Vault), Secrets Manager облака.

Конфигурация — несекретные параметры (URL сервиса, feature flags). Часто в env или ConfigMap в Kubernetes.

Ошибка №1 новичков — .env в репозитории. См. 8.03/117, практикум Vault.


Тестовая и боевая среда

Тестовая среда (test, staging, стенд) — копия продакшена для проверок. Продакшен (prod) — среда, куда ходят реальные пользователи.

Критерийdevstaging / testprod
ДанныеФиктивные, можно стеретьОбезличенная копия или синтетикаРеальные пользовательские
ДоступВся команда разработкиQA, dev, иногда заказчикОграниченный, audit log
ДеплойЧасто вручнуюЧерез CI/CD, как в prodТолько через pipeline + approval
МасштабМинимальныйБлизко к prodПо SLA
СекретыУчебные ключиОтдельные от prodProduction keys

На тесте можно ломать данные и откатывать миграции. На проде доступ ограничен, изменения проходят через CI/CD и согласование.

Разбор сред и типичных ошибок при выкате — Основы DevOps. Сравнение собственного сервера и облака8.01.

Типичный сценарий ошибки

Разработчик меняет переменную DATABASE_URL на продовую в локальном .env, коммитит по ошибке, CI выкатывает на staging — staging подключается к prod БД и тесты затирают реальные заказы. Защита — отдельные секреты по environment в CI, pre-commit secret scan (DevSecOps).


Наблюдаемость — логи, метрики, трассировки

Лог (log) — текстовая запись события ("пользователь 42 создал заказ"). Метрика — число во времени (RPS, latency, ошибки 5xx). Трассировка (trace) — путь одного запроса через микросервисы.

СигналВопрос, на который отвечаетИнструменты (примеры)
ЛогиЧто именно произошло?Loki, ELK, CloudWatch
МетрикиСколько и как быстро?Prometheus, Grafana, Datadog
ТрассировкиГде застрял запрос?Jaeger, OpenTelemetry

Минимум для pet-проекта — health-check endpoint /health и алерт при HTTP 5xx. Углубление — 8.04/19, SRE.

Health-check — пример

curl -s -o /dev/null -w "%{http_code}" https://api.example.com/health
# Ожидаемый результат: 200

SLA, SLO и доступность

SLA (Service Level Agreement) — договорённость с клиентом ("99.9% uptime в месяц"). SLO (Service Level Objective) — внутренняя цель команды. SLI (Service Level Indicator) — измеряемый показатель (доля успешных запросов).

Uptime %Простой в месяц (прибл.)
99%~7 ч
99.9%~43 мин
99.99%~4 мин

RTO (Recovery Time Objective) — сколько может длиться восстановление после аварии. RPO (Recovery Point Objective) — сколько данных можно потерять по времени. Связь с бэкапами — 8.15/1.


Маршрут A — разработчик (1–2 недели)

Маршрут для backend, frontend и fullstack-разработчиков, которым нужно уверенно ориентироваться в средах, секретах и базовой ИБ.

ШагМатериалРезультатВремя
1Безопасность кодаПонимание Git и потери несохранённого2–3 ч
2Секреты и конфигурацияПароли вне репозитория2 ч
3Основы DevOpsdev / test / prod3–4 ч
4Введение в ИБCIA, OWASP Top 104 ч
5OIDC и OAuthКнопка "Войти через Google"3 ч
6Практикум RESTJWT, API-ключ1–2 дня

Недельный план (маршрут A)

ДеньЗадача
ПнШаги 1–2, настроить .gitignore для .env
ВтШаг 3, нарисовать схему своего pet-проекта
СрШаг 4, пройти OWASP Top 10 по чек-листу
ЧтШаг 5, прочитать про redirect URI и PKCE
Пт–ВсШаг 6, практикум REST или Docker Compose

По желанию: Docker, FinOps, Passkeys.


Маршрут B — инженер / DevOps (1–3 месяца)

Маршрут для тех, кто отвечает за пайплайны, инфраструктуру и надёжность сервисов.

ШагМатериалРезультат
1Маршрут A целикомОбщий язык с разработкой
2CI/CD — принципыPipeline как код
3IaCTerraformВоспроизводимая инфраструктура
4КонтейнеризацияDocker, образы, registry
5GitOpsпрактикумДекларативный деплой
6DevSecOps, Supply chainGates в CI, SBOM
7SRE, мониторингSLO, алерты, on-call
8DR, VaultУстойчивость и секреты

Месячный план (маршрут B)

НеделяФокусПрактика
1Маршрут A + CI/CDGitHub Actions на pet-репо
2Docker + IaCTerraform + docker-compose
3Kubernetes basics + GitOpsпрактикум 8.13
4DevSecOps + мониторингsecret scan, Prometheus/Grafana demo

Маршрут C — информационная безопасность

Маршрут для специалистов ИБ и разработчиков, смещающихся в AppSec.

ШагМатериалРезультат
1Основы ИБ (раздел 2)Угрозы, CIA, политики
28.07 — маршрутПериметр, крипто, доступ
3Secure SDLC, DevSecOpsПроцесс + автоматизация
4Supply chainSBOM, зависимости
5Bug bountyPentestВнешняя проверка
6Учебный фишингОсознанность пользователей
7PasskeysСовременная аутентификация

Карта компетенций ИБ в инфраструктуре


Словарь

ТерминКраткоСтатья
IaaSАренда виртуальных машин и сети8.01/1
PaaSПлатформа — вы приносите код, провайдер даёт runtime8.01/1
SaaSГотовое приложение по подписке8.01/1
CI / CDНепрерывная интеграция и доставка8.04/11
IaCИнфраструктура как код (Terraform, Ansible)8.04/215
КонтейнерИзолированный процесс с образом приложения8.06/1
Kubernetes (K8s)Оркестратор — управляет множеством контейнеров8.06/117
GitOpsСостояние кластера хранится в Git8.12/4
Zero TrustПроверка каждого запроса, без доверия к "внутренней сети"8.07/121
RTO / RPOДопустимое время простоя / потери данных8.15/1
API GatewayЕдиная точка входа для HTTP API8.12/9
SBOMСписок компонентов в сборке8.12/1
JWTJSON Web Token — токен для API8.08
mTLSВзаимная проверка TLS-сертификатов8.12/9
FinOpsУправление стоимостью облака8.16

Частые ошибки новичков

1. Секреты в Git

Файл .env в коммите, ключ в Dockerfile, токен в скриншоте issue. История Git хранит всё навсегда, пока не переписана.

Решение: .gitignore, secret scan в CI, Vault. Референс — утечки через публичные репозитории GitHub (ежегодные отчёты GitGuardian).

2. Деплой сразу в prod

Без staging, без отката, без canary. Один баг — простой для всех пользователей.

Решение: стратегии развёртывания, blue-green или rolling update.

3. Бэкап на том же диске, что и база

При сбое диска или ransomware теряются и данные, и копия.

Решение: 3-2-1 rule (3 копии, 2 носителя, 1 offsite), практикум DR. Кейс — потеря данных хостинг-провайдеров без offsite backup.

4. Микросервисы без необходимости

Десять сервисов для команды из трёх человек — операционный кошмар до появления реальной нагрузки.

Решение: Первые шаги к микросервисам, начинать с монолита или модульного монолита.

5. Устаревшие зависимости

Уязвимые пакеты из npm/PyPI. Log4Shell показал, что одна библиотека затрагивает весь стек.

Решение: Supply chain, Dependabot, SBOM.

6. Нет мониторинга

Узнаёте о простое от пользователей в Twitter, а не от алерта.

Решение: health-check, uptime monitoring, базовые метрики 5xx/latency.

7. SSH по паролю на весь интернет

Брутфорс и ботнеты сканируют порт 22 постоянно.

Решение: ключи, fail2ban, VPN или bastion host, 8.07.


Инциденты из практики (учебные выводы)

ИнцидентУрокРаздел
Открытый S3 bucket с бэкапамиПроверять ACL облачных bucket8.07
kubectl apply без reviewGitOps и policy-as-code8.12/4
Удаление prod БД "для теста"Раздельные credentials, read-only для аналитиков8.03
DDoS на API без rate limitAPI Gateway, WAF8.12/9
Компрометация CI токенаМинимальные permissions, OIDCDevSecOps

Практика для первого знакомства

УровеньЗадачаВремяЧто получите
ЛёгкийDocker Compose — стеки + GitHub Actions2–4 чМногосервисный стек + CI
СреднийПрактикум REST/WebSocket1–2 дняAPI, JWT, auth
ИнженерныйGitOps на kind1 деньK8s, декларативный деплой
ИБKali — только своя лабораторияпо маршруту 8.10Базовый pentest
ЭкономикаFinOps pet-project4–6 чСтоимость облака

Пошагово — первый деплой с Docker Compose

  1. Клонировать pet-репозиторий с docker-compose.yml
  2. Создать .env локально (не коммитить)
  3. docker compose up -d
  4. Проверить curl http://localhost:8080/health → 200
  5. Добавить GitHub Action — lint + test на PR
  6. Выкатить на VPS или PaaS с тем же compose-файлом

Чек-листы по ролям

Разработчик — минимум перед prod

  • Секреты вне Git, .env в .gitignore
  • Понимаю разницу staging и prod
  • Знаю, куда смотреть логи при 500
  • Прочитал OWASP Top 10 для своего стека
  • Есть план отката (rollback) релиза

Инженер — минимум для команды

  • CI на каждый PR, protected main
  • Staging максимально похож на prod
  • Бэкапы с проверкой restore (не только создание)
  • Алерт на недоступность сервиса
  • Документ runbook "что делать при падении"

ИБ — минимум для аудита pet-проекта

  • HTTPS везде, HSTS в prod
  • Нет default паролей в сервисах
  • Dependency scan в CI
  • Политика паролей / MFA для админов
  • План реагирования на утечку секрета

Карта раздела 8 — куда идти дальше

ВопросПодраздел
Где хостить?8.01
Как хранить код и секреты?8.03
Как доставить код?8.04
Микросервисы и API?8.05
Docker и K8s?8.06
ИБ?8.07
Актуальное?8.12

Роли в команде — кто за что отвечает

В маленькой команде один человек совмещает несколько ролей. В крупной — роли разделены, но границы пересекаются.

РольЗона ответственностиТипичные инструменты
РазработчикКод, тесты, участие в on-callIDE, Git, фреймворк
DevOps / SRECI/CD, инфраструктура, мониторингTerraform, K8s, Grafana
DBA (Database Administrator)Схема БД, миграции, производительностьPostgreSQL, pg_dump
AppSecThreat model, аудит кода, политикиSemgrep, OWASP ASVS
СисадминОС, сеть, железо или IaaSAnsible, SSH, firewall
АналитикТребования к SLA, интеграциям, средамДиаграммы, Confluence

Конфликт "разработка хочет фичу, DevOps блокирует деплой" решается общими SLO, прозрачными gates и DevSecOps, а не ручными запретами без объяснения.


Жизненный цикл релиза — пошагово

Типичный путь изменения от идеи до prod в зрелой команде:

#ЭтапУчастникиАртефакт
1Задача в трекереАналитик, PMTicket с acceptance criteria
2Ветка в GitРазработчикfeature branch
3Code reviewКомандаApproved PR
4CIPipelineЗелёные тесты + security scan
5Деплой на stagingDevOps / CDВерсия на стенде
6QA и регрессияТестировщикОтчёт о проверке
7ApprovalТимлид / release managerРазрешение на prod
8Деплой на prodCDНовая версия live
9МониторингOn-callМетрики 30–60 мин после выката
10Post-releaseВсеЗакрытие ticket, документация

Откат (rollback) — возврат к предыдущей версии артефакта. Должен быть описан в runbook до первого prod-деплоя — стратегии развёртывания.


Twelve-Factor App — принципы для облака

Twelve-Factor App — набор практик для приложений в облаке и контейнерах. Не догма, но хороший чек-лист для новичка.

#ФакторСмысл для инфраструктуры
1CodebaseОдин репозиторий → один deployable
2DependenciesЯвное объявление зависимостей, lockfile
3ConfigКонфиг в environment, не в коде
4Backing servicesБД и очередь — подключаемые ресурсы
5Build, release, runСтрого разделённые стадии
6ProcessesПроцессы stateless, состояние в БД/Redis
7Port bindingСервис сам слушает порт (для PaaS/контейнеров)
8ConcurrencyМасштабирование через процессы/реплики
9DisposabilityБыстрый старт и корректное завершение
10Dev/prod parityStaging близок к prod
11LogsЛоги как поток событий в stdout
12Admin processesМиграции и админ-задачи — отдельные процессы

Нарушение фактора 3 (конфиг в коде) и фактора 2 (без lockfile) — частые источники инцидентов. См. 8.03.


Масштабирование — вертикальное и горизонтальное

Вертикальное масштабирование (scale up) — больше CPU/RAM на одной машине. Просто, но есть потолок и single point of failure.

Горизонтальное масштабирование (scale out) — больше экземпляров приложения за балансировщиком. Требует stateless-приложения или sticky sessions.

ПодходПлюсыМинусы
ВертикальноеМеньше изменений в кодеПотолок железа, дорогие инстансы
ГоризонтальноеОтказоустойчивость, эластичностьСложнее данные, сессии, деплой

Автомасштабирование (autoscaling) — облако или K8s HPA (Horizontal Pod Autoscaler) добавляет реплики по CPU/RPS. Нужны корректные resources.requests/limits в Kubernetes — 8.06/117.


Миграции базы данных в CI/CD

Изменение схемы БД — рискованная операция. Типичный безопасный порядок:

  1. Backward-compatible migration — сначала добавить колонку nullable, потом заполнить, потом сделать NOT NULL в следующем релизе.
  2. Прогон миграций на staging с копией схемы prod.
  3. Бэкап перед миграцией на prod.
  4. Мониторинг slow queries после выката.

Опасные операции:

  • DROP COLUMN без двухэтапного деплоя — старый код упадёт.
  • Долгие блокирующие миграции в часы пик — lock таблицы.

Подробнее — 3.05 Базы данных, практикум PostgreSQL 8.11.


On-call и реагирование на инциденты

On-call — дежурный инженер, который реагирует на алерты вне рабочего времени.

ФазаДействия
DetectionАлерт из мониторинга или сообщение пользователей
TriageОценка severity — сколько людей затронуто
MitigationБыстрое восстановление (rollback, scale, отключение фичи)
ResolutionИсправление root cause
Post-mortemРазбор без обвинений, action items

Severity levels (пример):

УровеньОписаниеПример
SEV1Полный простой prodСайт недоступен
SEV2Деградация без полного простояПлатежи падают в 30%
SEV3Некритичный багОпечатка в отчёте
SEV4Запрос на улучшениеНовый дашборд

Runbook — документ "если упал сервис X, сделай шаги 1–2–3". Минимум для pet-проекта — README с командами перезапуска и ссылкой на логи.


Стоимость инфраструктуры — вводные FinOps

FinOps (Financial Operations) — дисциплина управления расходами на облако. Даже в pet-проекте полезно понимать, за что платите.

Статья расходовПримеры
ComputeVPS, EC2, Cloud Run
StorageДиски, S3, бэкапы
NetworkИсходящий трафик, load balancer
Managed servicesRDS, managed Kafka
ЛицензииМониторинг, секреты, CI minutes

Типичные "сюрпризы":

  • забытый staging-инстанс, работающий месяцами;
  • исходящий трафик из облака дороже входящего;
  • oversized инстансы "на всякий случай".

Практикум — 8.16 FinOps.


Соответствие требованиям — когда это касается инфраструктуры

Даже без формального аудита полезно знать аббревиатуры:

СтандартОбластьСвязь с инфраструктурой
GDPRПерсональные данные в ЕСШифрование, бэкапы, право на удаление
PCI DSSПлатёжные картыСегментация сети, логи, сканирование
152-ФЗПДн в РФЛокализация, защита при хранении
ISO 27001СУИБПолитики, доступы, инциденты

Технические меры пересекаются с 8.07 ИБ и Secure SDLC.


Монолит, модули и микросервисы — выбор формы

АрхитектураКогда уместнаИнфраструктурная сложность
МонолитСтарт, малая команда, один deployableНизкая
Модульный монолитРост кодовой базы без ops-адаНизкая–средняя
МикросервисыНезависимые релизы, разные масштабы сервисовВысокая

Инфраструктура микросервисов требует service mesh или API Gateway, распределённый tracing, централизованные логи — 8.05, 8.12/9 API Gateway.


Интеграции и внешние API

Ваш сервис редко живёт изолированно. Инфраструктурные аспекты интеграций:

  • Таймауты и retry — не зависать при падении партнёра;
  • Circuit breaker — перестать долбить мёртвый endpoint;
  • Идемпотентность — повтор запроса не создаёт дубликат заказа;
  • Секреты партнёров — отдельные ключи на staging и prod.

База — 2.09 Интеграционное взаимодействие, практикум — 8.08 REST.


Локальная разработка и паритет со staging

Docker Compose на ноутбуке поднимает те же сервисы, что на staging — PostgreSQL, Redis, mock API. Цель — "works on my machine" стало "works in compose".

docker compose up -d
docker compose ps
# Ожидаемый результат: все сервисы в статусе running
docker compose logs api --tail 50

Если локально SQLite, а на prod PostgreSQL — баги на стыке SQL-диалектов. Минимальный паритет — та же major-версия БД, что на staging.


Безопасность по слоям — модель для новичка

СлойВопросМатериал
ПериметрКто может достучаться до API?8.12/9
ПриложениеКто авторизован на действие?8.07/116
ДанныеЧто если украдут диск?8.07
ОперацииКто имел SSH вчера ночью?8.07/121 Zero Trust

Вопросы на собеседовании — ориентир по теме

ВопросНа что смотрятГде подготовиться
Чем CI отличается от CD?Понимание pipeline8.04/11
Как устроен HTTPS?TLS handshake, сертификаты8.07/118
Что такое контейнер?Изоляция, образ, registry8.06/1
Как откатить релиз?Blue-green, rollback8.04/111
Что такое DevSecOps?Shift-left, gates8.12/3

Расширенный FAQ

Нужен ли Kubernetes для первого проекта?

Обычно нет. Начните с PaaS (Render, Fly.io, Yandex Cloud Serverless Containers) или VPS + Docker Compose. K8s оправдан при нескольких сервисах, частых релизах и выделенной ops-команде.

Что выбрать — облако или свой сервер?

КритерийОблакоСвой сервер / colocation
СтартБыстрыйМедленнее
ОплатаПо использованиюCapEx + ops
МасштабЭластичныйРучной
ОтветственностьShared responsibilityВаша полностью

Сравнение — 8.01/1, облака РФ — 8.12/5.

Как понять, что инфраструктура "достаточно хороша"?

Минимальные критерии для pet-проекта и стартапа:

  • prod доступен по HTTPS;
  • есть staging;
  • CI на PR;
  • бэкап БД с проверкой restore раз в квартал;
  • on-call или хотя бы алерт в Telegram при падении;
  • секреты вне Git.

Практикум — первый VPS с Docker и HTTPS

Пошаговый сценарий для pet-проекта на Ubuntu VPS. Выполняйте только на сервере, которым владеете.

Шаг 1. Подключение по SSH

ssh -i ~/.ssh/id_ed25519 deploy@203.0.113.10

Ожидаемый результат: приглашение shell без запроса пароля (вход по ключу).

Шаг 2. Установка Docker

sudo apt update
sudo apt install -y docker.io docker-compose-plugin
sudo usermod -aG docker deploy
newgrp docker
docker run hello-world

Ожидаемый результат: "Hello from Docker!".

Шаг 3. Деплой приложения

git clone https://github.com/your-org/your-app.git
cd your-app
cp .env.example .env
# отредактируйте .env на сервере — не коммитьте
docker compose up -d
docker compose ps

Шаг 4. nginx и Let's Encrypt

sudo apt install -y nginx certbot python3-certbot-nginx
sudo certbot --nginx -d api.example.com
curl -I https://api.example.com/health

Ожидаемый результат: HTTP/2 200, заголовок server от nginx.

Шаг 5. Бэкап PostgreSQL (cron)

# /usr/local/bin/backup-db.sh
#!/bin/bash
docker exec postgres pg_dump -U appuser appdb | gzip > /backups/appdb-$(date +%F).sql.gz
find /backups -name '*.sql.gz' -mtime +7 -delete
chmod +x /usr/local/bin/backup-db.sh
crontab -e
# 0 3 * * * /usr/local/bin/backup-db.sh

Проверка restore — 8.15 DR.


Типы хостинга — развёрнутая таблица

МодельПримерыВы управляетеПровайдер управляет
Bare metalСервер в стойкеОС, сеть, железоПитание, физика
VPS / IaaSDigitalOcean, SelectelОС, Docker, приложениеГипервизор, сеть DC
PaaSHeroku, Yandex Cloud FunctionsКод, конфигRuntime, масштаб
Managed DBRDS, Yandex MDBСхема, запросыПатчи, бэкапы СУБД
ServerlessAWS LambdaФункцияВсё остальное

Выбор — 8.01, российские провайдеры — 8.12/5.


Сетевые порты — что обычно открыто

ПортСервисДоступ из интернета
22SSHТолько с вашего IP или bastion
80HTTPДа, редирект на 443
443HTTPSДа
5432PostgreSQLНет (только private network)
6379RedisНет
9100node_exporterНет, только мониторинг

Сканирование открытых портов — nmap только на своей инфраструктуре.


Конфигурация nginx как reverse proxy — пример

server {
listen 443 ssl http2;
server_name api.example.com;

ssl_certificate /etc/letsencrypt/live/api.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/api.example.com/privkey.pem;

location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

X-Forwarded-* нужны приложению, чтобы знать реальный IP клиента и схему HTTPS.


Feature flags и инфраструктура

Feature flag — переключатель функции без нового деплоя. Инфраструктурно хранят в:

  • Redis / dedicated service (LaunchDarkly, Unleash);
  • ConfigMap в K8s;
  • env на staging, другой env на prod.

Опасность — флаг включили на prod, забыли выключить, нагрузка выросла в 10 раз. Нужны метрики и лимиты — 8.04/19.


Кэширование на уровне инфраструктуры

УровеньИнструментЧто кэшируется
CDNCloudflare, AkamaiСтатика, иногда API GET
Reverse proxynginx proxy_cacheОтветы бэкенда
ApplicationRedisСессии, горячие данные
DatabaseMaterialized viewsТяжёлые отчёты

Инвалидация кэша при деплое — частая причина "вижу старую версию сайта". Решение — cache busting по hash в имени файла.


Очереди и фоновые задачи

Долгие операции (отправка email, генерация PDF) не должны блокировать HTTP-запрос.

Worker масштабируется отдельно от API. Мониторинг длины очереди — алерт при росте.


Platform Engineering — зачем знать новичку

Platform Engineering — команда строит внутреннюю платформу (IDP, Internal Developer Platform), чтобы разработчики сами поднимали стенды по шаблону. Знание термина полезно при собеседовании и в крупных компаниях — 8.12/6.


Итоговый чек-лист главы

  • Могу объяснить цепочку от Git до пользователя
  • Знаю разницу dev, staging, prod
  • Понимаю роль CI, CD, артефакта
  • Выбрал маршрут A, B или C
  • Знаю, где лежат секреты и бэкапы в моём проекте
  • Прочитал про пять частых ошибок
  • Запланировал один практикум из таблицы

Дальше — итоги и чек-лист вопросов.


Дальше по разделу


Содержание