[Перевод] Автоматизация DevOps
Возникает такое ощущение, что в наши дни термин «DevOps» понимают очень по-разному. Я, являясь DevOps-экспертом в OutSystems, отвечаю на вопрос о том, что такое DevOps, говоря, что это — механизм, ускоряющий доведение до потребителей полезных возможностей программ. Это — нечто большее, чем некий навык, или должность, или инструмент. DevOps — это парадигма, меняющая производственную культуру в сфере разработки ПО.
Главное тут — ускорение процесса доставки изменений программ в продакшн-окружение и усиление возможностей циклов обратной связи в конвейере подготовки новых версий программ к работе. Это позволяет быстро, ещё на стадии разработки, узнавать о проблемах, и быстро их исправлять. Именно поэтому можно обратить внимание на то, что такие понятия, как «CI/CD» и «автоматизация тестирования» тесно связаны с DevOps.
Но DevOps — это ещё и улучшение взаимодействия между разработчиками и другими специалистами. Это — ликвидация организационной разобщённности. Это — открытие пути для инноваций через эксперименты и возможность измерить воздействие каждого изменения кода на бизнес. А значит — возможность действовать с учётом результатов подобных измерений.
Недавно я рассказывал об автоматизации DevOps на TechTalk. Если вас интересует эта тема — предлагаю вам взглянуть на мою статью.
Зачем в DevOps нужна автоматизация?
Огромный плюс автоматизации DevOps заключается в том, что это повышает скорость и гибкость разработки приложения и доставки их конечному пользователю. Автоматизация устраняет узкие места и позволяет отказаться от больших объёмов ручного труда. Кроме того, вместе с автоматизацией процессов приходит и их стандартизация, что ещё сильнее сокращает вероятность возникновения ошибок или оплошностей, характерных для ручных подходов к решению задач.
Давайте, для примера, посмотрим на то, как вручную обрабатывается типичный запрос от клиента, направленный на внесение изменений в функционал приложения. Клиент отправляет операционной группе электронное письмо со сведениями о том, что ему хотелось бы видеть в программе. Операционная группа передаёт сообщение разработчикам, которые начинают работу над задачей. После того, как дело будет сделано, новая версия приложения попадает к тестировщикам, которые, после завершения испытаний, сообщают о его результатах разработчикам. Этот процесс повторяется до тех пор, пока новая версия приложения не будет наконец развёрнута в продакшне.
При таком подходе к внесению изменений в программы многое может пойти неправильно. Тут могут проявиться недостатки в рабочих процессах, последствия ручного вмешательства в процессы, задержки в обмене сообщениями. Кто-то может что-то неправильно понять… Автоматизируя DevOps-процессы можно раз и навсегда решить некоторые из этих проблем.
В ходе автоматизации DevOps собирают в единую систему инструменты, используемые специалистами, работающими над программами на разных стадиях её жизненного цикла. При этом обеспечивается прозрачность процессов, высокая скорость выхода новых версий программ, упрощается развёртывание проектов.
Различные этапы работы над проектом неразрывно связаны
Инструменты для автоматизации DevOps
Существует просто невероятное количество DevOps-инструментов. Вы, возможно, уже пользуетесь некоторыми из них.
DevOps-инструменты (источник)
Хочу рассказать о моих любимых инструментах, применяемых на различных стадиях жизненного цикла программных проектов.
▍Jenkins
Jenkins — это средство для автоматизации CI/CD-процессов, предназначенное для мониторинга выполнения повторяющихся задач. Это — опенсорсный проект, который может работать на различных платформах. В нём имеется несколько встроенных плагинов, предназначенных для создания CI/CD-конвейеров. С использованием CI/CD-сервера Jenkins можно автоматизировать различные стадии работы над приложением.
▍Azure DevOps
Azure DevOps Server — это тоже инструмент CI/CD-автоматизации, возможности которого охватывают весь жизненный цикл приложения. Этот проект разработан компанией Microsoft, он даёт в распоряжение разработчиков, благодаря использованию Team Foundation Version Control (TFVC) или Git, систему контроля версий. Он поддерживает систему отчётов, системы управления требованиями и проектами, средства для автоматической сборки, тестирования и выпуска проектов.
▍Selenium
Selenium — это кросс-платформенный фреймворк для тестирования веб-приложений. Среди его возможностей можно отметить средства для записи и выполнения тестов, позволяющие создавать тесты без необходимости изучения какого-либо языка программирования. Он, кроме того, поддерживает особый язык для написания тестов (Selenese). Писать тесты можно и с использованием других языков программирования, в состав которых входят Java, C#, Groovy, Perl, PHP, Python и Ruby
▍Applitools
Applitools — это проект, направленный на тестирование и мониторинг пользовательского интерфейса приложения, выполняемые как часть CI/CD-процесса. Программа контролирует самые важные функции приложений и внешний вид их интерфейсов. Поддерживается автоматизированная работа с веб-приложениями, с мобильными и нативными проектами.
▍Browserstack
Browserstack — это ещё один инструмент для автоматизации тестирования, облачная платформа для тестирования веб-проектов и мобильных приложений, которая позволяет программистам проверять свои разработки с использованием различных браузеров, операционных систем, реальных мобильных устройств. При этом тем, кто пользуется Browserstack, не нужно заботиться о создании или поддержке собственного парка виртуальных машин, устройств или эмуляторов.
▍Appium
Appium — это опенсорсный инструмент для автоматизации тестирования приложений. С его помощью можно запускать скрипты и тестировать нативные, мобильные, гибридные приложения. Он поддерживает и тестирование веб-приложений, и приложений, созданных для платформ Android и iOS с использованием веб-драйвера.
▍Tricentis
Tricentis Tosca — это программа, которую можно использовать для сквозного тестирования приложений. В ней объединено множество аспектов тестирования. Среди них — создание тестовых случаев, автоматизация тестирования, тестирование с последующим выведением данных, формирование аналитических сведений по результатам испытаний графических пользовательских интерфейсов и API.
▍Sauce Labs
Sauce Labs позволяет запускать тесты в облачной среде, давая в распоряжение тестировщиков обширную инфраструктуру, рассчитанную на проведение автоматизированных и ручных испытаний настольных и мобильных приложений. Этот проект поддерживает выполнение тестов с помощью Selenium, Appium и JavaScript-фреймворков для модульного тестирования. Он, кроме того, даёт в распоряжение тестировщиков возможности защищённого протокола Sauce Connect, позволяющего тестировать проекты, находящиеся за файрволами клиентов.
▍ElasticSearch
ElasticSearch — это самая популярная поисковая система корпоративного класса, предназначенная для решения задач мониторинга и аналитики. Она предлагает пользователям возможности распределённой полнотекстовой поисковой системы с веб-интерфейсом, основанным на HTTP, поддерживающей JSON-документы, не имеющие схемы.
▍OutSystems
Существуют платформы для разработки приложений, в состав которых входят DevOps-механизмы, способные поддерживать работу над приложением на протяжении всего их жизненного цикла. Одна из таких платформ — OutSystems.
Итоги
В этом материале мы рассмотрели некоторые инструменты для автоматизации DevOps. Надеемся, они вам пригодятся.
Как вы автоматизируете DevOps?