Популярный городской портал
Медленное отображение страниц
О клиенте в цифрах
1+ млн просмотров страниц в день;
50+ тыс уникальных посетителей в день;
4,5 сек - среднее время отклика страницы.
Сделать сайт самым быстрым среди конкурентов
С чего начать?
Микросервисная архитектура
Отказались от реляционной структуры базы данных. Теперь каждый сервис работал со своей изолированной коллекцией документов. Наш заказчик отказался использовать NoSQL базу, поэтому для текущей базы была написана NoSQL обертка, позволяющая работать с неструктурированными данными. Удалось описать всю работу с базой с помощью пяти (!) запросов.
Для каждого внешнего сервиса написали собственный сервис-фасад, так что теперь мы больше не зависим от надежности и стабильности работы внешних поставщиков ресурсов, так как работаем только с собственными сервисами. Теперь нет разницы между внешним и внутренним сервисом - сайт взаимодействует со всеми абсолютно одинаково.
Сам сайт был переписан в виде одностраничного веб-приложения, который обращается к микро-сервисам только за необходимыми для отображения данными и грузит их асинхронно. Это существенно позволило снизить объем трафика, передаваемого на клиент и положительно сказалось на скорости отображения контента.
Анализ результатов
Время отклика страницы. Среднее время открытия 400 мс, что в 10 раз быстрее предыдущей версии сайта и в 2 раза быстрее, чем у ближайшего конкурента
Предсказуемость запросов к базе данных. Среднее время запроса к базе составило 200 мс и теперь не зависело от квалификации программиста. Стало легче прогнозировать время выполнения выполнения операции — надо, грубо говоря, разложить операцию на набор запросов к БД и умножить на 200 мс.
Сокращение парка серверов в 5 раз. Удалось уменьшить количество серверов с 15 до 3 экземпляров.