Это курс нашего партнера Партнер
Начало занятий 16 мая

DevOps практики и инструменты

Общая стоимость: 60 000 ₽
В месяц: 15 000 ₽
4 часа в неделю
5 месяцев
О курсе

Курс составлен на основе опыта, накопленного компанией Экспресс 42, которая на протяжении уже более 5 лет, помогает внедрять DevOps практики в крупных российских и зарубежных компаниях. Все занятия проводятся действующими инженерами компании.

DevOps решает задачу взаимодействия инженеров между собой с целью помочь им быстрее создавать и обновлять сервисы и приложения.

На курсе будут разобраны инструменты для реализации практик инфраструктура как код, непрерывная поставка ПО и непрерывный сбор метрик (мониторинг и логирование).

Практические задания будут выполняться с использованием Google Cloud Platform (GCP). Для того чтобы сделать использование ресурсов GCP бесплатным для участников курса, от вас потребуется наличие Google аккаунта, у которого не активирован бесплатный пробный период (free trial) в GCP. Free trial дает $300 на использование GCP в течение года. Для активации free trial будет нужна банковская карта для подтверждения личности. Вдобавок к $300, которые участники получают при использовании free trial, компания Softline предоставит дополнительно каждому участнику $200 на использование GCP. Этих средств хватит для выполнения всех практических заданий в рамках курса.

Необходимое время: 2 лекции в неделю по 2 академических часа и 4 часа на домашнее задание.

Программа курса
1
модуль
2
модуль
3
модуль
4
модуль
5
модуль
DevOps. Необходимость меняться
Занятие 1: Что такое DevOps и история его развития.
Как DevOps меняет жизнь и работу компаний. DevOps как профессия. Обзор курса.
Занятие 2: DevOps как система.
Практики и методики. DevOps компетенции.
Занятие 3: Система контроля версий как основа разработки и поставки ПО. Знакомство с Git.
ДЗ
Работа с локальным и удаленным репозиториями, исправление комитов, решение конфликтов, работа с ветками и практика Code Review..
Занятие 4: Локальное окружение инженера. ChatOps и визуализация рабочих процессов.
ДЗ
Настройка локального окружения и практика ChatOps..
Занятие 5: Знакомство с облачной инфраструктурой и облачными сервисами.
Практики безопасного доступа к ресурсам (SSH, Bastion Host, VPN).
ДЗ
Запуск VM в GCP, управление правилами фаервола, настройка SSH подключения, настройка SSH подключения через Bastion Host, настройка VPN сервера и VPN-подключения..
Занятие 6: Основные сервисы Google Cloud Platform (GCP).
Способы управления ресурсами в GCP.
ДЗ
Практика управления ресурсами GCP через gcloud.. Ручной деплой тестового приложения. Написание bash скриптов для автоматизации задач настройки VM и деплоя приложения.
Занятие 7: Командная работа с Git. Работа в GitHub. Продвинутые команды Git
ДЗ
Решение конфликтов, создание шаблонов в репозитрии GitHub, работа по Git Workflow. .
Управление инфраструктурой и конфигурацией
Занятие 8: Модели управления инфраструктурой.
Работа с образами VM в облаке. Знакомство с Packer и экосистемой компании HashiCorp.
ДЗ
Подготовка базового образа VM при помощи Packer.. Деплой приложения с использованием подготовленного базового образа.
Занятие 9: Практика Infrastructure as a Code (IaC).
Знакомство с Terraform.
ДЗ
Декларативное описание в виде кода инфраструктуры GCP, требуемой для запуска тестового приложения, при помощи Terraform..
Занятие 10: Принципы организации инфраструктурного кода и работа над инфраструктурой в команде на примере Terraform.
ДЗ
Создание Terraform модулей для управления компонентами инфраструктуры.. Описание и настройка инфраструктуры нескольких окружений. Работа с Terraform remote backend.
Занятие 11: Управление конфигурацией.
Основные DevOps инструменты: Chef, Ansible, Puppet, Salt. Знакомство с Ansible.
ДЗ
Написание Ansible плейбуков на основе имеющихся bash скриптов.. Сборка базовых образов при помощи Packer и Ansible.
Занятие 12: Продолжение знакомства с Ansible: templates, handlers, dynamic inventory, vault, tags.
ДЗ
Управление настройками хостов и деплой приложения при помощи Ansible..
Занятие 13: Принципы организации кода для управления конфигурацией.
Ansible роли, управление настройками нескольких окружений и best practices.
ДЗ
Написание Ansible ролей для управления конфигурацией сервисов и настройками хостов.. Организация репозитория для работы с несколькими окружениями. Работа с Ansible Galaxy и комьюнити ролями.
Занятие 14: Локальная разработка Ansible ролей с Vagrant. Тестирование конфигурации.
ДЗ
Доработка имеющихся ролей локально с использование Vagrant.. Тестирование конфигурации при помощи Molecule и TestInfra.
Continuous Integration & Continuous Delivery с использованием Docker
Занятие 15: Технология контейнеризации. Введение в Docker.
ДЗ
Установка Docker, запуск контейнера на локальной машине, выполнение команд внутри контейнера, создание образа контейнера на основе запущенного..
Занятие 16: Docker контейнеры. Docker под капотом
ДЗ
Запуск VM с установленным Docker Engine при помощи Docker Machine. Написание Dockerfile и сборка образа с тестовым приложением. Сохранение образа на DockerHub..
Занятие 17: Docker образы. Микросервисы
ДЗ
Разбиение приложения на несколько микросервисов. Выбор базового образа. Подключение volume к контейнеру..
Занятие 18: Сетевое взаимодействие Docker контейнеров. Docker Compose. Тестирование образов
ДЗ
Практика работы с основными типами Docker сетей. Декларативное описание Docker инфраструктуры при помощи Docker Compose..
Занятие 19: Технология непрерывной поставки ПО
ДЗ
Чтение литературы.
Занятие 20: Устройство Gitlab CI. Построение процесса непрерывной интеграции
ДЗ
Gitlab CI. Построение процесса непрерывной интеграции.
Занятие 21: Непрерывная поставка с Gitlab CI
ДЗ
Расширяем существующий CI пайплайн. Работа с окружениями в Gitlab CI для построения непрерывной поставки функционала приложений..
Fast Feedback Loop (мониторинг и логирование)
Занятие 22: Введение в мониторинг. Модели и принципы работы систем мониторинга
ДЗ
Создание и запуск системы мониторинга Prometheus.. Мониторинг состояния микросервисов, сбор метрик при помощи prometheus exporters.
Занятие 23: Мониторинг приложения и инфраструктуры
Занятие 24: Визуализация и анализ результатов мониторинга. Знакомство с системами рассылки оповещений, Алертинг
ДЗ
Сбор и анализ метрик приложений, а также бизнес метрик. Создание уведомлений на основе собранных данных..
Занятие 25: Применение инструментов для обработки лог данных
Что такое логи и зачем они нужны? Системы централизованного хранения лог данных, требования к ним и примеры. Форматы и варианты логирования приложений
ДЗ
Логирование приложений.. Структурированные и неструктурированные логи. Организация централизованной системы логирования.
Занятие 26: Применение системы логирования в инфраструктуре на основе Docker.
Рассмотрение систем распределенной отладки данных (Distributed tracing)
ДЗ
Логирование приложений.. Структурированные и неструктурированные логи. Продолжение создания и работы централизованной системой логирования.
Контейнерная Оркестрация
Занятие 27: Контейнерная оркестрация.
Примеры известных и актуальных систем оркестрации (DC/OS, Aurora, Nomad, Docker Swarm)
Занятие 28: Детальное знакомство с Docker Swarm.
Работа сети в кластере, политики учета и деплоя приложений в Swarm mode.
ДЗ
Создание кластера на основе Docker Swarm. Конфигурация приложения для работы в Swarm mode.
Занятие 29: Введение в Kubernetes.
Основные концепции и архитектура системы.
ДЗ
Установка и настройка Kubernetes.. Работа над автоматизацией процесса развертывания системы.
Занятие 30: Основные модели безопасности и контроллеры в Kubernetes
ДЗ
Установка и настройка Google Kubernetes Engine, настройка локального профиля администратора для GKE. Работа с с контроллерами: StatefulSet, Deployment, DaemonSet.
Занятие 31: Ingress-контроллеры и сервисы в Kubernetes.
Работа с удаленными хранилищами данных.
Занятие 32: Интеграция Kubernetes в GitlabCI.
Использование формата упаковки приложений Charts в Kubernetes Helm.
Занятие 33: Масштабирование в Kubernetes
Преподаватели
Александр Титов
Александр Титов Развивает тему DevOps в России, внедряет системы управления конфигурацией, занимался эксплуатацией интернет-проектов в компаниях Скалакси, Skype, Qik, Microsoft.
Сергей Богатырец
Помогает внедрять практики непрерывной поставки, улучшать процессы управления инфраструктурой и ее мониторинга. За время работы в Экспресс42 работал над проектами Рокетбанк, Paymantix, Cloudlock и Первый ОФД.
Юрий Игнатов
В должности старшего инженера в компании Express42 Юрий разрабатывает и внедряет решения для непрерывной поставки продуктов enterprise-организаций, помогает с адаптацией DevOps-практик, а так же проводит обучения и мастер-классы по дисциплинам автоматизации и управлению конфигурацией.
Виталий Хабаров
Работая системным администратором, пришёл к выводу, что полезные задачи надо автоматизировать, а от деятельности, не приносящей пользу, следует избавляться. Устроившись в компанию Экспресс 42, открыл для себя практики DevOps, которые сейчас и помогает распространять внутри компаний-разработчиков.
Андрей Александров
Внедряет DevOps практики в команды, адаптируя их под специфику компаний. Обучает новым подходам и процессам ведения разработки и управления инфраструктурой. Работал с такими компаниями как: Первый ОФД, Рокетбанк, Cloudlock, WildApricot, МТС.
Максим Орешников
Работает инженером в ООО «Экспресс 42».

В отрасли - 25 лет. В направлении DevOps 2 года.
Несколько проектов построения CI/CD в Райффайзен Банке.

В 1994 году закончил Ульяновский политехнический институт, инженер-системотехник.
Область интересов - автоматизация, DevOps.
Отзыв
Петр Мязин
Наткнулся на описание курса по DevOps совершенно случайно, но по стечению обстоятельств в нужный момент - я тогда активно внедрял Ansible в своих рабочих проектах, немного использовал Docker для окружения в разработке, имел обрывочную информацию о Hashicorp Stack (Packer, Terraform, …), что-то слышал про Kubernetes - в первую очередь благодаря подкастам DevOps Deflope и Hangops.ru. Одновременно с этим я понимал, что мои знания не систематизированы и хаотичны, хотелось всё разложить по полочкам. Я в первую очередь разработчик, а не системный администратор, у меня не было желания и времени углубляться в темы администрирования Linux, но хотелось владеть базовыми инструментами на стыке Dev и Ops.

Прочитав программу курса, я выделил для себя темы которые были однозначно актуальны (Ansible, Docker), и прочие для расширения кругозора. Финальным аргументом "ЗА" стало то, что среди преподавателей увидел знакомые имена из подкастов про DevOps - к этим ребятам уже было какое-то доверие.

Я проходил курс с первым потоком (первым набором) и иногда это было заметно, материал курса проходил проверку боем впервые. Иногда в материалах были ошибки или опечатки, но они быстро разрешались либо смекалкой, либо обсуждением в Slack чате, чувствовалось что ведущие курса реально переживали за своё дело, старались помочь, разъяснить, исследовать возникшие проблемы - честно говоря, я такого не ожидал!

Сквозной нитью через весь курс проходит некое приложение, аналог Reddit, инфраструктуру для которого мы постепенно описывали и разворачивали различными инструментами. Практические занятия на мой взгляд составляют 80% всей ценности в этом курсе и составлены они весьма хорошо. Представляю какой титанический труд был проделан для проектирования и описания всей этой учебной инфраструктуры в методических материалах.

Самой большой трудностью для меня было то, что часть учебного приложения написана на Ruby и puma, с которыми я никогда не работал и не имею никакого опыта. Править код приложения не требовалось, но были сложности с установкой и настройкой system сервиса puma с использованием rvm - эта часть была задана как ДЗ. Через час слепых попыток по мотивам ответов на stackoverflow я понял, что просто теряю время. Разбираться с нюансами запуска Ruby мне было совершенно не интересно и не практично, я посмотрел как выполнили это задание мои коллеги по курсу (другие студенты) и просто использовал их решение. Таких моментов было несколько - не стеснялся брать чужие решения, если считал тему не интересной для собственного глубокого погружения.

Домашние задания обычно содержали основную задачу и дополнительную задачу "со звёздочкой", которую можно выполнять по желанию. И тут опять же - некоторые мне были реально интересны и я погружался в тему, а некоторые задания "со звёздочкой" пропускал, чтобы не тратить время и идти дальше.

Большую часть лекций я смотрел в записи, т.к. время online вещания лично для меня было не удобно. Кажется, всего 3 лекции я посмотрел в режиме реального времени. И так оказалось даже лучше. Во-первых, записи я смотрел с ускорением 1.25-1.5 - очень экономит время без ущерба восприятию материала. Во-вторых, мог ставить на паузу, некоторые лекции смотрел в метро по дороге.

По ходу курса я сильно отстал, пропустил около 1,5 месяцев, но не чувствовал себя "за бортом" и получал помощь и полезные советы от преподавателей на ровне со всеми. Судя по чату, больше меня отстал всего один человек и это даже как-то подбадривало, что я не самый последний.

В конце курса был дипломный проект, по желанию, но для тех кто сдал домашние работы по 23 лекцию включительно (всего лекций было около 30). Я поставил себе цель наверстать всё вплоть 23 лекции и переходить к проекту, чтобы успеть до окончания. Таким образом я пропустил последнюю часть курса про Kubernetes, зато успешно поработал над дипломным проектом.

В качестве дипломного проекта предлагалось готовое приложение, которое нужно было развернуть в Google Cloud Platform с использование лучших практик и полученных знаний, Выбор конкретных инструментов оставался за студентом. Как вариант, можно было использовать своё собственное приложение.

Я взял своё приложение, над которым трудился по работе. Сначала описал предполагаемую архитектуру и обосновал выбор инструментов в отдельном документе в Google Docs, расшарил в Slack чате, получил пару рекомендаций, начал работать.

Как я быстро обнаружил, дипломный проект является важной частью обучения - это закрепления материала. Пересматривая слайды старых презентаций и выполненное мной когда-то ДЗ, некоторые темы открывал для себя в новом свете. И, хотя эти темы были давно пройдены, я не стеснялся задавать свои свежие вопросы в чате и получал помощь от коллег-студентов и преподавателей.

По ходу дипломной работы пришлось уменьшить амбиции касательно архитектуры, иначе я бы просто не успел к сроку показа первой версии. Успел! Дмитрий Мищенко, один из преподавателей, сделал очень подробное ревью первой версии, показал слабые места в архитектуре, за что ему огромное спасибо!

В итоге я успешно сдал более-менее работающий проект, получив зачёт. А ещё через пару недель, доведя всё до ума, вывел этот проект в production, ведь это с самого начала была реальная живая задача по работе, которая к тому же прошла тщательное ревью специалистом из Express 42. Думаю, если бы я нанимал компанию Express 42 в качестве внешних консультантов на проект, их работа могла бы оказаться дороже, чем я заплатил за курс обучения на Otus. Такой лайфхак, берите на заметку ;)

Пропущенные лекции и ДЗ по Kubernetes так и лежат на моём компьютере, возможно, я к ним вернусь, но уже без возможности получить проверку домашней работы. Зато чат остаётся активным, думаю, всегда смогу задать вопрос и получить совет от бывших студентов или даже от преподавателей.

В конце курса выдаётся сертификат. Наверное, он доступен где-то в личном кабинете, но, честно говоря, не знаю зачем он мне мог бы пригодиться.

Также по было предложение пройти собеседование в одной из компаний-партнёров или даже во всех (этот момент не очень понял - действительно можно было напроситься на собеседования ко всем компаниям партнёрам?). Я отказался, т.к. вакансия DevOps инженера меня не интересовала, я лишь хотел подтянуть свои знания современных инструментов, чтобы стать более эффективным и полезным как разработчик.

В общем, материалом курса и самим процессом остался очень доволен. А результат, в частности реально запущенный проект, превзошли все ожидания!

Рекомендую, чтобы не тратить время на самостоятельный сбор информации по современным DevOps практикам, запишитесь лучше на курс, очень эффективно всё разложат по полочкам. Плюс сейчас уже материал обкатан и отшлифован с учётом прошедших потоков.

И слушайте подкасты - интересно, не напряжно и расширяет кругозор!
Работодатели