Наткнулся на описание курса по 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 практикам, запишитесь лучше на курс, очень эффективно всё разложат по полочкам. Плюс сейчас уже материал обкатан и отшлифован с учётом прошедших потоков.
И слушайте подкасты - интересно, не напряжно и расширяет кругозор!
20.04.2021