Все облачные провайдеры продают свои «безсерверные» решения. Обещание состоит в том, что безсерверный сервер заменит способ, которым разработчики в настоящее время разрабатывают свое программное обеспечение, и операции управляют им в производстве.
Что такое "безсерверный"? Где можно узнать больше об этом и как это можно использовать сегодня?
terminology
serverless
Евгений
источник
источник
Ответы:
Статья в Википедии о безсерверных вычислениях дает достойное введение в тему:
Идея состоит в том, что разработчику вообще не нужно заботиться об инфраструктуре сервера . Облачный поставщик управляет физическими серверами, используемой операционной системой и всеми традиционными трудностями, связанными с запуском сервера.
Бессерверные вычисления изменяют вашу архитектуру, не думая о том, что делают машины, а о том, что делают функции . AWS Lambda - это пример, который приходит на ум - вы платите за функции и запускаете их , не упоминая о том, какой тип физической инфраструктуры работает ниже. Существуют также конкурирующие серверные хосты, такие как функции Azure (или вы можете просто выполнить поиск, если вас не интересует ни один из них).
У безсерверных систем есть довольно много преимуществ (хотя вам нужно писать немного иначе, чем вы привыкли в некоторых случаях, потому что это совершенно другая архитектура):
Масштабируемость, по сути, предоставляется бесплатно - поскольку вы просто платите за запуск функции, провайдер облачных вычислений может легко выделить больше оборудования для запуска вашего кода. Вы также можете масштабироваться по мере роста спроса, вместо того чтобы платить фиксированную ставку, независимо от того, используется ли ваше приложение один или миллион раз.
Серверное программное и аппаратное обеспечение больше не должно управляться разработчиком - облачный провайдер справляется с этим. Если вы когда-нибудь использовали что-то вроде Arch на сервере, вы будете знать, как легко уничтожить критический пакет и сломать все!
Это позволяет разработчикам сосредоточиться на том, что они умеют делать - в коде . Большинство разработчиков, вероятно, не будут хороши как в серверной инфраструктуре, так и в программировании - безсерверное решение просто устраняет одну проблему.
источник
У Мартина Фаулера хороший обзор:
https://martinfowler.com/articles/serverless.html
TL; DR
«Безсерверный» описывает разработку приложений и архитектуру, которая разрабатывает приложения, в которых инфраструктура эфемерна , то есть они, как правило, основаны на контейнерах и могут «приходить и уходить» на основе механизма динамического масштабирования. Это предписывает использование архитектур без сохранения состояния, которые зависят от распределенных технологий (таких как хранилища ключей / значений).
источник
«Безсерверный», как и многие вещи в нашем пространстве, становится перегруженным термином ... но обычно он означает «функционально, наша архитектура не зависит от предоставления или текущего обслуживания сервера»
Первое, что приходит на ум, - это одностраничное приложение javascript, которое использует локальное хранилище и хранится на чем-то вроде Amazon S # или Github Pages (или на любом статическом сайте - это всего лишь распространенные примеры). Представьте себе что-то наподобие приложения в стиле «todo» или «все готово», которое полностью работает в вашем браузере. Ваш браузер запускает службу, такую как S3, для загрузки кода, и все элементы, которые вы храните, хранятся в локальном хранилище вашего браузера. Для этого нет сервера, который вы поддерживаете.
Второй экземпляр, немного более сложный (а также тот, который популяризировал термин «безсерверный»), использует сервис типа AWS Lambda. Позвольте мне объяснить это, представив решаемую проблему:
Много раз за свою карьеру я решал бизнес-проблему для клиента с помощью небольшого количества кода ruby, который выполнял периодическое извлечение, преобразование и загрузку (обычно написанную как задача rake). После этого я обычно автоматизирую это с помощью cron. Тогда возникает проблема: «Где мне разместить эту вещь, которая запускается раз в час?» Для некоторых клиентов мы создали бы сервер в их существующей инфраструктуре. Для других мы бы создали экземпляр EC2, даже если он простаивал в 99% случаев. В любом из этих случаев существует сервер, который требует инициализации, исправления, мониторинга, обновления и т. Д.
С помощью Amazon Lambda я могу взять эту задачу с граблями и запустить ее в своем сервисе как чистую «функцию». Я даже могу запланировать это. Этот клиент больше не будет нуждаться в части инфраструктуры для такой простой разовой работы.
В случае «без сервера» сервер все еще остается, как в «облаке» - компьютер. Помимо этого, существует уровень абстракции, который берет на себя некоторые экологические обязанности за вас.
источник
Все отличные ответы уже. Я просматривал статью в блоге « Мышление без сервера - как новые подходы отвечают потребностям современной обработки данных в HighScalability», где я натолкнулся на это превосходное объяснение того, что означает отсутствие сервера:
И еще одно извлечение уроков из моего личного опыта создания безсерверной инфраструктуры:
Как, например,: хранить файлы в очереди AWS SQS. Как только количество сообщений в очереди достигнет 10, вызовите событие для Lambda.
источник
Помимо простого объяснения определения термина «безсерверный», происхождение термина и его история также дают некоторое представление о его значении. Концепция возникла с JAWS рамок по Остен Коллинз , который был позже переименован в бессерверном . Впервые я узнал об этом на сессии AWS re: Invent 2015 , которая может помочь в разработке концепции. Вот что на самом деле придумал термин «Безсерверный», который затем быстро распространился на другие облачные системы:
источник