2022-05-25 14:00:07
Комбинация непрерывной интеграции и непрерывного развёртывания программного обеспечения существенно повышает эффективность процесса разработки. Не удивительно, что всё чаще от коллег-разработчиков мы слышим запрос о желании разобраться и работать с CI/CD.
Поговорили со старшим инженером-разработчиком Иннотех Александром Обливальным о работе CI/CD-инженера и что нужно для освоения профессии. Эксперт уже 11 лет помогает командам вовремя релизиться, отлавливать баги и выполнять сборки, используя лучшие практики CI/CD.
«В моём представлении, CI/CD и DevOps — это своеобразные soft skills. Почему так? Hard skills при определённом опыте быстро нарабатываются. Можно набрать хардовых "кубиков", но не понимать, что с ними делать. Поэтому в первую очередь важно иметь системное мышление: понимать, где эти "кубики" взять и как их использовать для решения проблем коллег.
Хорошее инженерное высшее образование. Ключевые слова: "хорошее" и "инженерное". Я по образованию не айтишник, а инженер-электронщик. Именно инженерное образование очень важно в моей работе. Первое свойство инженера — находить нужную информацию и разбираться в ней.
Естественно, не обойтись и без технологий. Пройдёмся по порядку:
Linux — обязательно нужно быть уверенным пользователем консоли, чтобы мельтешение серых буковок по чёрному экрану не пугало и ты понимал, что они означают. А также уметь писать скрипты;
регулярные выражения — без них тоже никуда. Они помогают работать эффективнее, выполняя задачи пачками. Условно, если в пяти файлах нужно поменять какое-то выражение, я «скармливаю» их регулярке. Время экономится — эффективность повышается.
языки программирования. Но не JavaScript. Как минимум — это Python, в идеале — C, C++, Java, Kotlin;
git. Он сейчас везде — это альфа и омега современной автоматизации.
Дальше зависит от того стека, который используется на проектах:
Jenkins, TeamCity, либо Gitlab CI;
Docker;
Openshift, Kubernetes;
Ansible, если работаем серверами или виртуалками. Понимать особенности системы и уметь расширять её собственными модулями;
Helm, если работаем с контейнерами».
Александр считает, что для CI/CD-инженера нужен особый навык — «нетрадиционное использование логарифмической линейки». Это означает умение из имеющихся инструментов строить что-то осмысленное. Часто приходится не создавать систему с нуля, а приспосабливать её целевые инструменты для решения конкретных задач. Нередко инструменты приходится хитро комбинировать.
«Задача CI/CD-инженера — это построить процесс. Область не только на стыке hard и soft skills, но и на стыке двух миров из разработки и сопровождения».
Не удивительно, что любимое увлечение эксперта — заставить какую-нибудь неизвестную софтину работать, перед этим хорошо постараться для поиска нужной информации.
«Естественно, нужно изучать что-то новое или ранее не изученное. Хотя не могу сказать, что очень часто появляются новые технологии. Последнее из такого крупного — это TeamCity и Kotlin DSL. Тогда заодно пришлось выкинуть из головы знания Groovy, которые нужны в Jenkins, но не пригодятся в TeamCity.
Если говорить про появление новых технологий, то создатели скорее просто переназывают старые :). Кстати, последнее открытие, которое перевернуло мир, — это контейнеризация. После него старые технологии стали активно меняться».
Александр и дальше продолжает совершенствовать умения и навыки. Например, хочет лучше узнать устройство ядра Linux и работу контейнеризации, получить больше знаний по публичным облакам.
1.5K views11:00