[Перевод] Автоматизация DevOps

Возникает такое ощущение, что в наши дни термин «DevOps» понимают очень по-разному. Я, являясь DevOps-экспертом в OutSystems, отвечаю на вопрос о том, что такое DevOps, говоря, что это — механизм, ускоряющий доведение до потребителей полезных возможностей программ. Это — нечто большее, чем некий навык, или должность, или инструмент. DevOps — это парадигма, меняющая производственную культуру в сфере разработки ПО.

Главное тут — ускорение процесса доставки изменений программ в продакшн-окружение и усиление возможностей циклов обратной связи в конвейере подготовки новых версий программ к работе. Это позволяет быстро, ещё на стадии разработки, узнавать о проблемах, и быстро их исправлять. Именно поэтому можно обратить внимание на то, что такие понятия, как «CI/CD» и «автоматизация тестирования» тесно связаны с DevOps.

dag9pxwlprqtzxbndgoy2xkddke.jpeg

Но DevOps — это ещё и улучшение взаимодействия между разработчиками и другими специалистами. Это — ликвидация организационной разобщённности. Это — открытие пути для инноваций через эксперименты и возможность измерить воздействие каждого изменения кода на бизнес. А значит — возможность действовать с учётом результатов подобных измерений.

Недавно я рассказывал об автоматизации DevOps на TechTalk. Если вас интересует эта тема — предлагаю вам взглянуть на мою статью.

Зачем в DevOps нужна автоматизация?


Огромный плюс автоматизации DevOps заключается в том, что это повышает скорость и гибкость разработки приложения и доставки их конечному пользователю. Автоматизация устраняет узкие места и позволяет отказаться от больших объёмов ручного труда. Кроме того, вместе с автоматизацией процессов приходит и их стандартизация, что ещё сильнее сокращает вероятность возникновения ошибок или оплошностей, характерных для ручных подходов к решению задач.

Давайте, для примера, посмотрим на то, как вручную обрабатывается типичный запрос от клиента, направленный на внесение изменений в функционал приложения. Клиент отправляет операционной группе электронное письмо со сведениями о том, что ему хотелось бы видеть в программе. Операционная группа передаёт сообщение разработчикам, которые начинают работу над задачей. После того, как дело будет сделано, новая версия приложения попадает к тестировщикам, которые, после завершения испытаний, сообщают о его результатах разработчикам. Этот процесс повторяется до тех пор, пока новая версия приложения не будет наконец развёрнута в продакшне.

При таком подходе к внесению изменений в программы многое может пойти неправильно. Тут могут проявиться недостатки в рабочих процессах, последствия ручного вмешательства в процессы, задержки в обмене сообщениями. Кто-то может что-то неправильно понять… Автоматизируя DevOps-процессы можно раз и навсегда решить некоторые из этих проблем.

В ходе автоматизации DevOps собирают в единую систему инструменты, используемые специалистами, работающими над программами на разных стадиях её жизненного цикла. При этом обеспечивается прозрачность процессов, высокая скорость выхода новых версий программ, упрощается развёртывание проектов.

a72e0b2d01001d0fa48b5e7610eae0bb.jpg


Различные этапы работы над проектом неразрывно связаны

Инструменты для автоматизации DevOps


Существует просто невероятное количество DevOps-инструментов. Вы, возможно, уже пользуетесь некоторыми из них.

0c2cc2298b9c43d8f23328567cf22cb6.jpg


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?

oug5kh6sjydt9llengsiebnp40w.png

3piw1j3wd_cgmzq9sefgferaumu.png

© Habrahabr.ru