Почему существует этот сайт?
Давняя проблема при изучении любой новой технологии заключается в том, что большая часть документации и примеров, которые можно найти в интернете или получить от ИИ, настолько тривиальны, что не дают понимания, выдержит ли технология или ваша реализация реальную, сложную нагрузку. Пример — многочисленные примеры со списком дел.
У меня запланирован SASS-проект, основанный на нескольких технологических допущениях, которые нужно протестировать ещё до попытки строить реальный проект; а персональный профильный сайт вроде этого, работающий на полноценном CMS-бэкенде, достаточно сложен, чтобы заслуживать полноценной production-сборки, и достаточно прост, чтобы не занять слишком много времени на сборку; с дополнительным преимуществом: если всё пойдёт хорошо, я получу профильный сайт, который работает быстро и станет хорошим полигоном для более технических экспериментов.
Cloudflare как цель для деплоя
Cloudflare Workers https://workers.cloudflare.com/ на первый взгляд кажутся чрезвычайно дешёвым способом развернуть сложное приложение. Бэкенд-разработка выглядит простой и надёжной, а пакет OpenNext https://opennext.js.org/ вроде бы предоставляет эффективный способ разрабатывать фронтенд на Next.js https://nextjs.org/ и деплоить в Cloudflare.
Я сомневаюсь, что этот сайт привлечёт много человеческого трафика; однако я постараюсь направить на него как можно больше трафика от веб-поиска и AI-краулеров. Так я смогу понять реальную стоимость работы загруженного сайта на платформе Cloudflare.
Сделать этот сайт сложнее, чем он должен быть
Бэкенд управления контентом (CMS)
Если честно, этот сайт в его текущем виде можно было бы наспех собрать с помощью coding agent за несколько часов; однако серьёзной системе не должен требоваться деплой, чтобы изменить базовый контент. Поэтому этот сайт использует полноценную CMS на базе Payload CMS (https://payloadcms.com/), развернутую как отдельный Cloudflare Worker.
Сам Payload использует SQL-базу данных, которую, в свою очередь, нужно развернуть как экземпляр CloudFlare D1 SQLite https://developers.cloudflare.com/d1/, и корректно управлять ею с помощью миграций, чтобы поддерживать жизненный цикл разработки.
Автоматизированные переводы
Этот сайт поддерживает 20 языков. Поскольку сайт — это простая оболочка для CMS-контента, i18n-часть во время разработки ведётся с помощью coding agent (Co-pilot и Claude Opus 4.5).
Это оставляет весь текущий и будущий CMS-контент, который нужно автоматически переводить каждый раз, когда изменяется какой-либо английский контент.
Воркер на основе очереди и Cron
Требование по переводам подразумевает достаточно сложный процесс, который:
- Будет запускаться по таймеру Cron.
- Определять любой контент, которому нужен новый перевод.
- Надёжно выполнять перевод.
- Надёжно восстанавливаться после сбоя.
Поэтому используется ещё один экземпляр CloudFlare D1 для отслеживания работ по переводам, а Cloudflare queues (https://developers.cloudflare.com/queues/) применяются с шаблоном producer-consumer на основе cron, чтобы управлять задачами и масштабировать их. Для переводов вызывается API OpenAI gpt-5.2, а AI.SDK https://ai-sdk.dev/ связывает всё воедино.
Для этого сайта это избыточно, но любая production-система, в любом масштабе, нуждается в надёжном паттерне для оркестрации фоновой обработки.
Предыдущие версии этого сайта
Я уже делал этот сайт дважды как инструмент для изучения новых технологий:
2013 - Изучение Ruby и AWS
- Ruby on Rails v4.0.0.
- Стилизация Bootstrap v3.
- CoffeeScript для UI.
- Фронтенд-паттерн Backbone Marionette VMC.
- Развёрнут на хосте AWS.
2017 - Изучение React
- React v16.0.0 для UI.
- Redux и Thunk для асинхронных операций.
- Semantic UI для стилизации.
Что дальше
Сайт корректно настроен для SEO, и нужен регулярный ритм появления нового контента, чтобы стимулировать трафик краулеров. Я буду публиковать более подробные статьи о различных технологиях и решениях, которые использованы.
