Блог

Мультисайтовость в рамках одного проекта

Как объединить похожие сайты в единую инфраструктуру и легко управлять ими

Срок реализации – два месяца.

Задачи

  1. Создать копии семи разных сайтов
  2. Перенести весь контент на новые сайты
  3. Использовать для управления единый инструмент
  4. Сократить временные и финансовые затраты на обслуживание

Стэк

JS, symfony

Решение

Копия... Не путать с подделкой!

По каким-то причинам наш клиент утратил контроль за целой когортой своих сайтов в количестве семи штук. И обратился к нам, но не с целью вернуть их, а создать новые, и еще лучше чем были. Технологически старые сайты были не очень сложные, поэтому нам потребовалось всего несколько верстальщиков, чтобы воссоздать то, что было утрачено. В качестве базы был использован обычный JS, без особенных изысков и с простенькими анимациями. Единственное, что могло представить затруднения - это собственный медиапроигрыватель, но он был быстро разработан и внедрен силами JavaScript.

Килобайты, терабайты...

Сами по себе сайты представляли собой корпоративные порталы телевизионных каналов развлекательного характера. Тематика самая разная - научпоп, детективы, мыльные оперы, DIY, и тому подобное. И многое из того, что показывали по ТВ, требовалось хранить и на сайтах. Плюс новости, картинки, и прочая служебная инфа. Задачу по переносу решили делать с помощью парсера данных, и написан он был сравнительно быстро. Однако массив видео- и фотоматериалов оказался просто огромный: дамп каждого сайта мог весить до терабайта. Автоматизированный процесс переноса контента длился свыше недели без перерыва.

Семь бед – один backend

С целью облегчить управление контентом на семи сайтах одновременно, было принято решение использовать единую панель администратора. Фундаментально был задействован php-фреймворк symfony и EasyAdminBundle. В результате набор функционала, который добавляется или изменяется в том или ином разделе админки, вплоть до маленькой кнопочки - появляется на всех сайтах. При необходимости скрыть какой-то лишний элемент на отдельно взятом сайте это делается силами frontend-разработчика, который может отключить лишние методы, и компоненты выводиться не будут. Ну, и какое же ТВ без программы передач? Мы написали шаблонизатор-обработчик, который преобразует сетку телевещания из непонятной таблицы в формате xls, и передает ее в удобоваримом формате для отображения сразу по всем телеканалам.

Kubernetes что это

Kubernetes - сложная и сравнительно новая технология, в особенности для российского рынка web-разработки. Как правило, ее используют крупные веб-приложения с комплексной микросервисной архитектурой. В свою очередь, наши техлиды посчитали оправданным ее применение в контексте данного проекта, поскольку она несет ряд преимуществ. В частности, несмотря на единую серверную часть, мы обеспечили возможность гибко разворачивать отдельные сайты. При необходимости, мы всегда быстро сможем добавить или убрать ноду в кластер - это гарантирует масштабируемость в будущем. Кроме того, и это, вероятно, самое важное для клиента - экономически это оказалось значительно выгоднее, чем покупать стандартные виртуальные машины на хостинге у провайдера. В горизонте года и более - деньги серьезные.
Несмотря на относительную технологическую тривиальность, проект оказался во многом уникальным. В ходе реализации мы отметили определенный дефицит компетенций по kubernetes на кадровом рынке. Тем приятнее было отметить, что наша команда уже обладает достаточной квалификацией для внедрения такого сервиса.
Андрей, backend developer
Backend Frontend Symfony JavaScript Telecom