Экспресс-курс · No. 25

«Облако» звучит абстрактно, но это просто аренда чужих компьютеров вместо покупки своих — и оплата только за то, что используешь, с масштабированием вверх и вниз по требованию. Serverless идёт дальше: ты вообще перестаёшь думать о машинах и просто запускаешь свой код. Выучи слова, и облако перестанет быть модным словом и станет ясным набором разменов между удобством, контролем и стоимостью.

Только суть · Один образ на идею · Выучи слова

§ 01

Сними мистику — и облако окажется простой бизнес-идеей: использовать компьютеры, которыми не владеешь. Всё остальное — детали о том, сколько работы владелец делает за тебя.

Облако — это просто чужие компьютеры

Такси вместо покупки машины: автомобиль реален и поездка реальна, но ты не владеешь, не паркуешь, не страхуешь и не обслуживаешь его — ты просто используешь, когда нужно.

Облако (cloud) — это компьютеры в чужом дата-центре, что ты арендуешь через интернет, вместо того чтобы покупать и гонять свои. Когда твоё приложение работает «в облаке», оно работает на реальных, физических машинах — они просто принадлежат провайдеру вроде Amazon, Google или Microsoft, что заведует зданием, питанием, железом. Ты получаешь вычислительную мощь как услугу, как получаешь электричество, не владея электростанцией.

Аренда бьёт покупку для большинства

Ты не строишь электростанцию, чтобы запитать дом, — ты подключаешься к сети и платишь за то, что используешь. Владеть всей станцией имеет смысл только в огромном масштабе.

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

По требованию: получи ресурсы за секунды

Открываешь кран — и вода течёт мгновенно: не ждёшь недели поставки, нет водопроводного проекта. Подача там в тот миг, как ты просишь.

Определяющая черта — что ресурсы по требованию (on-demand): можно поднять новый сервер, базу или целую среду за секунды парой кликов или строкой кода и выключить так же быстро. Сравни с заказом, ожиданием и установкой физического железа. Этот мгновенный, самообслуживаемый доступ и делает облако меньше похожим на покупку машин и больше на открытие крана — ёмкость, когда бы ты ни попросил.

Облако — это аренда чужих компьютеров по требованию вместо покупки своих. Ты превращаешь огромную предоплату в оплату по факту и получаешь ёмкость за секунды.

§ 02

Облачные сервисы идут слоями, различаясь одним: сколько управляет провайдер против того, сколько ты. Три аббревиатуры называют главные точки на этом спектре.

Спектр: сколько они гоняют за тебя

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

Облачные предложения сидят на спектре от «ты управляешь почти всем» до «ты управляешь почти ничем». На одном конце ты арендуешь сырые машины и делаешь остальное; на другом просто используешь готовый софт. Знаменитый способ запомнить — «пицца как услуга»: сделать с нуля, взять-и-запечь или заказать с доставкой. Три именованных слоя — IaaS, PaaS, SaaS — это точки вдоль этой линии.

IaaS и PaaS: сырые машины или готовая платформа

Аренда пустой мастерской, где ты сам ставишь каждый инструмент (IaaS), против полностью оснащённой мастерской, куда ты просто приносишь свой проект и начинаешь (PaaS).

IaaS (Infrastructure as a Service) арендует тебе сырые строительные блоки — виртуальные машины, хранилище, сеть — а ты ставишь и управляешь всем сверху: максимум контроля, максимум работы. PaaS (Platform as a Service) вручает тебе готовую среду, где ты просто деплоишь свой код, а провайдер гоняет серверы, масштабирование и патчинг под низом: меньше контроля, куда меньше работы. Выбор — это сколько сантехники ты хочешь держать своей.

SaaS: готовый софт, что просто используешь

Ты не выращиваешь пшеницу и не печёшь, чтобы получить сэндвич в кафе, — ты просто заказываешь и ешь. Кто-то другой сделал каждый шаг, прежде чем он дошёл до тебя.

SaaS (Software as a Service) — это дальний конец: готовый софт, что ты просто используешь через интернет, а провайдер гоняет абсолютно всё — Gmail, Slack, твой CRM. Ты не управляешь ничем, кроме своих данных и настроек. Большинство софта, что ты используешь ежедневно, — это SaaS. Как строитель ты потребляешь SaaS для частей, что не хочешь строить, и строишь на IaaS или PaaS для частей, что являются твоим продуктом. Знать слой говорит, кто за что отвечает.

Облачные слои различаются тем, сколько провайдер гоняет за тебя: IaaS — сырые машины, что ты управляешь, PaaS — готовая платформа под твой код, SaaS — готовый софт, что просто используешь.

§ 03

Суперсила облака в том, что ёмкость не фиксирована. Она растёт и сжимается с твоей нуждой, и ты платишь за то, что используешь, — что подарок и, если небрежен, ловушка.

Эластичность: масштабируйся вверх под всплеск, вниз после

Концертная площадка, что могла бы добавить тысячу мест на большой вечер и убрать их следующим утром, — ёмкость, что совпадает с толпой, никогда не растрачена на пустой зал.

Эластичность (elasticity) — это способность облака добавлять ресурсы, когда спрос всплёскивает, и убирать их, когда падает. Распродажа, вирусный момент, занятой час — облако поднимает больше серверов, чтобы справиться, потом сворачивается после, так что ты не платишь за ёмкость, что не нужна. С собственным железом пришлось бы купить под свой занятейший момент и дать простаивать остальное время. Эластичность совпадает то, что ты гоняешь, с тем, что реально нужно, минута за минутой.

Оплата по факту: счётчик, а не покупка

Счёт за коммуналку: ты платишь за электричество, что реально использовал в этом месяце, а не фиксированную плату за владение сетью. Используй больше — плати больше; используй ничего — плати ничего.

Облако выставляет счёт как коммуналка: оплата по факту (pay-as-you-go), беря за вычисления, хранилище и трафик, что ты реально потребляешь. Нет предоплаты, нет платы за простаивающую ёмкость — счётчик крутится, только пока ты используешь ресурс. Это и делает облако доступным: можно начать крошечным и дешёвым, и твои расходы растут с использованием, а не являются огромной ставкой, сделанной до того, как у тебя есть хоть один клиент. Счёт отслеживает реальность.

Счётчик режет в обе стороны

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

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

Эластичность масштабирует ёмкость вверх под всплески и вниз после; оплата по факту берёт только за то, что используешь. Тот же счётчик, что экономит деньги, может накрутить шок-счёт — так следи за ним.

§ 04

Облако — не одно место, а дата-центры, разбросанные по миру. Где работают твои вещи, влияет и на то, как быстро это ощущается, и на то, как хорошо это переживает сбой.

Регионы размещают вычисления по всему миру

Служба доставки со складами на каждом континенте отгружает каждому клиенту с ближайшего — быстрее для всех, чем слать всё из единого хаба.

Провайдеры гоняют дата-центры в регионах (regions) по всему земному шару. Ты выбираешь, где твоё приложение работает, и размещение его в регионе рядом с пользователями срезает задержку (latency) — данным меньше расстояния ехать, так что приложение ощущается быстрее. Европейское приложение, обслуживаемое из европейского региона, бьёт обслуживаемое через океан. Выбор региона — это географический рычаг: размести свои вычисления и данные близко к людям, что их используют.

Зоны доступности переживают сбой

Банк, держащий копии своих записей в нескольких отдельных зданиях, — если одно затопит, другие продолжают, и ничто не потеряно. Избыточность — в этом весь смысл.

Внутри региона есть несколько зон доступности (availability zones) — физически отдельных дата-центров, — так что можно гонять копии своей системы через них. Если одна зона теряет питание или отказывает, другие продолжают обслуживать, и твоё приложение остаётся живым. Это избыточность (redundancy): ни одно здание, машина или зона не являются фатальной единой точкой отказа. Размазывание по зонам — это как облачные системы достигают высокой доступности (availability), оставаясь живыми сквозь сбои, что положили бы единое место.

Рядом с пользователем и устойчиво к сбою

Магазин с филиалами в каждом городе, и каждый филиал подкреплён вторым неподалёку, — близко к клиентам и крепко против того, чтобы любое одно место погасло.

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

Регионы размещают твои вычисления рядом с пользователями, срезая задержку; зоны доступности размазывают их по отдельным дата-центрам ради избыточности — близко к людям, устойчиво к любому одному сбою.

§ 05

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

Дай провайдеру гонять трудные части

Сервисная квартира, где кто-то другой заведует сантехникой, отоплением и ремонтом, — ты просто живёшь там, вместо того чтобы быть своим же управдомом.

Управляемый сервис (managed service) — это инфраструктура, что провайдер гоняет за тебя, — управляемая база, очередь сообщений или кэш, — заведуя настройкой, масштабированием, бэкапами, патчингом и переключением при отказе. Ты используешь её через интерфейс и никогда не трогаешь машины под низом. Вместо того чтобы стать экспертом в надёжной эксплуатации базы в масштабе, ты арендуешь эту экспертизу. Провайдер делает негламурную, трудную операционную работу, а ты получаешь возможность готовой к использованию.

Меньше эксплуатации, больше фокуса на продукте

Владелец фудтрака, что покупает хлеб в пекарне вместо того, чтобы молоть муку, — он фокусируется на блюдах, что и есть его реальный бизнес, а не на том, чтобы стать ещё и пекарем.

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

Удобство против контроля и привязки

Набор-полуфабрикат чудесно удобен — пока ты не захочешь сменить один ингредиент и не обнаружишь, что набор решает рецепт. Удобство оплачено контролем.

Размен реален: управляемый сервис отдаёт часть контроля и привязывает тебя к манере того провайдера — и чем глубже ты принимаешь их конкретные сервисы, тем труднее уйти, а это привязка к вендору (vendor lock-in). Ты выбираешь удобство и скорость сейчас против гибкости и независимости потом. Часто это верный ход — но делай его осознанно, держа по-настоящему критичные куски сменными, — то же суждение, что и выбор между управляемым API и самохостингом.

Управляемые сервисы дают провайдеру гонять базу, очередь или кэш, чтобы ты фокусировался на продукте, а не на эксплуатации. Размен — меньше контроля и некоторая привязка к вендору.

§ 06

Дальнейший шаг «не управляй машинами» — serverless: ты предоставляешь только свой код, а облако гоняет его по требованию, масштабируя и беря плату за запрос. Это мощно для правильной формы работы.

Serverless: только твой код, никаких серверов на уме

Переговорка, что ты бронируешь на полчаса: ты не владеешь ею, не отапливаешь и не убираешь — ты просто приходишь, используешь, и она уходит из твоей головы в тот миг, как ты выходишь.

Serverless даёт гонять код, не управляя вообще никакими серверами. Ты вручаешь провайдеру функцию — маленький кусок кода — и он гоняет эту функцию, когда бы её ни запустили, незримо заведуя всеми машинами, масштабированием и ёмкостью. Серверы, конечно, всё ещё есть; ты просто никогда о них не думаешь. Это логичный конец облачного пути: от владения машинами, к их аренде, к тому, чтобы даже не знать о них.

Оно масштабируется до нуля и берёт плату за запрос

Свет с датчиком движения: выключен и не стоит ничего, когда комната пуста, мгновенно включается в миг, как кто-то входит. Ты платишь за свет, только пока он реально горит.

Serverless масштабируется до нуля (scales to zero): когда никто не использует твою функцию, ничто не работает и ты платишь ноль; когда запросы льются, оно автоматически поднимает столько копий, сколько нужно. Тебе выставляют счёт за запрос и за долю секунды вычислений, а не за простаивающий сервер, что ждёт без дела. Это идеально для всплесковой, эпизодической или непредсказуемой работы — ты получаешь беструдное масштабирование и платишь ноль в тишине, чего постоянно работающий сервер не может.

Размены: холодные старты и пригодность

У того света с датчиком движения есть крошечное мерцание задержки при включении, — нормально для коридора, раздражает, если нужна была мгновенная, постоянная яркость.

Serverless не свободен от разменов. У функции, что простаивала, есть холодный старт (cold start) — краткая задержка, пока провайдер её поднимает, — что может вредить чувствительной к задержке работе. Оно подходит коротким, событийным задачам лучше, чем долгоиграющим или ровным высокотрафиковым, где постоянно работающий сервер может быть проще и дешевле. И оно опирается на сервисы конкретного провайдера, так что привязка применима. Serverless — острый инструмент для правильной задачи (всплесковой, событийной, масштабируй-до-нуля), а не универсальный дефолт.

Serverless гоняет только твой код, масштабируясь до нуля и беря плату за запрос, — идеально для всплесковой, событийной работы. Следи за холодными стартами и привязкой; это острый инструмент, а не дефолт.

§ 07

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

Подбери модель под нужду

Ты не используешь грузовик для доставки детей в школу или велосипед для переезда дома — ты выбираешь транспорт, что подходит поездке, а не один дефолт на всё.

Единого верного слоя нет. Используй SaaS для возможностей, что не твой продукт, управляемые сервисы, чтобы сгрузить недифференцирующий тяжёлый труд, serverless для всплесковой событийной работы и сырые машины, когда нужен полный контроль. Навык — подбирать каждую часть своей системы под модель, что подходит её нуждам: контроль там, где важно, удобство там, где нет. Хорошая облачная архитектура обычно намеренная смесь, а не одна модель, применённая везде.

Следи за счётом и опасайся привязки

Аренда освобождает, пока ты не перестаёшь читать выписки, — а самая комфортная аренда та, что устроена так, чтобы ты никогда не съехал.

Две вещи стабильно кусают облачных пользователей. Первое — счёт: лёгкие ресурсы по требованию означают, что расходы могут подкрадываться или всплёскивать незаметно, так что ты мониторишь траты, как мониторишь производительность. Второе — привязка (lock-in): чем глубже ты вшиваешься в уникальные сервисы одного провайдера, тем труднее и дороже уйти. Ни то ни другое не значит «избегай облака» — они значат «используй его с открытыми глазами»: отслеживай счётчик и не давай по-настоящему критичным, переносимым кускам стать навсегда приваренными к одному вендору.

Прежде чем строить в облаке
  • Арендовать или владеть — подходит ли «по требованию, по факту» лучше покупки железа? - Какая модель на каждый кусок — IaaS, PaaS, SaaS, serverless — под нужный контроль? - Масштабируется ли это эластично со спросом, вверх под всплески и вниз после? - Регион и зоны — вычисления рядом с пользователями, размазаны ради устойчивости? - Управляемый или самогоняемый — эксплуатация этой части реально моя ценность? - Счёт и привязка — мониторю ли я траты и держу ли критичные куски переносимыми?
Слова, которыми ты теперь владеешь
  • cloud / on-demand — аренда чужих компьютеров, доступная за секунды. - IaaS / PaaS / SaaS — сырые машины, готовая платформа, готовый софт. - эластичность / оплата по факту — масштабирование со спросом и счёт за то, что используешь. - регион / зона доступности / избыточность / доступность — размещение ради скорости и переживания сбоя. - управляемый сервис — инфраструктура, что провайдер гоняет за тебя. - serverless / масштаб до нуля / cold start — только твой код, по требованию, с задержкой запуска. - vendor lock-in — цена привязки к конкретным сервисам одного провайдера.
Признаки, что ты используешь облако хорошо
  • Ты арендуешь по требованию и платишь за использование вместо покупки под занятейший час. - Каждый кусок использует модель, что подходит, — от сырых машин до serverless. - Твоя система масштабируется эластично и работает в регионах рядом с пользователями, размазана по зонам. - Ты сгружаешь недифференцирующую работу управляемым сервисам и фокусируешься на продукте. - Ты мониторишь счёт и держишь критичные куски переносимыми против привязки.

Облако — это аренда вычислений по требованию, слоями от сырых машин до serverless. Применяй его хорошо, подбирая каждый кусок под правильную модель, — и держа глаз на счёте и привязке.

Конец экспресс-курса · 7 глав · выучи слова

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