Last updated 5 days, 18 hours ago
Как я создаю курсы в devopstrain?
Чтобы донести до учащихся материал доступным образом и сопроводить достаточным объемом практики, мною был отработан метод, о котором я хотел бы рассказать.
1️⃣ Формирование списка разделов:
После принятия решения о создании того или иного курса, создается список разделов. На этом этапе прорабатывается как полнота раскрытия темы, так и порядок следования разделов, чтобы изучение было от простого к сложному и разделы были связанные друг с другом логически (где это возможно).
🗓 Занимает около недели.
2️⃣ Разработка раздела:
Далее по каждому из разделов начинается работа. Все пункты ниже нужно повторить для каждого раздела. А их бывает от 10 до 25 в моих курсах, суммарно уже более 100 по всем курсам.
А. Формирование списка тем (в случайном порядке), которые нужно обязательно осветить в данном разделе. На этом этапе я изучаю документацию, статьи, куски кода и прочие источники, чтобы получился максимально полный набор того, что я считаю важным рассказать в данном разделе.
🗓 Может занять от 1 дня до недели, в зависимости от сложности раздела.
B. Составление плана раздела. Тут уже список тем превращается в структуру, каждый из элементов которого логически связан с соседними. И тут уже важен порядок, т.к. именно по этому плану и будет создаваться материал раздела. Это еще осложняется тем, что нужно придумать практику которая идет по ходу прохождения, а также понять как бекенд будет производить проверку заданий.
🗓 Занимает несколько дней.
C. Написание текста самого курса. Следовать плану уже проще, особенно если он получился подробным, однако оформительская часть отнимает достаточно много времени. Я использую собственную платформу, которая позволяет делать курсы максимально гибкими. И если не хватает каких либо элементов, то дизайнер и фронтендер сделают свою работу и платформа будет доработана. Сам код раздела пишется на YAML, в которых есть кастомные типы для отображения блоков различного функционала. Например: выделение важного, кнопка, faq, ссылки, отображение серверного вывода и многое другое. Также на этом этапе происходит создание схем и диаграмм, чтобы материал был более понятным.
🗓 Этап может занять до 3 недель в некоторых случаях.
D. Создание бекенд части. Бекенд требуется для сохранения состояния прохождения разделов, отображения серверных выводов и, самое главное, проверки ваших заданий. В зависимости от курса, логика сильно отличается, поэтому единого решения тут не придумаешь. Однако, у меня, конечно, есть ряд своих лайфхаков и скриптов для генерации кода.
🗓 Занимает 1-2 дня.
E. Тестирование работы связки курса с бекенд частью, чтобы убедиться, что все работает как задумано.
🗓 Занимает примерно 1 день.
✅ После этих шагов можно переходить к следующему разделу =)
Хотел показать с какой заботой создается каждый курс, и насколько все материалы на моей платформе качественные и эффективные 🙂
Продолжение истории про миграцию на NixOS
Часть 3. Собственно сам переезд.
Интересно, что USB флешки я использую только для установки новой ОС, в остальное время они мне не нужны. Поэтому второй раз за 5 пять лет я сдул пыль с нее и накатил образ NixOS через dd
. Спасибо, что не на CD болванку как это приходилось делать лет 15 назад 👽
Загрузился, потыкал next, next, next ... и дело пошло. Минут через 20 перегрузился в свежую ОС и начал приводить в рабочий вид на основе созданного ранее кода конфигурации. Кстати, для себя я нашел удобным положить файлы configuration.nix
и home.nix
в свой git репозиторий. А чтобы автоматически накатывать внесенные изменения я создал Makefile с правилом make install\-switch
, которое копирует исходники конфигов из локальной репы в нужное место, а именно в /etc/nixos/
, после чего вызывает команду пересборки системы.
☝️Важный момент: несмотря на то, что в случае проблем вы можете загрузиться с более старой конфигурации системы, выбрав пункт в загрузчике, вам все равно нужно думать о том, чтобы иметь возможность откатить сам конфигурационный файл, чтобы вы могли иметь рабочий конфиг в любой момент. И для этого как раз отлично подходит git
.
Далее следует достаточно заурядный процесс мелкого тюнинга и проверки работоспособности всех важных утилит, после чего получаем идеальную для работы систему 🤌.
Кстати из наблюдений: время автономной работы ноутбука даже немного выросло. Но я бы это связал с более новым ядром, нежели с настройками системы как таковой. Хотя отсутствие попыток что-либо обновить, чем грешила убунта, не может не радовать.
Через пару недель я повторил операцию на втором ноутбуке и на этом основную часть работы можно считать завершенной 👌
Как вам серия про NixOs?
С чего начать изучение DevOps? ?
Этим вопросом задаются многие, и, хотя, пути могут быть разными, я расскажу о своем представлении оптимального старта.
Фундаментальные вещи не меняются десятилетиями, и поэтому именно с них и нужно начинать. Нет смысла изучать новый "многообещающий" инструмент, если вы не знаете на чем он базируется, к тому же, хайповые вещи имеют свойство не оправдывать ожиданий и сдуваться.
К фундаментальным вещам я отношу:
1️⃣ Основы операционных систем, в частности Linux, как безальтернативный вариант для devops. Сюда же относятся и файловые системы, и наборы популярных утилит для управления системой и траблшутинга. Работа в терминале - обязательно.
2️⃣ Компьютерные сети. В своей реализации они платформонезависимые (фундаментально), но уметь приложить к нужной ОС или оборудованию может быть полезно.
3️⃣ Виртуализация и контейнеризация. Нужно уметь различать их и знать области применения.
4️⃣ Основы автоматизации и программирование. Умение написать программу или скрипт на одном языке сильно поможет вам в освоении другого. Ведь главное - это сам принцип.
? Это, пожалуй, база, с которой вы сможете двигаться дальше и изучать уже более узкие и более оплачиваемые инструменты вроде этих ваших кубернетесов, ci/cd и терраформов.
На платформе Devopstrain из базовых есть курсы Linux & Networks, а также Docker ?.
Ранее я делал пост о том, почему важно прокачивать скилл программирования для целей devops.
Теперь хотелось бы немного углубиться в тему, чтобы показать почему имеет смысл освоить Golang хотя бы на базовом уровне.
В различных материалах вы можете найти отсылки на Python в качестве языка для автоматизации задач администирования. В целом это так, но у Go есть ряд преимуществ, именно поэтому большинство современных devops инструментов написаны на нем.
✅ Удобство развертывания
Вам не нужно зависеть от наличия python интерпретатора и зависимых библиотек на целевой системе, чтобы ваша программа заработала. Все что вам нужно - это собрать под целевую архитектуру и ОС исполняемый файл через go build
.
✅ Статическая типизация
Множество ошибок может быть поймано еще на этапе сборки, что сильно повышает надежность программы. В python тоже можно задавать типы, но можно и не задавать =)
✅ Эффективность
Go тупо быстрее чем интерпретируемые языки вроде Python или Ruby. Это факт. И памяти он ест меньше. Благодаря встроенной поддержки с первого релиза конкурентности, писать асинхронный код и запускать задачи в несколько потоков довольно просто и быстро.
✅ Стандартная библиотека
Под большинство ваших задач найдется решение в стандартной библиотеке Go. Она первоклассная. Но всегда есть возможность подключить сторонние решения, которых тоже очень много.
В целом экосистема и количество носителей языка Go хоть и уступает по размерам Python, но все же очень масштабная. Не даром эти известные проекты написаны на Go:
Kubernetes, terraform (и большинство продуктов HashiCorp), docker, minio, hugo, restic, grafana, prometheus и многие другие.
Раз уж в прошлом посте речь зашла про обновления, то имеет смысл поговорить про версии и схемы версионирования.
Самая популярная схема - Semver . Пример: 2.0.1
Тут выделяют части:▪️ Major, в данном случае это 2
▪️ Minor, в данном случае это 0
▪️ Patch, в данном случае это 1
Когда же инкрементировать каждую из частей в данной схеме?
Major обновляем только в случае серьезных и зачастую обратно несовместимых изменений.
Minor обновим, если внесли значимое изменение, но оно не рушит обратную совместимость.
Patch - для очень мелких изменений и исправлений ошибок.
Еще вариант схемы - Calver. Пример: 2023.04.2
Вариаций может быть много, версия может включать день, квартал и Patch на конце. Он может быть полезен в системах, где часто происходят изменения и желательно знать время их выпуска, либо наоборот вы знаете график релизов заранее. Пожалуй самый яркий пример: Ubuntu. Скоро как раз ожидается версия 24.04 ??
И конечно, вы наверняка знакомы со схемой Sequence base versioning, то есть простое увеличение целого числа. Примеры Firefox 125, Fedora 40, Android 15.
Из каких профессий приходят в девопсы ?*
?*** Информация собрана из разных мест, включая общение с людьми, которые проходят обучение в devopstrain.
*? Из тех. поддержки*
Человек работал в ТП бок о бок с командой девопсов, нахватался у них разного, тема стала интересовать и плавно начал вкатываться.
*? Из пехоты*
Человеку 67 лет, служил в армии США на разных позициях. В 81-м начал интересоваться армейскими компьютерами, стал изучать язык BASIC. Затем прокладывал телефонию и LAN, и стал админить Windows NT. Потом переключился в Unix, и только потом уже в Devops. Вот такая интересная и долгая карьера. Те, кто думает, что уже опоздал - напрасно.
*? Из QA (тестирование)*
Автоматизировал тесты на Python и Docker, чуть касался инфраструктуры, которая выполняла эти тесты. Через 2.5 года перешел в devops.
*? Из сисадминства*
По наблюдениям, это самый очевидный путь для большинства.
*? Из разработки (бекенд и даже фронт)*
Собственно, автор этой заметки именно оттуда, хотя опыт сисадминства был и до этого еще.
*? Из пекаря*
Как вам такой путь: пекарь - официант - техподдержка - управление инцидентами - devops.
*? Из DBA (администрирование баз данных)*
Надоело готовить Oracle, перешел в Devops.
? Пишите в комментах, откуда вы к нам прибыли или собираетесь, интересно почитать.
Решил я тут выделить преимущества своего наставничества и DevopsTrain перед популярными образовательными платформами ?.
Давайте пробежимся по пунктам:
Индивидуальный подход
✖️ у других: обучение в группе, зачастую довольно большой
✅ у меня: обучение 1 на 1 с ментором (это я, если что)
График занятий✖️ у других: определенный, с дедлайнами
*✅ у меня:* вы занимаетесь в своем темпе
Старт занятий✖️ у других: в определенные сроки
*✅ у меня: в* любой день
Время занятий✖️ у других: строго в определенное время
✅ у меня: вы сами бронируете удобное время в календаре
Стоимость
✅ у меня: Х
✖️ у других: 2Х-3Х
Репутация✖️ у других: терять уже нечего
✅ у меня: крайне важна
Процесс обучения✖️ у других: большое кол-во видео с минимальной практикой
✅ у меня: интерактивная платформа для выполнения задач, без видео
Возврат средств✖️ у других: хрен вернешь чего
✅ у меня: согласно формуле расчета по оферте. Прецедентов не было пока.
Так что задумайтесь, у кого вы хотите учиться ?.
☝️На апрель, кстати, осталось 1 место.
Подробнее о наставничестве можно почитать тут: https://devops.lifeisfile.com/post/mentorship/
Моя платформа: https://devops.lifeisfile.com
? Написать мне можно на почту [email protected] или в телегу.
Заметил, что обо мне, авторе канала, вы почти ничего и не знаете ?**.
Сейчас расскажу кто я и что вообще тут делаю:
?** Меня зовут Александр, сейчас работаю DevOps инженером, по совместительству Go разработчик (для нужд devops). В прошлым бывал на позиции CTO.
В IT с 1999 года, именно тогда начал заниматься разработкой, а также настройкой и поддержанием серверов. В те давние времена еще не было такого понятия DevOps, но часть практик уже существовали. Шли годы, и мне все больше хотелось уйти от разработки и наладить CI/CD процессы в компании, что в итоге и было сделано.
? За свою жизнь сделал довольно внушительное количество проектов, своих и коммерческих (нужное подчеркнуть), обо всем можно почитать тут: https://lifeisfile.com/en/
? Несколько лет назад у меня появилась идея создания практических курсов на собственной платформе, благо опыт в разработке позволял реализовать это с легкостью. Уже тогда мне было очевидно, что популярные образовательные платформы движутся не в том направлении, а их цена/качество очень далеки от идеала. Так появился проект DevopsTrain. Я уверен, что будущее не за массовым сегментом, а за персональным подходом.
Теперь я провожу консультации, менторю и создаю курсы, чтобы счастливых девопсов в этом мире стало чуточку больше ?.
Last updated 5 days, 18 hours ago