Традиционная IT-команда крупного проекта состоит из трех подгрупп:
- Разработчики (Dev),
- Тестировщики (QA),
- Группа эксплуатации (оперативная группа, Ops).
Первые работают над программным обеспечением и выпускают его только после того, как будет гарантирована надлежащая работа кода. За эту гарантию отвечает группа тестирования. Оперативная группа занимается развертыванием, балансировкой нагрузки и управлением релизами.
Со временем стало понятно, что категоричный подход в таком разделение является одной из причин длительных циклов разработки. Ускорить выпуск релизов позволило появление методологии DevOps, направленной на улучшение взаимодействия между специалистами для более оперативной разработки приложений.
Зачем нужны DevOps-инженеры?
DevOps обеспечивает новый уровень совместной работы и скорости, что позволяет организациям быстрее поставлять продукцию на рынок, повысить производительность, снизить операционные затраты на обслуживание клиентов, сохранить рыночную конкурентоспособность и быстрее решать критические проблемы.
В методологии DevOps используются различные инструменты:
- контейнеризация (Docker, Kubernetes)
- непрерывная интеграция (Jenkins)
- развертывание сред по шаблону (Terraform, Puppet, Ansible)
- мониторинг служб и сетей (Nagios, Grafana, Prometheus, Splunk)
Но одних инструментов мало, нужен набор практик.
Непрерывная интеграция (CI)
Непрерывная интеграция (Continuous Integration, CI) – это практика разработки ПО, которая заключается в постоянном слиянии рабочих копий в общую основную ветвь разработки и выполнении автоматизированных сборок проекта для скорейшего выявления потенциальных дефектов и решения интеграционных проблем.
В традиционных проектах стадия интеграции является заключительной, что приводит к задержке окончания работ. Переход к непрерывной интеграции позволяет снизить трудоёмкость интеграции и сделать её более предсказуемой за счёт раннего обнаружения и устранения ошибок и противоречий. Но главным преимуществом является сокращение стоимости исправления дефекта за счёт его раннего выявления. Решаем проблемы, «не отходя от кассы».
Непрерывное развертывание и доставка
Процесс развертывания цикличен: разработка → сборка → проверка → управление версиями сборки → деплой и т. д. Идея непрерывного процесса развертывания заключается в автоматическом развертывании созданного кода в производственную среду после того, как сборка пройдет все этапы QA-staging-beta, интеграцию, пользовательское тестирование и т. д.
Такие инструменты, как Spinnaker, Jenkins, Harness, Ansible, Chef, Puppet, позволяют команде DevOps настраивать автоматизированные конвейеры для деплоя в нескольких средах с минимальным вмешательством человека.
Непрерывная доставка (continuous delivery) – это практика DevOps, при которой новый код тестируется QA-командой на различных этапах автоматизированных и ручных циклов QA. Если код проходит цикл QA и это одобрено командой, всё деплоится в продакшен. Именно так с помощью DevOps команда может создавать, тестировать и выпускать релизы быстрее и чаще, разделяя весь процесс на короткие циклы. Это позволяет организациям выпускать больше релизов, сокращать ручное развертывание и минимизировать риск сбоев.
Конфигурационное управление (CM)
Конфигурации и управление изменениями является важной частью цикла разработки. Конфигурационное управление – это комплекс методов, направленных на систематический учёт изменений, вносимых разработчиками в программный продукт в процессе его разработки и сопровождения, сохранение целостности системы после изменений, предотвращение нежелательных и непредсказуемых эффектов, формализацию процесса внесения изменений.
Менеджмент конфигураций дает ряд преимуществ: упрощение настройки новой среды, снижение рисков в продакшене и экономия времени на разработку ПО вместо инвестирования усилий в инициирование новых служб с использованием практики «инфраструктура как код».
Управление изменениями
Управление изменениями – это процесс запроса, планирования, внедрения и оценки изменений, необходимых для удовлетворения новых требований. Если в процессе работы в существующей системе или инфраструктуре появляются/требуются какие-либо изменения – вот тут и включается в игру управление изменениями. Оперативные группы должны следить и представлять свои отчеты с причинами и последствиями изменений, которые могут возникнуть на более широком уровне, включая другие системы, на которые могут повлиять новые изменения.
Держитесь вместе
DevOps работает с несколькими отделами. Очень важны коммуникативные навыки: чтобы избежать конфликтов, несогласованности и недопонимания в командах, используйте общий ресурс внутренней связи. Активно вовлекайте в обсуждения членов всех команд.
Автоматизация тестирования
Автоматизированное тестирование помогает выполнять больше тестов, увеличить частоту тестирования и экономить время, затрачиваемое на ручное QA. Этот процесс обеспечивает раннее обнаружение и исправление ошибок, повышает общее качество софта. Существует несколько доступных инструментов, легко интегрируемых с инструментами DevOps: Selenium, Robot Framework, Appium, XCUITest, JUnit и т. д.
Непрерывный мониторинг (CM)
Непрерывный мониторинг предполагает мониторинг и отображение отчетов в подробном графическом формате всех систем и инфраструктуры с помощью нескольких инструментов:
- дашборды и оповещения;
- анализ в реальном времени метрик, влияющих на ПО: производительность системы, количество тестов, частота успехов/отказов;
- состояние развертывания;
- журналы ошибок.
Сравнение соответствующих инструментов мы сделали в публикации «10 лучших инструментов облачного мониторинга».
Заключение
DevOps – перспективное направление, которое продолжает активно развиваться. Универсальность DevOps специалистов высоко ценится, а постоянное активное обучение, новые практики и подходы не дадут вам заскучать на рабочем месте.
Хочу научиться программировать с нуля, но не знаю, с чего начать. Что делать?
Можно учиться самостоятельно (долго) или пойти на курсы с преподавателями (быстро). Плюс нужно учитывать, что джунов много, конкуренция выше и работодатели повышают порог вхождения при найме на работу. Чтобы получить актуальные знания, мы в proglib.academy запустили курсы:
- Основы программирования на Python.
- Профессия Python-разработчик.
- Алгоритмы и структуры данных.
- Математика для Data Science.
- Профессия Data Science.
- Frontend Basic: принцип работы современного веба.
- Профессия Фронтенд-разработчик.
- Обработка естественного языка. Полный курс.
На подходе еще больше 10 курсов для взрослых и детей.
Комментарии