Есть немало причин, по которым компании начинают планировать изменения в своей ИТ-инфраструктуре. Одним из наиболее частых и важных оснований, обусловливающих необходимость реорганизации информационной инфраструктуры, является повышение производительности ИТ-системы. Предположим, у компании увеличился штат – и нужно обеспечить эффективную работу новых сотрудников без ущерба для скорости работы систем. Или, например, у вас растут объемы данных – тогда необходимо обеспечить их обработку за время, которое диктуют бизнес-процессы. Возможно, у компании появились новые функциональные требования к существующим системам, и ей требуется обеспечить надежность инфраструктуры ввиду дополнительной нагрузки. Так или иначе, но различные задачи, в том числе эффективности и непрерывности работы ИТ-систем, напрямую связаны с вопросом повышения их производительности.
Каждому по потребностям
Основной вопрос, который задают поставщику его заказчики: насколько увеличится скорость работы системы, если в ней появятся новые компоненты? Практически все тестирования, которые мы проводим в нашем Центре комплексных решений, связаны с проверкой на повышение производительности. Предложение достичь экстремальной производительности путем модернизации ИТ-инфраструктуры всегда звучит заманчиво. Хотя мало кто задумывается, что стоит за словом «экстремальная» и какие именно показатели для нее характерны. Скажем, ускорение на 50, 100 или 200%? У каждого заказчика свое понимание параметра «экстремальная». На практике часто оказывается, что необходима не экстремальная, а достаточная производительность системы. Достаточная – значит такая, которая может удовлетворить потребности бизнеса заказчика. При этом потребности должны соответствовать финансовым возможностям, поскольку чем выше «экстремальные» показатели, тем больше за это придется платить. Рекорды на чистую производительность зачастую ставятся в целях демонстрации возможностей конкретных технологий. Пытаться примерить подобные результаты на себя довольно бессмысленно как с точки зрения финансовых затрат, так и с позиции реальных потребностей бизнеса. Можно провести аналогию с рекордами автомобильной скорости: разумеется, всем нам интересно узнать, до какой скорости инженерам удалось разогнать тот или иной аппарат на колесах, но необходимость в автомобиле с такими возможностями для реальной жизни весьма сомнительна.
Опираясь на базу профессиональных знаний и многолетний практический опыт оказания услуг по повышению производительности информационных систем, можно составить своеобразную методику оценки, что и как нам следует делать в случае модернизации существующей инфраструктуры.
Производительность оборудования постепенно возрастает, в том числе за счет повышения производительности традиционных компонентов. Например, повышается тактовая частота процессоров, увеличиваются количество ядер и объем интегрированной кэш-памяти на ЦПУ. Примерно то же самое можно сказать о других частях вычислительных модулей: оперативной памяти, системной шине, каналах ввода-вывода и т. п. Этот процесс можно назвать эволюционным. С ростом производительности «железа», конечно же, повышается производительность работающих на нем прикладных систем. У пользователей имеется возможность поэтапно, по мере выхода новых аппаратных платформ, менять оборудование. Такой подход является консервативным: заказчик на очередном этапе, когда производительность систем начинает отставать от требований бизнеса, просто покупает у привычного поставщика точно такое же оборудование, но в текущей версии. Преимущества такого подхода понятны без долгих объяснений: простота осуществления перехода, предсказуемые сроки и результаты. Тем не менее он имеет свои недостатки. Информационные технологии постоянно развиваются, формируя у пользователей новые требования и ожидания, предоставляя новые возможности бизнесу. Сегодня от того, насколько и как предприятие использует современные ИТ-инструменты, зависит успех в конкурентной борьбе.
Поэтому консервативный путь повышения производительности имеет ограничения, в том числе сроки, позволяющие оставаться в рамках привычных решений. Кроме того, есть еще одно ограничение, которое проявляется наиболее остро в условиях, когда количество пользователей систем определяется не численностью пользователей организации, а количеством пользователей Интернета. В ситуации, когда производительность систем предприятия должна обеспечивать работу миллионов пользователей, практически невозможно найти сервер, который выдержал бы соответствующую нагрузку. Решить эту задачу можно разными способами. Самый известный подход – построение систем, обеспечивающих параллельную обработку, например, классический кластер с разделяемой системой хранения. Подход не новый, но тем не менее иногда оказывается, что прикладная система разрабатывалась без учета того, что когда-то ей придется работать на базе кластерных систем, и возникает потребность в изменении кода прикладного программного обеспечения. Аналогичная потребность может возникнуть и при переходе на архитектуру, принципиально отличающуюся от классической модели, когда каждая часть решения занимается только своей работой: сервер обрабатывает данные, а система хранения обеспечивает их чтение, запись и хранение.
ПАК, или Как выжать максимум из «железа»
Появившиеся за последние несколько лет и в довольно большом количестве программно-аппаратные комплексы (ПАК) сегодня являются максимально доступным решением на пути повышения производительности приложений за счет оборудования. Все, что можно выжать из «железа», не меняя кода ПО либо ограничиваясь небольшими настройками, в программно-аппаратных комплексах реализовано, как правило, по максимуму. Разработчики таких ПАК используют все технологические возможности, чтобы полностью использовать особенности оборудования, не забывая при этом о сбалансированности всех компонентов решения. Программно-аппаратные комплексы обычно сразу включают в себя и вычислительные ресурсы, и подсистему хранения, и систему ввода-вывода. Анализируя типовые нагрузки, для которых предназначен ПАК, разработчик подбирает сбалансированные конфигурации, когда все части системы работают так, чтобы исключить возможность появления узких мест.
Все современные ПАК можно разделить на два больших класса: практически не имеющие возможности производить изменения в настройках (они получили название appliance) и системы, параметры которых можно изменять, причем в довольно широких пределах, путем настроек системного ПО. В качестве примера программно-аппаратных комплексов первого типа (appliance) можно привести систему Oracle Database Appliance. Решение включает два сервера и дисковую полку. Для ускорения операций ввода-вывода в дисковой полке помимо жестких дисков высокой емкости имеются твердотельные накопители. При необходимости дисковая подсистема может быть расширена путем добавления еще одной дисковой полки: возможности апгрейда в этом случае имеют свой лимит. ПАК Oracle Database Appliance можно разделить на изолированные виртуальные машины, в которых кроме СУБД Oracle можно развернуть другие серверы приложений, в том числе под управлением разных операционных систем, например Microsoft Windows. Четкий набор аппаратных средств позволяет упростить задачу поиска проблем в работоспособности ПАК, обеспечить его унификацию, а также простоту развертывания даже при отсутствии высокой квалификации. Несмотря на то что Oracle Database Appliance построен на базе абсолютно стандартных компонентов, составляющих базовую архитектуру х86, производительность подобного решения зачастую выше, чем у систем, построенных эволюционным путем. Это связано с тем, что эволюционный путь нередко приводит к несбалансированным конфигурациям, поскольку система развивается постепенно и, как правило, без предварительного тестирования.
Системы более высокого уровня обладают гораздо более широкими возможностями и по развитию их аппаратных характеристик, и по гибкости подстройки параметров под разные нагрузки. В качестве примера можно привести ПАК Oracle Exadata Database Machine. Эта система представлена двумя основными типами: на базе двух- или восьмипроцессорных серверов архитектуры х86 в качестве основных вычислительных узлов. В каждом из представленных типов возможны различные конфигурации, как фиксированные, так и гибкие, когда количество серверов подбирается под конкретную задачу. Интересной особенностью Oracle Exadata является использование в качестве системы хранения двухпроцессорных серверов архитектуры х86. Такой подход позволил решить несколько задач одновременно. Во-первых, все компоненты Exadata являются стандартными, что дает возможность использовать отработанные и недорогие аппаратные решения. Например, в серверах системы хранения используются не только жесткие диски, но и аппаратные укорители высокой емкости, обеспечивающие кэширование данных со скоростью обработки операций обращения к системе хранения, близкой к производительности оперативной памяти самого сервера. Во-вторых, в серверах системы хранения Exadata используется операционная система Linux, что позволило установить специальное программное обеспечение, на которое возложено множество функций – от интеллектуального управления дисками каждого сервера в частности и всей системы в целом до разгрузки основных серверов системы от выполнения операций поиска в СУБД. При этом настройка интеллектуального ПО системы хранения позволяет оптимизировать производительность системы в целом, делать это достаточно оперативно и зачастую без необходимости останавливать или перезагружать систему.
Не «железом» единым…
Наш Центр комплексных решений уже много лет помогает заказчикам оценить, насколько их приложения могут быть ускорены при переносе на новые аппаратные и программно-аппаратные платформы. Очевидно, что путем использования возможностей нового оборудования можно достичь повышения производительности. Практика показывает, что подобрать оптимальную конфигурацию, позволяющую заказчику достичь нужных показателей производительности в рамках существующего бюджета на развитие информационных систем, – задача гораздо более сложная и не столь очевидная, но вполне решаемая.
Если нельзя достичь необходимой производительности ни при помощи более мощных отдельных компонентов, составляющих аппаратную часть решения, ни при помощи программно-аппаратных комплексов, тогда необходимо работать с программным обеспечением. Здесь можно либо улучшать уже имеющееся, оптимизируя его под использование всех возможностей программно-аппаратного комплекса, либо искать другое ПО, оптимизированное для работы с ПАК.
Изменение используемого программного обеспечения как метод ускорения работы прикладных систем заслуживает отдельного разговора. Для работы над кодом необходимо привлекать его авторов. Кроме того, оптимизация кода требует, как правило, значительно больше времени, чем есть у наших заказчиков, обращающихся в целях проверки их прикладных систем на совместимость с новейшими платформами. Повышение производительности путем оптимизации программного обеспечения – довольно сложный процесс. Оптимизация кода приложений, особенно сложных по своей функциональности, требует кропотливой совместной работы как разработчиков приложения, хорошо знающих свой код, так и специалистов по оптимизации. При этом даже высокая квалификация специалистов – разработчиков и экспертов по оптимизации кода каждой команды по отдельности – не является гарантией успеха. Поэтому наилучшие результаты мы видим тогда, когда образуется коллектив единомышленников, заряженных на решение задачи. Результаты такой работы, как правило, впечатляют. Так, в 2015 г., оптимизировав код своего приложения совместно со специалистами FORS Solution Center, один из российских разработчиков ПО смог повысить производительность своего приложения при переносе на Eхadata в 200 раз. Цифра говорит сама за себя. Если ускорить приложение в 200 раз, то, скорее всего, проблема увеличения его производительности решается автоматически для всех его пользователей на многие годы. При условии, конечно, что заказчик примет решение использовать ПАК Exadata в качестве платформы для него.
Существует и третий, наиболее радикальный способ повышения производительности – переход на абсолютно новые технологии. Примером могут служить системы для решения задач бизнес-аналитики, основанные на обработке больших данных. Традиционные методы управления базами данных могут применяться для решения подобных задач, но производительность при решении нового класса специфических задач, связанных с обработкой больших данных, напрямую связана с переходом на новую технологию. При этом вполне ожидаемо, что со временем у заказчика возникнет необходимость повышения производительности уже для этих новых систем. Тогда будет запущен все тот же процесс: использование более «быстрого железа» и оптимизации кода программного обеспечения.
Связь производительности с безопасностью
Подводя итоги, следует отметить, что производительность в ИТ-системах не существует и не поддерживается сама по себе. Одной из основных причин, критически понижающих производительность, являются простои систем, которые могут возникнуть вследствие проблем с обеспечением отказоустойчивости и информационной безопасности. При этом все три показателя: производительность, отказоустойчивость и информационная защита – основа любой информационной системы – тесно взаимосвязаны друг с другом. Самое высокопроизводительное решение не является таковым, если оно может перестать работать из-за аппаратного или программного сбоя либо вследствие вирусной атаки. И наоборот, добавляя в систему дополнительные функции по ее защите от сбоев и вирусов, мы должны добиться, чтобы производительность наших систем позволила решать и эти задачи тоже. Так что и защита информационных систем, и построение систем, защищенных от сбоев, являются критически важными задачами для обеспечения высокой производительности современных информационных систем.
Компания «ФОРС Дистрибуция», давно зарекомендовавшая себя на российском рынке в качестве эксперта в области работы с Oracle Engineered Systems, предоставляет своим партнерам и заказчикам ресурсы FORS Solution Center. В Центре комплексных решений демонстрируется широкий спектр конвергентных решений Oracle Engineered Systems, Oracle BigData, Oracle Integrated Cloud. Это отличная возможность познакомиться на практике с решениями Oracle, осуществить тестирование, а также получить необходимую экспертизу и поддержку при реализации проектов. В Центре комплексных решений представлен полный стек продуктов Oracle, которые могут использоваться для создания практических решений, соответствующих самому широкому спектру задач заказчика.