Что было
Магазин падал именно в часы акций — то есть ровно тогда, когда работал трафик, за который заплатили. Это худший из возможных вариантов отказа: в обычный день всё хорошо, а в день, ради которого всё затевалось, витрина недоступна.
Причина была не одна. Сервер настроен наспех — конфигурация «лишь бы запустилось» переезжает из тестового окружения в рабочее чаще, чем принято признавать. Кэширования нет: каждая страница собиралась заново, и на пике база становилась узким местом. Бэкапы делались руками и нерегулярно — то есть на момент разговора их фактически не было.
Что сделали
Перенесли на подходящий по ресурсам сервер, настроили кэширование и базу под реальную нагрузку. Порядок здесь важен: увеличивать мощность до настройки кэша — самый дорогой способ решить проблему, потому что платить за лишние ресурсы придётся ежемесячно, а причина никуда не денется.
Включили ежедневные автоматические бэкапы с хранением отдельно от самого сервера. Копия на том же сервере — это не бэкап: сценарии, при которых она нужна, обычно уносят её вместе с оригиналом.
Настроили базовую защиту и разместили данные в российской юрисдикции — для магазина с персональными данными покупателей это требование 152-ФЗ, а не пожелание.
Что изменилось
Пиковые нагрузки держит без падений. Восстановление из бэкапа — минуты, и это проверенная цифра, а не расчётная: бэкап, который ни разу не разворачивали, остаётся гипотезой до первой аварии.
Что из этого стоит взять себе
- Проверьте бэкап восстановлением. Не «настроен ли», а «разворачивали ли». Это разные ответы.
- Кэш раньше мощности. Апгрейд сервера — это ежемесячный платёж за необнаруженную причину.
- Нагрузку проверяйте до акции, а не во время. День распродажи — плохое время узнавать предел.
- Посмотрите, где физически лежат данные покупателей. По 152-ФЗ это не деталь хостинга.
Что входит в обслуживание — серверная инфраструктура. Проверить себя по 152-ФЗ — чек-лист проверки сайта. Смежное — переезд на российский хостинг.