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

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
DevOps. Необходимость меняться
Модуль 2
Управление инфраструктурой и конфигурацией
Модуль 3
Continuous Integration & Continuous Delivery с использованием Docker
Модуль 4
Fast Feedback Loop (мониторинг и логирование)
Модуль 5
Контейнерная Оркестрация
Модуль 6
Проектная работа
DevOps. Необходимость меняться
Что такое DevOps и история его развития.
Как DevOps меняет жизнь и работу компаний. DevOps как профессия. Обзор курса.
DevOps как система.
Практики и методики. DevOps компетенции.
Система контроля версий как основа разработки и поставки ПО. Знакомство с Git.
Домашние задания: 1
ДЗ
Работа с локальным и удаленным репозиториями, исправление комитов, решение конфликтов, работа с ветками и практика Code Review..
Локальное окружение инженера. ChatOps и визуализация рабочих процессов. Командная работа с Git. Работа в GitHub.
Домашние задания: 1
ДЗ
Настройка локального окружения и практика ChatOps..
Знакомство с облачной инфраструктурой и облачными сервисами.
Практики безопасного доступа к ресурсам (SSH, Bastion Host, VPN).
Домашние задания: 1
ДЗ
Запуск VM в GCP, управление правилами фаервола, настройка SSH подключения, настройка SSH подключения через Bastion Host, настройка VPN сервера и VPN-подключения..
Основные сервисы Google Cloud Platform (GCP).
Способы управления ресурсами в GCP.
19 июня, 20:00 — 21:30
Лектор: Сергей Богатырец
Домашние задания: 1
ДЗ
Практика управления ресурсами GCP через gcloud.. Ручной деплой тестового приложения. Написание bash скриптов для автоматизации задач настройки VM и деплоя приложения.
Управление инфраструктурой и конфигурацией
Модели управления инфраструктурой.
Работа с образами VM в облаке. Знакомство с Packer и экосистемой компании HashiCorp.
21 июня, 20:00 — 21:30
Домашние задания: 1
ДЗ
Подготовка базового образа VM при помощи Packer.. Деплой приложения с использованием подготовленного базового образа.
Практика Infrastructure as a Code (IaC).
Знакомство с Terraform.
26 июня, 20:00 — 21:30
Домашние задания: 1
ДЗ
Декларативное описание в виде кода инфраструктуры GCP, требуемой для запуска тестового приложения, при помощи Terraform..
Принципы организации инфраструктурного кода и работа над инфраструктурой в команде на примере Terraform.
28 июня, 20:00 — 21:30
Домашние задания: 1
ДЗ
Создание Terraform модулей для управления компонентами инфраструктуры.. Описание и настройка инфраструктуры нескольких окружений. Работа с Terraform remote backend.
Управление конфигурацией.
Основные DevOps инструменты: Chef, Ansible, Puppet, Salt. Знакомство с Ansible.
3 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Написание Ansible плейбуков на основе имеющихся bash скриптов.. Сборка базовых образов при помощи Packer и Ansible.
Продолжение знакомства с Ansible: templates, handlers, dynamic inventory, vault, tags.
5 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Управление настройками хостов и деплой приложения при помощи Ansible..
Принципы организации кода для управления конфигурацией.
Ansible роли, управление настройками нескольких окружений и best practices.
10 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Написание Ansible ролей для управления конфигурацией сервисов и настройками хостов.. Организация репозитория для работы с несколькими окружениями. Работа с Ansible Galaxy и комьюнити ролями.
Локальная разработка Ansible ролей с Vagrant. Тестирование конфигурации.
12 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Доработка имеющихся ролей локально с использование Vagrant.. Тестирование конфигурации при помощи Molecule и TestInfra.
Continuous Integration & Continuous Delivery с использованием Docker
Технология контейнеризации. Введение в Docker.
17 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Установка Docker, запуск контейнера на локальной машине, выполнение команд внутри контейнера, создание образа контейнера на основе запущенного..
Docker контейнеры. Docker под капотом
19 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Запуск VM с установленным Docker Engine при помощи Docker Machine. Написание Dockerfile и сборка образа с тестовым приложением. Сохранение образа на DockerHub..
Docker образы. Микросервисы
24 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Разбиение приложения на несколько микросервисов. Выбор базового образа. Подключение volume к контейнеру..
Сетевое взаимодействие Docker контейнеров. Docker Compose. Тестирование образов
26 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Практика работы с основными типами Docker сетей. Декларативное описание Docker инфраструктуры при помощи Docker Compose..
Технология непрерывной поставки ПО
31 июля, 20:00 — 21:30
Домашние задания: 1
ДЗ
Чтение литературы.
Устройство Gitlab CI. Построение процесса непрерывной интеграции
2 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
Gitlab CI. Построение процесса непрерывной интеграции.
Непрерывная поставка с Gitlab CI
7 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
Расширяем существующий CI пайплайн. Работа с окружениями в Gitlab CI для построения непрерывной поставки функционала приложений..
Fast Feedback Loop (мониторинг и логирование)
Введение в мониторинг. Модели и принципы работы систем мониторинга
9 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
Создание и запуск системы мониторинга Prometheus.. Мониторинг состояния микросервисов, сбор метрик при помощи prometheus exporters.
Мониторинг приложения и инфраструктуры. Визуализация и анализ результатов мониторинга. Знакомство с системами рассылки оповещений, Алертинг
14 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
Сбор и анализ метрик приложений, а также бизнес метрик. Создание уведомлений на основе собранных данных..
Применение инструментов для обработки лог данных
Что такое логи и зачем они нужны? Системы централизованного хранения лог данных, требования к ним и примеры. Форматы и варианты логирования приложений
21 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
Логирование приложений.. Структурированные и неструктурированные логи. Организация централизованной системы логирования.
Применение системы логирования в инфраструктуре на основе Docker.
Рассмотрение систем распределенной отладки данных (Distributed tracing)
23 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
Логирование приложений.. Структурированные и неструктурированные логи. Продолжение создания и работы централизованной системой логирования.
Контейнерная Оркестрация
Контейнерная оркестрация.
Примеры известных и актуальных систем оркестрации (DC/OS, Aurora, Nomad, Docker Swarm)
28 августа, 20:00 — 21:30
Введение в Kubernetes.
Основные концепции и архитектура системы.
30 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
Установка и настройка Kubernetes.. Работа над автоматизацией процесса развертывания системы.
Основные модели безопасности и контроллеры в Kubernetes
4 сентября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Установка и настройка Google Kubernetes Engine, настройка локального профиля администратора для GKE. Работа с с контроллерами: StatefulSet, Deployment, DaemonSet.
Ingress-контроллеры и сервисы в Kubernetes.
Работа с удаленными хранилищами данных.
6 сентября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Настройка балансировщиков нагрузки в Kubernetes и SSL­Terminating.. Подключение удаленных хранилищ GCP данных к POD’ам.
Интеграция Kubernetes в GitlabCI.
Использование формата упаковки приложений Charts в Kubernetes Helm.
11 сентября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Создание Helm Chart’ов для компонент приложения, управление зависимостями Helm.. Построение CI/CD pipeline в Gitlab в интеграции с Kubernetes.
Kubernetes. Мониторинг и логирование
Развертывание Prometheus в Kubernetes. Настройка Prometheus и Grafana для сбора метрик кластера и приложений. Развертывание и настройка EFK для сбора логов.
13 сентября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Развертывание Prometheus в Kubernetes.
Финальное занятие. Выдача курсового проекта
Подводим итоги по курсу.
Выдаем курсовой проект и даем возможность за пятый месяц закрыть долги по домашкам студентам и проверить их преподавателям.
Финальное занятие. Подведение итогов обучения
Встреча выпускников!
Обсуждаем проекта, орг вопросы по окончанию курса. Ощаемся на темы выпускников.
Проектная работа
Проектная работа заключается в полноценном production grade развертывании приложения с учетом изученных практик и инструментов.

Мы предоставляем приложение, которое нужно развернуть, но лучше будет если вы возьмете свое с работы или pet project. В проектной работе нет однозначно хорошего пути, это исследовательский проект, где преподаватель будет оценивать целесообразность использования тех или иных решений и давать советы по улучшению проекта.
Расписание
DevOps-2018-05 (набор закрыт c 18 мая)
19 июня, вторник 20:00 — 21:30
Преподаватель Сергей Богатырец
21 июня, четверг 20:00 — 21:30
DevOps-2018-02 (набор закрыт c 15 февраля)
21 июня, четверг 20:00 — 21:30
Преподаватель Дмитрий Мищенко
28 июня, четверг 20:00 — 21:30
Преподаватель Сергей Богатырец
Преподаватели
Александр Титов
Александр Титов Развивает тему DevOps в России, внедряет системы управления конфигурацией, занимался эксплуатацией интернет-проектов в компаниях Скалакси, Skype, Qik, Microsoft.
Сергей Богатырец
Помогает внедрять практики непрерывной поставки, улучшать процессы управления инфраструктурой и ее мониторинга. За время работы в Экспресс42 работал над проектами Рокетбанк, Paymantix, Cloudlock и Первый ОФД.
Юрий Игнатов
В должности старшего инженера в компании Express42 Юрий разрабатывает и внедряет решения для непрерывной поставки продуктов enterprise-организаций, помогает с адаптацией DevOps-практик, а так же проводит обучения и мастер-классы по дисциплинам автоматизации и управлению конфигурацией.
Виталий Хабаров
Работая системным администратором, пришёл к выводу, что полезные задачи надо автоматизировать, а от деятельности, не приносящей пользу, следует избавляться. Устроившись в компанию Экспресс 42, открыл для себя практики DevOps, которые сейчас и помогает распространять внутри компаний-разработчиков.
Андрей Александров
Внедряет DevOps практики в команды, адаптируя их под специфику компаний. Обучает новым подходам и процессам ведения разработки и управления инфраструктурой. Работал с такими компаниями как: Первый ОФД, Рокетбанк, Cloudlock, WildApricot, МТС.
Отзыв
Петр Мязин
Наткнулся на описание курса по 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 практикам, запишитесь лучше на курс, очень эффективно всё разложат по полочкам. Плюс сейчас уже материал обкатан и отшлифован с учётом прошедших потоков.

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