Что лучше - облако или vds/vps?
По мотивам недавнего обсуждения в одном из чатов сформулировал особенности построения инфраструктуры на основе облачных провайдеров перед вариантом держать сервера у себя / dedicated у классического хостера, и что из этого я считаю лучшим выбором. Под облачными провайдерами подразумеваю aws/gcp/yandex cloud/аналогичные.
Т.к. мне всегда больше были интересны инди/стартапы/небольшие компании, то и здесь моя точка зрения смещена в их сторону.
Основные преимущества облачных провайдеров сейчас фактически такие:
1) Быстрое масштабирование (например, если пошло резкое увеличение трафика после маркетинговой компании) - есть возможность автоматического масштабирования инфраструктуры практически без лишних кликов. Если же строить инфраструктуру самостоятельно, то это сделать возможно, но сложнее, и в любом случае есть предел.
2) Резервирование данных и инфраструктуры. В частности, в AWS много чего резервируется автоматически без дополнительных усилий. Например, при использовании каких-нибудь DynamoDB/BigTable данные будут многократно дублироваться на случай отказа в разных ЦОДах. Также легко можно настроить дублирование для разных регионов планеты, если хочется оптимизировать пользовательский опыт. При самостоятельном же построении инфраструктуры на дедиках - придется самостоятельно настраивать резервирование данных и серверов и следить за этим (см. 3 пункт).
3) Экономия на обслуживающем персонале. При использовании managed базы - не нужно следить, работает она или нет, хватает ли процессора/диска/памяти - провайдер все это делает сам и у него для этого есть крутые профессионалы. Однако эта экономия достигается на масштабе, т.к. в любом случае и при построении инфраструктуры в облаке какой-то девопс (хотя бы на парт-тайме) все же понадобится.
При этом, хотя многие провайдеры декларируют еще и преимущество экономии, оно обычно актуально только для крупных компаний с обширной инфраструктурой, либо для проектов с очень нерегулярной нагрузкой (например, продажа доступа к файлам с контентом, или распродажа/фестиваль - тут дешевле положить три файла в s3 и захостить serverless-бэкенд, чем поднимать vds/vps со всей обвязкой и держать ее 24/7).
AWS раньше еще часто декларировал преимущество быстрого развертывания (в несколько минут/секунд), но, на мой взгляд, сейчас оно устарело, т.к. быстро развертывать ресурсы умеют и многие обычные хостеры.
Итого, если у вас стартап/средняя компания на несколько десятков сотрудников, которая еще не приносит сотни тысяч/миллионы долларов в месяц, скорее всего, эти преимущества - масштабирование, резервирование, экономия на обслуживающем персонале, вам и не нужны. Даже если будет огромный скачок трафика и сервера будут лежать аж целых два часа, или потеряются данные 100 юзеров из тысячи - это не критичная проблема. Так что для таких компаний куда проще, удобнее и дешевле строить инфраструктуру классическим способом, на выделенных серверах/виртуалках/своем железе. Это даст нам следующие преимущества:
1) Экономия. Более того, это экономия со звездочкой. Думаю, все читали истории о стартаперах/инди-разработчиках, которым после месяца оплаты за $120 внезапно прилетал счет на $20 000 из-за неправильно настроенных или отсутствующих лимитах и пошедшему большому трафику (внимание пользователей/ddos/что-то еще). С кейсом своей инфраструктуры это невозможно, т.к. мы всегда платим фиксированную сумму за месяц, не больше и не меньше (есть нюансы с трафиком, но все зависит от контекста).
2) Гибкость. В любой момент всю инфраструктуру можно будет относительно безболезненно перенести к другому провайдеру. В отличие от кейса, когда мы используем максимальное количество провайдер-специфичных сервисов (DynamoDB, BigTable, Lambda, Fargate) - перенос к другому провайдеру будет или невозможен, или потребует огромное количество ресурсов и времени на переписывание кода.
При этом для крупных компаний расклад уже будет другим. Например, если есть требования по автомасштабированию по нагрузке, гарантированной сохранности данных и аптайм в 99.9999% (потому что иначе пользователи уйдут к конкуренту или выкатят судебные иски) - вполне вероятно, что при подсчете окажется, что перенести всю инфраструктуру в AWS и нанять несколько девопсов окажется дешевле, чем держать полностью свое железо и штат администраторов.