Как объединить похожие сайты в единую инфраструктуру и легко управлять ими
Срок реализации – два месяца.
Задачи
- Создать копии семи разных сайтов
- Перенести весь контент на новые сайты
- Использовать для управления единый инструмент
- Сократить временные и финансовые затраты на обслуживание
Стэк
JS, symfony
Решение
Копия... Не путать с подделкой!
По каким-то причинам наш клиент утратил контроль за целой когортой своих сайтов в количестве семи штук. И обратился к нам, но не с целью вернуть их, а создать новые, и еще лучше чем были. Технологически старые сайты были не очень сложные, поэтому нам потребовалось всего несколько верстальщиков, чтобы воссоздать то, что было утрачено. В качестве базы был использован обычный JS, без особенных изысков и с простенькими анимациями. Единственное, что могло представить затруднения - это собственный медиапроигрыватель, но он был быстро разработан и внедрен силами JavaScript.
Килобайты, терабайты...
Сами по себе сайты представляли собой корпоративные порталы телевизионных каналов развлекательного характера. Тематика самая разная - научпоп, детективы, мыльные оперы, DIY, и тому подобное. И многое из того, что показывали по ТВ, требовалось хранить и на сайтах. Плюс новости, картинки, и прочая служебная инфа. Задачу по переносу решили делать с помощью парсера данных, и написан он был сравнительно быстро. Однако массив видео- и фотоматериалов оказался просто огромный: дамп каждого сайта мог весить до терабайта. Автоматизированный процесс переноса контента длился свыше недели без перерыва.
Семь бед – один backend
С целью облегчить управление контентом на семи сайтах одновременно, было принято решение использовать единую панель администратора. Фундаментально был задействован php-фреймворк symfony и EasyAdminBundle. В результате набор функционала, который добавляется или изменяется в том или ином разделе админки, вплоть до маленькой кнопочки - появляется на всех сайтах. При необходимости скрыть какой-то лишний элемент на отдельно взятом сайте это делается силами frontend-разработчика, который может отключить лишние методы, и компоненты выводиться не будут. Ну, и какое же ТВ без программы передач? Мы написали шаблонизатор-обработчик, который преобразует сетку телевещания из непонятной таблицы в формате xls, и передает ее в удобоваримом формате для отображения сразу по всем телеканалам.
Kubernetes что это
Kubernetes - сложная и сравнительно новая технология, в особенности для российского рынка web-разработки. Как правило, ее используют крупные веб-приложения с комплексной микросервисной архитектурой. В свою очередь, наши техлиды посчитали оправданным ее применение в контексте данного проекта, поскольку она несет ряд преимуществ. В частности, несмотря на единую серверную часть, мы обеспечили возможность гибко разворачивать отдельные сайты. При необходимости, мы всегда быстро сможем добавить или убрать ноду в кластер - это гарантирует масштабируемость в будущем. Кроме того, и это, вероятно, самое важное для клиента - экономически это оказалось значительно выгоднее, чем покупать стандартные виртуальные машины на хостинге у провайдера. В горизонте года и более - деньги серьезные.
Несмотря на относительную технологическую тривиальность, проект оказался во многом уникальным. В ходе реализации мы отметили определенный дефицит компетенций по kubernetes на кадровом рынке. Тем приятнее было отметить, что наша команда уже обладает достаточной квалификацией для внедрения такого сервиса.
Андрей, backend developer