Лекции

Инциденты
Postmortems

Без вины: что сломалось в системе, не кто дурак.

Инциденты
Дежурства (On-call)

Кто просыпается и с каким правом действовать.

Инциденты
Инциденты в продакшене

Обнаружить, смягчить, восстановить, потом разбирать.

Уязвимости веб-приложений
SSRF

Сервер ходит по URL, который дал клиент.

Уязвимости веб-приложений
XSS

Чужой JS в браузере жертвы.

Уязвимости веб-приложений
SQL-инъекции

Пользовательский ввод как часть SQL.

Уязвимости веб-приложений
CSRF

Чужой сайт заставляет браузер ударить ваш API с cookie.

Уязвимости веб-приложений
CORS

Браузерный запрет чужому JS читать ваш API.

Шифрование и периметр
Защита от DDoS-атак

Объём, протокол, приложение.

Шифрование и периметр
WAF

Фильтр HTTP на краю.

Шифрование и периметр
Шифрование данных при передаче

По проводам только шифр.

Шифрование и периметр
Шифрование данных на диске

Украли диск — не прочитали данные.

Шифрование и периметр
TLS

Шифрование канала и проверка сервера.

Идентичность и секреты
Ротация JWT

Короткий access, отзыв, смена ключей подписи.

Идентичность и секреты
OAuth

Делегированный доступ без пароля ресурса.

Идентичность и секреты
IAM

Кто ты и что тебе можно.

Идентичность и секреты
Управление секретами

Не в Git, не в образе, с ротацией и аудитом.

SLO и алерты
Бюджеты ошибок

Сколько «плохого» ещё можно себе позволить.

SLO и алерты
SLO

Цель по SLI, которую обещаем себе.

SLO и алерты
SLI

Что именно измеряем как качество.

SLO и алерты
Алерты

Будить человека только если нужно действие.

Сигналы и мониторинг
Метрики

Счётчики, гистограммы, кардинальность.

Сигналы и мониторинг
Распределённая трассировка

Один запрос — дерево спанов.

Сигналы и мониторинг
Логирование

Структура, уровни, PII и стоимость.

Сигналы и мониторинг
Мониторинг

Следить за заранее выбранными индикаторами.

Сигналы и мониторинг
Наблюдаемость (Observability)

По логам, метрикам и трейсам понять неизвестный сбой.

Версионирование API
Семантическое версионирование

MAJOR.MINOR.PATCH — контракт совместимости.

Версионирование API
Версионирование API

Как менять контракт, не ломая клиентов.

IaC и зависимости
Dependency Hell

Конфликты версий и алмаз зависимостей.

IaC и зависимости
Кэширование сборки

Не пересобирать то, что не изменилось.

IaC и зависимости
Helm Charts

Пакет манифестов Kubernetes с шаблонами.

IaC и зависимости
Terraform

План, apply, state, провайдеры.

IaC и зависимости
Infrastructure as Code

Инфра в Git: повторяемо и ревьюится.

CI/CD и стратегии релиза
Rolling Deployments

Постепенная замена подов.

CI/CD и стратегии релиза
Canary Releases

Малый процент трафика на новую версию.

CI/CD и стратегии релиза
Blue-Green Deployment

Две среды, переключаем балансировщик.

CI/CD и стратегии релиза
Feature Flags

Выключить поведение без отката бинарника.

Контейнеры и оркестрация
Service Discovery

Как найти живой инстанс по имени.

Контейнеры и оркестрация
Kubernetes

Желаемое состояние: поды, сервисы, контроллеры.

Контейнеры и оркестрация
Docker

Изолированный процесс + образ как единица доставки.

CI/CD и стратегии релиза
CI/CD

Каждый коммит проверяется и может быть выкачен.

Память и потоки
Сборка мусора

Паузы, аллокации и почему p99 скачет.

Память и потоки
Утечки памяти

Растёт RSS, хотя «GC должен собрать».

Память и потоки
Потокобезопасность

Контракт: можно ли звать из многих потоков.

Память и потоки
Состояния гонки (Race Conditions)

Результат зависит от порядка потоков.

Миграции
Версионирование схем

Схема как контракт, совместимый с несколькими версиями кода.

Миграции
Миграции баз данных

Менять схему без простоя и без отрезанного отката.

Согласованность и блокировки
Взаимные блокировки (Deadlocks)

A ждёт B, B ждёт A.

Согласованность и блокировки
Распределённые блокировки

Lock в Redis/etcd — не магия взаимного исключения.

Согласованность и блокировки
Пессимистические блокировки

Занять строку до изменения.

Согласованность и блокировки
Оптимистические блокировки

Версия строки: конфликт ловим на UPDATE.

Согласованность и блокировки
Eventual Consistency

Когда-нибудь сойдётся, если записи прекратятся.

Согласованность и блокировки
CAP-теорема

При партиции: consistency или availability.

Репликация и шардинг
Выбор лидера

Кто primary: quorum, fencing, split-brain.

Репликация и шардинг
Партиционирование

Куски таблицы в одной БД.

Репликация и шардинг
Шардинг

Куски данных на разных узлах.

Репликация и шардинг
Репликация

Копии данных: sync vs async, логическая vs физическая.

Репликация и шардинг
Реплики для чтения

Читать со follower, писать в primary.

Запросы и индексы
Пулы соединений

Коннект к БД дороже запроса.

Запросы и индексы
N+1 запросов

Один список + запрос на каждый элемент.

Запросы и индексы
Оптимизация запросов

План запроса важнее микрооптимизаций в коде.

Запросы и индексы
Индексация баз данных

Зачем B-tree, что покрывает индекс и чем он бьёт запись.

Realtime
Server-Sent Events

Односторонний текстовый стрим от сервера.

Realtime
Long Polling

Держим HTTP-запрос, пока нет события.

Realtime
WebSockets

Двусторонний канал после HTTP upgrade.

Распределённые транзакции
Паттерн Saga

Цепочка локальных транзакций с компенсациями.

Распределённые транзакции
Распределённые транзакции

Почему 2PC в микросервисах почти не любят.

Очереди и события
Cron-задачи

Расписание в кластере: один запуск, не N подов.

Очереди и события
Очереди недоставленных сообщений (Dead Letter Queues)

Куда девать ядовитые сообщения.

Очереди и события
Событийная архитектура

Факты домена вместо цепочки RPC.

Очереди и события
Pub/Sub

Один факт — много подписчиков.

Очереди и события
Очереди сообщений

Буфер между продюсером и консьюмером.

Сеть и время
Расхождение часов

Почему time.Now() — плохой источник правды в кластере.

Сеть и время
Сетевые разделения

Split-brain: часть узлов не видит другую.

Восстановление и резерв
Откаты

Быстро вернуть предыдущую рабочую версию.

Восстановление и резерв
Chaos Engineering

Ломать специально, пока не сломал прод ночью.

Восстановление и резерв
Развёртывание в нескольких регионах

Latency, согласие данных и зачем второй регион.

Восстановление и резерв
Резервные копии

Бэкап без проверки восстановления — надежда, не стратегия.

Восстановление и резерв
Аварийное восстановление

DR: RPO, RTO и где жить после катастрофы.

Восстановление и резерв
Failover

Переключение на резерв при отказе.

Отказоустойчивые вызовы
Liveness и Readiness пробы

K8s: рестартовать vs снять с сервиса.

Отказоустойчивые вызовы
Health Checks

Жив ли процесс и можно ли слать трафик.

Отказоустойчивые вызовы
Идемпотентность

Повтор того же запроса не создаёт второй эффект.

Отказоустойчивые вызовы
Экспоненциальная задержка (Exponential Backoff)

Пауза 1s, 2s, 4s… плюс jitter.

Отказоустойчивые вызовы
Повторные запросы (Retries)

Когда повторять и когда это опасно.

Отказоустойчивые вызовы
Таймауты

Лимит ожидания на каждом hop.

Отказоустойчивые вызовы
Circuit Breakers

Размыкатель: не бить мёртвый сервис.

Масштаб и serverless
Оптимизация расходов

Где деньги: трафик, простой, overprovision.

Масштаб и serverless
Ограничения Serverless

Таймауты, холодный старт, вендор и стейт.

Масштаб и serverless
Cold Starts

Почему первый запрос медленный.

Масштаб и serverless
Автомасштабирование

Масштаб по метрикам, с кулдауном и запасом.

Масштаб и serverless
Вертикальное масштабирование

Больше CPU/RAM на одном узле.

Масштаб и serverless
Горизонтальное масштабирование

Добавлять инстансы, а не ядра.

Кэш и CDN
Инвалидация кэша

Как не отдавать устаревшие данные.

Кэш и CDN
Кэширование на edge-серверах

Кэш на PoP: что можно отдать без origin.

Кэш и CDN
CDN

Раздача контента с края сети.

Кэш и CDN
Кэширование

Где кэшировать, ключи, TTL и stampedes.

Нагрузка и шлюзы
Backpressure

Как не принять работы больше, чем можете обработать.

Нагрузка и шлюзы
API-шлюзы

Единая точка входа: auth, квоты, маршруты, агрегация.

Нагрузка и шлюзы
Обратные прокси

Nginx/Envoy как вход: TLS, кэш, маршрутизация.

Нагрузка и шлюзы
Балансировка нагрузки

L4/L7, алгоритмы и health checks у балансировщика.

Нагрузка и шлюзы
Ограничение количества запросов (Rate Limiting)

Защита от перегруза и злоупотреблений: алгоритмы и где ставить лимит.

Latency и пропускная способность
Tail Latency

Длинный хвост задержек и как его коротят.

Latency и пропускная способность
P99 Latency

Почему средний latency врёт и зачем процентили.

Latency и пропускная способность
Пропускная способность (Throughput)

Сколько работы система делает в единицу времени.

Latency и пропускная способность
Задержка (Latency)

Время ответа и из чего оно складывается.

HTTP, RPC и интеграции
Webhooks

Колбэки по HTTP: подпись, ретраи и идемпотентность.

HTTP, RPC и интеграции
gRPC

Контракт, Protobuf, стриминг и когда gRPC лучше REST.

HTTP, RPC и интеграции
HTTP/2 и HTTP/3

Мультиплексирование, HOL blocking и зачем понадобился QUIC.

DNS и транспорт
TCP vs UDP

Надёжная доставка против скорости: когда какой протокол.

DNS и транспорт
DNS

Резолвинг имён, записи, TTL и кэш — база для собеседования.