Onrealt: масштабируемая инфраструктура для сайта недвижимости
Меня зовут Лев, я главный администратор сайта объявлений о продаже и аренде недвижимости Onrealt. Хочу поделиться впечатлениями о сотрудничестве с компанией FirstDEDIC.
onrealt.ru
С чего всё началось
Наш сайт — это доска объявлений для поиска недвижимости. В целом, идея не уникальна и конкурентов в данной нише много, но изучив рынок, мы сделали выводы, что конкурировать можно и без большого бюджета, коим мы не обладали.
Проект не подразумевал высокую нагрузку после запуска, но был разработан с учётом возможности масштабирования, чтобы мы могли подстроиться под аудиторию любого размера. Поэтому планировалось построить такую серверную инфраструктуру, которая позволит сэкономить на старте, но при этом предусмотреть возможный рост посещаемости в будущем.
Вариант с приобретением своего железа был отброшен сразу — слишком дорого. Спрогнозировать рост аудитории непросто, как и доход без больших инвестиций. В таких условиях поддержка своей собственной серверной архитектуры попросту нерентабельна, поэтому выбор был сделан в пользу аренды.
Арендуя оборудование, мы не рискуем понести ощутимые финансовые убытки, если проект окажется не востребован. Конечно, мы приложили максимум усилий, чтобы обеспечить успех проекта, но для нас было важно учесть все варианты развития событий.
Как мы выбирали хостера
Перед нами стоял выбор среди множества компаний, предоставляющих услуги аренды оборудования. При выборе мы опирались на следующие критерии.
Наша инфраструктура
Изначально мы арендовали 5 серверов. Все серверы были объединены в VLAN (виртуальная локальная сеть) для конечной реализации нашей структуры.
Сервер для работы с базами данных
На данном сервере разместили основные базы данных — MySQL и Memcached для хранения сессий. Чтобы надёжно хранить большой объём данных и быстро с ним работать, мы выбрали следующую конфигурацию: два процессора E5-2620v4 2.1-3.3 ГГц (8 ядер), 256 Гб оперативной памяти, два SSD 1920 Гб в зеркальном рейде.
Сервер для репликации базы данных и бекапов
Основная задача данного сервера — хранение резервной копии базы данных и репликация части таблиц для оптимизации выборок MySQL.
Вкратце, при репликации возможно изменить управляющий механизм хранения базы данных с InnoDB, который отлично подходит для записи большого объёма данных, на MyISAM, который лучше подходит для выборок. Преимущества данного подхода условны и индивидуальны, но требованиям нашей архитектуры БД он отвечает.
Сервер для распределения нагрузки между веб-серверами
Так как была предусмотрена возможность масштабирования, не обошлось без балансировки запросов к веб-серверам. Именно для этих целей был необходим сервер-балансировщик, который будет распределять распределять запросы среди остальных серверов, независимо от их количества.
Основной веб-сервер
Задача данного сервера — обработка входящих запросов к сайту и к API для приложений.
Наша структура позволяет использовать неограниченное количество веб-серверов и гибко подстраиваться под рост и спад аудитории, расходуя оптимальный бюджет. Как только появляется необходимость, мы быстро вводим в стек дополнительный сервер.
Сервер для хранения файлов
Наш сайт содержит множество объявлений, а объявления в свою очередь — много фотографии. В итоге нам необходимо хранить внушительный объём файлов.
По аналогии с веб-серверами, количество серверов для хранения ограничено только нашей потребностью в них — каждый новый сервер встраивается в нашу структуру за считанные часы.
Чего мы добились
Наш сервис был запущен в конце декабря 2017 года, а уже в 2018 году ежемесячная посещаемость выросла до 900 тысяч. В 2019 году — до 1,6 млн, в 2020 уже до 2,4 млн уникальных посетителей в месяц.
Это стало возможно в том числе благодаря тому, что наша серверная инфраструктура предусматривала возможность масштабирования. На протяжении сотрудничества с FirstDEDIC количество арендуемых серверов увеличилось с 5 до 15.
Все наши ожидания были оправданы, оборудование работает стабильно. Если возникают какие-либо проблемы, сотрудники компании сразу сообщают нам об этом — в большинстве случаев еще до того, как мы сами обнаружим проблему.
Мы решали сложную задачу, потратили много сил, достигли неплохих результатов — без надёжного хостера это было бы невозможно.
onrealt.ru
С чего всё началось
Наш сайт — это доска объявлений для поиска недвижимости. В целом, идея не уникальна и конкурентов в данной нише много, но изучив рынок, мы сделали выводы, что конкурировать можно и без большого бюджета, коим мы не обладали.
Проект не подразумевал высокую нагрузку после запуска, но был разработан с учётом возможности масштабирования, чтобы мы могли подстроиться под аудиторию любого размера. Поэтому планировалось построить такую серверную инфраструктуру, которая позволит сэкономить на старте, но при этом предусмотреть возможный рост посещаемости в будущем.
Вариант с приобретением своего железа был отброшен сразу — слишком дорого. Спрогнозировать рост аудитории непросто, как и доход без больших инвестиций. В таких условиях поддержка своей собственной серверной архитектуры попросту нерентабельна, поэтому выбор был сделан в пользу аренды.
Арендуя оборудование, мы не рискуем понести ощутимые финансовые убытки, если проект окажется не востребован. Конечно, мы приложили максимум усилий, чтобы обеспечить успех проекта, но для нас было важно учесть все варианты развития событий.
Как мы выбирали хостера
Перед нами стоял выбор среди множества компаний, предоставляющих услуги аренды оборудования. При выборе мы опирались на следующие критерии.
- Оптимальное соотношение цены и качества.
- Стабильная работа оборудования.
- Возможность выбора гибкой конфигурации серверов, каждый из которых необходим для решения определённых задач.
- Быстрое подключение новых серверов.
- Подключение серверов в локальную сеть.
- Отзывчивая и компетентная техническая поддержка.
Наша инфраструктура
Изначально мы арендовали 5 серверов. Все серверы были объединены в VLAN (виртуальная локальная сеть) для конечной реализации нашей структуры.
Сервер для работы с базами данных
На данном сервере разместили основные базы данных — MySQL и Memcached для хранения сессий. Чтобы надёжно хранить большой объём данных и быстро с ним работать, мы выбрали следующую конфигурацию: два процессора E5-2620v4 2.1-3.3 ГГц (8 ядер), 256 Гб оперативной памяти, два SSD 1920 Гб в зеркальном рейде.
Сервер для репликации базы данных и бекапов
Основная задача данного сервера — хранение резервной копии базы данных и репликация части таблиц для оптимизации выборок MySQL.
Вкратце, при репликации возможно изменить управляющий механизм хранения базы данных с InnoDB, который отлично подходит для записи большого объёма данных, на MyISAM, который лучше подходит для выборок. Преимущества данного подхода условны и индивидуальны, но требованиям нашей архитектуры БД он отвечает.
Сервер для распределения нагрузки между веб-серверами
Так как была предусмотрена возможность масштабирования, не обошлось без балансировки запросов к веб-серверам. Именно для этих целей был необходим сервер-балансировщик, который будет распределять распределять запросы среди остальных серверов, независимо от их количества.
Основной веб-сервер
Задача данного сервера — обработка входящих запросов к сайту и к API для приложений.
Наша структура позволяет использовать неограниченное количество веб-серверов и гибко подстраиваться под рост и спад аудитории, расходуя оптимальный бюджет. Как только появляется необходимость, мы быстро вводим в стек дополнительный сервер.
Сервер для хранения файлов
Наш сайт содержит множество объявлений, а объявления в свою очередь — много фотографии. В итоге нам необходимо хранить внушительный объём файлов.
По аналогии с веб-серверами, количество серверов для хранения ограничено только нашей потребностью в них — каждый новый сервер встраивается в нашу структуру за считанные часы.
Чего мы добились
Наш сервис был запущен в конце декабря 2017 года, а уже в 2018 году ежемесячная посещаемость выросла до 900 тысяч. В 2019 году — до 1,6 млн, в 2020 уже до 2,4 млн уникальных посетителей в месяц.
Это стало возможно в том числе благодаря тому, что наша серверная инфраструктура предусматривала возможность масштабирования. На протяжении сотрудничества с FirstDEDIC количество арендуемых серверов увеличилось с 5 до 15.
Все наши ожидания были оправданы, оборудование работает стабильно. Если возникают какие-либо проблемы, сотрудники компании сразу сообщают нам об этом — в большинстве случаев еще до того, как мы сами обнаружим проблему.
Мы решали сложную задачу, потратили много сил, достигли неплохих результатов — без надёжного хостера это было бы невозможно.