Что такое serverless computing (бессерверные вычисления)?

Автор оригинала: Anonym
  • Перевод

Бессерверные вычисления — это метод предоставления серверных услуг на основе фактического использования сервисов. Бессерверный провайдер позволяет пользователям писать и развёртывать код, не беспокоясь о базовой инфраструктуре. Компания, которая получает бэкенд-услуги от бессерверного поставщика, платит по факту за используемые ресурсы и не должна резервировать и оплачивать фиксированную пропускную способность или количество серверов, поскольку услуга автоматически масштабируется. Конечно, для предоставления клиенту бессерверных вычислений используются физические серверы, но разработчикам нет необходимости думать об их конфигурации, производительности, ядрах, памяти и прочем.

На заре интернета любой, кто хотел создать веб-приложение, должен был физически владеть оборудованием, необходимым для запуска сервера. Это было дорого и неудобно, потому что оборудование требовало много места.

Затем пришли облачные вычисления, когда нужное количество серверов или часть серверного пространства можно было арендовать в облаке. Разработчики и компании, которые арендуют эти ресурсы, обычно приобретают мощности с некоторым запасом, чтобы гарантировать, что всплеск трафика или активности пользователей не превысит их месячные лимиты в облачной инфраструктуре и не выведет их приложение из строя. Это означает, что некоторая часть оплачиваемого серверного пространства может простаивает и не используется. Для решения этой проблемы облачные провайдеры предлагают модели автоматического масштабирования, но даже при такой модели выделения ресурсов нежелательный всплеск активности, вроде DDoS-атаки, может оказаться очень дорогостоящим.

Бессерверные вычисления позволяют разработчикам приобретать бэкенд-сервисы с оплатой по мере использования, что означает, что разработчикам нужно платить только за те услуги, которые они используют. Это похоже на переход с тарифного плана мобильного оператора с фиксированным ежемесячным лимитом на тариф, где плата взимается только за каждый фактически использованный байт данных.

Термин «бессерверный» несколько вводит в заблуждение, поскольку все ещё существуют серверы, предоставляющие эти внутренние сервисы. Но все проблемы, связанные с серверным пространством и инфраструктурой, решаются поставщиком. Бессерверный режим означает, что разработчики могут выполнять свою работу, вообще не беспокоясь о серверах.

Что такое серверные службы? В чем разница между фронтендом и бэкендом?

Разработка приложений обычно делится на две части: фронтенд и бэкенд. Фронтенд — это часть приложения, которую пользователи видят и с которой взаимодействуют, например, визуальный скелет страницы. Бэкенд — это часть, которую пользователь не видит. Она включает в себя сервер, на котором находятся файлы приложения, и базы данных, где хранятся пользовательские данные и реализована бизнес-логика.

Например, представим себе сайт, продающий билеты на концерты. Когда пользователь вводит адрес сайта в окне браузера, браузер отправляет запрос на внутренний сервер, который в ответ передаёт данные сайта. Затем пользователь видит интерфейс сайта, который может включать в себя текст, изображения и поля формы, которые пользователь должен заполнить. Пользователь может взаимодействовать с одним из полей формы на интерфейсе для поиска своего любимого музыкального исполнителя. Когда пользователь нажимает «отправить», это действие инициирует другой запрос к бэкенду. Внутренний код проверяет свою базу данных, чтобы узнать, существует ли исполнитель с таким именем, и если да, то, когда он будет выступать в следующий раз и сколько билетов доступно. Затем серверная часть передаст эти данные обратно, и интерфейс будет отображать результаты таким образом, чтобы это было понятно пользователю. Аналогичным образом происходит оплата — выполняется ещё один обмен данными между интерфейсом и сервером.

Какие серверные службы могут быть представлены бессерверными вычислениями?

Большинство бессерверных провайдеров предлагают своим клиентам услуги баз данных и хранилища, у многих есть платформы Function-as-a-Service (FaaS). FaaS позволяет разработчикам выполнять небольшие фрагменты кода на границе сети. С помощью FaaS разработчики могут создавать модульную архитектуру, делая кодовую базу более масштабируемой, не тратя ресурсы на поддержку бэкенда.

Каковы преимущества бессерверных вычислений?

  • Снижение затрат — бессерверные вычисления, как правило, выгодны, поскольку у многих крупных провайдеров облачных серверных услуг пользователь платит за неиспользуемое пространство или время простоя процессора.

  • Упрощённая масштабируемость — разработчикам, использующим бессерверную архитектуру, не нужно беспокоиться о политиках для масштабирования своего кода. Бессерверный поставщик выполняет все масштабирование по запросу.

  • Упрощённый внутренний код — с помощью FaaS разработчики могут создавать простые функции, которые независимо выполняют одну задачу, например, выполнение вызова API.

  • Более быстрый оборот — бессерверная архитектура может значительно сократить время выхода на рынок. Вместо того, чтобы требовать сложного процесса развёртывания для исправления ошибок и новых функций, разработчики могут добавлять и изменять код по частям.

В сравнении с другими моделями облачного сервиса.

Есть ещё пара технологий, которые часто путают с бессерверными вычислениями — это Backend-as-a-Service и Platform-as-a-Service. Хотя у них есть общие черты, эти модели не обязательно удовлетворяют требованиям бессерверности.

Backend-as-a-service (BaaS) — это модель обслуживания, в которой поставщик облачных услуг предлагает серверные службы (например, хранение данных), чтобы разработчики могли сосредоточиться на написании кода фронтенда. Но хотя бессерверные приложения управляются событиями и работают на периферии, приложения BaaS могут не соответствовать ни одному из этих требований.

Платформа как услуга (PaaS) — это модель, в которой разработчики по сути арендуют все необходимые инструменты для разработки и развёртывания приложений у облачного провайдера, включая такие вещи, как операционные системы и промежуточное ПО. Однако приложения PaaS не так легко масштабируются, как бессерверные приложения. PaaS также не обязательно работает на периферии и часто имеет заметную задержку запуска, которой нет в бессерверных приложениях.

Инфраструктура как услуга (IaaS) — это общий термин для поставщиков облачных услуг, размещающих инфраструктуру от имени своих клиентов. Поставщики IaaS могут предлагать бессерверные функции, но эти термины не являются синонимами.

Развитие бессерверных технологий

Бессерверные вычисления продолжают развиваться, поскольку бессерверные провайдеры предлагают решения, позволяющие преодолеть некоторые из их недостатков. Один из таких недостатков — холодный старт.

Обычно, когда определённая бессерверная функция не вызывалась в течение некоторого времени, провайдер её отключает, чтобы сэкономить энергию и избежать избыточного выделения ресурсов. В следующий раз, когда пользователь запустит приложение, которое вызывает эту функцию, бессерверному провайдеру придётся включить его заново и снова запустить эту функцию. Это добавляет некоторую задержку, известную как «холодный старт».

Как только функция будет запущена, она будет вызываться намного быстрее при следующих запросах (тёплый старт), но если функция опять не будет запрашиваться в течение некоторого времени, она снова перейдёт в неактивное состояние. И следующий пользователь, который запросит эту функцию, столкнётся с некоторой задержкой ответа из-за холодного запуска. Холодный старт — это необходимый компромисс при использовании бессерверных функций.

По мере того как устраняются все больше и больше недостатков использования бессерверных систем, можно ожидать рост популярность подобной модели предоставления вычислений.


Что ещё интересного есть в блоге Cloud4Y

→ В Китае создали настольный квантовый компьютер стоимостью $5000

→ Тим Бернерс-Ли предлагает хранить персональные данные в подах

→ Виртуальные машины и тест Гилева

→ Создание группы доступности AlwaysON на основе кластера Failover

→ Как настроить SSH-Jump Server

Подписывайтесь на наш Telegram-канал, чтобы не пропустить очередную статью. Пишем не чаще двух раз в неделю и только по делу.

Cloud4Y
#1 Корпоративный облачный провайдер

Комментарии 14

    +2
    для предоставления клиенту бессерверных вычислений используются физические серверы
    Все-таки какое-то странное название, словно главная идея в вычислениях на клиенте. Это скорее какая-то виртуальная инфраструктура.
      +3
      Когда вы читаете слово «бессерверные» или «облачные» (в контексте «вычисления» или «сервисы») — просто контестно заменяйте «выполняющиеся на непонятно каких, стоящих непонятно где, управляемых непонятно кем непонятно как серверах».

      Например «мы перенесли наше бизнес-приложение в облако» тогда прочитано более понятно «мы перенесли наше бизнес-приложение на непонятно какие, стоящие непонятно где, управляемые непонятно кем непонятно как серверы».

      Или «база данных в облаке это удобное решение дял вашего бизнеса» — берем и читаем «база данных на непонятно каком, стоящим непонятно где, управляемом непонятно кем непонятно как сервере это удобное решение для вашего бизнеса».

      Ну или вот «профессионалы используют бессерверные вычисления а не вкладываются в собственную инфраструктуру» — берем и переводим «профессионалы используют вычисления на на непонятно каких, стоящих непонятно где, управляемых непонятно кем непонятно как серверах а не вкладываются в собственную инфраструктуру».

      И сразу всё понятно.
        +1
        Если брать облачных провайдеров из первой тройки — то вышеперечисленное не совсем верно. Да, вас конечно не позовут в датацентр поглазеть, но вы вполне можете запросить и получить заключения авторитетных аудиторов относительно огранизации и эксплуатации этих датацентов и кучу сертификатов соответствия всяким индустриальным требованиям.
      +1

      А есть ли какие-то тесты, что безсерверные вычисления дешевле?

        0
        Если вы знаете что делаете и ваш код оптимален — они дешевле.
        Если вы любите погонять тестовые данные и вычисления на неоптимизированном коде — проще взять ядрами, а не тиками. Будет меньше расстройств, когда забитый в потолок проц пылесосил всю ночь баксы с вашей карты… пока вы спали.
          0
          Зависит от задачи. Вот тут есть прикидки для нескольких сценариев aws.amazon.com/lambda/pricing
          0
          Ура, наконец я смогу скачать в свой браузер в два раза больше кода!

          А вообще, думаю, бессерверные вычисления — это промежуточная стадия между облаками (тонкий клиент) и хранилищами (толстый клиент).
            +1

            Что-то не понятно в чем всё-таки преимущество перед автомасштабируемым сервером(читай как клауд аля авс или гугль), если пойдет рост трафика, то там вас нагнут на круглую сумму, если здесь пойдет наплыв, будет то же самое. Разница лишь в том, что там вы имеете ос и доступ к ее ресурсам, а тут вы сдаете кусок кода (ака функцию), который крутится не понятно где и в каком окружении. Так можно и контейнерами деплоить, по функции -то, в какой-нибудь кубер ааС… ИМХО сомнительная тема.

              0
              Если рост трафика это реальные заказы, то круглые суммы легко оплатятся за счет прибылей которые вы не упустили.
                0
                Нет, я говорил про мусорный трафик. Который разденет клиента хоть при автомасштабируемом сервере, так и при FaaS.
                0
                Вы так говорите, как будто рост трафика — это что-то плохое. Обычно — это деньги. Редко кто говорит «мне не нужно больше денег», а значит задача как можно больше этого траффика обработать и не умереть. А тут бессерверные технологии рулят — увеличить лимиты на лямбды или фаргейт — дело одного обращения в саппорт. У нас заказчику приспичило весь data lake переконвертить — поднял лимиты и запустил тыщи контейнеров.
                  0
                  Во первых, перед тем как что-то написать, надо подумать головой. Буквально над вашим комментарием есть уточнение о каком трафике идет речь.

                  Очень редко бывает что происходит резкий всплеск полезного, НЕ ОЖИДАЕМОГО трафика. Так если вы публикуете рекламную статью на хабре, ФБ, etc., то вы ожидаете этот рост нагрузки и можете подсуетиться заранее и увеличить количество ресурсов для того чтобы справиться с нагрузкой или организовать работу вашего ит отдела по мониторингу и увеличения мощностей в реал тайме.

                  Вы рассуждаете очень странно с точки зрения бизнеса, рост числа заказов это не всегда хорошо, в частности:
                  • мы должны быть готовы обработать чисто физически такой объем заказов
                  • у нас должны быть мощности для производства нужного числа блага
                  • в случае если мы приняли миллион заказов, а можем выполнить лишь тысячу, это создаст негативный фон вокруг нас, после чего клиент к нам не пойдет, не лучше ли было не принимать вообще эти заказы?
                  • мы должны понимать сколько мы платим за каждый обработанный заказ (ака все накладные)

                  В общем я веду к тому, что не всегда автоскеил это хорошо, конечно эта услуга для ит в первую очередь, там она как будто бы оправдана, но опять же в интернетах куча слезных историй, когда автоскеил загонял бизнес в шестизначные долги, причем в очень короткие сроки. И если живя в каком-нибудь бангладеше, вы можете выкинуть карточку и завести новую почту, то в «цивилизованных» странах придется раскошелиться на юристов, чтобы доказать что вы не верблюд, если не получится, то ко всем долгам добавится еще и счет от юристов.

                  Я, как руководитель бизнеса, должен изначально понимать сколько это может мне стоить и какие риски я несу, иначе я никогда не подпишу такой контракт, что ведет к просто мысли, что всегда должны быть лимиты, ну а дальше сами продолжите логическую цепочку…
                    0

                    А получается что у serverless нет никаких лимитов? Их возможно установить?

                      +1
                      Если вы производите табуретки — то да, это проблема. Но для огромного количества цифровых бизнесов увеличить объемы в разы и на порядки — не бог весть какая работа. Автоскейл загонял в долги людей без головы, поэтому профессионалам и платят деньги.

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                Самое читаемое