
Техника
Руководитель Отдела по работе с Партнерами
Производительность и доступность приложений компании имеют решающее значение для поддержания бесперебойных бизнес-процессов, и даже небольшие проблемы с производительностью могут повлечь за собой довольно дорогостоящие последствия. Например, в решениях, ориентированных на клиента, медленный отклик системы, скорее всего, негативно повлияет на SEO и коэффициент конверсии и, следовательно, приведет к снижению доходов и даже снижению лояльности к бренду. Согласно исследованию Akamai, задержка загрузки веб-сайта на 100 миллисекунд может снизить коэффициент конверсии на 7 процентов. Современные приложения — большие, часто распределенные и асинхронные — особенно уязвимы к сбоям и замедлению работы и, следовательно, требуют особенно комплексного подхода к поддержанию их работоспособности и доступности. Поскольку существует мало рекомендаций, помогающих компаниям в обеспечении тщательного контроля производительности приложений в крупных ИТ-средах, мы представляем следующее руководство по управлению производительностью приложений 101.
Будучи поставщиками услуг по управлению приложениями, мы часто сталкиваемся с неправильным толкованием относительно новой концепции “управление производительностью приложений”. В основном люди ошибочно принимают это за мониторинг приложений и используют термины взаимозаменяемо, но мониторинг приложений - это всего лишь способ детально показать, как система ведет себя с течением времени. Несмотря на весь его существенный вклад, чистого мониторинга недостаточно для удовлетворения потребностей сложных современных приложений и является лишь вспомогательным мероприятием для управления производительностью. Управление производительностью приложений - это гораздо более широкий термин, который включает в себя, помимо мониторинга, решение проблем, предотвращение проблем и постоянное совершенствование приложений.
Преимущества правильной работы приложений не заканчиваются повышением коэффициентов конверсии и инвестированием в лояльность к бренду. Преимущества управления производительностью приложений на практике для организации включают:
Повышение эффективности бизнеса
Правильно администрируемое управление производительностью приложений оставляет в прошлом неэффективные бизнес-приложения. В частности, это помогает справиться с задержками в перегруженных процессах, простоями и сбоями в работе, которые могут значительно снизить производительность сотрудников и почти вдвое увеличить время, необходимое для выполнения той или иной задачи.
Сниженная эксплуатационная стоимость
🞄 Сведены к минимуму затраты на дальнейшие усовершенствования. Изменения в приложениях становятся менее дорогостоящими благодаря возможности выявления и решения проблем интеграции кода до запуска приложения в производство.
🞄 Снижение затрат на поддержку. Данные, полученные в ходе управления производительностью приложения, повышают эффективность работы вспомогательного персонала. Инженеры службы поддержки могут быстрее решать проблемы с производительностью и доступностью и со временем решать больше проблем.
🞄 Хорошо спланированная емкость облака. Сокращение времени обработки запросов вряд ли будет иметь большое значение для ваших пользователей, но это может значительно увеличить ваши расходы. Непрерывное управление производительностью приложений позволит вам оценить ваши оптимальные потребности в емкости облака и разработать более эффективное использование вычислительных ресурсов или внедрение динамического потребления для облаков.
Мониторинг и отчетность по SLA
Данные по управлению производительностью приложений помогают обеспечить прозрачность сотрудничества со сторонними поставщиками (будь то поставщик SaaS или поставщик услуг аутсорсинга разработки приложений и управления ими) и гарантировать, что качество обслуживания поддерживается на уровне, ожидаемом вашим бизнесом. Показатели производительности приложений могут быть преобразованы в такие ключевые показатели эффективности, как среднее время загрузки страницы, количество случаев недоступности сервисов и многое другое.
Управление производительностью приложений начинается с обнаружения и локализации аномалий. Для этого ответственная команда применяет широкий набор методов.
Мониторинг компонентов подразумевает отслеживание показателей производительности и доступности всех уровней приложений и компонентов – серверов, ОС, сервисов, компонентов интеграции, сторонних API, баз данных.
Мониторинг включает в себя отслеживание критически важных бизнес-транзакций по всей инфраструктуре приложений. Под этим мы подразумеваем обеспечение полноты транзакций, приемлемости их сроков, а также выявление слабых мест на пути запроса. Мониторинг работоспособности транзакций особенно актуален для сложных распределенных транзакций во внутренних или внешних системах, когда потеря сообщения имеет решающее значение.
Мониторинг реального пользователя (как Google Analytics) - это пассивный сбор данных о производительности служб приложений, к которым клиенты могут получить прямой доступ. Это позволяет получить представление о реальном трафике и ошибках на сервере и во внешнем интерфейсе, определить наиболее популярные наборы функциональных возможностей и различия в производительности при доступе к приложению с разных устройств, браузеров или частей мира.
Для синтетического мониторинга разработчики создают специальные скрипты, которые систематически имитируют действия пользователя в приложении. Это позволяет находить недостатки в работе приложения до того, как это коснется реальных пользователей.
Показатели могут только сказать, что что-то не так. Чтобы указать на реальный источник проблемы, мы обратимся к журналам. Команда управления производительностью приложений может либо вручную прокручивать данные журнала, либо использовать специальные инструменты для анализа журнала (такие как Logstash, Graylog, Logmatic, Splunk). Чтобы обеспечить эффективность обработки журналов и использовать передовые методы анализа журналов, рекомендуется требовать от разработчиков, чтобы журналы были структурированы, должным образом описаны и соответствовали стандартам, например, ISO 8601 для информации о дате и времени.
Инструменты, используемые для управления производительностью приложений, можно грубо сгруппировать в несколько сегментов, каждый из которых имеет благоприятные и неблагоприятные аспекты для определенного случая мониторинга. Два ключевых различия заключаются в происхождении инструментов и способе их реализации.
Вы можете либо выбрать из множества доступных на рынке (AppDynamics, Stackify, Dynatrace и т.д.), либо использовать отечественное программное обеспечение. Последнее становится все более популярным среди компаний со сложной и развитой ИТ-инфраструктурой, которые точно знают, где находятся их слабые места в производительности, и хотят решать их более целенаправленно.
Инструменты на основе агентов подразумевают, что часть инструмента устанавливается непосредственно на сервере или сервисе и собирает инсайдерские данные. Он предоставляет более подробную информацию о том, как работает программное обеспечение, но может потребовать ощутимого количества ресурсов сервера и снизить производительность компонента. Безагентные инструменты удаленно оценивают состояние программного обеспечения. Они проще и быстрее развертываются, но имеют ограниченный охват отслеживания показателей.
Для управления производительностью приложений важны не инструменты, а меры, которые вы принимаете на основе полученных от них данных. Зрелое управление производительностью осуществляется следующим образом:
Два этапа, описанные выше, заслуживают особого упоминания. Оповещение должно касаться только соответствующих заинтересованных сторон и касаться только серьезных проблем, чтобы быть действительно эффективным. Сообщения об обнаруженных проблемах, о том, как они были решены, и о том влиянии, которое они оказали, не следует игнорировать. В долгосрочной перспективе надлежащая отчетность позволяет выбрать лучший путь разработки приложений и принимать правильные решения по эволюции приложений.
Основные сторонники управления производительностью приложений варьируются от компании к компании. Это может быть обязанностью инженера по производительности, команды DevOps или частью ответственности за техническую поддержку, которая по своей сути отвечает за работоспособность и доступность приложений. Назначенное ответственное лицо или небольшая группа заинтересованных сторон должны владеть управлением производительностью приложений как процессом внутри компании, чтобы обеспечить его эффективность, последовательность и целенаправленность усилий. Однако ни один из них не может нести полную ответственность (и обладать необходимыми навыками) за поддержание и управление общей производительностью приложения, поскольку источники снижения производительности могут быть распределены по всем уровням и компонентам программного обеспечения. Они могут проживать в:
И все же этот список далеко не полный. Таким образом, для успешного управления производительностью приложений первым важным шагом должно стать объединение всех заинтересованных сторон на протяжении всего жизненного цикла приложения. Полная команда по управлению производительностью приложений требует участия на неполный рабочий день не менее:
Также лучше:
Основные затраты на управление производительностью приложений связаны с:
Обзор текущего состояния ИТ-инфраструктуры. Это будет включать такие действия, как проверка работоспособности кода, определение основных кандидатов для управления производительностью приложений и создание бэклога, первоначальное определение размера будущего решения для мониторинга.
Разработка инструментов мониторинга, покупка лицензий на продукты (годовая /ежемесячная плата) и настройка и обслуживание решений мониторинга.
Специально назначенная группа мониторинга. Они будут управлять решениями для мониторинга, интерпретировать показатели мониторинга для всей команды управления приложениями, а также следить за базой данных, в которой они хранятся.
Если вы хотите добиться наиболее значительных улучшений и получить большую окупаемость инвестиций в управление производительностью приложений:
Наконец, давайте посмотрим, какие проблемы связаны с управлением производительностью приложений.
При выборе SaaS или PaaS очень важно отслеживать время отклика, ошибки и доступность облачных сервисов (например, службы облачного хранения). Хотя вы не можете определить, в чем именно заключается проблема, собранные данные могут быть использованы для формулирования запроса в службу поддержки поставщика и мониторинга соблюдения SLA.
Опять же, у вас нет доступа к исходному коду, поэтому большие изменения для повышения производительности приложения недоступны. Однако управление производительностью приложений по-прежнему имеет смысл. По крайней мере, вы сможете быстро выявить проблемы с производительностью, обнаружить недостатки, вызванные недавними настройками, увеличить ресурсы или оптимизировать свою базу данных.
Проблема управления производительностью приложений для решений IoT и big data заключается в обилии данных мониторинга. Чтобы устранить проблему, убедитесь, что собраны только необходимые данные, объединены в пакеты и установлены более длительные интервалы между передачами.
В этой статье мы обсудили, что такое производительность приложений и какой, по нашему мнению, наилучший подход к управлению производительностью приложений. Мы выступаем за создание расширенной команды по управлению производительностью приложений, отдавая предпочтение управлению производительностью, а не чистому мониторингу производительности, и сохраняя последний в качестве продуманно сбалансированной составляющей – без сбора необоснованных показателей, тщательного ведения журнала и шумных оповещений.