Техническое задание: Развертывание зеркала Next.js сайта
Цель проекта
Создать работоспособное и автоматически обновляемое зеркало существующего веб-сайта, построенного на Next.js, на инфраструктуре внутри Российской Федерации. Зеркало должно обслуживать пользователей из определенного региона, обеспечивая бесперебойный доступ к контенту.
Основные задачи
1. Подбор и настройка хостинга
- Выбрать надежный российский хостинг-провайдер, совместимый с требованиями Next.js (поддержка Node.js).
- Обеспечить необходимое дисковое пространство, вычислительные ресурсы и пропускную способность.
- Настроить доменное имя (субдомен) для доступа к зеркалу.
2. Настройка процесса CI/CD (Непрерывная интеграция и доставка)
- Развернуть систему автоматического деплоя (например, с использованием GitHub Actions, GitLab CI или аналогов).
- Настроить триггеры: автоматический деплой при пуше кода в определенную ветку основного репозитория (например,
main или production). - Обеспечить сборку Next.js проекта (
next build) и его развертывание на целевом сервере.
3. Документация и инструкции
- Предоставить краткую инструкцию по адаптации процесса под конкретные имена веток репозитория.
- Описать шаги для изменения переменных окружения или конфигураций, специфичных для зеркала (например, базовый URL, API-ключи).
4. Реализация логики зеркалирования
- Настроить механизм определения геолокации пользователя (например, на уровне DNS, CDN или веб-сервера nginx).
- Реализовать прозрачное перенаправление трафика из целевого региона на российское зеркало.
- Обеспечить синхронизацию данных или контента между основным сайтом и зеркалом (в рамках процесса CI/CD).
Требования к исполнителю
- Опыт работы с Next.js и его deployment-процессами.
- Понимание принципов CI/CD и опыт настройки пайплайнов.
- Знание инфраструктуры российских хостинг-провайдеров.
- Опыт настройки веб-серверов (Nginx, Apache) и DNS.
Результат работы
- Рабочее зеркало сайта на российском хостинге.
- Настроенный автоматический пайплайн деплоя.
- Техническая документация по управлению и поддержке решения.