Virtual Machines
Что это такое
Виртуальная машина (VM) — это полноценный компьютер, существующий как программное обеспечение и работающий на оборудовании провайдера. Вы получаете операционную систему, которую полностью контролируете — вы входите в неё, устанавливаете всё что хотите и запускаете своё приложение ровно так, как делали бы это на физической машине. Это самый «ручной» из вариантов хостинга.
Сильные стороны
- Полный контроль — целая операционная система, любое ПО, любая конфигурация.
- Предсказуемая производительность; машина ваша на всё время аренды.
- Никаких ограничений на время или среду выполнения, в отличие от serverless или edge.
- Запускает что угодно: базы данных, устаревшее ПО, кастомные демоны, долгие задачи.
- Зрелая, хорошо понятная модель с десятилетиями инструментария.
Компромиссы
- Вы управляете всем: обновлениями ОС, патчами безопасности, резервными копиями, мониторингом.
- Вы платите за машину, занята она или простаивает.
- Масштабирование ручное — вы сами изменяете размер или добавляете машины.
- Больше подвижных частей означает больше способов что-то сломать.
- Самое медленное выделение ресурсов по сравнению с функциями или контейнерами.
Когда использовать
Используйте VM, когда нужен полный контроль или есть требования, которые более лёгкие варианты не могут удовлетворить: специализированное ПО, постоянное состояние, самостоятельно размещённая база данных, нагрузки на GPU или миграция существующего приложения без переписывания.
Подходит для вайб-кодинга
VM дают ИИ-агенту самый широкий холст, но и наибольшую ответственность, поэтому опирайтесь на инфраструктуру как код, а не на ручные клики. Пусть агент напишет скрипт развёртывания (файл cloud-init или скрипт настройки в shell), чтобы вся машина была воспроизводимой и проверяемой, вместо настройки сервера вручную по SSH. Совет: попросите агента собрать настройку в единый bootstrap-файл и настроить автоматические обновления безопасности — так вы сможете в любой момент уничтожить и пересоздать VM, не теряя конфигурацию.
#!/usr/bin/env bash
# bootstrap.sh — развёртывание Ubuntu VM
set -euo pipefail
apt-get update && apt-get upgrade -y
apt-get install -y nginx
systemctl enable --now nginx
# включить автоматические обновления безопасности
apt-get install -y unattended-upgrades
dpkg-reconfigure -f noninteractive unattended-upgrades
# Запустить bootstrap на свежем сервере
scp bootstrap.sh user@my-server:/tmp/
ssh user@my-server "sudo bash /tmp/bootstrap.sh"