Введение в Serverless

Перед началом: базовый Go (горутины, интерфейсы, context), общее понимание облака. Инструменты: Yandex Cloud CLI, веб-консоль YC. Время: ~4 ч.

🔥 Инцидент: 10 000 пользователей — и сервер лёг

Стартап запускает чат. Первые 100 пользователей — всё работает: одно VPS справляется, WebSocket-ы держатся, база отвечает за миллисекунды. Команда празднует релиз и идёт за пиццей.

Затем — рост. 10 000 одновременных пользователей. WebSocket-соединения съедают всю память, CPU упирается в потолок, сервер падает под нагрузкой. Покупать больше серверов — дорого: каждый новый инстанс стоит денег 24/7, даже когда чатом ночью никто не пользуется.

Serverless обещает «масштаб от нуля до бесконечности» и оплату только за фактические вызовы. Но как именно это работает? Где граница между «дёшево» и «бесконечно масштабируется»? Этот курс — про то, как построить рабочий чат за ₽0/мес и не наступить на грабли cold start, stateless-функций и распределённого состояния.

📖 Теория

Что мы построим

В этом курсе мы создадим production-ready мессенджер на serverless-архитектуре Yandex Cloud: P2P и групповые чаты, real-time доставка сообщений, авторизация (JWT), офлайн-режим (PWA) — и всё это укладывается в free-tier (₽0/мес) при малом трафике.

Чему вы научитесь

  • Проектировать serverless-архитектуру (API Gateway, Cloud Functions, YDB, YMQ, YDS, Serverless Container).
  • Писать бэкенд на Go с Clean Architecture (UseCase, Service, Repository, DI).
  • Реализовывать авторизацию (регистрация, JWT access + refresh, bcrypt, middleware).
  • Работать с YDB (SQL, транзакции, индексы, идемпотентность).
  • Настраивать real-time через WebSocket (Serverless Container, hub, graceful shutdown).
  • Управлять асинхронной обработкой через YMQ (очереди, DLQ, retry, at-least-once).
  • Развёртывать инфраструктуру через Terraform (CI/CD, rollback).
  • Добавлять наблюдаемость (OpenTelemetry, метрики, логи, трейсы, SLO).

Что такое Serverless (коротко)

Serverless — модель, где облачный провайдер управляет серверами, а вы платите только за фактическое использование. Приложение автоматически масштабируется от 0 (в простое — ₽0) до миллионов запросов.

Плюсы: автоскейлинг, оплата за использование, нет управления инфраструктурой. Минусы: cold start (функция «просыпается» ~500 мс), функции stateless (состояние во внешних сервисах), лимиты времени выполнения (до 15 мин для Cloud Functions).

Сервисы Yandex Cloud

СервисНазначениеFree-tier
Cloud FunctionsЗапуск Go-кода (stateless REST API)1 000 000 вызовов/мес
Serverless ContainersDocker-контейнеры (stateful WebSocket)1 000 000 запросов/мес
YDB (serverless)SQL база данных1 000 000 RU/мес
YMQОчередь сообщений (SQS-совместимая)100 000 запросов/мес
YDSСтрим данных (real-time fan-out)2 000 000 единиц/мес
API GatewayHTTP/WebSocket маршрутизация, JWT validation100 000 запросов/мес
Object StorageХостинг статики PWA (S3)1 ГБ

Все лимиты бесплатны. При 20 пользователях и 1000 сообщений/день всё уложится в ₽0.

Для кого этот курс

  • Backend-разработчики на Go.
  • Знакомые с REST, SQL, базовым Docker.
  • Желающие освоить serverless в Yandex Cloud.

Prerequisites:

  • Базовый Go (горутины, интерфейсы, context).
  • curl или httpie для тестирования API.
  • Аккаунт Yandex Cloud (бесплатный стартовый грант).

Дорожная карта курса

№МодульЧто делаем
1Введение (вы здесь)Serverless, сервисы YC, roadmap
2Архитектуры чатаСравнение bare metal / VDS / K8s / serverless → выбор
3Serverless-дизайн10 компонентов, поток данных, free-tier
4Backend на GoClean Architecture, UseCase, Composition Root
5Auth, API, тестыJWT, bcrypt, API Gateway, curl-тест двумя пользователями
6YDBSQL DDL, транзакции, индексы, идемпотентность
7WebSocketHub, read/write pumps, graceful shutdown
8Очереди (YMQ)Visibility timeout, DLQ, retry, at-least-once
9Terraform + CI/CDIaC, remote state, pipeline, rollback
10МасштабированиеКогда уходить с serverless, GC, K8s
11ObservabilityМетрики, логи, трейсы, SLO, алерты

Что у вас будет в конце курса

  • ✅ Работающий чат: регистрация, вход, комнаты, real-time сообщения.
  • ✅ Бэкенд на Go с Clean Architecture, готовый к масштабированию.
  • ✅ Развёрнутый в Yandex Cloud (или локально через docker-compose).
  • ✅ Стоимость ₽0/мес при малом трафике.
  • ✅ Инфраструктура как код (Terraform) с CI/CD.

Вперед → В модуле 2 сравним архитектуры развёртывания (bare metal, VDS, K8s, serverless) и обоснуем выбор serverless под free-tier.

Компромиссы (Trade-offs)

СвойствоServerlessVM / VPS
Оплатаза вызовы (₽0 в простое)24/7 за инстанс
Масштабавто 0 → Nручное / HPA
Cold start~500 мснет
Состояниево внешних сервисах (YDB/YMQ)в памяти процесса
Ops-нагрузканизкаясредняя–высокая
Прогноз стоимостипеременныйпредсказуемый

Вывод: serverless — для MVP и непредсказуемой нагрузки; VM/K8s — для стабильной высокой нагрузки и stateful-сценариев. Подробнее — в Модуле 2.


🧩 Проверь себя

1. При serverless Вы платите за...
2. Главное преимущество Serverless?
3. Serverless модель — кто управляет серверами?
4. Что значит «масштабирование от 0»?
5. Free-tier Yandex Cloud при serverless — это...

🔗 Мостик к Модулю 2

Serverless — это не магия. «Масштаб от нуля» работает только при правильной архитектуре, а free-tier покрывает лишь ограниченную нагрузку. В Модуле 2 выберем правильную архитектуру: честно сравним bare metal, VPS, Kubernetes и serverless по матрице NFR (бюджет, нагрузка, команда, time-to-market) и обоснуем, почему под наш чат подходит именно serverless.