Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni
🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!14.03.2023
Мій підхід до безперебійного перенесення даних
🥧 Happy Pi Day! Спік один з традиційних українських пирогів — яворівський. Начинка з картоплі, цибулі та… гречки. Та ще й тісто в мене зі спельти. Вийшло на диво смачно. Рецепт.
За останній час довелося декілька разів стикатися з потребою перенесення даних з одного місця на інше без перебоїв сервісу. Наприклад, вирішили поміняти базу для зберігання подій. Розробив для себе підхід, в якому впевнений.
-
Поміняти код, що пише дані, щоб він писав в обидва місця. На цьому етапі не важливо, що в новому місці немає старих даних — головне, що нові вже пишуться.
-
Стабілізувати систему — зробити деплой у всі місця, перевірити все що потрібно.
-
Визначити час, з якого ми певні, що нова база наповнюється в повному обсязі. Завжди буде проміжний початковий етап, коли не всі копії сервісу оновлені, або є помилки в новій схемі, або ще щось.
-
Видалити з нової бази все, що було раніше часу стабілізації.
-
Перенести зі старої в нову базу дані, які старіші за час стабілізації. Це для мене ключовий момент; встановлення чіткого розмежувального часу для перенесення даних — простий та надійний підхід. (Раніше я вигадував складну логіку дедуплікації — наприклад, порівнювання за унікальним ключем.)
-
Тепер в нас і стара, і нова бази наповнені та оновлюються. Тільки зараз можна переносити читання даних на нове місце. Якщо виникнуть проблеми — можна просто відкотити код.
-
Нарешті, коли нова база стабільно працює, можна вимкнути та вичистити код, що стосується старої бази. Найприємніший етап!