DevOps
AWS: основные сервисы
Netflix работает полностью на AWS: миллионы EC2 инстансов, петабайты видео в S3, Aurora для пользовательских данных, тысячи Lambda функций для real-time рекомендаций. Понимание основных AWS сервисов - это понимание того как работает большинство production систем 2024 года.
- **Airbnb** хранит миллионы фотографий в S3 и использует Presigned URLs для прямой загрузки из мобильных приложений - серверы не видят ни байта фото-трафика
- **Slack** использует Aurora PostgreSQL для хранения сообщений - Multi-AZ failover за 30 секунд против 5-10 минут для стандартного RDS PostgreSQL при аварии primary ноды
- **Coca-Cola** перенёс производственные системы на Lambda + API Gateway - стоимость обработки заказов снизилась на 65% за счёт оплаты только за фактические вызовы без idle инстансов
EC2
EC2 (Elastic Compute Cloud) - виртуальные машины в AWS. Типы инстансов: t3/t4g (general purpose, burstable CPU), c7g (compute-optimized для CPU-нагрузки), r7g (memory-optimized для Redis/Elasticsearch), m7g (balanced). Суффикс g = Graviton3 (ARM, 20-30% дешевле и быстрее x86 при сопоставимой нагрузке).
AMI (Amazon Machine Image) - образ диска для запуска инстанса. Launch Template + Auto Scaling Group - стандартный production паттерн: ASG автоматически добавляет/убирает инстансы по CPU метрике. Placement groups: Cluster (низкая latency между инстансами), Spread (разные физические хосты для resilience).
Чем t4g.medium отличается от m5.medium при выборе EC2 инстанса?
S3
S3 (Simple Storage Service) - объектное хранилище AWS с durability 11 девяток (99.999999999%). Объекты хранятся в buckets, идентифицируются ключом (путём). Storage classes: S3 Standard (частый доступ), S3-IA (редкий, дешевле), S3 Glacier Instant/Flexible (архив). S3 Transfer Acceleration ускоряет загрузку через CloudFront edge.
Важные production паттерны: Presigned URLs - временные ссылки для прямой загрузки/скачивания клиентом (минуя backend, экономит трафик). Multipart upload - для файлов >100MB. Event notifications (S3 → Lambda → SQS) - обработка загружаемых файлов. S3 Versioning + Object Lock - защита от случайного удаления и ransomware.
Зачем использовать S3 Presigned URL вместо загрузки через backend?
RDS и Aurora
RDS - managed реляционные БД: PostgreSQL, MySQL, MariaDB, Oracle, SQL Server. AWS берёт на себя backup, patching, failover. Aurora - AWS-разработанный движок совместимый с PostgreSQL/MySQL: 3-5x быстрее стандартного PostgreSQL, автоматически масштабирует storage до 128TB, Multi-AZ failover за 30 секунд.
Aurora Serverless v2 - автоматически масштабирует compute (ACU) от 0.5 до 128 ACU в секунды. Идеален для переменной нагрузки. RDS Proxy - connection pooler перед RDS: критично для Lambda которая создаёт тысячи соединений. Без RDS Proxy Lambda + RDS = Too many connections error при spike нагрузки.
Зачем нужен RDS Proxy при использовании Lambda с RDS?
Lambda
AWS Lambda - serverless функции: код выполняется в ответ на события (API Gateway, S3, SQS, EventBridge, DynamoDB Streams). Оплата за фактическое время выполнения (1ms granularity), а не за idle время. Масштабируется до 1000 одновременных вызовов по умолчанию (можно увеличить).
Cold start - задержка первого вызова при инициализации контейнера (100ms-1s для Node.js/Python, 1-5s для Java). Решения: Lambda SnapStart (Java), Provisioned Concurrency (держать N функций разогретыми), оптимизация размера deployment package, использование ARM/Graviton2 (быстрее и дешевле на 20%).
Что такое cold start в AWS Lambda и когда он возникает?
VPC и сетевая безопасность
VPC (Virtual Private Cloud) - изолированная сеть в AWS. Стандартная архитектура: public subnets (Load Balancer, NAT Gateway), private subnets (EC2, RDS, Lambda). Internet Gateway для входящего трафика в public subnet. NAT Gateway для исходящего трафика из private subnet. Security Groups - stateful firewall на уровне ENI.
VPC Endpoints позволяют обращаться к AWS сервисам (S3, DynamoDB, Secrets Manager) без выхода в интернет - через внутреннюю сеть AWS. Это дешевле (нет NAT Gateway трафика), быстрее и безопаснее. PrivateLink - аналог для кастомных сервисов. VPC Peering и Transit Gateway - связь между VPC разных аккаунтов или регионов.
Security Group и Network ACL - одно и то же, нужно использовать что-то одно
Security Group - stateful firewall на уровне ENI (ответный трафик разрешается автоматически). Network ACL - stateless firewall на уровне subnet (нужно явно разрешать оба направления). Security Group достаточно для большинства случаев; NACL добавляет дополнительный уровень при строгих compliance требованиях
Stateful vs stateless - ключевое различие: Security Group видит что соединение уже установлено; NACL проверяет каждый пакет независимо
Зачем использовать VPC Endpoint для доступа к S3?
Ключевые идеи
- **EC2 + ASG** - виртуальные машины с автомасштабированием; t4g/m7g (Graviton ARM) - лучшее соотношение цена/производительность
- **S3 + RDS/Aurora** - объектное хранилище (11 девяток durability) + managed БД с автоматическим failover; Aurora Serverless v2 для переменной нагрузки
- **Lambda + VPC** - serverless для event-driven архитектур; VPC изолирует ресурсы, VPC Endpoints экономят трафик через NAT
Связанные темы
AWS сервисы используются как строительные блоки для более сложных паттернов:
- Serverless: Lambda, Cloud Functions — Lambda - это основной serverless сервис AWS; детально про cold start, event-driven паттерны и лимиты
- Автоскейлинг и HPA — EC2 Auto Scaling Group - AWS реализация горизонтального масштабирования; HPA в K8s - аналог для контейнеров
Вопросы для размышления
- Когда стоит выбрать Aurora Serverless v2 вместо стандартного Aurora с фиксированным инстансом?
- Если приложение хранит пользовательские файлы - как организовать загрузку через S3 Presigned URL и при этом валидировать тип/размер файла?
- Почему RDS лучше самостоятельно управляемого PostgreSQL на EC2 в большинстве production случаев?