Найти тему
ITSumma

О чём нужно помнить при переезде на новую инфраструктуру

Оглавление

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

Для начала давайте вспомним базу.

Какими могут быть причины для миграции:

  • интернет-магазин становится всё популярнее, и текущего серверного оборудования не хватает, чтобы качественно обслуживать всех пользователей;
  • впереди «высокий сезон» («чёрная пятница» для e-commerce, новогодние праздники для кулинарных порталов и т.д.), и чтобы выдержать увеличение нагрузки, нужно временно переехать на большие мощности;
  • требуется сменить хостинг-провайдера (ценовая политика, законодательные требования, например, о хранении персональных данных, уровень обслуживания, снижение кредита доверия и т.д.);
  • архитектура проекта становится сложнее, и решено использовать вместо standalone-решений managed-сервисы от облачных провайдеров (базы данных, системы очередей, файловое хранилище, системы доставки контента) или полностью перенести проект с on-premise инфраструктуры в облако.

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

Как проходит миграция инфраструктуры веб-проекта?

Она состоит из следующих основных этапов:

  1. подготовка новой инфраструктуры,
  2. развертывание в ней копии проекта,
  3. проверка работоспособности;
  4. работы перед переключением;
  5. пошаговое переключение (по конкретной последовательности шагов);
  6. проверка работоспособности проекта в новом окружении после переключения.

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

Для конкретики возьмём пример типового интернет-магазина на Битриксе, работающего на популярном стеке: Linux — PHP — MySQL — Nginx, развернутого на on-premise железе. Переезжать будем на более мощные серверы в другой дата-центр.

Готовим новую систему

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

  • Операционная система
  • Базовое ПО
  • Дополнительное ПО
  • Кастомные сервисы Systemd и прочее.
  • Файлы конфигураций
  • Таймзоны в конфигурациях MySQL, PHP
  • Директории для временных файлов, сессий.
  • Пользователи и их ключи доступа на сайт
  • IPTables.

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

Разворачиваемся на новом месте

Синхронизируем фалы. После этого разворачиваем последний файловый бэкап проекта. Затем устанавливаем систему контроля версий.

После того как вы перенесли исходный код и настроили его репликацию на новый сервер, аналогичные действия необходимо произвести и с базами данных.

Потом нужно перенести настройки Cron-заданий. Далее нужно перевезти почтовый сервер для e-mail-рассылок: локальный сервер или присоединить сервер текущего хостера,

DNS и его конфигурирование — один из последних этапов при подготовке к миграции инфраструктуры на новую площадку.

Финальные проверки

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

  • произвести рестарт серверов — чтобы проверить, что после рестарта запускаются все необходимые сервисы и компоненты и не запускаются ненужные;
  • проверить базовую работу сайта — страницы открываются, нет 404-ых ошибок на страницах конкретных новостей, товаров и т.д.;
  • проверить аутентификацию/авторизацию на новой версии сайта — пользователей «не выкидывает» из админки сайта, на личные страницы подгружаются все данные профиля и можно полноценно пользоваться продуктом;
  • провести тестовый запуск каких-нибудь задач по расписанию с тестовыми данными — чтобы уведомления о списании денег не ушли реальным живым пользователям.

В идеальном IT-мире вся инфраструктура подчиняется подходу Infrastructure as a Code, который снимает все перечисленные в статье проблемы и позволяет не настраивать новое окружение вручную.

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

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

Читайте нас на Дзен!