Как эффективно модернизировать ИТ-инфраструктуру и не разориться

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

    Компоненты современной ИТ-инфраструктуры: делаем модернизацию доступной в 7 шагов

    Чтобы усовершенствовать инфраструктуру, компании-разработчику не обязательно вкладывать большие средства в закупку нового оборудования. Наши инженеры, руководствуясь богатым опытом, составили пошаговую инструкцию, следуя которой можно существенно повысить функциональность своих ИТ-систем. Перечислим их, а затем рассмотрим подробней.
    7 шагов по модернизации инфраструктуры под Highload-сервисы:
    1. Описание инфраструктуры кодом
    2. Отказоустойчивая СУБД
    3. Единая система сбора и анализа логов
    4. Единая система резервного копирования с едиными политиками
    5. Облачные хранилища
    6. Единая система мониторинга и алертинга
    7. Настройка безопасности данных от несанкционированного доступа

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

    Ручное управление конфигурацией:
    • несогласованность: разные ВМ и среды ведут себя по-разному
    • на подготовку или восстановление сервера уходит много времени
    • отсутствует история изменений, затруднен аудит
    • значимый риск ошибок по причине «человеческого фактора»
    Программируемая инфраструктура:
    • автоматическое, согласованное развертывание ВМ и сред
    • изменения в серверы вносит система
    • возможность ревью кода, документирования, подробного аудита
    • возможность управления десятками ВМ через одного оператора
    Настройку вычислительной инфраструктуры удобней, быстрее и безопаснее выполнять декларативно, через готовые конфигурационные скрипты, а не редактировать серверные конфигурации вручную. Ниже перечислим особенности двух подходов в управлении инфраструктурой.
    Инфраструктура как код (Infrastructure-as-Code; Iac) — это современный подход в управлении виртуальными машинами (ВМ), подсистемами балансировки нагрузки, сетями и облачными сервисами. Такая модель настройки стирает границы между разработкой приложений и моделированием сред для них (бывают приложения, которые содержат скрипты, создающие и управляющие ВМ). Этот подход является частью DevOps и фундаментом облачных вычислений. Он позволяет улучшить качество продукта и сократить сроки его поставки, сделать инфраструктуру легко масштабируемой и автоматически воспроизводимой.

    Создавать программируемую инфраструктуру мы рекомендуем с помощью системы управления конфигурациями Ansible и системы управления репозиториями кода Gitlab CI. Ansible позволяет автоматизировать развертывание и настройку ПО, а репозиторий Gitlab CI позволяет изменять и поставлять код из плейбука Ansible, не устанавливая локальных зависимостей — в нем и хранится вся инфраструктура и скрипты, с помощью которых она автоматически настраивается.

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

    2. Строим отказоустойчивую СУБД

    Основной современный способ создания отказоустойчивой СУБД — это переход от проприетарных систем (MSSQL) на Opensource-системы PostgreSQL, MySQL/MariaDB, MongoDB, Redis.

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

    3. Единая система сбора и анализа логов

    Системы логирования позволяют автоматически собирать и подробно анализировать все журналы элементов ИТ-инфраструктуры компании. Эти технологии помогают выявлять проблемы в работе оборудования и ПО. Они также позволяют производить мониторинг работы приложений с тем, чтобы обнаружить узкие места, предотвратить сбои или своевременно отреагировать на проблемы.

    Существует множество проприетарных и открытых систем сбора и анализа логов с разной функциональностью. Инженеры Git in Sky для автоматизации процессов логирования используют и рекомендуют ELK-стек, разработанный и поддерживаемый компанией Elastic. Этот во многом универсальный, масштабируемый и отказоустойчивый инструмент обеспечивает удобное и безопасное централизованное ведение журналов с разных серверов. ELK-стек состоит из трех компонентов:
    1. Elasticsearch — распределенная RESTful-система с функциями аналитической и поисковой систем, а также с функциями быстрого и масштабируемого нереляционного хранилища данных. Компонент может быстро обрабатывать большие журналы, индексировать системные логи по мере поступления и выполнять к ним запросы в режиме real-time.
    2. Logstash — конвейер парсинга логов. Компонент собирает данные одновременно из нескольких источников и обрабатывает их для дальнейшего использования в Elasticsearch. Позволяет централизовать обработку большого объема структурированных и неструктурированных данных и событий.
    3. Kibana — пользовательский интерфейс для работы с логами. Представляет собой веб-панель, которая визуализирует обработанные в Elasticsearch данные в диаграммы и графики. Позволяет проводить сложную аналитику, администрировать БД и управлять мониторингом.

    О том, как установить и настроить Elasticsearch, Logstash и Kibana в Linux читайте здесь.

    4. Централизованная система резервного копирования

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

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

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

    5. Облачные хранилища

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

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

    6. Единая система мониторинга и алертинга

    Использование систем мониторинга событий позволяет в любой момент времени видеть состояние инфраструктуры и приложений, размещенных в ней. Наши инженеры рекомендуют использовать решения Grafana и Prometheus. Prometheus — это приложение с открытым исходным кодом, которое записывает метрики в базу данных временных рядов. Запись, запросы и оповещения происходят в режиме реального времени. Grafana занимается не только мониторингом, но и аналитикой, и визуализацией метрик. С помощью Grafana можно наблюдать за событиями в системах через наглядные программные «приборные панели» (дашборды). В качестве системы алертинга мы рекомендуем использовать Alertmanager и Grafana. Каналы доставки алертов могут быть самыми разнообразными - от письма на электронную почту до сообщения в мессенджере.
    Почему именно эти инструменты? Потому что они:
    • удобные
    • проверенные
    • бесплатные
    • быстрые
    • имеют крупные сообщества (где можно оперативно найти помощь по настройке ПО)
    • имеют большие возможности по интеграции

    7. Реализуем защиту от несанкционированного доступа

    Фишинг, уязвимости, вирусы, социальная инженерия — все эти возможности для атак злоумышленников на ИТ-систему компании нужно свести к минимуму.

    Существует множество подходов и продуктов для защиты данных и ресурсов компании от хищения, модификации или удаления. С учетом тренда на импортозамещение, мы рекомендуем подбирать ИБ-решения отечественных разработчиков. Что касается подходов к защите информационной среды предприятия, то в рамках нашей статьи мы рекомендуем сосредоточиться на следующем комплексе мер:
    • Ввести групповые политики
      Это правила, в соответствии с которыми производят настройку рабочей среды в периметре домена для определенного набора пользователей. Политики позволяют централизованно управлять настройками и установкой ПО на серверах и клиентских компьютерах, подключенных к домену, полуавтоматически конфигурировать компьютеры под нужды отделов. Инструментом групповых политик для серверов на базе Windows является решение Active Directory, для серверов на базе Linux - решения на базе FreeIPA: ALD, ROSA.
    • Использовать шифрование
      Это подразумевает криптографическую защиту информации с помощью специальных средств (СКЗИ). Существует множество реализаций шифрования как сетевого трафика, так и данных.

      Общие рекомендации, вне зависимости от применяемой технологии:
      • ни при каких обстоятельствах не передавать нешифрованные данные по открытым каналам передачи данных;
      • использовать единые точки доступа к внутренней инфраструктуре, в виде VPN серверов с шифрованием передаваемых данных;
      • при возможности, использовать шифрование резервных копий данных.
    • Установить контроль доступа
      Системы контроля действий пользователей позволяют настраивать разрешения и привилегии учетным записям сотрудников. Для защиты персональных компьютеров применяют контроль аутентификации в ОС и на корпоративных ресурсах с помощью IAM-решений (Identity & Access Management). Для защиты серверов от несанкционированного доступа используют решения класса PAM (Privileged Access Management).
    • Использовать VPN
      Технологию Virtual Private Network (виртуальная частная сеть) используют для защищенного доступа удаленных сотрудников к корпоративным сервисам компании, а также для настройки интернет-туннеля между разрозненными компьютерами (например, из офисов в разных городах и странах)

    Заключение

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

    Реализовать такую модернизацию можно самостоятельно, но только в том случае, если в компании есть штат сильных DevOps-инженеров c компетенциями в Ansible, ELK, СУБД, миграции в облака, infSecOps. В случае отсутствия даже одной из перечисленных компетенций лучшим решением будет DevOps-аутсорс, где эти ответственные задачи будут выполнять не только инженеры, но и DevOps-архитекторы под управлением опытных проджект- и аккаунт-менеджеров. Важно, что ответственность при аутсорс-подходе будут регламентированы договором, что в значительной степени снижает риски несоблюдения сроков и снижения качества результата.

    Не пропустите последние новости. Подписывайтесь!