В последнее время мы довольно часто слышим термин «беcсерверные вычисления». Данная архитектура набирает обороты стабильными темпами и становится популярнее с каждым днем.
С учетом сказанного, что именно мы подразумеваем под беcсерверной архитектурой? Чем она отличается от существующих моделей, уже имеющихся у нас? Что еще более важно, вычисления действительно работают без сервера?
Вполне естественно задавать множество вопросов о беcсерверной архитектуре. Несмотря на то, что она существует уже довольно давно, многие предприятия и агентства все еще обходят ее стороной.
В этой статье мы узнаем больше об архитектуре без серверов, чтобы лучше понять, что это такое и как она может пригодиться.
Что такое беcсерверная архитектура?
Прежде чем идти дальше, давайте проясним один основной момент – сам термин «беcсерверный» является неправильным.
С практической точки зрения, бессерверная архитектура относится к модели облачных вычислений, в которой поставщик услуг может динамически контролировать распределение ресурсов по мере необходимости.
Вот что сказано в Википедии:
Бессерверные вычисления – модель облачных вычислений, в которой платформа динамично руководит выделением машинных ресурсов. Иногда бессерверные вычисления также называют «Функция как услуга», потому что единицей кода является функция, которая выполняется платформой. По сути, для выполнения каждого запроса создается отдельный контейнер, который уничтожается после выполнения.
Теперь давайте попробуем лучше понять концепцию бессерверных вычислений.
Проще говоря, бессерверная архитектура – это метод предоставления доступа к услугам сервера по мере использования. Это означает, что если пользователь подписывается на бессерверный план, с него взимается плата в зависимости от его использования. Нет необходимости платить за фиксированный объем выделенной пропускной способности или места для хранения.
Другими словами, если вашему приложению требуется более интенсивное использование сервера в данном биллинговом цикле, цены будут отличаться от тех, которые могут потребовать минимального использования ресурсов сервера. Такая масштабируемость лежит в основе бессерверной архитектуры и бессерверных вычислений.
Теперь давайте сравним это с традиционной моделью управления сервером. Как правило, пользователи должны платить за определенную пропускную способность и ресурсы сервера, которые может использовать их приложение или веб-сайт. Такие ограничения редко пересекаются пользователем, что фактически означает, что они платят за ресурсы сервера, которые они не используют в полной мере.
С другой стороны, в бессерверном сценарии пользователь платит за фактически используемые ресурсы. При масштабируемой настройке нет никакого опасения когда-либо «перешагнуть» выделенные ресурсы, а также нет необходимости заблаговременно рассчитывать, сколько пропускной способности потребуется для проекта. Все это делается в реальном времени, и разработчикам не нужно беспокоиться о ресурсах на стороне сервера.
Что делает серверную архитектуру лучше?
Еще раз, стоит отметить, что бессерверная вычислительная структура не означает, что сервер отсутствует. Фактически, физический сервер действительно присутствует, хотя его ресурсы распределяются динамически. Совершенно очевидно, что никакое оборудование не может существовать без физического присутствия, не так ли?
При установке без сервера разработчикам не нужно беспокоиться об управлении сервером или фиксированном пуле ресурсов. Они могут просто начать создавать свои приложения, и по мере того, как и когда растет их приложение, увеличивается и их квота ресурсов.
Давайте теперь посмотрим на некоторые из основных преимуществ бессерверных вычислений:
Масштабируемость и гибкость
Самое большое преимущество – это ее масштабируемость. Бессерверная архитектура может использоваться для увеличения или уменьшения в соответствии с требованиями проекта. Это дает конечному пользователю больший контроль над своими счетами, а администратор сервера может использовать большую гибкость при распределении ресурсов и управлении ими.
Бессерверные приложения являются масштабируемыми во всех смыслах этого термина. Нужно запустить несколько экземпляров функции? Сервер может запускать экземпляры, а затем завершать так же, как и в случае необходимости, при сохранении эффективного использования ресурсов.
Традиционная архитектура часто перегружена вследствие резкого увеличения использования ресурсов. При бессервеной архитектуре таких проблем не существует, так как сам сервер настроен так, что он может легко обрабатывать скачки трафика. Вот почему на не облачных и не-бессерверных платформах внезапный всплеск трафика часто приводит к ошибкам сервера для пользователей. На бессерверной платформе такие ошибки отсутствуют.
Снижение затрат
Помимо этого, серверная архитектура почти всегда дешевле и экономичнее в долгосрочной перспективе. Поскольку вы платите только за те ресурсы, которые фактически используете, и не связаны каким-либо произвольным лимитом, установленным серверной компанией, вы можете контролировать практически все аспекты своих счетов.
В традиционном серверном сценарии вы должны заранее рассчитать, какая пропускная способность и другие ресурсы вам могут понадобиться. Затем вы должны оплатить указанную квоту авансом. Поэтому, если вы считаете, что можете использовать 500 ГБ в месяц, вы должны заплатить за 500+ ГБ, имея в виду, что разумнее будет заплатить за дополнительное ассигнование, которое в итоге будет превышать ожидаемую сумму ресурсов. Даже если ваше приложение использует едва 200 ГБ, вы все равно платите полную квоту (500+ ГБ).
Однако в бессерверном мире вам не нужно ничего этого делать. Вместо этого вы можете просто платить по мере необходимости, в зависимости от требований вашего кода и приложения. Поэтому, если ваше приложение использует всего 50 ГБ в этот месяц и 1000 ГБ в следующем, вы платите за фактические ограничения использования, а не за квоту или план.
Простое развертывание
Бессерверный экземпляр может быть развернут в течение нескольких минут. Все, что нужно сделать – это нажать несколько кликов. Нет необходимости загружать объемный код на сервер или настраивать многослойный производственный стек.
Фактически, серверные вычисления рассматривают код как совокупность функций и методов. Для сравнения, традиционная архитектура часто рассматривает приложения как монолитный стек. Таким образом, в мире без серверов код можно легко обновлять, модифицировать, настраивать или редактировать по мере необходимости, без необходимости «выключать сервер» или заниматься длительными простоями. Вот почему разработчики нередко продолжают обновлять свой код по одной функции, одновременно выполняя свое приложение.
Вывод
Бессерверная архитектура имеет различные преимущества. При правильной реализации она может упростить жизнь как конечным пользователям, так и разработчикам, поскольку приложения могут быть развернуты в несколько кликов и легко масштабируемы в соответствии с потребностями и требованиями разработчиков. Кроме того, снижаются эксплуатационные расходы и нет строгих ограничений на ресурсы.
Однако, с учетом всего сказанного, есть ли у бессерверных вычислений недостатки?
В некоторых случаях бессерверная архитектура может оказаться проблематичной. Это особенно важно, если рассматриваемый проект или приложение требует более интенсивной отладки на стороне сервера. Поскольку разработчики на самом деле не имеют абсолютного доступа к бэкэнду, отладка на стороне сервера становится сложной задачей в бессерверных вычислениях.
Что еще более важно, если производитель сервера и поставщик услуг не в курсе последних практик безопасности, целостность всей архитектуры могут быть поставлены под угрозу. Поскольку разработчики не имеют доступа к бэкэнду, они могут только проверять безопасность своих функций и объектов кода. Безопасность и усиление серверной части и самого сервера зависит от поставщика услуг. Любая приличная компания по управлению серверами гарантирует, что ее серверы и бессерверная архитектура будут полностью защищены и оснащены последними исправлениями системы безопасности. Таким образом, стоит тщательно выбрать правильного поставщика услуг с самого первого дня.
В конечном итоге бессерверные вычисления имеют больше преимуществ, чем недостатков. Это довольно новая концепция, которая может уменьшить проблемы производительности, а также эксплуатационные расходы. В результате неудивительно, что все больше и больше разработчиков обращаются к бессерверным вычислениям для своих приложений.