Пишу о главном

  • Отзыв о курсе “Инфраструктурная платформа на основе Kubernetes” от Otus

    Хочу поделиться своим опытом обучения на курсе “Инфраструктурная платформа на основе Kubernetes” на платформе OTUS.
    Поток проходил в период 27 июня — 1 января 2025 года.

    Для начала немного бэкграунда о себе.
    Изначально я разработчик с навыками devops: имею представление о Kubernetes, способен развернуть кластер, настроив в нём полноценную работу веб-приложения и т.п. При этом мне сильно не хватает углублённых знаний из devops направления. К примеру, я хотел научиться работать с istio и envoy, узнать про GitOps практики и настройку мониторинга кластера.

    Для меня главным критерием при выборе курса была учебная программа, которая содержит все эти топики. Большинство курсов по devops и k8s не включают в свой учебный план такие расширенные темы, поэтому курс от OTUS оказался для меня, по сути, единственным вариантом.
    У меня также есть опыт работы в EdTech: на протяжении шести лет я занимался запуском с нуля нескольких курсов, так что я имею представление о том, как выглядит качественный обучающий продукт.

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

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

    Кратко моё впечатление от всего курса можно описать фразой “как практически ничему не научиться за 100 т.р.”
    Качество этого учебного продукта я бы оценил где то на 5/10.
    Я крайне неудовлетворен абсолютно всеми аспектами курса: от качества теории и компетенции преподавателей и заканчивая удобством интерфейса кабинета ученика.
    Не хочу быть голословным, поэтому я в деталях описал все проблемы, с которыми я столкнулся на этом курсе.

    Программа курса и теория

    Основное в хорошем обучающем курсе — это качественная теория и практика, которые помогают лучше усвоить материал. О практике я расскажу позже, а сейчас объясню, почему, на мой взгляд, учебная программа и теоретическая часть этого курса оставляют желать лучшего.

    Лично для меня курс “продала” объёмная программа с большим количеством продвинутых тем. Но на поверку оказалось, что структура курса наполнялась с ориентиром на количество, а не качество.
    Авторы курса добавили в программу как можно больше тем, чтобы повысить его ценность в глазах будущих студентов, но такой подход привёл к тому, что все темы разобраны мягко скажем поверхностно

    В программе курса много лишних тем, но при этом забыты действительно важные топики.
    Не спорю, очень здорово уметь не только заниматься эксплуатацией, но и поднимать весь kubernetes кластер с нуля, разбираться в openshift, а также копаться в CNI и CRI.
    Но как часто такие навыки требуются типовому devops-инженеру?

    Поскольку по многим предметам нет домашних заданий, смотреть такие вебинары бесполезно. Если не закреплять теорию на практике, то всё, что преподаватель рассказал на лекции, быстро забудется. Поэтому такие модули — это просто видимость, ведь вся их суть сводится к одному-единственному вебинару, на котором ведущий очень быстро объясняет студентам много новых терминов и понятий. Но эта информация ни к чему не приведёт, она так и останется пустым звуком. Всё это не было бы проблемой, если бы действительно важные темы преподавались хорошо.
    Но, к сожалению, с этим тоже есть трудности.

    В курсе вообще не затронут целый ряд важных навыков и инструментов, знание которых как раз таки требуется от DevOps-специалиста почти в каждой компании: здесь забыли рассказать даже про такие фундаментальные вещи, как настройка горизонтального и вертикального масштабирования (VPA и HPA)!

    Здесь не нашлось места информации про использование ansible или другой системы управления конфигурациями. Ничего нет и про API gateway (который по актуальным best practics уже должен быть заменой Ingress), а про классические стратегии деплоя (canary, blue green) и способы их реализации вы тоже ничего не узнаете. Практика Service Discovery тоже осталась за бортом.

    Но как дела обстоят дела с имеющимися темами? Насколько хорошо и доступно студенту преподают эти знания?
    Кратко опишу на что похож типичный вебинар и презентация к нему.
    Обычным делом является ситуация, когда на вебинаре могут полчаса рассказывать про условную технологию, которая на самом деле в дальнейшем не нужна: в задании не используется, далее нигде не разбирается и препод просто потратил ваше время, чтобы рассказать что-то вроде “а есть еще вот такая штука, но она вам не понадобится”.

    Примером такой лекции может быть тема “Мониторинг компонентов кластера и приложений”: половину презентации заняла голая теория о неиспользуемых моделях сбора логов (просто для общего образования), но при этом нет ни слова про отличия различных типов метрик Prometheus и язык запросов PromQL. Еще четверть лекции заняло перечисление всех возможных видов БД для хранения этих метрик, но зачем это знать, когда ты не умеешь писать даже базовые запросы для их сбора?

    В качестве другого примера можно вспомнить лекцию “Хранилище секретов для приложений. Vault”. Здесь лектор тоже решил уделить много времени всем особенностям SOPS, но при этом сам Vault, который является довольно сложной и комплексной системой, оказался серьезно обделён вниманием.
    И в заключение хочу вспомнить лекцию про CI/CD, где в презентации не было вообще ни одного конфига, примера или любой другой практической информации.

    По хорошему, некоторым темам стоило уделить два урока: как минимум топики про Vault, Helm, CI/CD и GitOps того точно заслуживали.

    Преподаватели на лекциях любят ссылаться на термины, о которых ранее не рассказывали и не видят в этом никакой проблемы. В вебинаре про трассировку используется Istio, который будет в программе курса только позже.

    В программе курса вообще не наблюдается никакого системного подхода и нарастания сложности.

    Довольно базовые темы вроде CI/CD и service mesh находятся где то в конце курса, зато до них идёт CRD, трейсинг и Chaos Engineering.
    Вместо нормальной базы постоянно описываются какие то частности и нюансы, которые не запоминаются, т.к. возникают только в процессе реальной работы и то далеко не всегда.
    У авторов нет ориентира дать студенту только главную теорию, без лишних деталей, чтобы не усложнять и так перенасыщенный курс. Вместо этого на бедных учеников вываливают кучу разных терминов, технологий, но подробно их потом не разбирают и практику по ним не дают.

    Вся теория курса состоит только из вебинаров (советую смотреть в записи, чтобы сэкономить время) и презентаций к ним. Это всё. Методичка, учебник или, хотя бы, большой набор полезных ссылок к теме урока — всего этого здесь нет.
    Но даже с этим ограниченным набором авторы курса умудрялись налажать: презентации иногда забывали загружать и добавляли в интерфейс только после требований от студентов. А для темы “Сервисы централизованного логирования” презентацию вообще так и не загрузили.

    Оформление самих презентаций тоже оставляет желать лучшего: часто авторы любят использовать дефолтные иллюстрации, найденные в интернете, вместо того, чтобы нарисовать ту же схему самостоятельно. Такие картинки еще и зачастую очень низкого качества.
    В презентациях обычно тезисно описаны подробности по теме урока, но есть также и презентации вообще без любых примеров кода или другой конкретики — только высокоуровневые схемы без какого либо практического смысла.
    Особенно мне понравился такой оформительский приём, как добавить в презентацию ссылки на дополнительную информацию, но при этом не оформить их как ссылки, т.е. перейти по ним невозможно.

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

    Практическая часть курса

    Практика дана в виде домашних заданий, которые затем отправляются на проверку преподавателю или проверяющему.

    Я был уверен, что практика в виде ДЗ будет для всех разделов, но на деле для 10 из 24 модулей создатели курса делать задания не стали.
    Искренне не понимаю зачем включать в курс темы, по которым нет практики.
    Самое обидное, что заданий нет не для каких то дополнительных, факультативных тем в конце курса — нет для множества таких модулей задания как раз нашлись: темы про развертывание кластера, CSI, CRD имеют практику.
    Вместо этого авторы решили не добавлять задания в действительно важные темы, которые требуются практически каждому девопсеру: работа с vault, CI/CD, service mesh – istio, envoy. За Istio особенно обидно, ведь я выбрал этот курс в первую очередь из за него 🙁

    Вообще, отношение авторов к заданиям можно легко характеризовать хотя бы тем фактом, что они даже не загрузили задание к последнему разделу, хотя оно там должно быть и в информации модуля есть его описание. Но т.к. все студенты уже давно отвалились еще на середине курса, то этого никто даже и не заметил.

    Зачастую в ДЗ требуется сделать то, что даже близко не разбирали на вебинаре. Т.е. конкретный навык либо вообще не был представлен на вебинаре, либо был затронут очень вскользь и при выполнении практической работы всё равно приходится гуглить всю информацию с нуля.
    В задании из модуля “Хранилище секретов для приложений. Vault”, требуется устанавливать и настраивать в качестве хранилища consul, но об этом вообще ничего не было на вебинаре. Ещё пример: для полной реализации требований из задания про сетевые сущности Kubernetes требуется знание ресурса ConfigMap.

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

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

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

    Например, в практике к теме “Мониторинг приложения в кластере”, студенту необходимо собрать кастомный docker-образ, установить Prometheus-стек, настроить exporter, создать deployment, настроить манифест serviceMonitor и проверить как это работает.
    Описание всего этого в тексте задания состоит буквально из пяти лаконичных предложений, без каких либо деталей или критериев.
    Однако, в таких лаконичных заданиях есть и плюсы: работу можно делать как угодно плохо и поверхностно — её всё равно зачтут.

    В самих ДЗ также могут встречаться ошибки: некритичные и не слишком серьёзные (вроде некорректного имени неймспейса), но тем не менее…

    Обратная связь от менторов

    В любом образовательном процессе очень важна обратная связь от учителя, и не важно речь идёт о классическом образовании или об онлайн курсах.
    Когда человек отдаёт значительную сумму денег за обучение, то он ожидает, что платит не только за теорию, но также и за возможность получения обратной связи от менторов/наставников/учителей.

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

    Авторы курса обещают следующее: возможность задавать вопросы в чате своему проверяющему, а также в общий чат потока, где присутствуют преподаватели курса и отвечают на вопросы студента.
    На деле всё обстоит немного иначе.

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

    Отдельно хочу рассказать о качестве проверки заданий.

    По существу, никакой реальной проверки не происходит — это тоже фикция.
    Все мои 11 домашних работ принимались с первого раза, без каких либо правок от проверяющего.
    Я считаю, что мои задания на самом деле не проверялись по двум причинам.

    1. Большинство заданий имеют основную и бонусную часть. За правильное выполнение основной части дают один балл, а за бонусную ещё один. Я ни разу не делал бонусную часть, но почти всегда получал за задания два балла!
    2. Пару раз я сам замечал, что в выполненных мной заданиях были ошибки, но проверяющие их не обнаружили. Один раз я даже намеренно сдал задание с ошибкой и его тоже успешно зачли.

    Но несмотря на такую “тщательную проверку”, ваше задание может висеть в ожидании оценки и пять дней, несмотря на то, что по регламенту время проверки задания не должно превышать двое суток.

    Преподавательский состав

    Вебинары на курсе ведут несколько разных преподавателей, но уровень их профессиональных компетенций и лекторских навыков сильно разнится.

    Только один преподаватель глубоко знал свой материал, умел доходчиво доносить информацию и корректно отвечал на все вопросы студентов — Денис Лавров.
    К сожалению, он провёл всего 4 лекции.

    Бо́льшую часть лекций провёл Михаил Чугунов — он создаёт впечатление неплохого практикующего специалиста, но навыков именно профессионального лектора ему недостаёт. Лекции с ним можно смотреть только в записи на скорости 2x, на некоторые вопросы студентов он отвечал слегка не в тему, но больше всего страдала его подготовка к интерактивной части вебинара.
    Судя по всему, к интерактиву перед лекцией он не готовился совсем, т.к. не единожды на вебинарах он мог потратить до получаса времени на поиск проблемы, из за которой у него что-то не работает. Помогали, к слову, всем потоком и общими усилиями в итоге решали проблему. Не спорю, такой траблшутинг, конечно, полезный навык, но хотелось все же обойтись без этого.

    Худшим лектором на курсе однозначно был Рустем Галиев.
    На своих занятиях Рустем показывает просто чудеса некомпетентности: может использовать чужую презентацию (в теме про helm), путается в теории и не знает совершенно фундаментальных понятий, не понимает вопросы студентов и чаще всего даёт неверный или неполный ответ.

    Приведу здесь пару примеров, хотя “удивлял” Рустем на вебинарах куда чаще:

    • в течение 10 минут так и не смогу нормально ответить на вопрос про завод внешнего трафика в ingress controller и load balancer. Вопрос ему переформулировали несколько раз, но внятного ответа никто так и не получил
    • дал абсолютно неверный ответ и отсебятину на вопрос о том, чем является “three ways merge” в helm, хотя очень странно не знать такую “базу”

    В итоге из за не самого профессионального преподавательского состава вебинары длятся не 1.5 часа, как положено, а могут затягиваться и до 2.5 — и это не от обилия информации, а от отсутствия подготовки к своим лекциям.

    Итоговая работа

    Финальный этап обучения на курсе — это выполнение и защита итогового проекта. Такая работа должна закрепить все полученные навыки и продемонстрировать пригодность выпускника к реальной работе. Стоит ли говорить, что с организацией этого процесса на курсе тоже был ряд проблем.

    Начнём с темы работы и технического задания на неё.
    Изначально заявлялось, что тему проектной работы нужно выбрать из предложенного списка из шести вариантов, но на самом деле никакого выбора нет и по факту тема одна.
    Зачем тогда нужен перечень тем итоговой работы решительно непонятно.

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

    Стоит упомянуть, что в итоговой работе были требования, которые банально не давались на курсе. Это означает, что требовалось проявить навыки, по которым не было даже ДЗ (настройка CI/CD) или даже любой теории в принципе, не говоря уж о заданиях: использование ansible или terraform, алертинг, настройка дашбордов в графане и др.

    В качестве демо-приложения с микро сервисами, которое надо поднять в облаке, преподаватель посоветовал использовать проект “microservices-demo” от Google. И это забавно, т.к. в репозитории помимо непосредственно кода приложения есть вся необходимая devops обвязка (которую, по хорошему, студент должен самостоятельно разрабатывать): манифесты k8s, kustomize, bash скрипты, terraform, istio, helmfile.

    Проверки проекта можно ждать и неделю, приходится пинговать менеджера и преподов в чате. На вопросы по проверке в чате с проверяющем ответа на простой вопрос также можно ждать больше недели, а добиться обратной связи можно только написав проверяющему лично в TG…

    Заключение

    Думаю уже очевидно, что я крайне разочарован в курсе. Насколько всё тут печально я понял уже на 3-4 разделе, но запрашивать возврат денег не стал, т.к. у меня была договорённость с работодателем об успешном завершении этого обучения. Этот фактор был единственной причиной, по которой я прошёл и успешно завершил весь курс, но повторять мой опыт я точно никому не советую.

    Хоть я и старался в этом отзыве быть максимально конкретным и подробно объяснять, почему мне не понравился тот или иной аспект, всё равно могут возникнуть вопросы о моей субъективности, ожиданиях и предвзятости.
    Поэтому, чтобы подкрепить своё мнение, добавлю сюда несколько объективных показателей:

    • на потоке со мной обучалось около 20 человек
    • большинство студентов перестало учиться на курсе уже через несколько занятий
    • почти никто не сделал даже половины заданий
    • финальные вебинары онлайн смотрело 2-3 человека
    • никто не пришёл на публичную защиту проекта
    • весь курс успешно закончило только 2 человека: я и ещё один студент

    Выводы делайте сами.