← Назад к вопросам

Что такое EC2-инстансы в AWS?

2.3 Middle🔥 151 комментариев
#DevOps и инфраструктура

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое EC2-инстансы в AWS

EC2 (Elastic Compute Cloud) — это основной вычислительный сервис AWS. Это **виртуальные машины в облаке**, которые позволяют арендовать серверные ресурсы вместо покупки физического железа.

Простое объяснение

Представь:

  • Без облака: Ты покупаешь сервер за 100,000 рублей, платишь электричество, занимаешь место в дата-центре, ремонтируешь если сломается
  • С EC2: Ты платишь только за часы использования. Хочешь 1000 серверов на час? Можешь. Потом выключил — деньги не течёт

Архитектура EC2

AWS Регион (например, eu-west-1)
├── Availability Zone 1
│   └── EC2 Instance ( твой сервер)
├── Availability Zone 2
│   └── EC2 Instance (резервный сервер)
└── Availability Zone 3
    └── EC2 Instance (для распределения нагрузки)

Основные компоненты

1. AMI (Amazon Machine Image)

Это шаблон для инстанса — содержит ОС, приложения, конфигурацию:

# Примеры AMI:
- Amazon Linux 2  # Оптимизирована для AWS
- Ubuntu 22.04    # Популярная для Python разработки
- Windows Server  # Для .NET приложений
- Кастомная AMI  # Твоя конфигурация

2. Типы инстансов (Instance Types)

Разные комбинации CPU, RAM, сетевой производительности:

t2.micro        → 1 vCPU, 1 GB RAM       (free tier, для тестов)
t3.small        → 2 vCPU, 2 GB RAM       (для веб-приложений)
m5.large        → 2 vCPU, 8 GB RAM       (general purpose)
c5.xlarge       → 4 vCPU, 8 GB RAM       (compute optimized)
r5.2xlarge      → 8 vCPU, 64 GB RAM      (memory optimized)
p3.8xlarge      → GPU                    (machine learning)

Типы instance families:

  • t-series (burstable) — переменная нагрузка, cheap
  • m-series (general) — balanced compute/memory
  • c-series (compute) — CPU intensive
  • r-series (memory) — высокая памяать
  • p-series (GPU) — deep learning, rendering

3. EBS (Elastic Block Store)

Хранилище для инстанса — как жёсткий диск:

# Типы EBS:
- gp3  # General purpose, 3000 IOPS по умолчанию
- io2  # High I/O, для БД (20000+ IOPS)
- st1  # HDD, для sequential reads (Big Data)

# Особенности:
- Persistence после shutdown (root volume по умолчанию удаляется)
- Снимки (snapshots) для резервного копирования
- Шифрование KMS
- Auto-scaling по размеру

4. Security Groups (Firewall)

Правила входящего/исходящего трафика:

# Пример: веб-сервер
Inbound Rules:
  - HTTP (80)     from 0.0.0.0/0
  - HTTPS (443)   from 0.0.0.0/0
  - SSH (22)      from 203.0.113.0/24 (только твой офис)

Outbound Rules:
  - All traffic to 0.0.0.0/0 (по умолчанию все может уходить)

Жизненный цикл EC2 инстанса

┌─────────┐
│ Pending │  ← Instance запускается
└────┬────┘
     │
     ▼
┌─────────┐
│ Running │  ← Instance работает (платишь за это время)
└────┬────┘
     │
     ├─→ Reboot (перезагрузка, сохранение данных)
     ├─→ Stop (остановка, данные сохраняются, платишь за EBS)
     │   └─→ Start (запуск, но IP может измениться если не Elastic IP)
     │
     ▼
┌──────────────┐
│ Stopped      │  ← Не платишь за compute, платишь за storage
└────┬─────────┘
     │
     ▼
┌──────────────┐
│ Terminated   │  ← Инстанс удалён (по умолчанию EBS volume тоже удаляется)
└──────────────┘

Реальный пример: развёртывание Python приложения

#!/bin/bash
# User data script для EC2 (запускается при старте)

#!/bin/bash
set -e

# Обновляем систему
sudo yum update -y

# Устанавливаем Python и зависимости
sudo yum install -y python3 python3-pip git nginx

# Клонируем репозиторий
cd /opt
sudo git clone https://github.com/myuser/myapp.git
cd myapp

# Устанавливаем зависимости Python
sudo pip3 install -r requirements.txt

# Запускаем приложение через gunicorn
sudo systemctl start gunicorn
sudo systemctl start nginx

Ценообразование EC2

# На примере t3.small в eu-west-1:
On-Demand    → $0.0208 за час (платишь за каждый час)
Spot         → $0.0060 за час (дешевле на 70%, но может отключиться)
Reserved     → $80 за год (для долгосрочного использования, скидка 70%)
Savings Plan → Гибридный вариант

# Подсчёт:
t3.small on-demand 24/7 на месяц (730 часов):
$0.0208 * 730 = $15.18 в месяц

С резервацией на год: 80 / 12 = $6.67 в месяц

Elastic IP

Обычный IP меняется при restart. Elastic IP — это статический IP:

# Без Elastic IP:
Stop → Start → Public IP меняется ❌

# С Elastic IP:
Stop → Start → Public IP остаётся (платишь $3.65/месяц если не используется)

Интеграция с другими AWS сервисами

# Типичная архитектура:
EC2 instances
├── Auto Scaling Group (автоматически увеличивает/уменьшает количество)
├── Load Balancer (распределяет трафик)
├── RDS (управляемая БД)
├── S3 (файловое хранилище)
├── CloudWatch (мониторинг)
├── IAM Roles (права доступа)
└── CloudFormation (Infrastructure as Code)

Best Practices

При создании EC2:

  • ✅ Используй IAM Roles вместо hardcoded credentials
  • ✅ Подготавливай User data скрипты для автоматизации
  • ✅ Используй Security Groups правильно (минимальный доступ)
  • ✅ Снимай snapshots EBS перед изменениями
  • ✅ Используй Auto Scaling для высокой доступности
  • ✅ Мониторь через CloudWatch
  • ❌ Не сохраняй секреты в AMI
  • ❌ Не используй root volume для данных (используй отдельные EBS)

Вывод

EC2 инстансы — это основа облачной инфраструктуры AWS. Они позволяют:

  • Запустить любое серверное приложение (Python, Java, Node.js)
  • Масштабировать от 1 до 1000+ инстансов
  • Платить только за использованное (на час)
  • Получить высокую доступность через Availability Zones
  • Интегрироваться с другими AWS сервисами

Для Python разработчика EC2 + Gunicorn + RDS — это классический stack для production приложений.

Что такое EC2-инстансы в AWS? | PrepBro