open atlas
↑ К треку
Деплой и инфра DEP · 00 · 01

С нуля: что такое деплой на самом деле

Деплой — это превратить код с твоего ноутбука в нечто, что надёжно работает для незнакомцев на машинах, которых ты никогда не коснёшься. Это карта «с нуля» и восемь слов, которые остальной трек считает уже знакомыми.

DEP Основы ◷ 10 min
Уровень
ОсновыJuniorMiddleSenior

Твоё приложение работает. Ты набрал npm run dev, открыл localhost:3000 — и вот оно. Теперь незнакомцу на другом континенте тоже нужно его открыть — в три ночи, пока ты спишь, на машине, которую ты никогда не видел и не увидишь. Ничего с твоего ноутбука ему не поможет: ни установленная версия Node, ни переменные окружения, ни база данных, запущенная в соседней вкладке терминала. Всё, чему учит этот трек, существует, чтобы закрыть этот разрыв — между «работает у меня» и «работает у всех, без меня». Этот урок — карта перед восхождением.

Единственная проблема, которую решает деплой

На твоём ноутбуке программа опирается на сотню невидимых вещей: точную версию рантайма, уже скачанные библиотеки, файлы в нужных папках, секреты в твоём shell, базу, которую ты поднял руками. «Работает у меня» — правда и при этом бесполезно: ничего из этого контекста не путешествует вместе с кодом. Деплой — это дисциплина заставить программу нести свой контекст с собой, чтобы она вела себя одинаково на голом сервере в дата-центре и на твоём столе. Сделаешь правильно — машину можно заменить, размножить или перенести без сюрпризов. Сделаешь неправильно — каждый сервер станет уникальной снежинкой, которую умеет оживить только один человек.

Всё остальное — детали поверх одной идеи: сделай запуск воспроизводимым, затем сделай так, чтобы он выживал.

Восемь слов, которые остальной трек считает знакомыми

Senior-уроки дальше используют эти термины, не останавливаясь на определениях. Когда ты натолкнёшься на урок, где написано «оркестратор перезапускает контейнер», тебе нужно уже знать, что значат оба слова — иначе два незнакомца встают в стек и объяснение теряет тебя. Вот они, по одному предложению — что это и зачем оно.

СловоЧто этоЗачем оно
Image (образ)Замороженный снимок приложения и всего, что нужно для запуска.Чтобы те же байты работали везде — без «сначала поставь 12 штук».
Container (контейнер)Запущенная копия образа, изолированная от остальной машины.Чтобы много приложений делили один сервер, не мешая друг другу.
Registry (реестр)Склад, куда ты пушишь образы, а серверы их оттуда тянут.Чтобы машина, которая собирает, и машина, которая запускает, были разными.
Orchestrator (оркестратор)ПО (например, Kubernetes), запускающее контейнеры на многих машинах.Чтобы при смерти одной машины приложение жило на остальных.
Rollout (выкатка)Постепенная замена работающей версии на новую.Чтобы плохой деплой поймать и откатить до того, как его увидят все.
IaC (инфраструктура как код)Серверы и сети, описанные в файлах, а не накликанные в консоли.Чтобы настройку можно было ревьюить, повторять и не держать в одной голове.
Secret (секрет)Пароль, токен или ключ, который нужен приложению, но не должен утечь.Чтобы креды подставлялись на запуске, а не вшивались в образ или git.
Load balancer (балансировщик)Парадная дверь, распределяющая входящий трафик по многим копиям.Чтобы ни одна копия не захлебнулась, а мёртвую копию обходили.

Как они складываются вместе

Прочитанные по порядку, слова рассказывают одну историю: ты собираешь код в image, пушишь его в registry, а orchestrator тянет его на серверы и запускает из него контейнеры. Rollout меняет старые контейнеры на новые по чуть-чуть. Load balancer отправляет каждого пользователя к живому контейнеру. Секреты выдаются контейнерам на старте, а сами серверы созданы из IaC-файлов. Это одно предложение — весь трек в миниатюре; каждый следующий юнит увеличивает один из шагов.

Почему это работает

Почему просто не скопировать файлы на сервер через scp и не запустить, как в старые времена? Потому что такой сервер медленно дрейфует: кто-то зашёл по SSH, поставил пакет, чтобы потушить пожар, — и теперь он уникален. Через полгода никто не сможет его воссоздать. Образы и IaC существуют, чтобы убить дрейф: машина становится одноразовой, потому что всё её определение живёт в файлах, из которых её можно пересобрать с нуля за минуты.

Это не нужно зубрить

Две честные ремарки перед восхождением. Первая: никто не держит всё это в голове сразу в первый день — ты встретишь каждое слово снова, в глубине, в своём юните, и тогда оно уляжется. Эта страница — вешалка, на которую вешать детали, а не экзамен. Вторая: не каждому проекту нужно каждое слово. Крошечный пет-проект может быть одним контейнером на одной машине без оркестратора и балансировщика. Senior-трек учит полной картине, потому что этого требует продакшен под нагрузкой, — но «начни просто, добавляй части, когда заболит» и есть senior-инстинкт.

Викторина

Почему «работает у меня» недостаточно, чтобы выпустить софт?

Расставь шаги по порядку

Расставь путь от твоего кода до запроса пользователя, который до него доходит:

  1. 1 Собрать код в image (теперь он несёт свой контекст)
  2. 2 Запушить image в registry
  3. 3 Orchestrator тянет image на серверы и запускает контейнеры
  4. 4 Load balancer направляет запрос пользователя к живому контейнеру
Вспомните перед уходом
  1. 01
    В одном дыхании: какую проблему решает деплой и в чём ядро техники?
  2. 02
    Проследи путь от исходного кода до запроса пользователя, называя каждую часть.
Итог

Деплой — это одна идея с кучей навешанной механики: заставь код нести свой контекст, чтобы он работал одинаково на машине, которой ты не управляешь, и удержи его работающим, пока ты спишь. Воспроизводимая половина — это image, замороженный снимок приложения и зависимостей, хранящийся в registry, чтобы машина-сборщик и машина-исполнитель могли различаться. Половина выживания — всё, что держит его живым под нагрузкой: orchestrator запускает и перезапускает контейнеры на многих серверах, rollout меняет версии постепенно, чтобы ошибки ловились рано, load balancer распределяет трафик по живым копиям, секреты подставляются на запуске, а сами серверы описаны как код, так что ни один из них не является незаменимой снежинкой. Тебе не нужно держать все восемь слов сразу — у каждого впереди свой юнит. Теперь, когда встретишь вакансию с «опытом работы с контейнерной оркестрацией» или пост-мортем, в котором виновен «дрейф образа», ты будешь знать, какой слой сломался и за каким словом тянуться дальше.

Что-то непонятно?

Задай вопрос по этому уроку. Вопросы анонимны и попадают напрямую автору — урок станет лучше.

хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources4
expand
  1. 01
  2. 02
  3. 03
  4. 04

Trademarks belong to their respective owners. Editorial reference only.