- Учитель: Анна Овсепян
- Учитель: Владимир Соловьев
SRE для инфраструктурной команды DBA
SRE для инфраструктурной команды DBA
Обучаем SRE-подходу, где объектами управления выступают PostgreSQL, Patroni, etcd, NFS и Ansible/Teamcity
Все примеры, метрики и инциденты из области инфраструктуры БД.
1. Введение в SRE/DRE, DevOps и эксплуатацию инфраструктуры
- От «DBA-героя, который чинит базу руками ночью» к «Инженеру надежности, который строит систему».
- Четкое разграничение зон ответственности. DBA-SRE отвечает за доступность, отказоустойчивость, бэкапы и автоматизацию. DBA-SRE не отвечает за бизнес-логику, SQL-запросы приложений и код разработчиков.
2. Надежность сервисов: SLI, SLO, SLA и Error Budgets
- Расчет цели 99.9% (~43 минуты простоя в месяц) для инфраструктуры БД.
- Примеры SLI:
- Доступность кластера (успешность подключения к VIP/HAProxy).
- Время автоматического failover (Patroni).
- Отставание репликации (replication lag).
- Процент успешных бэкапов и restore-тестов.
- Error Budget: Как использовать бюджет ошибок. Пример: Если из-за деградации NFS мы «сожгли» Error Budget на этой неделе, мы замораживаем плановые минорные обновления PostgreSQL и занимаемся только стабильностью хранилища.
3. Git для работы с инфраструктурой
- Версионирование конфигураций СУБД.
- Хранение в Git не только Ansible-кода, но и конфигов postgresql.conf, pg_hba.conf, patroni.yml. Почему ручное изменение конфига на сервере БД — это нарушение SRE-практик.
4. Командная работа и управление изменениями через Git
- Code Review для инфраструктурных изменений БД.
- Как безопасно вносить изменения в параметры памяти (shared_buffers) или настройки WAL. Защита продакшен-баз от несанкционированных изменений. Ветвление для тестовых стендов БД.
5. Основы Configuration Management и Infrastructure as Code (IaC)
- Почему ручное создание реплик и настройка HA — это антипаттерн.
- Описание инфраструктуры БД (Standalone, Primary/Standby, HA Patroni) в виде кода. Гарантия идентичности сред (dev/stage/prod).
6. Ansible: базовая работа
- Управление состоянием сервисов БД и ОС.
- Автоматизация установки пакетов, управление systemd-юнитами (PostgreSQL, Patroni, etcd), настройка пользователей ОС и прав доступа к серверам БД.
7. Организация Ansible-проектов
- Структура репозитория для команды DBA.
- Разработка ролей: postgres-install, patroni-config, nfs-mount, pg_probackup, zabbix-agent. Управление inventory для разных сред и кластеров.
8. Ansible для управления реальной инфраструктурой
- Развертывание Target Architecture в Private Cloud (VMware/OpenStack).
- Автоматическое создание HA-кластера из 3 нод (2 ноды Postgres+Patroni+etcd + 1 нода witness etcd). Настройка anti-affinity (размещение нод на разных хостах/стойках), подключение клиентов через DNS/VIP/HAProxy. Строгий No-console подход (запрет ручных правок на проде).
9. Продвинутые практики Ansible и устранение рутины (Toil)
- Автоматизация ежедневных задач DBA.
- Автоматизация обновления ОС. Создание Self-Service инструментов (например, через UI или API) для разработчиков, чтобы они сами могли поднимать тестовые БД без тикетов в DBA-отдел.
10. Secrets, доступы и безопасность инфраструктуры
- Безопасное хранение кредов СУБД.
- Где и как хранить пароли суперпользователей БД, replication-токены, ключи SSH. Интеграция Ansible с хранилищами секретов (например, HashiCorp Vault) для безопасной передачи паролей во время деплоя кластера.
11. Git + Ansible как единый процесс управления изменениями
- GitOps для баз данных.
- Жизненный цикл изменения конфига БД: Изменение в Git -> Pull Request -> Review коллегой -> Merge -> Автоматический пайплайн применяет изменение.
12. CI/CD и автоматизация инфраструктурных изменений
- Использование TeamCity и Bitbucket для инфраструктуры БД.
- Пайплайны для линтинга Ansible-ролей, автоматического прогона молекулярных тестов (Molecule) для ролей PostgreSQL. Автоматический запуск restore-тестов в песочнице после каждого изменения скриптов бэкапа.
13. Мониторинг, логирование и alerting
- Zabbix (алерты) и Grafana (дашборды) для инфраструктуры.
- Отказ от алертов вида «CPU > 90%». Настройка правильных алертов: «потеря кворума etcd», «replication lag > порога», «кол-во ожидающих сессий больше порога», «бэкап pg_probackup не завершился». Логирование событий Patroni/Postgres для расследования split-brain.
14. SRE/DRE-практики при работе с инцидентами и изменениями
- Реагирование на сбои БД и управление рисками.
- Матрица эскалации: Sev1 (падение кластера, реакция 5 мин), Sev2 (деградация, реакция 15 мин). Написание Runbooks для типовых аварий. Blameless Postmortem (разбор инцидента без поиска виноватых, с фокусом на системные улучшения). Оценка рисков через CAB (Change Advisory Board) перед сложными работами.
15. Отказоустойчивость, резервирование и восстановление
- Бэкапы и Chaos Engineering для БД.
16. Итоговая практическая работа
- Комплексная задача, имитирующая реальную задачу DBA-SRE.
- Учитель: Владимир Соловьев
DevOps2 – DevOps: от теории к практике
Программа курса
DevOps2 – DevOps: от теории к практике
Продолжительность
36 академических часов
Курс предназначен для тех, кто хочет освоить современные практики и инструменты, позволяющие эффективно интегрировать разработку и операционную деятельность в IT.
Участники курса познакомятся с основами DevOps, его философией и принципами, а также изучат ключевые инструменты, такие как Docker, Jenkins и Git.
Формат обучения:
Дистанционно по будням с 19 до 21.30 часа по Мск.
Аудитория курса:
Курс подходит как для начинающих специалистов в области IT, так и для опытных разработчиков и системных администраторов, желающих расширить свои навыки в области DevOps.
Программа
1. Введение. История DevOps.
• Кто такой DevOps-инженер.
• Что такое Agile-практики.
• Достоинства и недостатки Agile.
• Какую роль DevOps-инженер занимает на проекте.
• Что должен уметь DevOps.
• Принципы DevOps.
2. Основы компьютерных сетей.
• Модель OSI.
• TCP/IP
• IP-адреса.
• Разделение сети на подсети.
• Cистема доменных имён (DNS).
3. Сетевые протоколы.
• TCP, UDP.
• DNS, DHCP.
• Защищенные сетевые протоколы (TLS/SSL).
4. Оболочка командной строки - Powershell.
• Основные команды.
• Работа с объектами/каталогами/файлами.
• Логические/Условные операторы.
• Создание сценариев.
5. Системы контроля версий.
• Введение в системы контроля версий.
• Git как система контроля версий.
• Установка и конфигурация Git.
• Базовые команды Git.
• Выбор ветки git checkout.
• Понятие GitHub Flow.
6. Cемейство операционных систем Unix.
• Архитектурные особенности Unix.
• Консоль. Стандартные команды Unix.
• Операционные системы на базе ядра Linux.
• Процесс загрузки и демоны.
• Файловые системы.
• Команды du, df, dd.
• Механизм LVM.
7. Введение в администрирование операционной системы Ubuntu 22.04.
• Установка системы.
• Навигация по файловой системе.
• Права доступа к файлам.
• Управление программным обеспечением.
• Управление пользователями.
8. Оболочка командной строки - Bash.
• Основные команды.
• Работа с объектами/каталогами/файлами.
• Логические/Условные операторы.
• Создание сценариев.
9. Процесс сборки приложений.
• Основные инструменты сборки приложений.
• Работа с зависимостями приложений.
• Компиляция проекта.
• Тестирование кода.
• Создание артефактов и их хранение.
10. Nginx веб-сервер.
• Отличие от Apache
• Установка веб-сервера.
• Структура конфигурационного файла.
• Раздача файлов и статического контента.
• Настройка прокси-сервера, балансировка нагрузки.
11. Понятие непрерывной интеграции и доставки.
• Непрерывная интеграция (Continuous Integration).
• Непрерывное развертывание/доставка (Continuous Deployment/Delivery).
12. Jenkins как инструмент непрерывной интеграции.
• Установка.
• Конфигурация Jenkins сервера.
• Управление доступом.
• Создание задач, установка плагинов.
• Настройка высокой доступности.
13. Ansible как инструмент управления конфигурациями.
• Установка.
• Синтаксис конфигурационных файлов.
• Инвентаризация серверов.
• Понятие Playbooks/Tasks/Roles.
• Модули.
• Безопасность.
14. Docker как инструмент контейнеризации.
• Средства виртуализации и контейнеризации.
• Реестр контейнеров.
• Структура Dockerfile.
• Создание Docker Image.
• Развертывание Docker контейнера.
15. Kubernetes как инструмент оркестрации контейнерных приложений.
• Микросервисная архитектура приложений.
• Архитектура Kubernetes кластера.
• Kubernetes контроллеры.
• Конфигурация и безопасность.
• Мониторинг работы Kubernetes.
16. Базы данных.
• Типы баз данных.
• Установка MySQL.
• Создание резервных копий.
• Восстановление из резервных копий.
17. Введение в облачные технологии.
• Облачные провайдеры и их сервисы.
• Инфраструктура как сервис.
• Инфраструктура как код.
18. Экзамен (Практика+Теория)