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

Опыт и карьера складываются из маленьких кирпичиков. Иногда, только они и формируют движение по пути в профессии. Запрос на «большие» цели или проекты, без «работы» по маленьким целям, может быть опасным и иногда недостижимым путем.

Область рабочих, инженерных, задач (DevOps lifecycle) обычно находится в рамках одного проекта. Например, есть интернет сервис или магазин*. Когда вы присоединяетесь к такому проекту в роли DevOps, вам нужно будет научиться управлять слоем инфраструктуры, например, с помощью Terraform, конфигурацией с использованием Ansible, работать с контейнерами Kubernetes, для CI/CD настраивать Azure DevOps Pipelines и иметь хорошее представление о работе Azure сервисах, например Azure Kubernetes Services.

* Как пример приложения/магазина я буду использовать учебный, микросервисный, проект eShop разработанный командой Microsoft (Читайте https://habr.com/ru/articles/681172/). Репозиторий проекта находится в состоянии обновления и миграции, но все ссылки доступны и проект в рабочем состоянии. Вы можете выбрать свое приложение/платформу, например деплоить Sentry облачный Kubernetes.

Если запланировать и разбить такое обучение на модули, получится несколько отдельных, независимых, курсов. Например:

  1. Terraform: https://www.youtube.com/watch? v=R0CaxXhrfFE&list=PLg5SS_4L6LYujWDTYb-Zbofdl44Jxb2l8

  2. Kubernetes (следите за тарифами, ночью курс стоит около 13 долларов): https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/

  3. Ansible: https://www.youtube.com/watch? v=Ck1SGolr6GI&list=PLg5SS_4L6LYufspdPupdynbMQTBnZd31N

  4. Azure (доступен бесплатный 7 ми дневный режим):
    https://www.pluralsight.com/cloud-guru/courses/az-104-microsoft-azure-administrator-certification-prep

Отдельно курс для Kubernetes, один для Terraform, и т.д. Это хорошая база, но обучение получается оторванным от сквозного процесса DevOps или SDLC цикла. И главное, непонятно, что запоминать из приведенного материала, так как вы не столкнетесь с производственными задачами. С точки зрения постановки целей это, конечно, хорошо, четыре «маленьких» цели: пройти курс по Terraform, Kubernetes, Ansible, Azure.

Давайте попробуем связать эти цели вместе. Можно идти от обратного и получается интересная картина. Мы концентрируем внимание не на инструментах, а на производственном цикле DevOps вокруг нашего проекта eShop. Т.е есть сформулируем цели с точки зрения конечных заказчиков: есть интернет магазин eShop, нам нужно научиться разворачивать слой инфраструктуры с помощью Terraform. Настроить CI/CD в Azure Pipeline и деплоить eShop в Azure Kubernetes Service, осуществлять configuration management отдельных компонент с помощью Ansible или Helm (распространенный сценарий). Т.е мы учимся работать непосредственно с инфраструктурой, микросервисами магазина и основными процессами. И не концентрируемся сразу на чем то одном, например Kubernetes или Terraform. А главное, я повторюсь, именно с такими задачами цикла DevOps, как правило и приходится сталкиваться в повседневной работе.

DevOps lifecycle

DevOps lifecycle

Приоритеты процесса обучения меняется и задачи, теперь, можно поделить следующим образом, смотрите, какой получается сценарий:

  1. Развертывание Kubernetes кластера в Azure с помощью Terraform AKS Module (В Azure подписке доступен 1 месяц работы бесплатно): https://developer.hashicorp.com/terraform/tutorials/kubernetes/aks

  2. Настройка и деплоймент проекта (eShop) уровня PROD Grade:
    https://github.com/dotnet-architecture/eShopOnContainers/wiki/Deploy-to-Azure-Kubernetes-Service-(AKS)

  3. Деплоймент и базовая настройка Prometheus, (вы можете включить опцию установки Prometheus в пункте 1 при деплое кластера или использовать ссылку):
    https://devopscube.com/setup-prometheus-monitoring-on-kubernetes/

  4. конфигурирование Azure DevOps пайлайнов для сборки и деплоймента микросервисов:
    https://github.com/dotnet-architecture/eShopOnContainers/wiki/Azure-DevOps-pipelines

  5. Настройка логирования  Elastic Search (15 дней бесплатного доступа в Elastic Cloud):
    https://www.elastic.co/blog/how-to-run-elastic-cloud-on-kubernetes-from-azure-kubernetes-service

https://orangematter.solarwinds.com/2022/03/21/what-is-devops/

Вы проходите, почти, весь цикл DevOps (смотрите картинку выше). И знакомитесь с практической частью работы с компонентами до того как начнете обучение. После развертывания интернет магазина, и компонент, вы можете остановиться и подумать, над чем вам больше всего хотелось бы сконцентрироваться в обучении. Если, вы выберете и будете проходить через Terraform курс, вы сможете углубиться в структуру кода модуля для Azure AKS, погрузиться в реальный микросервисный энвайрмент, исследуя объекты Kubernetes магазина eShop (подключите Lens), это очень интересно! Магазин разработан профессиональной командой Microsoft сопровожден описанием и книгами, вы можете погрузиться в разработку, DevOps, QA, etc.

Мотивация и гарантии

Касательно мотивации в обучении, я могу вам гарантировать, что она пропадет. Есть хорошая фраза: «Если вам нужны гарантии купите микроволновку». Нужно уметь понимать свой «учебный» ритм, возвращаться к задачам, определять и достигать цели. Иначе говоря вырабатывать подход к учебе и понимать куда вы идете. Такие цели, как выучить Kubernetes, или выучить Terraform фатальны, так как непонятно как их достигать и время слишком неопределенно и дорого.

Описываемый подход хорош тем что вы можете вернуться к проекту даже если отвлекались на другие технологии для изучения. Представим себе, что у вас была цель изучить Kubernetes до уровня CKA. Через неделю учебы вам станет скучно. А если у вас есть рабочий магазин доступный в реальном времени. Вы можете переключиться на мониторинг, побродить по логам системы в Elastic Search, посомтреть дашборды Grafana, или настроить интересные AI алгоритмы, для анализы попыток взлома вашего магазина. Наличие рабочего проекта может пробудить творческий подход или интерес и помочь определиться с задачами в профессии, с которыми вы хотели бы работать. Например вы выясните, что из всего изучаемого стека вам наиболее интересен Kubernetes и анализ угроз.

Как сохранить свой ритм обучения

Заведите небольшую, удобную и понятную для вас табличку с целями (попробуйте использовать SAMRT). Трекайте время потраченное на обучение. Сначала это может показаться занудным или скучным. Спустя некоторое время станет ясно, где вы не учитесь совсем, а где результат положительный.

0cb4b6bb2cd664386d96ef96da3d02aa.jpg

Не учитесь по выходным, живите свою жизнь в эти дни, это даст вам энергию и желание продолжать обучение. Обновляйте табличку регулярно. Не бойтесь, привыкните работать с ней. Однажды вы откроете файл, и… И увидите… Это гарантировано… Что за прошлый месяц учились 2–3 часа. Не надо пугаться. Постарайтесь ответить на вопросы типа: мне не интересно? Если поменяю курс будет интересно? Мне непонятно? Может конкретные технологии я не хочу учить? Может пора походить по собеседованиям и попробовать себя. Если мы двигаемся и делаем запланированное дело, мы так же обречены на успех как и на провал.

Когда постоянство в обучении выработается, попробуйте проанализировать таблицу. Например если вы учитесь максимум 4 часа в неделю и этого недостаточно, не нужно пугаться, это ваш учебный ритм сейчас. Не пытайтесь настигать пропущенное одним днем проучившись 20 часов подряд. Не важен «high performer» или «low performer», важен ваш личный ритм! По этой причине нужно регулярно «работать» с таблицей и анализировать ситуацию, пытаться понять себя.

Как рассказывать про проект на интервью

Крутизна такого подхода в том, что он максимально приближен к реальности. Т.е покрывает весь цикл проектной работы. В процессе настройки компонент вам придется решать какие то моменты. Все трудности с которыми вы столкнетесь откладываются в голове и про них будет интересно рассказывать на интервью. Если реального опыта мало, благодаря описанному подходу вы можете рассказывать про проект: я работал online store, backend часть была разработана на C#. Магазин представлен как микросервисная архитектура, деплоился в Kubernetes с использованием Azure DevOps, мониторинг был организован с помощью Prometheus, основные метрики такие то и т.д Необязательно сразу рассказывать, что это учебный проект. Иногда учебные задачи сложнее производственных. Покажите сначала что вы погрузились в контекст проекта, знаете код и разбирались с проблемами которые встретили. Опытный интервьюер отметит хороший уровень погруженности и выстроит интервью вокруг проекта. Попробуйте взять инициативу и рассказать про наиболее интересные для вас части, это может быть CI/CD, Kubernetes или что-то с чем больше всего удалось поработать. Для этого интервью можно разбить на соответствующие домены: IaC, CM, Cloud, etc. Более подробно я писал в одной из статей: «Собеседование в DevOps Engineering, как оценить свой опыт и сколько нужно знать?»

Так же, через проект, курсы и документацию, видно в какие компоненты можно погрузиться, например в eShop будет интереснее всего посмотреть как организован код C#, UnitTests, какие объекты Kubernetes используются, шаги Azure Pipelines.

Итого, что получилось:

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

Материалы

Learning How to Learn: Powerful mental tools to help you master tough subjects: https://www.coursera.org/learn/learning-how-to-learn

© Habrahabr.ru