Короткі практичні нотатки, які ми самі використовуємо на обстеженнях. Можна користуватися без нас.
M-1
Ідемпотентність за 15 хвилин
Клієнт генерує ключ (UUID v4) для кожної дії, що змінює стан, і надсилає його в заголовку Idempotency-Key. Сервер у тій самій транзакції, що й зміна, записує ключ і результат. Повторний запит із тим самим ключем повертає збережений результат без повторного виконання.
Типові помилки: генерувати ключ на сервері (тоді повтор отримує новий ключ); зберігати ключ поза транзакцією (тоді збій між операціями ламає гарантію); не обмежувати час зберігання (тоді таблиця росте без кінця — 24–72 години зазвичай достатньо).
M-2
Офлайн-синхронізація: три стратегії
Останній запис перемагає. Просто, але тихо втрачає дані. Прийнятно для налаштувань, неприйнятно для замовлень.
Черга операцій. Пристрій зберігає не стан, а намір («додати 2 одиниці»). Сервер застосовує операції по черзі й може відхилити неможливі. Найкраще для обліку.
CRDT. Структури, що зливаються без конфліктів. Добре для спільного редагування тексту, надлишково для більшості бізнес-форм.
Правило вибору: якщо втрата одного редагування коштує гроші — черга операцій.
M-3
Журнал аудиту без блокчейну
Таблиця лише на дописування: кожен запис містить дані зміни, автора, час і hash = sha256(prev_hash ‖ payload). Права на UPDATE і DELETE для таблиці відкликано. Раз на добу останній хеш експортується в незалежне сховище (наприклад, окремий бакет з блокуванням об’єктів).
Цього достатньо, щоб виявити підробку історії. Розподілений реєстр має сенс лише тоді, коли кілька незалежних сторін не довіряють одному оператору.
M-4
Чек-лист релізу мобільного застосунку
Номер версії і збірки збільшено
Декларації App Privacy / Data safety відповідають SDK у збірці
Посилання на політику конфіденційності відкривається без входу
Тестовий акаунт для рев’ю працює
Видалення акаунта доступне в застосунку
Міграція локальної бази перевірена з попередньої версії
Поетапне розгортання: 5% → 20% → 100%
План відкату на сервері, якщо API змінювався
Сховище браузера
Ми зберігаємо лише необхідне: ваш вибір щодо цього повідомлення. Аналітики немає. Необов’язкове сховище — тільки пам’ять останніх параметрів планувальника кворуму на вашому пристрої.