Раздел 14 · Infrastructure / DevSecOps

Основы инфраструктуры: VPS, провайдеры, отказоустойчивость

junior~20 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

Основы инфраструктуры: VPS, провайдеры, отказоустойчивость

Первый урок раздела. Прежде чем говорить про Kubernetes и SRE, нужна карта: что такое облако, чем VPS отличается от managed-сервиса и что значит “отказоустойчивый” на самом базовом уровне. Без этой карты легко заплатить за лишнее или, наоборот, поставить базу с деньгами на дешёвую виртуалку без бэкапов. Цель урока это понять лестницу абстракций и где на ней стоять для конкретной задачи.

Идея: лестница абстракций и граница ответственности

Вся инфраструктура это лестница. Чем выше ступень, тем меньше ты управляешь руками, и тем больше делает провайдер. И тем дороже за единицу, но дешевле по затраченному времени.

  1. Своё железо: ты отвечаешь за всё, от электричества до ядра.
  2. VPS / VDS: арендуешь виртуальную машину, ставишь ОС и софт сам.
  3. Managed-сервис (DBaaS, managed Kubernetes): провайдер держит саму базу или кластер, ты только пользуешься.
  4. Serverless: ты даёшь только код, остальное (серверы, масштаб) не твоя забота.

Ключевое понятие здесь это граница ответственности: кто чинит, когда сломалось. На VPS упавшую базу поднимаешь ты в три часа ночи. На managed-базе это забота провайдера, и за это ты и платишь сверху. Junior часто экономит деньгами там, где стоило сэкономить своим сном и нервами.

Что ты реально арендуешь

Запрос пользователя проходит несколько слоёв, и за каждый кто-то платит:

  • Вычисления: процессор и память (EC2, VPS, контейнерная платформа).
  • Хранение: диски и объектное хранилище (S3 и аналоги) для файлов, бэкапов, статики.
  • Сеть: DNS, балансировщик, исходящий трафик.
  • Управляемые сервисы: база данных, очередь, кэш как сервис.

Типичный минимальный прод для пет-проекта или раннего стартапа это одна VPS под приложение плюс managed-Postgres. Это сознательный компромисс: приложение дешёвое и под твоим контролем, а самую критичную часть, базу с данными, отдаёшь профессионалам с бэкапами и репликацией из коробки.

Базовая отказоустойчивость

Два слова часто путают, а разница принципиальная.

  • Доступность это сколько процентов времени система отвечает.
  • Отказоустойчивость это способность пережить отказ компонента без падения целого.

Высокая доступность это следствие отказоустойчивости плюс быстрого восстановления. А отказоустойчивость покупается избыточностью: если узел один, его падение это твоё падение. Если узлов два за балансировщиком, падение одного это просто меньше мощности.

На самом базовом уровне даже одна VPS становится надёжнее с процесс-менеджером. pm2 или systemd поднимут упавший процесс автоматически и запустят его после перезагрузки сервера:

pm2 start app.js --name api
pm2 startup     # сгенерировать unit для автозапуска после ребута
pm2 save        # запомнить текущий список процессов

Это не настоящая отказоустойчивость (упадёт сама машина, и pm2 не поможет), но это первый и самый дешёвый шаг: процесс больше не лежит мёртвым до утра, когда ты заметишь.

Где деньги, там транзакции

Отдельное правило, которое не про инфраструктуру, а про данные: операции с деньгами и любым критичным состоянием должны идти в транзакции, чтобы при сбое посередине не остаться в полусделанном состоянии (списали, но не зачислили). Инфраструктура даёт избыточность снаружи, а транзакция даёт целостность внутри. Одно не заменяет другое.

дальше после входа

Урок целиком открыт всем, кто вошёл. Войди по своему email, чтобы читать дальше.

Вход пока по приглашению. Если хочешь учиться, напиши Vassiliy.