Концепция бессерверных вычислений — это перспективная модель исполнения, которая пытается удовлетворить потребности современного облачного программного обеспечения.
В этом видео из моего курса « Введение в безсерверность» я познакомлю вас с архитектурой без серверов. Мы поговорим о его ключевых моментах и сравним его с другими моделями для абстрагирования функциональности сервера от облака.
Что такое сервер?
Безсерверная архитектура
Прежде всего, в безсерверной системе есть серверы. Надеюсь, это не является большим сюрпризом для вас. Все дело в том, кто ими управляет.
Давайте посмотрим на очень распространенную диаграмму, которая показывает различные виды услуг.
Слева у вас есть традиционная локальная система. Все управляется вами, вплоть до физической машины и сети. Тогда у вас есть различные уровни абстракции.
Инфраструктура как услуга
Первый уровень абстракции — это инфраструктура как услуга. Здесь вы несете ответственность за все от операционной системы до. Примерами могут быть DigitalOcean или Amazon EC2. Поставщик предоставляет вам экземпляр, и с этого момента вы сами.
Контейнер как услуга
Следующий уровень абстракции — это контейнер как услуга. Это также довольно новый игрок, который получил большую популярность благодаря популярности Docker. В мире AWS это будут контейнерные сервисы EC2.
Платформа как услуга
Тогда у нас есть платформа как услуга, в которой вы не несете ответственности за управление какой-либо операционной системой или контейнерами. Вы несете полную ответственность за свое заявление. Выдающимися примерами из этой категории являются Heroku, AWS Elastic Beanstalk и Google Compute Engine.
Функции как сервис (он же Serverless)
Несколько лет назад, графика закончилась бы здесь. Но в настоящее время у нас есть новая терминология, то есть функционирует как услуга. Вместо запуска приложения с состоянием, которое является истинным для всех традиционных веб-платформ, даже если вы используете REST и другие вещи, у вас есть система, которая использует контейнеры без состояния, которые инициируются событиями, эфемерны и полностью управляются службой. поставщик.
Это то, что называется безсерверным. Существует еще одна концепция, называемая back end как служба, которая иногда также считается частью архитектуры сервера. Но, на мой взгляд, это больше относится к программному обеспечению как услуге, и это, по сути, то, что вы пытаетесь создать.
Основные сферы функций как услуга
Итак, давайте поговорим о функциях как услугах.
Как следует из названия, вы, как разработчик, несете ответственность за написание исполняемых функций, которые запускаются и выполняются событиями. Это может быть завершенная загрузка файла на S3 или запрос через конечную точку API. Пока все просто. Чтобы полностью понять концепцию, я собираюсь поговорить о нескольких ключевых областях, которые определяют функции как сервис.
состояние
Первый — государственный. Функции очень ограничены, когда дело доходит до сохранения состояния. Как правило, вы должны предположить, что вы не можете сделать это вообще. Функции следуют больше за огнем и забывают принцип. Если вы хотите что-то хранить, делайте это с помощью внешней службы, например, хранилища файлов, сервера базы данных или кэша.
Продолжительность исполнения
Второе — продолжительность исполнения. Возможно, у вас есть серверное приложение, которое работает без перезапуска часами или днями, в зависимости от процесса развертывания. То же самое касается фоновой обработки. С функциями время выполнения ограничено. Не ожидается, что функция будет выполняться дольше, чем несколько секунд, и, например, AWS Lambda завершает каждую функцию, которая не завершилась через пять минут. Если у вас очень долго выполняемая задача, то функции в качестве службы могут не подходить.
Задержка запуска
Тогда у нас есть задержка запуска. Это может быть что угодно, от нескольких миллисекунд до минут. Конечно, это зависит от языка и системы, которую вы используете. Как правило, функция Python или JavaScript в AWS запускается в течение миллисекунд, но если вы используете виртуальную машину Java, может пройти некоторое время, пока машина не раскрутится, особенно если ваша функция не выполнялась в течение последних десяти минут, или вы испытываете внезапный всплеск исполнения.
Масштабируемость и стоимость
Это приводит к вопросам о масштабируемости и стоимости выполнения, и вы ищете ответ: не беспокойтесь об этом. Масштабирование управляется поставщиком услуг, а стоимость проста.
Если вы выполняете функцию десять раз, вы платите ровно за эти десять вызовов. Если вы бежите 1000 раз, вы платите за 1000. Конечно, все немного сложнее, но в этом и суть.
Вывод
Наличие системы без сервера может быть очень выгодным. Прекрасно, если у вас непоследовательный трафик, например, пик в час или очень мало случайных запросов, поскольку вам не нужно выделять ресурсы, которые простаивают большую часть времени.
Напомним, что в безсерверных системах есть серверы, но они полностью управляются облачными провайдерами. Функции являются ядром безсерверной архитектуры и выполняются с помощью триггеров. Облачные провайдеры уже заботятся о масштабировании и высокой доступности. Если у вас очень редкий спрос или большой, но короткий поиск, безсерверный сервис поможет вам снизить затраты.
Смотреть полный курс
В полном курсе « Введение в безсерверность» я покажу вам, как использовать Amazon Web Services для создания «безсерверного» веб-приложения с бэкэндом REST API. Вы также узнаете, как работать с некоторыми продвинутыми сценариями, такими как интеграция других сервисов AWS и управление функциями с учетом состояния. Попутно вы создадите классный веб-сервис для преобразования текста в речь.
Вы можете пройти этот курс сразу же, подписавшись на Envato Elements . За небольшую ежемесячную плату вы получаете доступ не только к этому курсу, но и к нашей растущей библиотеке из более чем 1000 видеокурсов и ведущих в отрасли электронных книг по Envato Tuts +.
Кроме того, теперь вы получаете неограниченное количество загрузок из огромной библиотеки Envato Elements с 400 000+ творческих ресурсов. Создавайте с помощью уникальных шрифтов, фотографий, графики и шаблонов и быстрее выполняйте лучшие проекты.