Коли в комерційній пропозиції на міграцію є фраза «передбачаємо кілька годин недоступності», ця фраза описує не технічне обмеження. Вона описує метод: вимкнули тут, увімкнули там і сподіваємось, що поширення DNS буде милосердним.
Простій не є неминучим. Він є наслідком двох рішень — змінити DNS до того, як щось перевірили, і вимкнути старий сервер надто рано — і уникається тим, що переїзд готують, а не виконують.
Принцип: два живі середовища одночасно
Ідея, яка робить можливим усе решта, проста. Певний час сайт існує у двох місцях, обидва працюють, а DNS поступово вирішує, скільки відвідувачів бачить одне, а скільки інше.
Немає моменту, коли послуга вимкнена. Є період, коли її обслуговують дві машини, і той, хто ще потрапляє на стару, все одно знаходить сайт, який відповідає. Звідси випливає все решта: TTL, порядок дій, подвійна синхронізація пошти.
Крок 1: інвентаризація, яку саме й пропускають
Перш ніж щось копіювати, треба знати, що взагалі є. Майже в кожній невдалій міграції був елемент, якого ніхто не переписав:
- крони, яких немає в сайті: вони живуть на сервері, і про них не згадують, поки не перестане приходити місячний звіт;
- сертифікати, і хто їх видає та продовжує;
- піддомени, якими користуються зовнішні сервіси — вебпошта, облікова система, відстеження відправлень;
- поштові скриньки, усі, включно з псевдонімами й адресами людей, які вже пішли;
- інтеграції, що звертаються до сервера ззовні: облікова система, служба доставки, платіжний шлюз, у яких часто є список дозволених IP-адрес, що потребує оновлення;
- хто є власником домену, бо саме це вирішує, чи можеш ти зробити міграцію сам, чи мусиш її просити.
Цей крок дає аркуш паперу. Цей аркуш — половина роботи.
Крок 2: копія на тестовому середовищі
Сайт, база й файли копіюються на новий хостинг і перевіряються на тимчасовій адресі, поки домен спокійно й далі вказує на старий сервер.
Що саме перевіряють: сторінки, форми звʼязку, кошик, якщо він є, адмінпанель, завантаження зображень, заплановані завдання і — окремо — надсилання пошти з нового середовища.
Саме тут знаходиться інша версія PHP, відсутнє розширення, абсолютний шлях, вписаний у код руками пʼять років тому. Знайти це зараз коштує годину. Знайти після зміни DNS коштує стільки, скільки сайт буде зламаним для всіх.
Крок 3: TTL, за добу до
TTL — це час, протягом якого сервери в усьому світі мають право памʼятати стару відповідь. Якщо він двадцять чотири години, твоя зміна поширюватиметься до двадцяти чотирьох годин, а головне — стільки ж триватиме будь-який відкат.
Отже: щонайменше за добу до переїзду TTL тих записів, які змінюватимуться, знижують до кількох хвилин. Це не оптимізація, це те, що робить операцію оборотною.
Через кілька спокійних днів їх піднімають назад.
Крок 4: пошта, найделікатніша частина
Сайт статичний порівняно з поштою: його можна скопіювати, і він лишиться таким самим. Скриньки — ні, вони продовжують отримувати листи, поки ти їх копіюєш.
Тому пошту переносять у два проходи:
- Перша синхронізація, повна, поки все ще приходить на старий сервер. Вона може тривати годинами і нікому не заважає.
- Зміна записів MX.
- Друга синхронізація, одразу після, яка забирає листи, що надійшли між першою копією і зміною.
- Старий поштовий сервер лишається ввімкненим ще кілька днів, бо частина відправників і серверів стукатиме на стару адресу, поки не спливе їхній TTL.
За такою схемою не губиться нічого. Пропустивши пункт 3, губиш рівно пошту того дня — тобто ту, яку люди памʼятають.
Крок 5: перемикання і що дивитись одразу після
Зміну DNS роблять у неробочий час, але не глупої ночі: її роблять тоді, коли ще є хтось притомний, здатний подивитись на результат.
У перші хвилини перевіряють у такому порядку: сайт на новій адресі, HTTPS і сертифікат, справжню форму звʼязку, надсилання й отримання справжнього листа, зовнішні інтеграції, заплановані завдання.
Старе середовище лишається ввімкненим, доки нове не пройде всі ці перевірки і кілька днів звичайного трафіку. Вимкнути його — остання операція міграції, а не перша.
А позиції в Google?
Якщо домен не змінюється, для пошуку не змінюється нічого: адреси лишаються ті самі, і пошукові системи бачать просто інший сервер, який відповідає. Шкодять натомість дві інші речі, і обох можна уникнути:
- міняти URL-адреси разом із хостингом. Якщо структуру адрес теж треба переробити, це роблять окремо і з переадресаціями, а не в ті самі вихідні;
- лишати сайт недоступним надовго. Година шкоди не завдасть, а цілий день — так.
Описаний тут метод уникає обох за самою своєю побудовою.
Скільки це триває на практиці
Корпоративний сайт із кількома поштовими скриньками готують за пару неповних робочих днів, а саме перемикання займає годину. Інтернет-магазин з інтеграціями потребує більше підготовки, а не довшого перемикання.
Важливе число — не скільки триває переїзд, а скільки хвилин недоступності він містить. Підготовлений так — жодної.
Якщо твій нинішній підрядник запропонував вікно недоступності або не співпрацює в переході, це рівно те, чим займається перенесення хостингу й пошти.