Усиление производительности приложений с помощью Turbonomic
AIOps — это применение искусственного интеллекта в ИТ-операциях. Цель AIOps не в том, чтобы имитировать человеческий интеллект, а в том, чтобы применять алгоритмы для решения конкретных задач — часто гораздо быстрее, точнее и в гораздо большем масштабе, чем человек.
По мере того как приложения становятся более распределёнными и сложными, а инфраструктура, на которой они работают, также становится более распределённой и сложной (часто охватывая дата-центры, публичные облака и edge computing), становится практически невозможным обеспечить надёжную и эффективную работу приложений в масштабе без AIOps.
Организации, внедряющие AIOps, обнаруживают, что их разработчики, SRE-команды и операционные команды становятся более продуктивными и могут уделять больше времени инновациям, поскольку AIOps освобождает их от устранения неполадок, анализа первопричин и выполнения рутинного обслуживания и других задач «поддержания работоспособности систем».
Большинство ИТ-организаций тратят значительные ресурсы на повседневные операции в своих ИТ-средах. Во многих компаниях генерируется так много оповещений из различных инструментов мониторинга, что появился класс решений, которые фильтруют всё, кроме наиболее серьёзных проблем и рисков, которые затем передаются ИТ-персоналу для анализа и устранения.
Эти инструменты используют расширенную аналитику и логические возможности (ИИ в AIOps), чтобы классифицировать оповещения, которые с высокой вероятностью можно игнорировать и скрывать, чтобы сотрудники могли быстрее выявлять первопричину проблемы при наличии серьёзного инцидента или, что ещё лучше, устранять риск до того, как он станет серьёзной проблемой.
AIOps и управление ресурсами приложений Turbonomic
IBM Turbonomic Application Resource Management (Turbonomic) — это платформа управления ресурсами приложений, которая собирает данные телеметрии от приложений до инфраструктуры без использования агентов, чтобы принимать решения о масштабировании, выделении, освобождении и оптимизации ресурсов с точки зрения производительности, стоимости и доступности.
Наиболее важная цель ИТ-инфраструктуры — предоставлять приложениям ресурсы, необходимые для обеспечения требуемых уровней сервиса. Дополнительная цель — делать это максимально экономично и адаптироваться к изменяющимся условиям и сценариям нагрузки, динамически корректируя ресурсы во времени.
Ключевые возможности платформы управления ресурсами приложений включают:
- оптимизацию с учётом приложений
- поддержку локальных, гибридных и мультиоблачных развертываний
- полную видимость и контроль всей среды
- надёжные и автоматизируемые действия
- соблюдение бизнес-политик, абстракцию, аналитику и автоматизацию
Также это простая интеграция в жизненный цикл приложений и инфраструктуры, обеспечивающая включение этих действий в ежедневные операции.
В следующем рисунке показано, как интеграции Turbonomic с full-stack технологическими платформами позволяют системе собирать аналитику и принимать решения, автоматически сопоставляя зависимости ресурсов, спрос приложений и затем подбирая ресурсы для обеспечения производительности и снижения лишних затрат.
Слой автоматизации затем взаимодействует с целевыми системами и выполняет действия, такие как масштабирование CPU, памяти, хранилища, сети, IaaS, Kubernetes-контейнеров, pod’ов, node’ов и многое другое.
Эти решения используются не только в реальном времени, но и для предоставления интеллектуальных, основанных на данных рекомендаций по архитектуре будущей среды.
Основной вызов крупных предприятий — экспоненциальная сложность современных приложений, построенных на микросервисах и развернутых в контейнеризированной мультиоблачной инфраструктуре.
Предприятия быстро внедряют AIOps с машинным обучением, встроенным во многие системы мониторинга и управления, включая APM, управление сервисами, инфраструктуру как код и управление конфигурациями. Turbonomic выступает в роли control plane, современной платформы хостинга приложений, объединяя эти системы и масштабируясь до миллионов управляемых элементов в одном экземпляре.
По мере развития независимых инструментов AIOps Turbonomic получает информацию об изменениях через интеграции и включает эти данные в процесс принятия решений AI-движка, позволяя крупным ИТ- и DevOps-командам расти вместе с технологическими инвестициями.
Turbonomic обеспечивает приложения ресурсами, когда они необходимы, непрерывно и автоматически. Понимая спрос приложений и сопоставляя его с доступной инфраструктурой, Turbonomic обеспечивает производительность приложений и делает это максимально эффективно с минимальными затратами. При этом соблюдаются важные бизнес- и ИТ-ограничения, такие как доступность приложений, соответствие SLO, локальность данных и приложений, а также управление операционными затратами.
Сначала Turbonomic автоматически и без агентов обнаруживает приложения и инфраструктуру, подключаясь к точкам управления, таким как APM-платформы (например Instana или Dynatrace), контейнерные платформы (например Red Hat OpenShift, Kubernetes, облачные EKS, AKS, GKE или VMware Tanzu), облачные провайдеры (AWS, Microsoft Azure, Google Cloud Platform), а также физические и виртуальные вычислительные и хранилищные платформы.
Далее аналитика приложений и инфраструктуры используется AI-платформой Turbonomic для определения необходимых и доступных ресурсов на всём пути — от приложения до физического, виртуального, контейнерного и облачного уровня.
Эта аналитика используется для генерации действий, таких как размещение, масштабирование, перераспределение, выделение и освобождение ресурсов для обеспечения производительности без лишних затрат и потерь.
Сценарии использования Turbonomic
Общие сценарии AIOps включают:
- обнаружение аномалий в реальном времени для снижения рисков и предотвращения проблем
- ускоренный анализ первопричин через корреляцию событий
- подавление низкоприоритетных оповещений для повышения видимости важных
- планирование и управление мощностями на основе предиктивной аналитики
- автоматизацию управления ИТ-сервисами
Рассмотрим наиболее распространённые операционные сценарии:
- AppOps: почему моё приложение испытывает проблемы?
- ContainerOps: как работает мой кластер контейнеров?
- CloudOps: как выбрать тип вычислительных и хранилищных ресурсов?
AppOps: почему приложение испытывает проблемы?
Основной вопрос службы поддержки: «Почему моё приложение испытывает проблемы?»
Не «какой сервер вышел из строя?» и не «какой поток транзакций замедлен?», а простой вопрос: «что не так с приложением RobotShop?»
Разработчики могут использовать APM (application performance management), который даёт наблюдаемость и помогает анализировать проблемы приложения.
Однако это не всегда показывает истинную причину, которая часто находится вне кода. Некорректная работа инфраструктуры часто проявляется как общая задержка, поскольку отсутствует возможность проследить проблему на уровне ресурсов ниже приложения.
Рассмотрим то же приложение, которое не показывает специфических проблем в APM, но демонстрирует проблемы ресурсов, влияющие на производительность, согласно данным Turbonomic.
Переход к уровням приложения и инфраструктуры показывает различные компоненты и их зависимые ресурсы и состояние.
Но главное — перейти от наблюдаемости к разделу Actions для любого компонента приложения и увидеть действия, которые необходимо выполнить для восстановления нормального состояния.
В одном бизнес-приложении разработчики могут выполнять множество динамически изменяющихся действий, чтобы обеспечить производительность и эффективную работу, предотвращая избыточные расходы на облако и Kubernetes.
Предлагаемые действия учитывают все уровни среды, включая приложения, контейнеры, pod’ы, node’ы, облачные инстансы, виртуализацию и bare metal ресурсы.
Это важно, потому что увеличение памяти или CPU для контейнера может повлиять на другие приложения на той же инфраструктуре. Ценность системной оптимизации в том, что каждое приложение работает с оптимальной производительностью.
Рекомендуемые действия являются настройкой по умолчанию, но также доступен ручной режим выполнения действий через UI. В этом sandbox-окружении пользователи находятся в режиме только чтения, поэтому кнопка выполнения действий неактивна.
Каждое действие показывает данные об использовании и сравнение состояния «до» и «после». Действия включают масштабирование, выделение ресурсов, освобождение, размещение и покупку зарезервированных мощностей.
Каждое решение принимается на основе оптимизации CPU, памяти, хранилища, сети и стоимости нагрузки. Действия приоритизируются по степени критичности.
Действия могут выполняться через UI, REST API, а также автоматизироваться. Автоматизация выполняется без агентов через использование native API платформы.
API Turbonomic полностью документированы в Swagger.
Например, простой вызов может возвращать действия, которые можно параметризовать через POST-запрос. Также можно интегрировать это в CI/CD процессы.
Каждое действие включает этапы до, во время и после выполнения для удобной интеграции.
Также есть интеграция с ServiceNow, позволяющая автоматически создавать и закрывать тикеты и включать бизнес-воркфлоу согласования. Это позволяет использовать существующие процессы без входа в Turbonomic или облачные платформы.
Благодаря автоматизации принятия решений оптимизируется размер и ресурсы приложений, а разработчики избавляются от необходимости гадать при распределении CPU, памяти, хранилища и сети.
По мере изменения нагрузки ресурсы автоматически адаптируются на основе реальных требований и исторических данных (пики, средние значения, перцентили). В результате достигается лучшая производительность и снижение затрат.
ContainerOps: как работает кластер?
Контейнерные кластеры операционно сложны. Даже при использовании Red Hat OpenShift остаются проблемы:
- неправильный размер контейнеров
- проблемы размещения pod’ов
- перегруженные node’ы
- CPU throttling
- неоптимальный размер кластера
Понимание состояния Kubernetes-кластера критично для приложений и ИТ-организации.
Сегодня применяются традиционные подходы (квоты, пороги масштабирования), но они требуют ручного управления и не адаптируются к изменениям нагрузки.
Kubernetes может работать в OpenShift, управляемых облачных сервисах (GKE, EKS, AKS) или других реализациях.
Представления доступны на уровнях: кластер, namespace, node pool, node, pod, container, application. Turbonomic автоматически связывает все зависимости.
Доступны действия по оптимизации, масштабированию и размещению контейнеров и pod’ов.
Это создаёт эластичную Kubernetes-среду и устраняет жёсткие квоты, не учитывающие реальную нагрузку.
По мере изменения нагрузки выполняется вертикальное и горизонтальное масштабирование.
Также доступны превентивные действия, например пересоздание pod’а на другом node’е для предотвращения деградации.
Обычно Kubernetes реагирует после сбоя, но здесь система предотвращает проблему заранее.
CPU throttling сложно диагностировать, но он может существенно влиять на производительность. Turbonomic выявляет такие ограничения и предлагает действия.
Управление кластером включает оптимизацию node’ов и динамическое масштабирование инфраструктуры.
ITOps могут поддерживать более высокую утилизацию ресурсов благодаря автоматическому масштабированию.
Масштабирование выполняется как вверх при росте нагрузки, так и вниз при снижении для сокращения затрат.
Эти возможности также доступны для виртуализации и bare-metal сред.
CloudOps: как выбрать ресурсы?
В облаке существуют десятки вариантов compute, storage и DBaaS, что создаёт миллионы комбинаций.
Вопрос: «какие ресурсы IaaS и DBaaS оптимальны для моих нагрузок?»
Выбор compute (CPU и память) — уже сложная задача, к которой добавляется выбор типа инстанса, хранения и пропускной способности.
Обычно выбирают «с запасом», что приводит к перерасходу ресурсов.
В Turbonomic Cloud view можно видеть все аккаунты и действия для оптимизации производительности и стоимости.
Можно начинать с любого облака (AWS, Azure, Google Cloud) или аккаунта и переходить к детализации.
Важно понимать, почему предлагается то или иное действие и какой результат оно даст.
Действия могут выполняться по требованию или автоматически на любом уровне (приложение, инстанс, контейнер, группа, зона, регион).
Также можно планировать выполнение действий для обеспечения доступности и соблюдения требований.
Оптимизация включает управление reserved capacity для снижения долгосрочных затрат.
Заключение
Существуют и другие сценарии использования, особенно в гибридных средах.
Операционные команды, разработчики и новые роли (SRE, DevOps, Platform Engineer) меняют подход к управлению ИТ.
Платформа AIOps и автоматизации, такая как Turbonomic, позволяет сократить затраты, уменьшить ручную работу и повысить эффективность.
Конечная цель — переход к полностью self-driving operations.
Если вы хотите узнать больше и попробовать sandbox-среду, перейдите по https://turbonomic.com/try
Источник:
https://developer.ibm.com/articles/strengthening-app-performance-with-turbonomic/
Автор:
Eric Wright IBM employee
Перевод и адаптация:
Компания ICORE
