Yesterday

Практическая инструкция по выбору и миграции с западных платформ бессерверных вычислений на российские аналоги

Комплексный отчёт: сравнительный анализ Netlify, Vercel и отечественных облачных платформ для разработчиков

Дата подготовки: январь 2026 г.
Статус: Актуально на 08.01.2026


Введение в тему

Российский рынок облачных вычислений достиг уровня функциональной зрелости, позволяющего бесшовно заменять международные платформы вроде Netlify и Vercel. Отечественные решения предлагают не только соответствие требованиям локализации данных (Федеральный закон № 152-ФЗ, ч. 5 ст. 18), но и гибкие модели оплаты, включающие бессрочные бесплатные лимиты и масштабные бонусные программы.

Ключевое преимущество российских облаков заключается в том, что они предоставляют полный спектр функциональности Netlify: от хостинга статических сайтов через Object Storage до бессерверных функций с поддержкой запуска по расписанию (аналог Netlify Scheduled Functions).


1. Yandex Cloud: Наиболее полный функциональный аналог Netlify

1.1 Архитектурное сравнение с Netlify

Netlify предлагает интегрированную модель JAMSTACK, где:

  • Фронтенд: статические файлы с автоматической оптимизацией
  • Бэкенд: Netlify Functions (serverless функции)
  • Автоматизация: Netlify Scheduled Functions для периодических задач

Yandex Cloud реализует идентичную архитектуру через комбинацию трёх сервисов:

  1. Object Storage — хостинг статических ресурсов
  2. Cloud Functions — бессерверные вычисления
  3. Timer-triggers — планирование функций по расписанию

1.2 Хостинг статических сайтов через Object Storage

Требуемая настройка

Процесс развертывания включает несколько критических этапов:

  1. Создание публичного бакета с разрешением чтения объектов на уровне "Публичный"
  2. Активация хостинга в настройках бакета с указанием индексной страницы (index.html) и страницы ошибок (error.html)
  3. Настройка DNS через ANAME-запись для корневого домена (преимущество Yandex Cloud перед Amazon S3)

В области облачных технологий и хранения данных, бакет — это контейнер для хранения объектов, как в нашем примере с Object Storage на Yandex Cloud. Бакеты используются для организации и управления файлами (объектами), такими как изображения, документы и другие типы данных.
Каждый бакет имеет уникальное имя и может содержать неограниченное количество объектов. Это понятие помогает разработчикам организовывать свои данные и управлять доступом к ним.

В контексте системы непрерывной интеграции и развертывания (CI/CD) бакеты могут использоваться для организации и хранения артефактов сборки, таких как исполняемые файлы, библиотеки или другие выходные данные, которые создаются в процессе разработки. Эти артефакты могут быть затем развернуты на различных средах (тестовых, предрелизных и производственных).

Amazon S3 (Simple Storage Service) — это облачный сервис хранения данных, предоставляемый Amazon Web Services (AWS). Он, как и Yandex Cloud, предназначен для хранения и извлечения любых объемов данных из любой точки в интернете.

Free Tier для Object Storage

Free Tier для Object Storage

Этот лимит достаточен для размещения статического сайта объёмом 1 ГБ (примерно 1000 HTML/CSS/JS страниц) без каких-либо затрат до получения 100 тысяч обращений в месяц.

1.3 Облачные функции и их бесплатный уровень

Поддерживаемые языки и среды выполнения

Yandex Cloud Functions поддерживает полный спектр современных языков:

  • Node.js (включая v22)
  • Python (3.7, 3.8, 3.9, 3.10, 3.11, 3.12)
  • Go (1.18, 1.19, 1.20, 1.21)
  • PHP (7.4, 8.0, 8.1, 8.2)
  • Java (11, 17, 21)
  • .NET Core (6.0, 8.0)

Free Tier для Cloud Functions

Free Tier для Cloud Functions

Для сравнения: типичная функция объёмом 256 МБ (выполнение 500 мс) стоит ~$0.0077 за вызов на Netlify; в Yandex Cloud первый миллион вызовов абсолютно бесплатны.

Модель ценообразования

Стоимость вычисления в Yandex Cloud рассчитывается по формуле:

Стоимость (мес) = $0.049230 × Памяць(ГБ) × Время(часы) + $0.144000 × Вызовы(млн)

Пример для функции с 512 МБ памяти, 800 мс выполнения, 10 млн вызовов в месяц:

$0.049230 × ((512/1024) × (800/3600/1000) × 10,000,000 - 10) + 
$0.144000 × ((10,000,000 - 1,000,000) / 1,000,000)
= $55.50

(После вычета бесплатного объёма)

1.4 Расписание функций: Timer-триггеры с поддержкой Cron

Синтаксис и возможности расширенного Cron

Timer-триггеры с поддержкой Cron — это механизм, используемый в программировании и разработке приложений, который позволяет запускать определенные действия или функции по расписанию. Он часто используется в контексте серверных приложений, автоматизации задач и планирования фоновых процессов.

Основные характеристики:

1. Timer-триггеры:
- Это триггеры, которые срабатывают через заданные интервалы времени или по определенному расписанию.
- Например, они могут запускать определенные функции или задачи через каждые 5 минут, ежедневно в определенное время или еженедельно.

2. Поддержка Cron:
- Cron — это система планирования задач в Unix-подобных операционных системах, которая позволяет запускать команды или скрипты в определенные моменты времени на основе заданного расписания.
- Формат записи расписания в Cron включает шесть полей, которые определяют минуты, часы, дни месяца, месяцы, дни недели и год. Например, выражение "0 12 * * *" означает "каждый день в 12:00".

Применение:

- Автоматизация задач: Timer-триггеры могут использоваться для автоматизации рутинных задач, таких как резервное копирование данных, отправка отчетов, выполнение обновлений и т. д.

- Обработка событий: Они могут быть полезны для обработки событий на основе времени, например, для отправки напоминаний пользователям или для выполнения запланированных операций.

- Фоновая обработка: В серверных приложениях Timer-триггеры могут использоваться для выполнения фоновых задач без вмешательства пользователя.

Yandex Cloud поддерживает расширенный набор символов для создания сложных расписаний:

Синтаксис расширенного Cron

Практические примеры для Telegram webhook

Пример 1: Поддержание Telegram webhook активным каждые 5 минут

0 */5 * * * ? *

Функция будет вызываться в 0:00, 0:05, 0:10... по UTC+0

Пример 2: Активация webhook в рабочие часы (2:00 PM - 6:00 PM)

0 0 14-17 * * ? *

Вызов в 14:00, 15:00, 16:00, 17:00 UTC+0

Пример 3: Только по будням, в 10:00 UTC+0

0 0 10 ? * 1-5 *

Понедельник-пятница в 10:00 UTC

Механизм надёжности триггеров

Если функция завершится с ошибкой, Yandex Cloud автоматически:

  1. Повторит вызов через интервал от 10 до 60 секунд (настраивается)
  2. Попытается заново до 5 раз
  3. Сохранит событие в Dead Letter Queue (если настроена) для последующей отладки

Это критично для автоматизации Telegram вебхуков, где временная сетевая ошибка не должна нарушить расписание.

1.5 Интеграция с GitHub/GitLab и CI/CD

Системы непрерывной интеграции и развертывания (CI/CD) — это набор практик и инструментов, которые автоматизируют процессы разработки, тестирования и развертывания программного обеспечения. Они помогают командам разработчиков эффективно и быстро доставлять изменения в коде пользователям.

Основные аспекты CI/CD:

1. Непрерывная интеграция (CI):
- Процесс, при котором разработчики регулярно (несколько раз в день) интегрируют свои изменения в общий код. Каждое изменение автоматически тестируется с помощью автоматизированных тестов.
- Цель CI — быстро выявлять и исправлять ошибки, а также поддерживать актуальность кода в главной ветке разработки.

2. Непрерывное развертывание (CD):
- Этот процесс включает автоматизацию развертывания приложения на сервере или в облачной среде после успешного прохождения всех тестов.
- Непрерывное развертывание может включать в себя автоматизированные тесты, которые подтверждают, что приложение работает корректно перед его публикацией.

3. Непрерывная доставка (Continuous Delivery):
- Это этап, предшествующий непрерывному развертыванию, где изменения, прошедшие тестирование, готовы к развертыванию, но требуют ручного подтверждения перед публикацией в продуктивной среде.
- Это позволяет командам контролировать, когда и как изменения становятся доступными пользователям.

Преимущества CI/CD:

- Ускорение разработки: Автоматизация процессов позволяет командам быстрее реагировать на изменения и выпускать новые функции.
- Качество кода: Регулярное тестирование помогает выявлять ошибки на ранних стадиях, что способствует повышению качества программного обеспечения.
- Устойчивость к изменениям: CI/CD помогает командам легко управлять изменениями и адаптироваться к новым требованиям.

Пример рабочего процесса CI/CD

1. Исходный код:
- Вся работа начинается с исходного кода, который хранится в системе управления версиями, такой как Git. Разработчики создают свои ветки для новых функций или исправлений ошибок.

2. Непрерывная интеграция (CI):
- Как только разработчик завершает работу над функцией, он делает "коммит" (сохранение изменений) в репозиторий.
- Инструмент CI (например, Jenkins, GitLab CI или CircleCI) автоматически запускает процесс сборки и тестирования.
- Этот процесс включает в себя:
- Сборку приложения.
- Запуск автоматизированных тестов (юнит-тесты, интеграционные тесты).
- Проверка кода на соответствие стандартам (линтинговые проверки).
- Если сборка прошла успешно и все тесты пройдены, изменения могут быть объединены с основной веткой (обычно это main или master).

3. Непрерывное развертывание (CD):
- После успешной интеграции код автоматически развертывается на тестовом сервере или в облачной среде.
- Здесь также могут выполняться дополнительные тесты (например, нагрузочные тесты или тесты пользовательского интерфейса).
- Если все тесты успешны, изменения могут быть автоматически развернуты в продакшн-среду (или потребовать ручного подтверждения, если используется непрерывная доставка).

Безопасность без статических секретов: Workload Identity Federation

Вместо хранения API-ключей в GitHub Secrets, Yandex Cloud предлагает протокол OIDC:

  1. GitHub Action запрашивает временный токен у Yandex Cloud
  2. Yandex Cloud проверяет подпись OIDC-токена GitHub
  3. Доступ разрешается только для этого конкретного workflow

Это устраняет риск утечки постоянных секретов.

Типовой CI/CD workflow для развертывания

- name: Deploy to Yandex Object Storage
  uses: actions/checkout@v3
  
- name: Install YC CLI
  run: curl https://storage.yandexcloud.net/yandexcloud-yc/install.sh | bash
  
- name: Authenticate (OIDC)
  run: |
    yc config set service-account-key <(
      yc iam create-token --service-account-id ${{ env.SERVICE_ACCOUNT_ID }}
    )
    
- name: Sync build to bucket
  run: yc storage s3 sync ./dist s3://${{ env.BUCKET_NAME }}/ --recursive

2. VK Cloud: Альтернативный провайдер с агрессивной бонусной моделью

2.1 Система приветственных бонусов

VK Cloud использует отличающуюся от Yandex Cloud стратегию привлечения пользователей через крупные одноразовые бонусы вместо ежемесячного Free Tier.

Размер бонусов по категориям

Размер бонусов по категориям

Распределение бонусов по сервисам

Из стартовых 5,000 ₽ физического лица:

  • 2,000 ₽ можно потратить только на виртуальные машины и их бэкапы
  • 3,000 ₽ доступны для остальных сервисов (включая Cloud Functions, хранилище, БД)

2.2 Cloud Functions в экосистеме VK Cloud

VK Cloud предоставляет сервис Cloud Functions с поддержкой:

  • Timer-триггеры для планирования функций по cron-расписанию
  • Поддержка языков: Node.js, Python, Go, PHP
  • Интеграция с Message Queue для асинхронной обработки
  • API Gateway для создания REST-эндпоинтов

Функциональность идентична Yandex Cloud, однако выбор провайдера зависит от:

  1. Стратегии расходования: бонусы на 60 дней (VK Cloud) или бессрочный Free Tier (Yandex)
  2. Масштабируемости проекта: крупные проекты выгоднее на Yandex, стартапы — на VK Cloud
  3. Регионов размещения: оба имеют серверы в России, но Yandex — более широкая сеть

2.3 Экономическое сравнение: когда VK Cloud выгоднее

Сценарий 1: Стартап с предсказуемым потреблением

  • Бюджет проекта: $100/месяц
  • Ожидаемое использование: 50 млн функций-вызовов/месяц + 5 ГБ Object Storage

На Yandex Cloud: $50/месяц (в пределах Free Tier)

На VK Cloud: 12,000 ₽ (≈$120) хватает на 2.4 месяца при таком потреблении, затем $70/месяц

Вывод: Yandex Cloud выгоднее для долгосрочных проектов, VK Cloud — для быстрого тестирования.


3. Amvera Cloud: Контейнерная альтернатива для специализированных задач

3.1 Позиционирование и архитектура

В отличие от Netlify Functions (изолированные функции) и Yandex Cloud Functions (управляемые контейнеры), Amvera Cloud предоставляет подход, основанный на развертывании приложений в контейнерах. Это находится между чистым Serverless (FaaS) и полным управляемым сервером.

FaaS (Function as a Service) — это облачная модель, которая позволяет разработчикам запускать и управлять кодом в виде отдельных функций без необходимости управлять серверной инфраструктурой. Это часть более широкой концепции облачных вычислений, известной как serverless computing (безсерверные вычисления).

3.2 Ценообразование и бесплатный доступ

Ценообразование и бесплатный доступ

Все тарифы используют поминутную тарификацию: платите только за фактическое время работы.

3.3 Автоматизация по расписанию в Amvera

Поскольку Amvera развертывает полные контейнеры (а не функции), планирование может быть реализовано двумя способами:

Способ 1: Встроенный cron внутри контейнера

FROM node:18
RUN npm install node-cron
COPY app.js .
CMD ["node", "app.js"]
const cron = require('node-cron');

cron.schedule('*/5 * * * *', () => {
  console.log('Ping Telegram webhook');
  fetch('https://api.telegram.org/bot{TOKEN}/setWebhook', {
    method: 'POST',
    body: JSON.stringify({ url: process.env.WEBHOOK_URL })
  });
});

Способ 2: Внешние триггеры через API

Можно настроить GitHub Actions или GitLab CI для периодического вызова HTTP-эндпоинта приложения Amvera:

name: Keep webhook alive
on:
  schedule:
    - cron: '*/5 * * * *'  # Каждые 5 минут

jobs:
  ping:
    runs-on: ubuntu-latest
    steps:
      - run: curl https://myapp.amvera.io/health

3.4 Преимущества контейнерного подхода для сложных задач

  1. Нет лимитов времени выполнения: функции в Netlify/Yandex ограничены 15 минутами; в Amvera контейнер может работать часами
  2. Полная свобода окружения: установка любых библиотек, системных инструментов
  3. Постоянное состояние: контейнер может кэшировать данные между запусками (для функций это требует внешнего хранилища)
  4. Низкая стоимость для постоянных задач: 170 ₽/месяц (нижний тариф) дешевле, чем 1 млн функций-вызовов на конкурентах, если приложение большую часть времени стоит на холостом ходу

3.5 Интеграция с Git

Amvera поддерживает push-to-deploy через вебхуки:

  • GitHub: создание личного токена → добавление URL вебхука в Settings → Auto-deploy на каждый push
  • GitLab: аналогично, с использованием токена GitLab
  • Bitbucket: полная поддержка через Deploy Keys

4. Российские Git-платформы и их роль в экосистеме

Git-платформы — это веб-сервисы и инструменты, которые позволяют разработчикам хранить, управлять и совместно работать над проектами, использующими систему контроля версий Git. Эти платформы обеспечивают удобный интерфейс для работы с репозиториями Git и предлагают дополнительные функции для улучшения процессов разработки.

Основные функции Git-платформ:

1. Хранение репозиториев: Git-платформы позволяют хранить репозитории Git в облаке, что обеспечивает доступ к коду из любой точки мира и упрощает совместную работу.

2. Совместная работа: Разработчики могут работать над проектами одновременно, создавая свои ветки, внося изменения и создавая запросы на слияние (pull requests) для объединения своих изменений с основной веткой.

3. Управление версиями: Git-платформы помогают отслеживать изменения в коде, что позволяет легко вернуться к предыдущим версиям и управлять историей изменений.

4. Инструменты для ревью кода: Многие платформы предоставляют инструменты для ревью кода, позволяя другим разработчикам комментировать и обсуждать изменения перед их слиянием.

5. Интеграция с CI/CD: Git-платформы часто интегрируются с системами непрерывной интеграции и развертывания (CI/CD), что позволяет автоматически тестировать и развертывать код при каждом изменении.

6. Управление задачами и проектами: Многие Git-платформы предлагают инструменты для управления задачами, трекинга ошибок и планирования проектов, что помогает командам организовывать свою работу.

4.1 GitFlic: Прямая замена GitHub для контроля версий

Особенности

GitFlic: Прямая замена GitHub

Ограничения

GitFlic НЕ является платформой развертывания. Это исключительно Git-хостинг. Для развертывания приложений, хранящихся на GitFlic, необходимо использовать дополнительный облачный сервис:

  • GitFlic → [CI/CD pipeline] → Yandex Cloud / VK Cloud / Amvera

Интеграция с Amvera

Amvera поддерживает GitFlic через стандартный механизм вебхуков, однако официальной интеграции в пользовательском интерфейсе может быть нет. Но есть обходное решение:

  1. Создайте на GitFlic вебхук, указывающий на Amvera API
  2. При каждом push GitFlic отправит POST-запрос на Amvera, триггерив развертывание

4.2 GitVerse (СберТек): Интегрированная платформа нового поколения

Архитектурные преимущества

В отличие от GitFlic, которая сосредоточена на контроле версий, GitVerse предлагает полный цикл разработки:

  1. Репозитории (Git-хостинг, как GitFlic)
  2. GitVerse Actions (встроенный CI/CD, аналог GitHub Actions)
  3. Трекер задач (Scrum/Kanban, как в Jira)
  4. IDE в облаке (GigaIDE Cloud, аналог VS Code Online)
  5. Маркетплейс расширений (для кастомизации)

Развитие платформы

За 1.5 года существования GitVerse привлекла более 100,000 активных пользователей, что означает захват примерно 10% рынка русскоязычных разработчиков. Платформа уже используется корпоративными клиентами вроде компании "Хакатоны.рус".

Интеграция с облачными сервисами

GitVerse Actions позволяют развертывать приложения напрямую в:

  • Yandex Cloud (через service account)
  • VK Cloud (через API)
  • Собственные серверы (через SSH)

Пример CI/CD в GitVerse:

name: Deploy to Yandex Cloud

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      
      - name: Build Docker image
        run: docker build -t myapp:latest .
        
      - name: Deploy to Yandex Cloud
        env:
          YC_FOLDER_ID: ${{ secrets.YC_FOLDER_ID }}
        run: |
          yc serverless function deploy \
            --name myapp \
            --runtime nodejs18 \
            --entrypoint index.handler \
            --source-path ./src

4.3 SourceCraft: Молодая платформа с AI-интеграцией

Специализация

SourceCraft позиционируется как платформа для "интегрированной разработки с ИИ". Это означает:

  • Встроенный AI-ассистент в текстовый редактор (наподобие GitHub Copilot, но на российских серверах)
  • Нативная интеграция с Yandex Cloud для развертывания
  • Поддержка CI/CD через "кубы" (модульные блоки CI/CD)

SourceCraft находится в стадии активного развития и предназначена в основном для проектов, уже использующих Yandex Cloud.


5. Сравнительная матрица: какой провайдер выбрать

5.1 Матрица "функциональность vs. стоимость"

Матрица "функциональность vs. стоимость"

5.2 Сценарии использования и рекомендации

Давайте рассмотрим различные сценарии для наиболее вероятных проектов, которые вы можете создать на российских платформах.

Сценарий A: Стартап с минимальным бюджетом

Требования:

  • Небольшой фронтенд (<100 МБ)
  • 1-2 функции для API
  • Периодическое выполнение (cron)

Рекомендация: Yandex Cloud (Object Storage + Cloud Functions + Timer)

Обоснование:

  • $0/месяц благодаря Free Tier
  • Встроенная интеграция GitHub/GitLab
  • Выращиваемость: при росте проекта вы просто превышаете free tier, но экономика всё равно остаётся привлекательной

Пример архитектуры:

GitHub → Yandex Cloud (GitHub Actions OIDC)
         ↓
    Object Storage (статический фронтенд)
    Cloud Functions (API endpoints)
    Timer-триггеры (очистка кэша, синхронизация данных)

Сценарий B: Компания, требующая полного импортозамещения

Требования:

  • Все данные только на серверах РФ
  • Возможность самостоятельного администрирования
  • Соответствие ФЗ-152

Рекомендация: GitFlic (Git) + Yandex Cloud (вычисления)

Обоснование:

  • GitFlic — полная локализация, самостоятельная установка возможна
  • Yandex Cloud — уполномоченный оператор персональных данных
  • Экономия за счёт open-source CI/CD (GitLab Runner на собственном сервере)

Сценарий C: Production SaaS с высокой надёжностью

SaaS (Software as a Service) — это модель облачного вычисления, которая предоставляет пользователям доступ к программному обеспечению через интернет. Вместо того чтобы устанавливать и поддерживать программное обеспечение на локальных устройствах, пользователи могут использовать SaaS-приложения через веб-браузер.

Требования:

  • Гарантированная SLA 99.99%
  • Масштабируемость на миллионы пользователей
  • Хранение чувствительных данных

Рекомендация: Yandex Cloud (основная) + VK Cloud (резервная)

SLA (Service Level Agreement), или Соглашение об уровне сервиса, — это официальный документ, который описывает услуги, предоставляемые поставщиком, и устанавливает ожидаемые уровни качества этих услуг. SLA часто используется в контексте облачных сервисов, хостинга и IT-услуг.

Обоснование:

  • Multi-cloud approach минимизирует риск сбоев
  • Yandex Cloud имеет лучшую документацию
  • VK Cloud предлагает альтернативный SLA, распределяющий риск

Пример архитектуры:

               GitHub
                 ↓
    ┌─────────────────────────┐
    ↓                         ↓
Yandex Cloud (основное)    VK Cloud (резервное)
  - Object Storage         - Object Storage
  - Cloud Functions        - Cloud Functions
  - PostgreSQL             - PostgreSQL
    ↑                         ↑
    └─────────────────────────┘
              ↓
    Cloudflare CDN (глобальная доставка)

Сценарий D: Фоновые задачи и обработка данных

Требования:

  • Функции выполняются дольше 15 минут
  • Требуется полный контроль окружения
  • Низкое потребление ресурсов большую часть времени

Рекомендация: Amvera Cloud

Обоснование:

  • Нет лимитов на время выполнения
  • Контейнеры дешевле на долгих задачах
  • Поминутная тарификация = платите только за используемые ресурсы

Пример:

# Обработка больших файлов, экспорт данных, машинное обучение
FROM python:3.11
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY app.py .
CMD ["python", "app.py"]

На Amvera это обойдётся в 170-290 ₽/месяц; на Netlify/Yandex придётся воспользоваться платным тарифом из-за ограничения по времени.


6. Техническая реализация: Практические примеры

6.1 Деплой статического сайта в Yandex Cloud

# Шаг 1: Создание бакета
yc storage bucket create --name my-website --default-storage-class standard

# Шаг 2: Настройка публичного доступа
yc storage bucket update my-website \
  --public-read \
  --website-index-file index.html \
  --website-error-file error.html

# Шаг 3: Загрузка файлов
yc storage s3 sync ./dist s3://my-website/ --recursive --delete

# Шаг 4: Настройка DNS (CNAME)
# В панели регистратора доменов:
# example.com  CNAME  my-website.website.yandexcloud.net

6.2 Создание функции для "пробуждения" Telegram webhook

# telegram_wake.py - функция для Yandex Cloud Functions

import json
import requests
import os

def handler(event, context):
    """Функция вызывается по расписанию для поддержания webhook"""
    
    telegram_token = os.environ['TELEGRAM_BOT_TOKEN']
    webhook_url = os.environ['WEBHOOK_URL']
    
    try:
        # Регистрация webhook в Telegram
        response = requests.post(
            f'https://api.telegram.org/bot{telegram_token}/setWebhook',
            json={'url': webhook_url, 'secret_token': os.environ['SECRET_TOKEN']}
        )
        
        return {
            'statusCode': 200,
            'body': json.dumps({'message': 'Webhook set', 'status': response.status_code})
        }
    
    except Exception as e:
        return {
            'statusCode': 500,
            'body': json.dumps({'error': str(e)})
        }

Развертывание и настройка таймера:

# Создание функции
yc functions create --name telegram-wake --runtime python312

# Развертывание кода
yc functions version create \
  --function-name telegram-wake \
  --runtime python312 \
  --entrypoint telegram_wake.handler \
  --source-path ./src

# Настройка переменных окружения
yc functions version update latest \
  --function-name telegram-wake \
  --environment TELEGRAM_BOT_TOKEN="123:ABC..." \
  --environment WEBHOOK_URL="https://myapp.example.com/webhook" \
  --environment SECRET_TOKEN="secret123"

# Создание таймера: каждые 5 минут
yc serverless trigger create timer \
  --name keep-telegram-webhook-alive \
  --cron-expression "*/5 * * * ? *" \
  --invoke-function-name telegram-wake \
  --invoke-function-service-account-id <SERVICE_ACCOUNT_ID>

6.3 GitHub Actions workflow для деплоя в Yandex Cloud с OIDC

name: Deploy to Yandex Cloud

on:
  push:
    branches: [main]
    paths:
      - 'src/**'
      - '.github/workflows/deploy.yml'

env:
  YC_FOLDER_ID: ${{ secrets.YC_FOLDER_ID }}
  YC_CLOUD_ID: ${{ secrets.YC_CLOUD_ID }}

jobs:
  deploy:
    runs-on: ubuntu-latest
    
    permissions:
      id-token: write  # Требуется для OIDC
      contents: read
    
    steps:
      - uses: actions/checkout@v4
      
      - name: Get IAM token via OIDC
        id: iam-token
        run: |
          # Получаем OIDC-токен от GitHub
          GITHUB_TOKEN=$(curl -s \
            -H "Authorization: bearer ${{ secrets.ACTIONS_ID_TOKEN_REQUEST_TOKEN }}" \
            -H "Accept: application/vnd.github+json" \
            "${GITHUB_TOKEN_REQUEST_URI}?audience=https://iamapis.yandex.cloud")
          
          # Обмениваем его на Yandex IAM токен
          YC_TOKEN=$(curl -s \
            -X POST https://iamapis.yandex.cloud/iam/v1/tokens \
            -H "Content-Type: application/json" \
            -d "{\"jwt\": \"$GITHUB_TOKEN\"}" | jq -r .iamToken)
          
          echo "::add-mask::$YC_TOKEN"
          echo "YC_TOKEN=$YC_TOKEN" >> $GITHUB_ENV
      
      - name: Build frontend
        run: |
          npm install
          npm run build
      
      - name: Deploy to Object Storage
        run: |
          yc config set token "${{ env.YC_TOKEN }}"
          yc storage s3 sync ./dist \
            s3://my-website-bucket/ \
            --recursive \
            --delete
      
      - name: Deploy Cloud Function
        run: |
          yc serverless function version create \
            --function-name my-api \
            --runtime nodejs18 \
            --entrypoint index.handler \
            --source-path ./src/functions \
            --environment NODE_ENV=production

7. Безопасность и соответствие законодательству

7.1 Хранение секретов: Yandex Lockbox vs. GitHub Secrets

Проблема с GitHub Secrets

GitHub Secrets хранят значения в открытом виде в консоли управления. Сотрудник, имеющий доступ к репозиторию, может видеть, что установлена переменная, но не само значение. Однако:

  1. Переменные видны в логах, если не использовать ::add-mask::
  2. Ветхие версии инструментов могут выписывать их в stdout

Решение: Yandex Lockbox

Yandex Lockbox — это сервис для управления секретами с шифрованием:

# Создание секрета
yc lockbox secret create \
  --name telegram-bot-token \
  --labels env=production

# Добавление версии с данными
yc lockbox secret version add \
  --secret-name telegram-bot-token \
  --payload-file token.json

Cloud Functions получает доступ к секрету через IAM-роль:

# Выдача функции прав на чтение секрета
yc resource-manager folder add-access-binding $FOLDER_ID \
  --service-account-name telegram-function \
  --role lockbox.payloadViewer

Функция читает секрет в runtime:

import yandex.cloud.lockbox.v1

def handler(event, context):
    lockbox = yandex.cloud.lockbox.v1.SecretServiceClient()
    secret = lockbox.get_secret(name='telegram-bot-token')
    token = secret.payload['token']
    # Используем token...

7.2 Соответствие Федеральному закону № 152-ФЗ

Соответствие платформ Федеральному закону № 152-ФЗ

Для проектов, обрабатывающих персональные данные граждан России, использование Netlify/Vercel юридически невозможно.


8. Заключение и дорожная карта миграции

8.1 Фазы миграции

Фаза 1: Оценка (неделя 1-2)

  1. Инвентаризация текущих сервисов на Netlify
  2. Подсчёт средних объёмов использования (bandwidth, функции, хранилище)
  3. Выбор целевого провайдера согласно сценариям (раздел 5.2)

Фаза 2: Подготовка инфраструктуры (неделя 3-4)

  1. Регистрация в выбранном облаке (Yandex Cloud или VK Cloud)
  2. Создание Object Storage bucket
  3. Создание Cloud Functions
  4. Миграция данных (если требуется)

Фаза 3: Развертывание CI/CD (неделя 5-6)

  1. Настройка GitHub Actions / GitLab CI
  2. Настройка OIDC для безопасного деплоя
  3. Тестирование развертывания на dev/staging

Фаза 4: Миграция production (неделя 7-8)

  1. Изменение DNS для статических ресурсов
  2. Переключение API endpoints на новые Cloud Functions
  3. Мониторинг и откат, если необходимо

8.2 Ожидаемые результаты

До миграции (на Netlify):

  • Статический сайт: $20/месяц
  • Serverless functions: $50/месяц (в зависимости от использования)
  • Итого: ~$70/месяц

После миграции (на Yandex Cloud):

  • Статический сайт: $0/месяц (free tier)
  • Serverless functions: $0/месяц (free tier) до 1 млн вызовов
  • Итого: $0/месяц (при типичном использовании)

Экономия: 100% для малых проектов, 50-70% для средних

8.3 Будущее развитие российских платформ хранения и развёртывания ПО

  1. Дальнейшая локализация: ожидается появление новых российских платформ в 2026-2027
  2. Интеграция CI/CD: Yandex Cloud и VK Cloud планируют встроить более глубокую интеграцию с GitHub/GitLab
  3. Edge Computing: появятся сервисы для развертывания функций на edge-узлах для низкой латентности
  4. Marketplace: расширение экосистемы готовых решений на базе российских облаков

Ваш чек-лист миграции

Вы можете использовать предлагаемый мною ниже пошаговый план для переноса вашего кода и программного обеспечения с западных платформ на российские.

  • Оценка текущего использования Netlify
  • Выбор целевого провайдера
  • Подготовка доступов (API-ключи, токены)
  • Создание Object Storage bucket
  • Миграция статических файлов
  • Переписывание функций под целевую платформу
  • Настройка окружения и секретов
  • Тестирование в staging
  • Настройка мониторинга
  • Обновление DNS
  • Переключение трафика
  • Мониторинг 24/7 первые 48 часов
  • Отключение старой инфраструктуры на Netlify