Першого ж тижня в нового клієнта я поставив запитання про стратегію резервного копіювання їхньої ecommerce-платформи. Платформа працювала на Commercetools, пропускала мільйони транзакцій на день — а у відповідь я отримав тишу. Ніхто в переговорці не зміг сказати, що станеться, якщо ми завтра втратимо каталог товарів.
Ось ця тиша — і є вся історія. Розкажу, чим вона закінчилася.
SaaS не означає «безпечно»
Усі були впевнені, що резервні копії — турбота Commercetools. Це ж керований SaaS, отже, вендор усе робить за нас, так?
Неприємна правда: у Commercetools немає ні вбудованого планувальника бекапів, ні point-in-time recovery. Товари, категорії, ціни, дані клієнтів — усе це живе там, усе змінюване й усе крихке. Вендор тримає сервіс на плаву. А ваші дані — ваша проблема.
Що це означає на практиці. Один кривий імпорт-скрипт — переплутана колонка, не та змінна оточення, джун, який запустив міграцію на прод замість staging, — за секунди перезапише тисячі товарних записів. Кнопки «скасувати» немає. Без бекапа ви тижнями збираєте каталог руками, і це ще якщо пам'ятаєте, який вигляд мав чистий стан. Для каталогу з кастомними атрибутами, багаторівневими цінами й деревами категорій «пам'ятати» — не варіант.
До мого запитання команда спала спокійно. Це і є найнебезпечніше. Відсутність бекапа не болить рівно до того дня, коли починає боліти, — а тоді будувати його вже пізно.
Що я зрештою зібрав
Рішення не мало бути екзотичним. Воно мало бути надійним і працювати так, щоб про нього ніхто не думав.
Я зібрав систему автоматичного експорту на Azure Logic Apps. Щодня за розкладом вона вивантажує з Commercetools усі критичні типи даних — товари, категорії, ціни, клієнтів — і складає в Azure Blob Storage з нормальною політикою зберігання. Щоденні знімки, з версіями, з терміном життя за правилом, щоб сховище не розпухало до безкінечності.
На цьому більшість команд і зупиняється. Експорт за розкладом, папка з JSON, зелена галочка в дашборді. Схоже на бекап. На схемі архітектури має вигляд бекапа. І підведе вас саме тоді, коли буде потрібен.
Чим справжній бекап відрізняється від «для галочки»
Бекап, з якого ви жодного разу не відновлювалися, — це не бекап. Це надія з зайвими кроками.
Тому експорт був лише половиною роботи. Друга половина — довести, що з цього експорту є користь:
- Перевірка кількості записів після кожного експорту — щоб прогін, який тихо вивантажив половину каталогу, ловився того ж дня, а не через пів року посеред інциденту.
- Перевірка цілісності схеми — бо файл, який існує, але не парситься, гірший за його відсутність: він дає хибну впевненість.
- Автоматичні restore dry-run щотижня — система реально читає бекап назад і підтверджує, що з нього збираються валідні об'єкти Commercetools.
- Алерти в Slack тієї ж секунди, щойно щось не пройшло валідацію. Не щотижневий звіт, який ніхто не відкриває, а миттєвий пінг — достатньо гучний, щоб відволікти.
Ось цей шар валідації і є вся різниця між бекапом, який рятує квартал, і папкою файлів, які тихо згнили три тижні тому.
Навчання з відновлення, що всіх переконали
Цифри на слайді людей не рухають. Рухає демонстрація.
Тому ми влаштували справжні навчання з disaster recovery. Узяли копію оточення й навмисно пошкодили каталог — тисячі товарів з цінами, категоріями й кастомними атрибутами стерті рівно так, як це зробив би кривий імпорт.
Потім я попросив команду оцінити відновлення. Без системи бекапа чесна відповідь була — тижні ручного перескладання, і вони навіть не були впевнені, що взагалі повернуться до вихідного стану.
Ми натиснули restore. Повне відновлення менш ніж за годину.
У переговорці знову повисла тиша — але вже інша. Бюджет на систему бекапів, який доти був відкритим питанням, затвердили назавжди ще до кінця зустрічі. Ніхто не сперечається про цінність страховки після того, як на власні очі побачив, що будинок не згорів.
Будуйте до того, як знадобиться
Якщо ваша ecommerce-платформа працює на будь-якому SaaS-бекенді — Commercetools чи чому завгодно ще — не вірте про бекапи нічому, поки не прочитали дрібний шрифт і самі не перевірили відновлення.
- SaaS тримає сервіс живим. Від вас самих він ваші дані не захищає.
- Експорт, з якого ви жодного разу не відновлювалися, — це прикраса, а не бекап.
- Валідація й відрепетироване відновлення — ось справжній продукт. Файли — просто сировина.
Найкращий час будувати стратегію бекапів — до того, як вона знадобиться. Другий за кращістю — сьогодні. Найгірший, з великим відривом, — посеред інциденту.
І залишу вас із тим самим запитанням, з якого все почалося: коли ви востаннє реально запускали відновлення зі своїх бекапів — не обговорювали, не показували пальцем на пайплайн, а саме запускали й дивилися, як дані повертаються?