Найти в Дзене
PHP Боярин

Облака, белогривые лошадки и полная коробка огурцов

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

Даже самые прогрессивные владельцы бизнесов рассматривали сайт как еще одну прикольную визитку. Такая визитка могла содержать название фирмы, контактные данные, иногда описание бизнеса. Никакой речи не шло о том, чтобы принимать заказы онлайн: даже просто прайс-лист на продукцию на сайте был невероятной редкостью (эту чудесную традицию некоторые владельцы бизнесов блюдут и по сей день). И занимался сайтом, разумеется, сын главного бухгалтера в свободное от учебы время.

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

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

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

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

Это называлось "shared-хостинг" и было невероятно популярно, потому что позволяло за небольшие деньги (кое-где даже вовсе бесплатно - за рекламу хостинга, автоматически вставляющуюся на страницы) делать простые сайты.

Главный плюс такого хостинга - его цена - для многих перекрывал многочисленные минусы:

  • нагрузка не балансировалась между пользователями на одном сервере, так что нагрузка на одного пользователя заставляла тормозить сайты соседей
  • часто получалось так, что в файлы соседа влезть все-таки было можно
  • набор программного обеспечения (версия php, системные библиотеки и т.д) - один на всех, ничего своего поставить нельзя

Получилась такая схема: производительные сайты занимали дорогие выделенные сервера, а мелочь довольствовалась shared-хостингом.

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

Вместо того, чтобы раскладывать пользователей по папочкам, каждому стали выделять виртуальное окружение, имитирующее выделенный сервер. Стало возможным ставить нужные версии программ, проблема с изоляцией пользователей тоже ушла в прошлое. Каждый получил свой администраторский доступ на собственный "сервер". И получилось недорого, потому что настоящий сервер по-прежнему остался один.

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

Взрослые дядьки, разумеется, тоже не сидели на месте и возглавили процесс. Самым известным сервисом хостинга на виртуальных машинах является Amazon. Он позволяет купить себе чуть-чуть вычислительного времени в любой конфигурации.

Это получило название облачного хостинга.

Хотите хранение данных? Вот вам сервис S3 для хранения. Хотите базу данных? Вот вам RDS. Хотите базу данных ключ-значение? DynamoDB к вашим услугам. Хотите распознавать лица на фото? Вот вам сервис, платите по доллару за пучок.

Все это можно очень гибко настраивать, в том числе автоматически через предоставленный интерфейс. Что позволяет решить еще одну проблему: сайт, внезапно получивший большое количество траффика, мог положить сервер, а заказывать новый дорого, и надо настраивать с нуля. В облачном хостинге (настроенном изначально правильно) нужно только нажать кнопку "прибавить ресурсов моему серверу" и распахнуть кошелек - за увеличенную нагрузку заплатить придется больше. Зато, когда наплыв посетителей уйдет, можно снова открутить ресурсы назад.

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

Казалось бы, вот он - рай на земле, победа разума над сарсапариллой.

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

На моей памяти случалось только два факапа, связанных с облачным хостингом. Зато каждый из них был грандиозен.

Первый факап: в 2018-м году Роскомнадзор блокировал Telegram, и под раздачу попали адреса облаков Amazon и Google. Пострадали тысячи добропорядочных владельцев сайтов, включая сервисы госорганизаций и крупный бизнес.

Ну бывает, что уж тут говорить...
Ну бывает, что уж тут говорить...

Второй факап разворачивается прямо у нас на глазах: в 2022-м перестали работать платежи картами за пределами России, часть сервисов (например, Google) перестали принимать платежи от граждан России. Внезапно оказалось, что у облака есть хозяин, и это не Робин Гуд.

Поэтому полезно помнить о том, что "облако" - на самом деле чей-то компьютер. В облако, помимо чисто технологических, встроены еще и политические риски, и даже разница курсов валют (если вы, конечно, зарабатываете не в той валюте, в которой платите за хостинг).

Иногда бывает разумно даже построить собственное мини-облако - тут уже важны нюансы.