Связанная книга
Building Microservices
Sam Newman о декомпозиции и коммуникации сервисов — фундамент для Cloud Native.
Cloud Native
Авторы: Boris Scholl, Trent Swanson, Peter Jausovec
Издательство: O'Reilly Media, 2019
Объём: 229 страниц
Containers, Functions, Data: практическое руководство по созданию cloud-native приложений от O'Reilly.
ОригиналЧто такое Cloud Native?
Cloud Native — это подход к разработке, который максимально использует преимущества облачных платформ: эластичность, управляемые сервисы, автоматизацию и распределённость.
Ключевые характеристики
- Контейнеризация (Docker, containerd)
- Оркестрация (Kubernetes)
- Микросервисная архитектура
- Serverless и FaaS
- Immutable infrastructure
- Declarative APIs
Преимущества
- Быстрый time-to-market
- Автоматическое масштабирование
- Высокая отказоустойчивость
- Эффективное использование ресурсов
- Независимые деплои
Документальные фильмы
Структура книги
Cloud Native Context
Определение cloud native. Distributed systems challenges. The Twelve-Factor App methodology. Cloud native vs cloud-enabled.
Cloud Native Patterns
Foundational patterns для containers и orchestration. Communication patterns. Reliability и resiliency patterns.
Cloud Native Data
Data in cloud native world. Event-driven architecture. Stream processing. CQRS и Event Sourcing.
Cloud Native DevOps
CI/CD для cloud native. GitOps. Observability: logging, metrics, tracing. Security best practices.
Контейнеры и Kubernetes
Глубокое погружение
Kubernetes Patterns
Каталог паттернов для K8s: sidecar, health probes, configuration и advanced patterns.
Связанная книга
Site Reliability Engineering
Как Google управляет production-системами с Borg — предшественником Kubernetes.
Контейнеры
- Изоляция приложений через namespaces и cgroups
- Immutable images — воспроизводимость
- Layered filesystem — эффективность
- Container registries (Docker Hub, ECR, GCR)
Kubernetes Primitives
- Pod — минимальная единица деплоя
- Service — stable network endpoint
- Deployment — declarative updates
- ConfigMap / Secret — конфигурация
# Kubernetes Deployment пример
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
spec:
containers:
- name: my-app
image: my-app:v1.2.0
resources:
limits:
memory: "256Mi"
cpu: "500m"Serverless и Functions
Serverless позволяет запускать код без управления инфраструктурой. Платформа автоматически масштабирует и тарифицирует по фактическому использованию.
AWS Lambda
Event-driven, до 15 мин выполнения, интеграция с AWS
Azure Functions
Durable Functions для workflows, bindings
Google Cloud Functions
HTTP и event triggers, Cloud Run для containers
Когда использовать
- Event-driven processing
- API backends с variable load
- Scheduled tasks (cron jobs)
- Data transformation pipelines
Ограничения
- Cold start latency
- Ограничения по времени выполнения
- Stateless по умолчанию
- Vendor lock-in
Управление данными
Глубокое погружение
Designing Data-Intensive Applications
Kleppmann о репликации, партиционировании и consistency в распределённых системах.
Database per Service
Каждый микросервис владеет своими данными. Это обеспечивает loose coupling, но усложняет distributed transactions.
Event-Driven Architecture
Сервисы общаются через события. Это обеспечивает асинхронность и resilience.
Event Sourcing
Хранение событий вместо текущего состояния
CQRS
Разделение команд и запросов
Паттерны отказоустойчивости
Классика
Release It!
Michael Nygard — автор Circuit Breaker и других stability patterns.
Retry with Backoff
Повторные попытки с экспоненциальной задержкой. Jitter для предотвращения thundering herd.
Circuit Breaker
Защита от каскадных сбоев. Три состояния: Closed, Open, Half-Open.
Health Checks
Liveness probes (жив ли процесс) и Readiness probes (готов ли принимать трафик).
Bulkhead
Изоляция компонентов для предотвращения распространения сбоев.
DevOps и Observability
CI/CD для Cloud Native
GitOps
Git как source of truth для инфраструктуры
Canary Deployments
Постепенный rollout с мониторингом
Blue-Green
Мгновенное переключение между версиями
Three Pillars of Observability
Logging
Structured logs, ELK/Loki, correlation IDs
Metrics
Prometheus, Grafana, RED/USE методы
Tracing
Jaeger, Zipkin, OpenTelemetry
Применение на System Design интервью
Полезные концепции
- Container orchestration (Kubernetes)
- Serverless для event processing
- Database per service pattern
- Circuit breaker и retry patterns
- Health checks и graceful shutdown
- Observability: logs, metrics, traces
Вопросы, где пригодится
- «Как деплоить и масштабировать сервис?»
- «Как обрабатывать failures?»
- «Как мониторить распределённую систему?»
- «Какую БД выбрать для микросервиса?»
- «Как реализовать event processing?»
