с 2004 года
разработчики №1 в Тюмени
Разработка

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

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

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

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

Задачи

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

Стэк

JS, symfony

Решение

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

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

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

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

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

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

Kubernetes что это

Kubernetes - сложная и сравнительно новая технология, в особенности для российского рынка web-разработки. Как правило, ее используют крупные веб-приложения с комплексной микросервисной архитектурой. В свою очередь, наши техлиды посчитали оправданным ее применение в контексте данного проекта, поскольку она несет ряд преимуществ. В частности, несмотря на единую серверную часть, мы обеспечили возможность гибко разворачивать отдельные сайты. При необходимости, мы всегда быстро сможем добавить или убрать ноду в кластер - это гарантирует масштабируемость в будущем. Кроме того, и это, вероятно, самое важное для клиента - экономически это оказалось значительно выгоднее, чем покупать стандартные виртуальные машины на хостинге у провайдера. В горизонте года и более - деньги серьезные.
Несмотря на относительную технологическую тривиальность, проект оказался во многом уникальным. В ходе реализации мы отметили определенный дефицит компетенций по kubernetes на кадровом рынке. Тем приятнее было отметить, что наша команда уже обладает достаточной квалификацией для внедрения такого сервиса.
Андрей, backend developer
← Все статьи
Отвечаем со скоростью света sales@crtweb.ru
свяжитесь с нами
© CRT 2004–2026
Made in Tyumen
Аккредитованная ИТ компания
Запись № 7668 от 10.10.2017 г.
К сайту подключен сервис веб-аналитики Яндекс Метрика, использующий cookie-файлы для анализа пользовательской активности. Вы даете согласие на обработку персональных данных с помощью этого сервиса в порядке, указанном в Политике конфиденциальности
Хорошо