![](https://habrastorage.org/webt/jh/jq/7z/jhjq7z9cf6ep3g_jaxgfoy0ruls.png)
Недавно я посмотрела видео одного хорошего разработчика и ютубера, которое называется «Бессерверная бессмысленность». Мне понравились мысли автора, но я не согласна с некоторыми его высказываниями и хочу обсудить их в этой статье.
Ролик начинается с шутки: «В мире есть две вещи, которые я не понимаю, — девушки и бессерверные вычисления». Я ничего не знаю об отношениях этого разработчика с девушками, но прав ли он в отношении Serverless? Давайте рассмотрим его основные критические тезисы и обсудим возможные аргументы, защищающие бессерверные вычисления.
Спойлер: я верю в пользу Serverless. Просто нужно знать, когда и как использовать эту технологию.
Критика Serverless
Основным аргументом против бессерверных вычислений является их скорость. Или хорошо известная проблема холодного старта. Холодный старт — это задержка выполнения кода (может достигать до 1 секунды для таких языков, как JavaScript, Python, Go, Java, Ruby), которая происходит из-за необходимости выделения вычислительных ресурсов, извлечения кода и запуска контейнера со стороны провайдера.
Иногда речь действительно идет о миллисекундах. Возникает вопрос: неужели основным показателем успеха в отношении управления жизненным циклом приложения становится то, насколько быстро код выполняет свою задачу?
Как человек, который работал в IT и сталкивался с разработкой актуальных технологий, я не уверена, что именно метрика скорости является ключевой. Ведь есть еще такие критерии, как скорость циклов разработки, простота обслуживания, время окупаемости продукта, низкие затраты для конечного пользователя, снижение риска сбоев в работе за счет обеспечения бесперебойных IT-операций. Наконец, экономия времени разработчиков. Если задуматься, то бессерверные вычисления удовлетворяют всем этим критериям.
Что упускают разработчики? Настоящие преимущества Serverless
Если вы заботитесь о скорости выполнения кода до такой степени, что возможные 200 миллисекунд (до секунды) задержки неприемлемы для вашей работы, то бессерверные вычисления действительно могут вам не подойти, и это совершенно нормально. Однако это не повод называть Serverless бесполезной вещью. Каждый должен решить, насколько неприемлемы для него такие задержки.
Бессерверные вычисления — это действенный способ управления IT-инфраструктурой, особенно для компаний, у которых может не быть ресурсов для покупки собственной инфраструктуры и найма специалистов, которые бы обслуживали серверы 24/7.
В нашем блоге мы уже как-то писали о Serverless в подробном тексте. Также предлагаем вам опробовать бессерверные вычисления с помощью сервиса «Облачные функции». На странице продукта в Панели управления уже есть несколько примеров использования Serverless, а также шаблоны кода.
Низкая стоимость бессерверных вычислений может перекрыть все недостатки
В большинстве случаев, с которыми я сталкивалась, использование бессерверных вычислений на порядок дешевле, чем использование ресурсов, размещенных на собственном хостинге. Это справедливо не только для стоимости вычислительных мощностей как таковых. Более дешевым Serverless делает также то, что решение экономит время, необходимое для работы, масштабирования и обслуживания инфраструктуры. Вы ощутите реальную экономию средств, потому что вам не придется нанимать команду штатных системных инженеров. Хорошие специалисты стоят значительно дороже бессерверных вычислений.
Я не говорю, что бессерверные вычисления — это панацея и подходят для каждого. Если ваши рабочие нагрузки стабильны и у вас достаточно специалистов для управления инфраструктурой, возможно, вам действительно будет лучше работать на классических серверах.
Холодный старт можно нивелировать
Возвращаясь к вопросу о времени выполнения кода, проблема холодного запуска во многом от зависит от того, как вы пишете код и настраиваете Serverless.
В целом, существует немало способов смягчить холодный запуск, «подогрев» его. Так, можно запускать функции с некоторой периодичностью, чаще запускать сервис или держать часть контейнеров запущенными все время (если это позволяет провайдер). Эти действия обеспечат необходимую «теплую среду» для запуска функций.
Также некоторые провайдеры Serverless предлагают встроенные системы мониторинга, которые уведомляют о любом холодном запуске функций, чтобы вы могли оптимизировать этот процесс. Можно даже обеспечить синхронизацию с электронной почтой или такими рабочими средами, как Slack, — сообщения о холодном запуске функции будут приходить вам на почту.
Какая задержка приемлема для ваших рабочих нагрузок?
Хорошо, если вы знаете ответ на этот вопрос. Говоря о задержке, вызванной холодным запуском, речь обычно идет о миллисекундах. Во всех случаях использования, с которыми я сталкивалась в работе в качестве дата-инженера, задержки в повседневной работе не заметны.
Кроме того, продвинутые провайдеры позволяют создавать гибридную инфраструктуру, включающую бессерверные вычисления и серверы.
Бессерверные вычисления — это про «NoOps» и масштабируемость
Serverless позволяет вам быстрее генерировать пользу для бизнеса, поскольку провайдер облачных услуг берет на себя большую часть IT-операций. Выделяет вычислительные мощности, масштабирует кластеры под требуемую нагрузку, следит за безопасностью и обновлениях, заботится о целостности оборудования и так далее. Так как головной боли, связанной с управлением инфраструктурой, больше нет, можно сконцентрироваться на работе с клиентами. Разве это главное в конце концов?
Serverless высвобождает время высококвалифицированных инженеров, так что они могут сосредоточиться на решении бизнес-задач, а не на управлении кластерами.
В каких случаях использовать бессерверные вычисления особенно полезны
Представьте, что вы основали стартап. Сначала вам может не понадобиться значительная инфраструктура, и у вас может быть только один разработчик. Парадигма Serverless позволяет вам начать с малого и автоматически масштабировать ресурсы по мере роста вашего бизнеса с помощью модели затрат Pay-as-you-go (плата за реальное пользование).
Еще одна группа, которая может получить большую выгоду от бессерверных вычислений, — это малые предприятия, у которых нет крупного ИТ-отдела. Возможность управлять всем жизненным циклом приложения с помощью всего лишь одного DevOps-инженера (а не команды программистов) — это огромное преимущество бессерверных вычислений.
Если нагрузки на ваш сайт или приложение носят сезонный характер, Serverless — тоже отличный вариант. Например, если у вас бизнес в сфере электронной коммерции, вы, вероятно, испытываете пики нагрузки во время Черной пятницы и предновогодних дней. Бессерверная инфраструктура позволяет адаптировать потребление мощностей к таким ситуациям.
Также не все события в жизни можно предугадать. Представьте, что вы продаете дезинфицирующие средства для рук, иные антисептики, маски для лица и подобные товары в своем интернет-магазине. Затем случилась глобальная пандемия, и теперь ваши продукты нужны всем. С бессерверной инфраструктурой вы будете готовы к любой нагрузке.
Скорость выполнения кода против скорости циклов разработки
Нелишним будет учесть и скорость разработки продуктов. Во многих случаях бессерверные вычисления поддерживают микросервисную архитектуру, которая подразумевает более быстрые циклы разработки и относительную независимость компонентов архитектуры друг от друга.
Получается, что Serverless помогает быстрее выполнять итерации в цикле разработки и быстрее доставлять продукт конечному пользователю, что как раз компенсирует те миллисекунды задержек из-за периодических холодных запусков.
Недостатки Serverless, которые не были упомянуты в видео
Некоторые минусы бессерверных вычислений не были упомянуты в видео, и я хочу назвать их, чтобы дать вам полную картину без прикрас.
Несмотря на то, что в некоторых случаях бессерверные вычисления могут быть идеальным решением с точки зрения затрат, масштабируемости и управления инфраструктурой, это не панацея для всех.
- Существует риск вендор-лока. Провайдеры делают свои услуги настолько удобными и экономичными, что вы рискуете привязаться к конкретному поставщику облачных услуг.
- При сравнении бессерверных вычислений и физических ресурсов, размещенных на собственном хостинге, в первом случае у вас меньше контроля. Например, вы не можете подключиться по SSH к инфраструктуре, чтобы выполнить некоторую настройку вручную, также есть ограничения по типу инстансов.
- Если ваши политики безопасности и требования хранения информации не позволяют обрабатывать данные на общем клиенте в облаке, бессерверные вычисления могут вам не подойти.
- Дробление вашей ИТ-инфраструктуры на автономные микросервисы позволяет сократить циклы выпуска, но это создает проблему контроля и управления всеми микросервисами.
Вывод
В целом, использовать новые парадигмы в IT, такие как бессерверные вычисления или другие облачные сервисы, в той же логике, что и привычные нам «домашние» on-premises технологии, едва ли самая хорошая идея. Когда вы занимаетесь прямым «копипастгом» рабочих процессов с физической инфраструктуры в облако, вы теряете многие преимущества облачных сервисов, если вообще не лишаете их смысла.
Нет оснований ожидать, что какая-то технология будет применима ко всем бизнесам, не будет иметь недостатков и будет стоить дешево.
С моей точки зрения, мы не должны говорить о Serverless (как, впрочем, и о других IT-решениях) категорично, рассматривая только один аспект работы и игнорируя остальные. Бессерверные вычисления имеют смысл. Если вы знаете, когда и как их использовать.
![](https://habrastorage.org/webt/pe/ay/zf/peayzfh745-twugmjk-r2zg-plc.png)
Only registered users can participate in poll. Log in, please.
Пробовали Serverless?
6% Первый раз о нем прочитал(-а)6
19% Для моих задач не подходит19
19% Пробовал(-а), не зашло19
19% Использую, нравится19
37% Пока не очень понятно, как это использовать37
100 users voted. 23 users abstained.