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

Что такое ИИ? Искусственным интеллектом называют программы, написанные для решения проблем (часто очень сложных), которые люди уже могут решить. Целью многих исследователей и программистов в этой области является создание программ, которые могут прийти к решению проблемы автономно (без надзора), используя методы или логику, которые могут отличаться от того, что может использовать человек.

Что такое машинное обучение? Машинное обучение – это практическое применение ИИ в виде набора алгоритмов или программ. Аспект «обучения» зависит от обучающих данных и времени. Чем больше релевантных данных вы вводите в машину, тем дольше она может их анализировать и чем сложнее алгоритмы, которые она использует… тем больше в конечном итоге машина «научится».

Почему DevOps?

При внедрении DevOps организация может получить технические, деловые и культурные преимущества, в том числе:

  • Автоматизация, автоматизация, автоматизация!
  • Более быстрая разработка и время выхода на рынок
  • Непрерывное предоставление функций и исправлений с меньшим количеством дефектов
  • Уменьшенная операционная сложность
  • Более быстрое устранение проблем
  • Большее удовлетворение разработчиков, что означает больше времени для инноваций и меньше времени, затрачиваемого на исправление ошибок или тушение пожаров.
  • Расширение сотрудничества и коммуникации между командами

Что такое набор инструментов DevOps?

Для целей этого блога мы можем думать о «цепочке инструментов DevOps» как об инструментах, которые используются (и идеально интегрированы друг с другом), которые помогают организациям внедрять и внедрять DevOps. Основные «фазы» цепочки инструментов включают в себя:

  • Планирование: создание спецификаций программного обеспечения, требований и планов выпуска.
  • Создание: разработка программного обеспечения и кодирование.
  • Проверка: тестирование программного обеспечения и контроль качества.
  • Упаковка: выпуск и настройка: сборка, подготовка и отправка кода в производство
  • Мониторинг: обеспечение того, чтобы программное обеспечение работало в рамках допустимых параметров.

В идеализированном внедрении DevOps существует непрерывный цикл между фазами.

DevOps, мы уже на месте?

Несмотря на то, что методология и инструменты DevOps существуют уже более десяти лет, очень немногие организации достигли конечной цели DevOps, которая заключается в 100% автоматизации от изменения кода до производства… без необходимости вмешательства кого-либо на любом этапе процесса. Реальность такова, что, несмотря на то, что в цепочке инструментов DevOps есть инструменты, которые пересекаются между некоторыми фазами, не существует единого инструмента или набора инструментов, которые могут обеспечить 100% автоматизированный процесс. Вместо этого организации в конечном итоге развертывают множество инструментов DevOps, которые действительно хорошо справляются только с одной или двумя фазами. Негативным последствием является то, что организация теперь создала «хранилища данных» или «острова автоматизации», где становится невозможно тесно интегрировать инструменты от начала до конца или сопоставить любые данные, которые инструменты производят, обрабатывают или анализируют.

Этап планирования

На начальном этапе планирования процесса DevOps организации озабочены повышением эффективности. В частности, в том, что касается создания спецификаций, а также процессов выпуска и обслуживания программного обеспечения. Этот этап также охватывает все аспекты сбора как технических, так и бизнес-требований. На этом этапе организации могут выбрать различные инструменты — с открытым исходным кодом, проприетарные, SaaS или локальные. Популярными примерами являются JIRA Atlassian, Rally (приобретена CA) или GitHub Issues.

Фаза создания

Далее, фаза создания. Это направлено на повышение эффективности и качества фактической разработки программного обеспечения. На этом этапе организация разрабатывает, проектирует, кодирует, тестирует и создает программное обеспечение. Подобно тому, как мы видели на этапе планирования, организация может выбирать из множества инструментов, например Atlassian’s Bitbucket, Gitlab или Github.

Этап проверки

На этапе проверки организация, внедрившая DevOps, наденет шляпу контроля качества и сосредоточится на качестве кода. На этом этапе основное внимание уделяется обеспечению достаточного покрытия тестами, которые можно выполнить быстро и точно. На этом этапе организация захочет получить обратную связь о выполнении тестов от разработчиков эффективным способом, чтобы можно было быстро устранять ошибки и регрессии. На этом этапе на выбор предлагается множество инструментов, включая Jenkins, CircleCI и Travis CI.

Этапы упаковки, выпуска и настройки

На этапе упаковки или подготовки к производству организация предпримет необходимые шаги для подготовки программного обеспечения к производству, которые будут включать упаковку, настройку и подготовку. На последующих этапах выпуска и настройки организация реализует все задачи, связанные с фактическим отталкиванием к производству. Рассмотрение на этом этапе включает в себя оркестровку, выделение ресурсов и фактическую механику перехода от развертывания к производственной среде. Это может включать развертывание баз данных и загрузку балансировщиков, прокси-серверов, веб-серверов и других систем или программного обеспечения, необходимых для поддержки приложения. Популярные инструменты на этом этапе включают Docker для управления контейнерами и Ansible, Puppet или Chef для автоматизации и организации развертываний.

Этап мониторинга

На этапе мониторинга цепочки инструментов DevOps организация будет использовать набор инструментов мониторинга, чтобы убедиться, что инфраструктура, программное обеспечение и службы, на которые опирается приложение, соответствуют требованиям QoS. На этом этапе существует самая разнообразная группа инструментов, из которых может выбирать организация. Включая все, от New Relic и Appdynamics для мониторинга приложений, Datadog для мониторинга инфраструктуры, ThousandEyes для сети, Splunk или Elastic для журналов и VictorOps, PagerDuty или Slack для уведомлений и совместной работы.

Реализация преимуществ DevOps с помощью ИИ и машинного обучения

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

Автоматизация

Если мы помним, самая амбициозная (и неуловимая) цель DevOps — полная автоматизация всей цепочки инструментов. Однако полная автоматизация — это проблема, которая не будет решена в ближайшее время, поэтому лучшее, на что мы можем надеяться, — это существенное увеличение степени автоматизации во всех инструментах, а не только в рамках одного инструмента или этапа.

Как искусственный интеллект и машинное обучение могут повысить автоматизацию цепочки инструментов?

В SignifAI мы используем ИИ для разрушения «хранилищ данных» и «островков автоматизации» в цепочке инструментов, чтобы автоматизировать анализ событий, журналов и метрических данных, создаваемых инструментами. Например, SignifAI может сопоставлять все соответствующие данные в цепочке инструментов, в которую входят JIRA, GitHub, Jenkins, Ansible, Splunk, NewRelic, PagerDuty и Slack. К преимуществам этих автоматизированных корреляций относятся уменьшение шума предупреждений, более быстрый и точный анализ первопричин и прогнозные данные, основанные на всей цепочке инструментов, а не только на одном отдельном инструменте или источнике данных.

Снижение операционной сложности

DevOps направлен на снижение сложности процессов, необходимых для выпуска программного обеспечения. С меньшей сложностью приходит скорость и эффективность.

Как ИИ и машинное обучение могут упростить работу?

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

Более быстрое устранение проблем

Среди команд по обеспечению надежности сайтов есть старые поговорки о том, как решать проблемы: перезагрузить компьютер, добавить больше памяти или решить, что это проблема DNS, с которой лучше всего справятся сетевики! В действительности, проведение анализа первопричин, формулирование надлежащих мер по устранению неполадок и внедрение точного решения требуют много времени.

Как искусственный интеллект и машинное обучение могут ускорить устранение проблем?

В SignifAI мы используем ИИ для автоматического определения приоритетов наиболее важных проблем, сбора всех соответствующих данных, связанных с проблемой (независимо от того, где в цепочке инструментов она находится), и предлагаем решение, основанное на лучших отраслевых практиках. SignifAI также применяет собственный опыт и, что наиболее важно, отзывы и обучающие данные, предоставленные командой DevOps. В контексте ИИ точность рекомендуемого решения будет зависеть только от количества доступных соответствующих обучающих данных и от того, насколько хорошо «помечены» данные. При объединении этих трех методов обучения данных решения со временем становятся тем точнее, чем больше обратной связи поступает в систему.

Расширение сотрудничества

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

Как искусственный интеллект и машинное обучение могут улучшить совместную работу и общение разработчиков?

SignifAI использует ИИ для улучшения связи и совместной работы команды DevOps, предоставляя единый пользовательский интерфейс, из которого можно получить доступ ко всем соответствующим данным о цепочке инструментов. Любимый инструмент коммуникации команды должен быть напрямую доступен в пользовательском интерфейсе, чтобы проблемы JIRA, подтверждения PagerDuty и Все сообщения Slack можно инициировать, просматривать или отвечать на них без необходимости переключения инструментов. SignifAI также позволяет легко собирать знания команды о том, как должны работать их системы и приложения, а затем отображать эти знания в соответствующее время, например, при обнаружении предупреждений или аномалий.

Резюме

ИИ и машинное обучение способны разрушить разрозненность, которую неизбежно создают инструменты DevOps, для создания более высоких порядков автоматизации, снижения операционной сложности, предложения более быстрых решений проблем и расширения совместной работы.

Следующие шаги

Первоначально опубликовано на blog.signifai.io 25 июля 2017 г.