7 обязательных компонентов серверной инфраструктуры современного цифрового сервиса

    Компоненты серверной инфраструктуры

    У технических руководителей любой организации существуют следующие требования к IT-инфраструктуре, влияющей на бизнес-процессы организации:
    • Контролируемость. Для стабильной работы сервисов службе поддержки важно находить и ликвидировать ошибки до того, как их заметят пользователи. Для такой быстрой и точной диагностики инфраструктура должна хорошо просматриваться в превентивном (упреждающем) мониторинге.

    • Безопасность. Данные должны быть защищены от несанкционированного доступа.

    • Производительность. Система должна работать без замедлений. От времени отклика зависят SEO-позиции интернет-ресурсов компании, время выполнения критичных бизнес-задач и лояльность пользователей .

    • Надёжность и отказоустойчивость. Сервисы должны быть защищены от актуальных рисков и работать бесперебойно.

    • Оптимальная совокупная стоимость владения (TCO). Ежемесячное обслуживание не должно быть дорогим, а эксплуатация сложной.

    • Масштабируемость. При изменении нагрузки инфраструктура должна продолжать хорошо работать.

    • Короткий Time To Market. Вывод продуктов на рынок должен быть оперативным.

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

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

    Какие компоненты обязательны в современном цифровом сервисе и как они удовлетворяют бизнес-требования

    Покомпонентная организация инфраструктуры нацелена на системный подход к решению бизнес-задач, и если в ней нет важных на сегодняшний день компонентов, то конкурентная борьба компании, имеющей IT-сервисы, может быть проиграна.
    Обязательные 7 компонентов современной IT-инфраструктуры:
    • Оптимизация аппаратной и облачной инфраструктуры;
    • Аудит и оптимизация системного и базового ПО;
    • Мониторинг;
    • Резервирование (RTO, RPO, DRP);
    • Логирование;
    • Обеспечение производительности и надёжности системы, СУБД и кода (SRE):
      - Отказоустойчивость и масштабирование приложений;
      - Отказоустойчивость и масштабирование базы данных;
      - Профилирование кода.
    • CI/CD.
    Далее вы увидите, как эти важные компоненты влияют на эффективность работы IT-сервисов компании и, соответственно, на её бизнес-процессы. Компоненты перечислены в порядке необходимости.

    1. Оптимизация аппаратной и облачной инфраструктуры

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

    Сегодня набирают популярность такие специальные аппаратные решения, как гиперконвергентные системы и программно-аппаратные комплексы (ПАК). При планировании своего IT-ландшафта требуется хорошее понимание границ их применимости. Наши специалисты оказывают услуги консультирования в этой области.

    Данный компонент в большей степени влияет на такое бизнес-требование, как совокупная стоимость владения и эксплуатации инфраструктуры (Total Cost of Ownership, TCO). Также он имеет отношение к производительности и масштабируемости цифровых сервисов компании.

    2. Аудит и оптимизация системного и базового ПО

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

    К системному ПО относятся: операционная система, решения для виртуализации, решения для контейнеризации (при необходимости).

    К базовому ПО относятся: программные фреймворки, компиляторы, СУБД, системы контроля версий, специальное ПО (код приложения).

    Операционные системы, использующиеся в серверной IT-инфраструктуре, как правило построены либо на базе ядра Windows (большая часть корпоративных приложений), либо Linux (веб-сервисы). Выход вендора Microsoft из российского рынка сегодня стимулирует процессы импортозамещения на Linux-системы, различие версий которой зависит от деятельности компании. Например, российским представителям госсектора сегодня требуется импортозамещённая ОС Astra Linux. Операционная система серверов заказчика из коммерческого сектора не обязательно должна быть импортозамещённой, можно использовать CentOS или Ubuntu.

    Системное ПО должно быть унифицировано и удобно, процессы поддержки и обновлений должны быть прозрачными. Количество использованных инструментов важно свести к необходимому минимуму, поскольку разнообразие систем всегда трудно поддерживать.

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

    Контейнеризация позволяет снижать риски воздействия одного приложения на другие и управлять безопасностью более просто. Также она обеспечивает: быстрое развёртывание новых версий приложений, внесение изменений без простоев сервиса, лёгкость переноса приложений между различными средами (разработка, тестирование, продакшен). Основные плюсы микросервисной архитектуры заключаются в простоте работы с каждым модулем и, как следствие, резком уменьшении количества ошибок в них. Минусами является сложность связей и обмена данными между микросервисами.

    Наши инженеры исследуют сервис заказчика, сопоставляя его работу с бизнес-целями компании, чтобы определить, нуждается ли эта IT-инфраструктура во внедрении контейнеризации. Если не нуждается, то обеспечить масштабирование сервиса можно другими способами.

    3. Мониторинг

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

    Компонент мониторинга участвует в обеспечении всех бизнес-требований организации, кроме требования Time to Market. Он обеспечивает контролируемость, быструю и точную диагностику; участвует в обеспечении отказоустойчивости, производительности и безопасности инфраструктуры цифрового сервиса.

    4. Резервирование (RTO, RPO, DRP)

    К этому компоненту относится всё, что связано с сохранностью данных. Его главными процессами являются бэкапирование, резервное копирование и восстановление данных, которые должны осуществляться в соответствии с определёнными критериями (Recovery Point Objective, RPO; Disaster Recovery Plan, DRP; Recovery Time Objective, RTO).

    Компонент резервирования влияет на безопасность данных и надёжность работы цифрового сервиса. Также он задействован и в обеспечении отказоустойчивости, поскольку удовлетворение этого требования связано не только с минимизацией отказов в системе, но и с тем, как быстро сервис может выходить из них.

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

    5. Логирование

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

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

    Логирование решает вопрос контролируемости, надёжности и отказоустойчивости сервисов. Готовит продукт к быстрой и эффективной диагностике и отладке — это требуется всем сервисам, поскольку IT-продуктов без ошибок не бывает. Также этот компонент IT-инфраструктуры влияет на её производительность, ведь обычно найденные с его помощью ошибки замедляют работу системы. При помощи логирования определяются и «узкие горлышки» системы перед планированием её масштабирования.

    6. Обеспечение производительности и надёжности системы, СУБД и кода (SRE)

    Низкая производительность сервисов отрицательно влияет на пользовательский опыт и, соответственно, на доходы и репутацию компании. Это может происходить из-за снижения скорости работы базы данных, которое в свою очередь возникает по причине её перегрузки неоптимизированными запросами.

    Проблемы со скоростью базы данных решаются различными путями. Прежде всего, необходимо провести анализ производительности запросов к БД. На основе этого анализа и с учётом масштаба сервиса инженеры выносят решение о способах улучшения ситуации. Иногда применяется оптимизация запросов к БД и оптимизация самого кода приложения, которая основывается на показаниях таких измерительных инструментов, как мониторинг и логирование. В других случаях требуется кластеризация БД. Также применяется миграция базы данных. Все эти действия входят в понятие инжиниринга надёжности сайта или приложения (Site Reliability Engineering, SRE).

    Данный компонент IT-инфраструктуры влияет на производительность и надёжность системы. Отчасти затрагивается и требование безопасности, поскольку при её обеспечении идёт работа по противодействию соответствующим угрозам.

    Отметим, что ежемесячное обслуживание IT-инфраструктуры должно быть простым и экономически приемлемым. Задача простоты эксплуатации, как одно из требований бизнеса, решается грамотным подбором системных программ, который позволит уменьшить степень энтропии.

    Инженеры Git in Sky проведут аудит имеющейся инфраструктуры, чтобы определить степень сложности её эксплуатации и предложат оптимальные решения.

    Отказоустойчивость и масштабирование приложений

    Прежде всего компонент решает задачи и отказоустойчивости серверов, на которых находятся приложения, и горизонтального масштабирования приложений. Также косвенно влияет на надёжность и производительность. И, как и все компоненты, участвует в требованиях к оптимальной совокупной стоимости владения (TCO) и корректному стеку технологий.

    Компонент требует тесной связки с архитекторами разработки и соотносится с предыдущим компонентом — SRE. Профилирование кода, анализ файлов журналов и потребления ресурсов позволяют принять решения не только в области SRE, но и по вопросам построения оптимальной архитектуры масштабирования и отказоустойчивости пользовательского кода.

    Отказоустойчивость и масштабирование базы данных

    Как правило, самое чувствительное звено в IT-инфраструктуре, из-за которого происходит большинство отказов в работе сервисов, — это отказоустойчивость базы данных. Обеспечить отказоустойчивость базы данных может её анализ и кластеризация. При этом способе оптимизации для управления данными и запросами к ним вместо одного сервера используют несколько серверов, объединённых в кластер. Также отказоустойчивость БД обеспечивает оптимальная маршрутизация потоков запросов (внешних и внутренних). В иных ситуациях нужна замена всей СУБД на более производительное и современное решение, и тогда наши инженеры осуществляют миграцию базы данных (например, в облако).

    Помимо отказоустойчивости, этот компонент решает задачи надёжности и производительности, поэтому также тесно связан с компонентом SRE. Важно производить анализ запросов и изменение их архитектуры не только в целях производительности и надёжности, но и масштабируемости, и отказоустойчивости.

    Как и все остальные, этот компонент участвует в требованиях к TCO и корректному стеку технологий. И также, как предыдущий компонент, требует плотного контакта с архитекторами разработки.

    Профилирование кода

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

    7. CI/CD

    Бизнес-идеи руководства компании, новые функции сервисов, рекламные кампании должны быть реализованы в организации, как можно быстрее. Требования оперативности распространяются и на IT-инфраструктуру, и на специалистов, которые её обслуживают. Команда разработки должна быстро отрабатывать подобные запросы, чтобы нововведения своевременно появлялись в продуктиве.

    Эту возможность обеспечивает CI/CD — подход непрерывной интеграции и непрерывного развертывания при производстве IT-продукта. CI/CD позволяет автоматизировать выкладку новых версий программного кода в продуктив с промежуточным контролем на тестовых средах разного уровня (с тестовыми, с рабочими данными). Эти среды необходимо создать, проверить и также обеспечить между ними автоматизированные переходы. Таким образом компонент обеспечивает ещё и отказоустойчивость, которая повышается при замене ручной выкладки кода на автоматическую.

    Так как компонент CI/CD направлен на решение такой важной бизнес-задачи, как Time To Market, его необходимо тщательно исследовать, чтобы проверить принцип его организации и эффективность функционирования в компании. Наши инженеры проводят соответствующий аудит и дают рекомендации либо оказывают услугу по организации или оптимизации процессов разработки, подкрепленных автоматизацией CI/CD.

    Также CI/CD-подход решает задачу масштабируемости и корректного стека технологий. При росте сервиса растёт и количество его функционала, который должен быть реализован с помощью современного инструментария, позволяющего увеличивать ресурсы пропорционально скорости появления новых требований к сервису.

    Описание инфраструктуры кодом

    В современном управлении инфраструктурой также важно придерживаться подхода описания инфраструктуры кодом (IaC). Наряду с версионированием этот подход обеспечивает культуру эксплуатации и изменений в инфраструктуре и применяется во всех её компонентах. Если он не реализован, вся работа серверов в продуктиве и промежуточных тестовых зонах осуществляется вручную. Это приводит к задержкам в бизнес-процессах компании и к риску ошибок и аварий по причине «человеческого фактора».

    Желательно описать IT-инфраструктуру на специальных языках разметки (Ansible, Terraform, Helm), которые позволяют хранить инфраструктуру в виде кода в репозиториях с контролем версии. Так появляется возможность избавиться от рутинного ручного внесения изменений, увидеть и проанализировать внесённые изменения и при необходимости откатиться до предыдущей версии кода. Тогда разработка становится на порядок более профессиональной. Наша компания оказывает услугу описания инфраструктуры кодом любых компонентов.

    Компоненты инфраструктуры не являются независимыми

    Инфраструктура — единый организм, и решение конкретной проблемы в одном из компонентов часто влечёт за собой изменения в другом, поскольку существует взаимовлияние компонентов системы.

    Замена в одном из звеньев инфраструктуры может повлечь за собой отказы других компонентов. Чтобы решать такие проблемы превентивно, наши инженеры проводят комплексный аудит компонентов и, с учётом требуемых изменений, прогнозируют, какие изменения и какие компоненты должны затронуть.

    Отметим, что при первичном аудите могут быть выявлены проблемы в одном из компонентов, которые вы решите исправить в первую очередь. Но это не означает, что нет необходимости оптимизировать другие компоненты, ведь они, повторим, взаимосвязаны.

    Подбор аппаратной платформы

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

    Подбор программной платформы

    Мы также осуществляем спектр работ и решений по оптимизации стека технологий и системного ПО: операционных систем, СУБД, решений для контейнеризации, фреймворков.

    Выводы

    Оптимизируя несколько компонентов инфраструктуры, можно достигнуть лишь некоторые бизнес-цели. Для достижения всех целей бизнеса важно грамотно выстроить все компоненты.

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

    Специалисты Git in Sky правильно реализуют и настроят все перечисленные компоненты IT-инфраструктуры, чтобы вывести ваш сервис в конкурентоспособное состояние. Мы предлагаем рассматривать покомпонентный подход в качестве базового при построении новых инфраструктур и оптимизации старых, а также при мигрировании на импортозамещающий продукт.