Мы уже рассказывали о профессии инженера DevOps и как ее можно освоить. Другие публикации по теме доступны на сайте Proglib.io.
Что такое DevOps?
DevOps – это методология, которая позволяет автоматизировать и интегрировать процессы между разработчиками программного обеспечения и ИТ-командами. Благодаря этому они создают, тестируют и выпускают качественные продукты в короткие сроки.
Главная задача методологии DevOps – вовремя предоставить необходимую технологию бизнес-подразделениям и наладить ее бесперебойную работу.
Сокращение DevOps расшифровывается, как development и operations. «Dev» используется как сокращение, обозначающее работу программистов и всех, кто задействован в разработке продукта. Например, менеджеров, тестировщиков и других специалистов.
«Ops» – это общий термин, который характеризует работу системных администраторов, операционного персонала, администраторов баз данных, сетевых инженеров, специалистов по безопасности и других.
В итоге, DevOps – это командные усилия сотрудников, занимающихся разработкой, операциями и тестированием.
В DevOps нет junior-инженеров?
Обсуждения на Reddit и StackOverflow часто касаются темы о младших инженерах DevOps. Многие считают, будто их не существует, а мир разработки довольно суров к тем, кто пытается прорваться на арену DevOps.
У инженеров-программистов существует общепринятая система перехода от младшего специалиста к старшему. Когда дело доходит до DevOps, градация часто начинается со среднего уровня, где требуемый опыт работы – не менее трех лет. Младшие специалисты часто могут охватить лишь мониторинг и некоторые базовые задачи по установке.
Основные сложности для новичка в DevOps связаны со следующими факторами:
- жесткими требованиями и высоким уровнем ответственности. Для младшего специалиста решить все проблемы настройки среды разработки DevOps будет крайне непросто, например:
- развернуть среду разработки, тестирования, предпродажной подготовки и производства;
- настроить передачу данных между средами;
- разработать механизмы резервного копирования и развертывания;
- осуществить мониторинг с прогнозированием, визуализацией данных и ведением журнала;
- задокументировать настройки и запросы на изменение;
- сформировать отчетность перед инженерным менеджментом, и прочее.
- отсутствием необходимого опыта
(специалист DevOps с опытом может настроить полностью автоматическую систему, выявить сбои еще до их возникновения и устранить проблемы с минимальным воздействием. Младший специалист тратит слишком много времени на самообразование, которое часто сводится к поиску в Google, ему непросто принимать правильные решения в сложной ситуации);
- отсутствием формального образования
(DevOps – ремесло, которому нельзя просто научиться в вузе. Специалисты DevOps чаще всего переходят в эту отрасль из смежных областей и являются самоучками. Большую часть знаний можно получить, обучаясь на онлайн-курсах, или самостоятельно читая специализированные руководства, а также общаясь с опытными коллегами).
Дорожная карта специалиста DevOps
Путь DevOps сложен и объединяет в себе большое количество требований к навыкам, которые необходимо освоить будущим специалистам. Для того, чтобы лучше разобраться в профессии и понять, какие инструменты и технологии необходимо изучить, лучше всего руководствоваться дорожной картой DevOps.
Изучите язык программирования
Начать стоит с изучения одного из предложенных на дорожной карте языков программирования: Python, Ruby, Go, Rust, C, C++, и т.д. Главное – не их количество, а общее понимание принципов работы.
Автор рекомендует начать изучение с языка Go, также известного как Golang. Go – это статически типизированный язык программирования, который был разработан внутри компании Google. В отличие от динамически типизированного языка, код проверяется перед запуском, а не после.
Плюсы:
- легкость и доступность для изучения (простой синтаксис);
- производительность и скорость работы (Go компилируется в машинный код);
- возможность выявления ошибок на ранних этапах;
- возможность написания не громоздкого кода;
- большое количество библиотек (библиотека Go легко читается, отличается качеством, благодаря чему можно выполнить практически любую поставленную задачу);
- отсутствие наследования, что значительно упрощает поддержку приложений на Go;
- наличие инструмента, который помогает стандартизировать код – go fmt.
Go считается одним из лучших и простейших языков программирования для начинающих. Google создали быстро изучаемый язык для того, чтобы быстрее вводить новые команды программистов в работу. Простой синтаксис Go помогает быстро понять чужой код без дополнительных обозначений или комментариев.
Но доминирующим языком для бэкенда остается Python. Он считается самым популярным в научных кругах, также его используют в работе с данными для машинного обучения. Этот язык программирования не менее доступен для начинающих и пользуется большой популярностью, поэтому найти поддержку среди разработчиков на Python будет легко.
Возможности языков Go и Python мы сравнивали в одном из материалов.
Изучите основные аспекты операционных систем
Следующий этап связан с изучением основных концепций ОС, необходимых для инженера DevOps.
Специалисту DevOps часто приходится выполнять оптимизацию ОС для повышения ее производительности и/или выполнять другие оптимизации в соответствии с потребностями приложения. Поэтому важно разобраться в управлении процессами, потоками и параллелизмами. Следует уделить внимание информации по работе с сокетами, управлению вводом-выводом, виртуализации, хранилищам данных и файловым системам.
Получите навыки администрирования серверов
Инженеру DevOps необходимо управлять всеми типами серверов. Часто речь идет о целом парке: их может быть больше ста и состоят они из экземпляров ОС Linux (очень редко из экземпляров других ОС).
Поэтому для начала мы советуем уделить особое внимание Linux. Если у вас мало опыта работы с данной ОС, начните с Ubuntu. Изучите основные команды, инструменты для мониторинга, настройки и разберитесь с работой терминала.
Изучите сети и безопасность
Знание сетей, безопасности и базовых протоколов необходимо инженеру DevOps, так как он должен настраивать VPC и группы безопасности/брандмауэры, а также использовать различные протоколы.
Например:
- HTTP (протокол передачи гипертекста);
- SSL (обеспечивает защищенный обмен данными);
- SSH (сетевой протокол, позволяющий производить удаленное управление операционной системой);
- FTP (протокол передачи файлов);
- SMTP (простой протокол передачи почты) и другие.
Важно разобраться, как они настраиваются на уровне сервера и что влияет на безопасность работы сетей.
Еще обязательно придется работать с веб-серверами, поэтому необходимы знания и практический опыт взаимодействия с серверами обратного прокси, такими как Nginx и/или Apache.
Изучите инфраструктуру как код
Инфраструктура как код (IaC) – это управление сетями, виртуальными машинами, балансировщиками нагрузки и топологией подключения с использованием методов разработки кода и программного обеспечения, таких как контроль версий и непрерывная интеграция.
Модель облака, управляемая API, позволяет разработчикам и системным администраторам взаимодействовать с инфраструктурой программно и масштабно, вместо того, чтобы вручную настраивать ресурсы. Инженеры могут управлять инфраструктурой с помощью инструментов на основе кода и использовать ее, как они обрабатывают код приложения.
Важно обратить внимание на работу с контейнерами (автор советует использовать ПО Docker), изучить управление конфигурацией (с помощью системы управления конфигурациями Ansible), оркестрирование контейнеров (это лучше всего делать с Kubernetes) и управление инфраструктурой с помощью программного инструмента с открытым кодом Terraform.
Изучите некоторые инструменты CI/CD
Непрерывная интеграция (CI) – это практика разработки программного обеспечения, при которой разработчики часто объединяют код в общий репозиторий (несколько раз в день). Затем каждую интеграцию можно проверить с помощью автоматизированной сборки и автоматических тестов для выявления потенциальных дефектов и решения проблем.
Непрерывная доставка (CD) – это подход к разработке программного обеспечения, при котором программное обеспечение производится короткими итерациями. Он гарантирует, что ПО надежно и может быть передано в эксплуатацию в любое время. Передача происходит вручную, а цель такого подхода – сборка, тестирование и релиз программного обеспечения с большей скоростью и частотой.
Как специалист DevOps, вы должны изучить и знать основные инструменты CI/CD:
Научитесь мониторить программное обеспечение и инфраструктуру
Компании отслеживают метрики, чтобы увидеть, как производительность приложений и инфраструктуры влияет на работу конечного пользователя их продукта.
Собирая, классифицируя, а затем анализируя данные, которые создаются приложениями и инфраструктурой, организации могут сделать вывод, как изменения или обновления влияют на пользователей.
Для инженера DevOps важно собирать отзывы и внедрять изменения, для этого необходимы такие инструменты мониторинга, как Nagios, Prometheus, Grafana.
Изучите облачных провайдеров
Будущему специалисту DevOps важно разобраться с особенностями работы облачных провайдеров. Для начала обратите внимание на AWS – лидера в сфере облачных технологий. При необходимости уделите внимание Azure, Google Cloud, Digital Ocean и другим.
Куда и как расти специалисту DevOps?
Чтобы войти в профессию, необходим технический бэкграунд. Отличный вариант – перейти в DevOps из системных администраторов, специалистов по эксплуатации, тестированию или разработчиков.
Если необходимого опыта у вас нет:
- пройдите базовый курс по администрированию ОС Linux;
- изучите языки программирования Go и/или Python (напишите для начала несколько скриптов);
- разберитесь в принципах ООП (объектно-ориентированное программирование);
- обратите внимание на общий цикл разработки продукта.
- изучите базовые протоколы: HTTP, SSL, SSH и т.д.;
- обратите внимание на основные инструменты CI/CD: Jenkins, GitLab CI и т.д.
Если вы уже имеете опыт в профессии, советуем записаться на курсы, чтобы развить необходимые навыки и получить недостающие знания.
Карьерный путь инженера может выглядеть так:
- развитие специалиста DevOps в отрасли с углублением в специализацию (параллельно можно изучать похожие технологии);
- системным администраторам можно перейти в разработчики, или наоборот (если вам интереснее работать с инфраструктурой, нежели с кодом);
- можно переквалифицироваться в специалиста по безопасности DevSecOps (это методология разработки ПО, которая подразумевает контроль и безопасность на всех этапах создания приложений);
- рост в направлении проектного менеджмента, системной архитектуры или тестирования.
Заключение
Путь развития в DevOps долгий и непростой, но определенно стоит потраченных усилий, чтобы овладеть одной из самых высокооплачиваемых и востребованных на рынке ИТ-профессий.
Хочу научиться программировать с нуля, но не знаю, с чего начать. Что делать?
Можно учиться самостоятельно (долго) или пойти на курсы с преподавателями (быстро). Плюс нужно учитывать, что джунов много, конкуренция выше и работодатели повышают порог вхождения при найме на работу. Чтобы получить актуальные знания, мы в proglib.academy запустили курсы:
- Основы программирования на Python.
- Профессия Python-разработчик.
- Алгоритмы и структуры данных.
- Математика для Data Science.
- Профессия Data Science.
- Frontend Basic: принцип работы современного веба.
- Профессия Фронтенд-разработчик.
- Обработка естественного языка. Полный курс.
На подходе еще больше 10 курсов для взрослых и детей.
Комментарии