5 правил проектирования highLoad-систем
Средняя стоимость простоя корпоративной сети крупной компании – 5 тыс. долларов в минуту, подсчитали в Gartner. Поэтому системы, к которым обращаются множество клиентов одновременно, должны быть оптимизированы. Иначе они могут просто остановиться при пиковых нагрузках. О принципах создания высоконагруженных систем рассказал директор практики 1С BIA-Technologies Олег Неборский.
Что такое highLoad
Под термином «высоконагруженная (highLoad) система» подразумеваются программные или программно-аппаратные комплексы, обслуживающие большое количество пользовательских обращений. С другой стороны, работающий всего на одном выделенном сервере небольшой интернет-магазин во время сезонного пика продаж также может работать в режиме очень высокой нагрузки на инфраструктуру, и для него это тоже будет highLoad.
Одним из часто встречающихся и наиболее распространённых в России и СНГ примеров высоконагруженных систем можно считать внедрения на платформе «1С». Быстрое масштабирование при постоянно растущих нагрузках, мощные ресурсы (CPU, ОЗУ, высокоскоростные SSD) – все это и многое другое относится к особенностям такого рода решений. Еще одной чертой highLoad можно назвать повышенное внимание к обслуживанию такой ИТ-инфраструктуры и недостаточность «классических» методов при решении задачи повышения производительности.
Стабильность работы, доступность и скорость работы высоконагруженных систем важны. Любой, даже минутный простой системы ведет к снижению прибыли или к репутационным потерям. Несколько лет назад Gartner подсчитал стоимость простоя корпоративной сети для крупных компаний. Среднее значение составило 5 тыс. долларов в минуту и, соответственно, свыше 300 тыс. долларов в час. Но самое серьезное последствие в случае с простоем фронт-решения, в том, что клиент не будет ждать и разбираться, почему система не отвечает либо работает слишком медленно. Он просто уйдет к конкуренту.
Как добиться устойчивости highLoad
Итак, высоконагруженные системы требуют особых подходов к обеспечению устойчивости.
1. Важно построить инфраструктуру с резервированием и значительным запасом мощностей.
Последствия любых сбоев, начиная с проблем электропитания и заканчивая вышедшими из строя жесткими дисками и модулями памяти, должны устраняться за минимальные сроки, а нагрузка - автоматически переключаться на резервные ресурсы. Такой подход нужно применять не только в отношении отдельных стоек и серверов, но и дата-центров.
2. Следует провести независимый аудит высоконагруженной информационной системы.
По итогам формируется перечень рекомендаций по увеличению работоспособности. Так, в одной крупной организации в ходе ИТ-аудита была проанализирована конфигурация и база «1С». В результате удалось выявить ряд «узких мест», при устранении которых производительность систем «1С» выросла на 30%.
3. Необходимо провести работу по оптимизации highLoad-системы для повышения скорости ее работы как в целом, так и в отдельных процессах.
Неоптимизированные системы становятся источником «головной боли» не только для ИТ, но и бизнес-подразделений. Так, федеральный дистрибьютор электротехники сталкивался с проблемами при расчете себестоимости продукции. ИТ-аудит позволил выявить причины возникших проблем. За счет распараллеливания ресурсоемких запросов смогли добиться повышения производительности системы. Время расчета себестоимости снизилось с 18 до 8 часов.
4. Мониторинг в режиме 24/7/365.
5. Нагрузочное тестирование.
Нагрузочное тестирование обычно включает в себя следующие этапы: разработку сценария, доработку конфигурации тестируемой системы для прохождения теста и сбора статистики, а также само тестирование.
В ходе тестирования выявляются места, где систему можно и нужно оптимизировать. Если речь идет о высоконагруженных базах данных, то для измерения показателей рекомендуется использовать APDEX (application performance index) – признанный международный индекс производительности приложений, отображающий процент «довольных» пользователей.
Показателен пример нагрузочного тестирования базы данных «1С», проведенного в логистической компании «Деловые Линии». Обычно в базе одновременно работает 5 тыс. пользователей. В ходе проверки их количество было доведено до 10 тыс. Процесс одной итерации нагрузочного тестирования занял 8 часов, хотя сам проект длился более года. По итогам проекта производительность системы по методике APDEX показала максимальную оценку – 0,99–1,0, и это считается очень высоким значением.
Подходы к разработке
Как разрабатывать высоконагруженные системы? К примеру, если вы внедряете решение на платформе «1С», вам необходимо досконально знать все принципы работы баз данных, научиться читать план запроса, изучить особенности работы индекса. Также следует помнить о том, что нагрузку на сервер СУБД (системы управления базами данных) создают запросы. Чем больше обращений, тем выше нагрузка. Поэтому особое внимание следует уделить архитектуре системы.
В процессе цифровой трансформации бизнеса количество запросов к системам будет расти, причем очень быстро. И это следует закладывать уже на этапе проектирования высоконагруженных систем. Конечно, сложно избежать «промахов» при проектировании и поддержке высоконагруженных систем. Но на ошибках можно и нужно учиться, тщательно выяснять причины инцидентов на основе анализа логов и технологических журналов, чтобы в дальнейшем избежать проблем с производительностью.
Читать еще:
https://globalcio.ru/discussion/16537/?sphrase_id=14354
https://globalcio.ru/discussion/16057/?sphrase_id=14354
https://globalcio.ru/discussion/16988/