На момент начала работ приложение было распределено между несколькими серверами, но ряд критических компонентов оставался единичным. Весь входящий трафик проходил через один балансировщик, а общая кодовая база и пользовательские файлы хранились на одном NFS-сервере.
База данных работала на двух узлах MariaDB с Galera, однако автоматический failover не был настроен. Взаимодействие между узлами базы проходило по внешней сети. PHP-код исполнялся непосредственно на серверах, процессы развертывания фронтенда и бэкенда отличались друг от друга, а значительная часть конфигурации зависела от конкретных хостов.
При этом проект нельзя было просто перенести на новые серверы. В коде были модификации ядра 1С-Битрикс, большое количество собственных SQL-запросов и сильная зависимость от Redis и Memcached. Административная часть работала медленно, а обновление платформы было затруднено.
Первые инциденты подтвердили, что ограничения связаны между собой. Возникали периоды недоступности сайтов, ошибки PHP-FPM и MySQL, нехватка места на дисках, проблемы с загрузкой файлов и сбои кеширующих сервисов. Исправление каждого события по отдельности не устраняло причины нестабильности.