Привет, %username%
! В том или ином виде часто сталкиваюсь с таким вопросом:
Вот я слышал, что вам в DevOps/SRE надо программировать! Я вот хочу, но не вижу у себя на работе задач, где можно программировать. А если и вижу, то мне не дают их.
Причем это не только для Golang, но и для Python тоже релевантно.
Короче, у тебя есть два стула варианта – “сменить профиль деятельности на разработчика” или “начать автоматизировать свою работу по максимуму”. Первый вариант я рассматривать не хочу, потому что он максимально очевидный и простой – ты потеряешь в доходе, будешь всему учиться с абсолютного нуля, будешь много страдать и до “интересных” задач доберешься крайне не скоро (что бы какие-либо курсы не обещали). Поэтому пройдемся кратко по второму пути.
Что можно автоматизировать? Да абсолютно все! Вот прям буквально все – надо разложить файлики, поменять данные в БД, нарисовать файл лицензии или ридми для репозитория – все это можно автоматизировать. Начнем с того, что ты наверняка читал или слышал про книгу “Проект Феникс”. Если ее еще разик перечитать, то можно внезапно узнать о том, что автоматизации подлежат следующие два важных пункта (их чуть больше, но именно эти нас интересуют сейчас):
- Рутина – одинаковые, часто повторяющиеся задачи, которых достаточно много;
- Очень редкие/сложные – задачи, которые выполняются достаточно редко, чтобы успеть забыть все то, что необходимо сделать, либо имеют большое количество неочевидных нюансов, в рамках которых можно случайно аннигилировать вселенную.
Рутина
Тут кажется все максимально очевидно и понятно. Просто смотришь на те задачи, которые чаще всего выполняешь и придумываешь для них автоматизацию. Причем автоматизировать можно на чем угодно и что угодно (да, еще раз повторяю). Создать пользователь в БД – можно пойти десятком разных способов, но тебе никто не запрещает попытаться сделать это через собственную утилиту, которую ты напишешь на любом ЯП. А если это еще и не что-то супер-секретное или узко специализированное под какую-то хрень в рамках компании, то можно еще и в опенсорс выложить! А если ты выложил в опенсорс, то тут и качество кода надо бы подтянуть, и автоматизации разные, и еще мешок всяких штук.
Так же крутинам можно отнести какие-то примитивные штуки в духе “надо сгенерировать временный пароль”. У меня есть заметка “Генерация паролей в CLI”, в которой я приводил мешочек различных способов для того, чтобы сгенерировать пароль в терминале. Некоторыми из вариантов я пользовался достаточно долго до тех пор, пока не решил сойти с ума. Сумасшествие выглядит просто – я написал свою собственную утилиту gch, которая закрывает эту задачу и удобна конкретно мне. Также, мне необходимо бывает использовать определенную лицензию, файл с которой просто так не раздобыть, а бегать по гитхабу крайне лень. Что я сделал? Правильно! Я добавил в свою утилиту gch нужную мне команду, которая решает эту мою личную проблему.
Думаю теперь вектор понятен – просто бери и делай, а не жди от кого-то каких-то задач правильно оформленных.
Редкие/сложные
Тут у нас начинается самое интересное – кишочки! К редким и сложным задачам может быть отнесено все, что угодно: от пары SQL-запросов в БД, до обновления Kubernetes-кластера на железных серверах. Если кубы на железе я не особо люблю (я все таки в облаках живу), то вот истории, когда инженеру моей команды надо выполнить несколько запросов в PostgreSQL, чтобы закрыть очередную редкую задачу – отличный свежий кандидат на автоматизацию.
Итак, пример: задача бывает раз 1-2 недели, в рамках которой надо сделать:
- Мешочек подготовительной работы;
- Выполнить
SELECT
в БД одного сервиса и получить оттуда список строк; - Выполнить
UPDATE
в БД другого сервиса и поменять поле с 0 на 1 для всех строк из первого сервиса;
То, что это выглядит как костыль – это нормально! Решение временное, но к сожалению не на пару дней, поэтому пришлось придумывать решение. Берешь тот ЯП, который тебе интересен (в моем случае это Golang, но можно было бы взять и Rust ради эксперимента). Рисуешь себе задачу в трекере и сразу берешь ее исполнять.
По итогу получаешь вполне себе работоспособное решение, которое:
- Выполняет конкретную задачу;
- Минимизирует человеческий фактор;
- Поддерживает режим dry run по умолчанию;
- Сводит 15 минут работы инженера к 1 минуте (ну надо ж на бастион еще подключиться по SSH);
А помимо того, что ты встретишь кучу проблем и научишься их решать, пока будешь автоматизировать задачу, ты еще получишь респект от команды (но это не точно).
Итоги
Никаких итогов тут не будет. Просто бери и делай свою собственную сраную жизнь проще и легче прямо сейчас!
Если у тебя есть вопросы, комментарии и/или замечания – заходи в чат, а так же подписывайся на канал.
О способах отблагодарить автора можно почитать на странице “Донаты”. Попасть в закрытый Telegram-чат единомышленников “BearLoga” можно по ссылке на Tribute.