Трудились:
- Староста
- Васисуалий Уткин
- Старший инженер
- Дмитрий Кельми
- Инженер
- Ефимов Данил
Трудились:
- Староста
- Васисуалий Уткин
- Старший инженер
- Дмитрий Кельми
- Инженеры
- Ефимов Данил
Евгений Захаревич
Марина Бондарева
Платформа «Автокомьюнити»
В самом начале пути, когда проект «Автокомьюнити» только начинался, нам было нелегко. Нам нужно было сделать продукт с минимальной стоимостью владения и поддержки, но чтобы он при этом легко и оперативно дорабатывался под наши нужды, работал быстро, и обязательно без проблем масштабировался и резервировался.
«Универсальные» решения в виде CMS, представленных на современном рынке, под эти задачи явно не подходили. Поэтому программно-аппаратную часть, как, впрочем, и оформление, решили делать сами.

В качестве основного языка программирования был выбран PHP — как наиболее популярный и, следовательно, обеспечивающий наибольшее количество доступных разработчиков. Фрагменты кода, отвечающие за места наиболее критичных нагрузок, были выполнены на «Си» в виде отдельных «демонов» и дополняющих модулей для PHP-интерпретатора веб-сервера.
Разумеется, не обошлось без ООП. В связи с тем, что разработка длилась почти год, люди в команде менялись. Однако использование широко известных паттернов проектирования позволило упростить адаптацию новых разработчиков.
Еще на стадии проектирования в продукт были введены возможности реализации нескольких уровней кэширования данных. Нижний уровень работает с объектами данных, полученных из базы данных, храня их, при необходимости, в пуле memcached серверов. Верхний уровень кэширует уже готовые страницы или блоки страниц, что позволяет выдавать посетителю большинство запросов без использования тяжелой скриптовой части.
Большинство данных имеет версионный характер — редактирование объекта создает его новую версию, которая публикуется на сайте только после процесса «актуализации». Это позволяет готовить пакетные изменения на сайте, не допуская появления несвязанных данных.

Серверная архитектура реализует классическое разделение «фронт-енд» — «бек-енд» с легким масштабированием любой части схемы. Все сервера системы могут выполнять любую функцию, в зависимости от запущенных сервисов, однако для оптимизации стоимости системы конфигурация серверов подбиралась исходя из роли в системе.

Жизнеспособность всех серверов, равно как и миграция сервисов при отказе оборудования выполнена на проекте Linux-HA + Pacemaker CRM (cluster resource manager). Входящие запросы обслуживают сервера с nginx («фронт-енд»), нагрузка на которые распределяется через DNS (round-robin). Nginx занимается выдачей статического контента, которым могут являться, в том числе, и кэшированные страницы портала. Помимо этого он же осуществляет балансировку запросов на пулы PHP-интерпретаторов («бек-енд»).

Все данные разделены на две группы по виду хранения — на нодах «фронт-енда» (для быстрой выдачи веб-сервером) и на разделяемой файловой системе (реализуемой посредством подключения дисковой подсистемы по интерфейсу FC). Такое разделение позволяет, с одной стороны, частично снять нагрузку с общих дисков, а с другой стороны — упрощает синхронизацию пользовательских данных между нодами кластера.
Сервер базы данных построен на базе СУБД PostgeSQL, а для резервирования и масштабирования реализует схему «синхронный мастер-мастер», что упрощает работу с данными из программного продукта.
Отдельной частью системы является почтовый сервер, используемый для доставки уведомлений пользователям, полностью готовый для работы в режиме обмена сообщениями (jabber) и предоставления пользователям портала доступа к персональным почтовым ящикам.
К сожалению, в 2010 году развитие проекта, в связи с плачевным состоянием автомобильного бизнеса, пришлось приостановить. На текущий момент, мы планируем возобновить работу над проектом в начале 2011 года. Планов много, но всему своё время.
Отдельная часть платформы «Автокомьюнити» — форум. Потратив массу времени на разработку основного программного продукта, для ускорения открытия проекта мы выбрали готовое решение. Попытка сэкономить время и деньги позволила открыть сайт значительно быстрее, но сделала весьма затратной дальнейшую поддержку форума.
Интерфейс всех существующих форумов нас совершенно не устраивал, поэтому мы сделали свой, с отдельной формой редактирования и отправки сообщений, выполненной наподобие популярных мессенджеров.

Интеграция новой формы редактирования в готовый форум была сильно затруднена ограничениями архитектуры и качеством кода самого форума. Поэтому с фотогалереей решили не экспериментировать — написали сами, параллельно переработав и переписав форум.

Быстрый и понятный поиск по форуму с множеством дополнительных фильтров реализован отдельно от программного продукта с помощью Sphinx — полнотекстовой поисковой системы.

Sphinx, через специальный интерфейс, получает
На самом деле, платформа «Автокомьюнити» в стартовой конфигурации (сервера, сетевые коммутаторы, дисковая корзина и собственный источник бесперебойного питания с батарейными блоками) занимает в стойке 17 юнитов. В момент переезда из одного дата-центра в другой всё это хозяйство свободно поместилось в RAV4 — правда, задние сиденья пришлось сложить.









