Содержание курса
Введение в backend на Rust
6 уроков
1.
Что мы будем строить
↗
2.
Почему Rust в backend
↗
3.
Где Rust уместен, а где избыточен
↗
4.
Современный Rust backend stack
↗
5.
Архитектура финального проекта CourseFlow API
↗
6.
Rust 1.98 и Edition 2024 для backend-разработчика
↗
Rust для разработчика из Java, C#, Go, C++, TypeScript
14 уроков
1.
Быстрый обзор синтаксиса Rust
↗
2.
Ownership, move, copy, clone
↗
3.
Borrowing и references
↗
4.
Lifetimes без академизма
↗
5.
Structs, enums и pattern matching
↗
6.
Traits и generics
↗
7.
Result, Option и error handling
↗
8.
Arc, Mutex, shared state
↗
9.
Iterators и удобный backend-код
↗
10.
Modules, visibility и организация кода
↗
11.
Strings, slices и коллекции
↗
12.
Closures, impl Trait и dyn Trait
↗
13.
serde: сериализация как граница системы
↗
14.
Практика: domain-модели CourseFlow
↗
Cargo, project layout и конфигурация
10 уроков
1.
Cargo, crates, features
↗
2.
Структура backend-проекта
↗
3.
Workspace: когда нужен, когда нет
↗
4.
env/config/secrets
↗
5.
tracing на старте проекта
↗
6.
fmt, clippy, test как базовая дисциплина
↗
7.
Cargo.lock, rust-version, профили сборки
↗
8.
Аудит зависимостей: cargo deny, audit, machete
↗
9.
Локальное окружение: Compose, just и .env
↗
10.
Практика: создаём каркас CourseFlow API
↗
Async Rust, Tokio и mental model backend-разработчика
10 уроков
1.
Future, async fn, await
↗
2.
Tokio runtime
↗
3.
Blocking vs non-blocking code
↗
4.
tokio::spawn и фоновые задачи
↗
5.
Cancellation и graceful shutdown обзорно
↗
6.
Channels и bounded queues
↗
7.
select!, timeout и JoinSet
↗
8.
Send, Sync и 'static в async-коде
↗
9.
async fn в traits без async_trait
↗
10.
Практика: async service layer
↗
Axum: HTTP API
10 уроков
1.
Router, routes, handlers
↗
2.
Extractors: Path, Query, Json, State
↗
3.
Responses и IntoResponse
↗
4.
Shared application state
↗
5.
Middleware через Tower/tower-http
↗
6.
Health endpoint
↗
7.
Custom extractors: FromRequestParts и FromRequest
↗
8.
Композиция Router: nest, merge, fallback
↗
9.
axum::serve, TcpListener и graceful shutdown
↗
10.
Практика: первый CourseFlow HTTP API
↗
REST API: контракты, DTO и ошибки
11 уроков
1.
Resource-oriented API
↗
2.
URL-дизайн
↗
3.
HTTP methods и status codes
↗
4.
DTO вместо отдачи domain-моделей наружу
↗
5.
Единый API error format
↗
6.
Pagination, filtering, sorting
↗
7.
Idempotency key обзорно
↗
8.
serde-контракты DTO: атрибуты и enum-представления
↗
9.
OpenAPI через utoipa
↗
10.
Версионирование и совместимость API
↗
11.
Практика: Courses и Lessons REST API
↗
Validation и typed errors
8 уроков
1.
Request errors, validation errors, business errors
↗
2.
Manual validation
↗
3.
validator/garde обзорно
↗
4.
Domain invariants
↗
5.
thiserror
↗
6.
Mapping errors into HTTP
↗
7.
Newtype и smart constructors: валидация типами
↗
8.
Практика: validation и error model CourseFlow
↗
Архитектура modular monolith на Rust
9 уроков
1.
Почему не микросервисы
↗
2.
HTTP layer, application layer, domain layer, infra layer
↗
3.
Feature-based modules
↗
4.
Use cases/application services
↗
5.
Repository pattern: где полезен, где мешает
↗
6.
Domain layer без DDD-перегруза
↗
7.
Dependency injection без фреймворка
↗
8.
Границы модулей и переход к workspace
↗
9.
Практика: users/courses/progress modules
↗
PostgreSQL и SQLx
13 уроков
1.
Почему SQLx, а не ORM
↗
2.
PgPool и подключение к PostgreSQL
↗
3.
Migrations
↗
4.
Schema design CourseFlow
↗
5.
query!, query_as!
↗
6.
Transactions
↗
7.
Constraints, indexes, UUID, timestamps
↗
8.
JSONB и PostgreSQL-specific features обзорно
↗
9.
Offline mode, sqlx.toml и cargo sqlx prepare
↗
10.
Пользовательские типы: enum, derive(sqlx::Type), массивы
↗
11.
Динамический SQL: QueryBuilder и SqlSafeStr
↗
12.
Конкурентность в БД: блокировки, SKIP LOCKED, optimistic locking
↗
13.
Практика: persistence layer на SQLx
↗
Auth и безопасность
11 уроков
1.
Authentication vs authorization
↗
2.
Password hashing через Argon2
↗
3.
Registration
↗
4.
Login
↗
5.
JWT access tokens
↗
6.
Refresh tokens
↗
7.
Current user extractor
↗
8.
Roles: student, author, admin
↗
9.
CORS, rate limiting, security headers обзорно
↗
10.
Password reset и подтверждение email
↗
11.
Практика: защищённый API
↗
Redis в backend-приложении
10 уроков
1.
Где Redis полезен
↗
2.
Async Redis client
↗
3.
Cache-aside
↗
4.
Cache key design
↗
5.
TTL и invalidation
↗
6.
Rate limiting
↗
7.
Idempotency keys
↗
8.
Атомарность: SET NX, pipelines и Lua
↗
9.
Деградация при недоступности Redis
↗
10.
Практика: cache, login limits, purchase idempotency
↗
Внешние интеграции и webhooks
9 уроков
1.
Почему external API ненадёжны
↗
2.
reqwest client
↗
3.
Timeouts
↗
4.
Retry и idempotency
↗
5.
Typed client layer
↗
6.
Incoming webhooks
↗
7.
Signature verification и replay protection
↗
8.
Circuit breaker и bulkhead
↗
9.
Практика: mock billing provider
↗
Background workers и outbox
10 уроков
1.
Зачем нужны workers
↗
2.
Tokio tasks
↗
3.
Periodic workers
↗
4.
mpsc channels
↗
5.
Outbox pattern
↗
6.
Retry и duplicate handling
↗
7.
Graceful shutdown worker-а
↗
8.
Очередь задач в PostgreSQL: SKIP LOCKED и leases
↗
9.
Отдельный worker-бинарник и общий crate
↗
10.
Практика: notification worker
↗
WebSocket notifications
9 уроков
1.
Когда нужен WebSocket
↗
2.
WebSocket upgrade в Axum
↗
3.
Socket lifecycle
↗
4.
Event protocol
↗
5.
JWT auth для WebSocket
↗
6.
User-specific notifications
↗
7.
Redis pub/sub обзорно для scaling
↗
8.
SSE как более простая альтернатива
↗
9.
Практика: real-time уведомления CourseFlow
↗
Testing backend-а на Rust
11 уроков
1.
Unit tests
↗
2.
API tests для Axum
↗
3.
PostgreSQL integration tests
↗
4.
Redis integration tests
↗
5.
testcontainers-rs
↗
6.
Mock external API через wiremock
↗
7.
Auth tests
↗
8.
Worker tests
↗
9.
#[sqlx::test] и изоляция тестовой БД
↗
10.
cargo-nextest, организация тестов и фикстуры
↗
11.
Практика: набор тестов CourseFlow
↗
Observability и production-поведение
6 уроков
1.
tracing: spans, request id и структура логов
↗
2.
Metrics и Prometheus
↗
3.
OpenTelemetry и распределённые трассы
↗
4.
Graceful shutdown всего процесса
↗
5.
Производительность: release-профиль, бенчмарки, профилирование
↗
6.
Практика: observability CourseFlow
↗
Docker, CI и финальная сборка
9 уроков
1.
Dockerfile для Rust API
↗
2.
Multi-stage build
↗
3.
cargo-chef и кэширование сборки
↗
4.
Docker Compose: API, worker, PostgreSQL, Redis
↗
5.
Configuration in containers
↗
6.
Migrations strategy
↗
7.
GitHub Actions: fmt, clippy, test, build
↗
8.
Smoke tests
↗
9.
Финальный запуск CourseFlow API
↗