Архитектура: бессерверная архитектура

задняя часть Архитектура

Введение

Я не знаю, когда появился паттерн под названием «Бессерверная архитектура» Посмотрите на английское слово Serverless, что означает отсутствие службы. Как создать приложение без службы?

После тщательного изучения я обнаружил, что Serverless не означает, что службы не требуются, а означает, что службы построены на платформах BaaS или FaaS. Обычно подходит для одностраничных приложений или программ, где бизнес-логика не отвечает.

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

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

В этой статье мы подробно обсудим бессерверные технологии и историю, стоящую за ними.

что такое бессерверное

Бессерверная концепция, несомненно, предлагается поставщиками облачных услуг, такими как Microsoft, Google и Amazon.Все они являются сторонниками бессерверной технологии, и их услуги, которые они предоставляют, тесно связаны и рекомендуются.

Так что же такое бессерверное?

Serverless фактически может описывать два состояния. Первое состояние — это полнофункциональные клиенты. Для полнофункциональных клиентов бизнес-логика может выполняться на стороне клиента. В облаке требуются только службы базы данных или службы проверки подлинности. Эти типы служб называются BaaS.

Другая заключается в том, что логика на стороне сервера по-прежнему пишется разработчиком приложения, но, в отличие от традиционных архитектур, она выполняется в вычислительных контейнерах без сохранения состояния, которые активируются по событию, эфемерны (возможно, длятся только один вызов) и полностью выполняются третьей стороной для вызова. . Эта услуга называется «Функция как услуга» или FaaS. Наиболее известным является облачный сервис Lambda, который в настоящее время относительно популярен.

пример бессерверного

Простой трехуровневый сервис

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

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

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

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

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

Бизнес-логика, которая должна использовать службу FaaS, должна быть разделена, как показано на следующем рисунке:

На приведенном выше рисунке мы используем стороннюю облачную службу аутентификации для аутентификации безопасности. В то же время клиент может быть напрямую авторизован для запроса к базе данных несущественных данных.

Для службы обновления базу данных по-прежнему необходимо обновлять с помощью API обновления, предоставляемого FaaS.

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

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

управляемое сообщением

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

Итак, как реализовать приведенный выше пример, если используется бессерверная обработка?

Нам нужно заменить сервер на FaaS, а асинхронный сервис заменить на соответствующий FaaS:

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

FaaS

Мы много раз упоминали FaaS выше, так что же такое FaaS?

Согласно своему первоначальному значению на английском языке, FaaS — это функция как услуга. Или вы можете думать об этом как о сервисе Amazon AWS Lambda.

AWS Lambda может работать без какого-либо сервера, просто загрузите свой бизнес-код, и сервис Lambda будет создан автоматически. Затем эту службу можно вызвать извне.

Конечно, отсутствие сервера здесь означает, что заказчику не нужно покупать сервер и строить на нем сервис, ведь лямбда тоже должна работать на сервере.

FaaS в основном совместим с кодом, написанным на Javascript, Python, Go и любом языке jvm, и может быть преобразован в услугу FaaS с небольшими изменениями.

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

Нам нужно только спроектировать функцию FaaS, а остальное оставить поставщику облачных услуг.

Недостатки FaaS

FaaS не имеет состояния, что означает, что вы не можете использовать локальные переменные памяти или данные на локальных дисках, поскольку FaaS не может гарантировать достоверность и надежность этих данных.

Следовательно, требуется внешнее сохранение сохраняемых данных.

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

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

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

  • проблема с несколькими арендаторами

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

  • Привязка к поставщику

Если вы используете serverless с одним провайдером, стоимость перехода на другого провайдера огромна. Возможно, потребуется обновить соответствующие операционные инструменты, а также код.

Преимущества FaaS

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

С одной стороны, сокращаются инвестиции в инфраструктурные услуги, а с другой стороны, можно сэкономить трудозатраты на содержание этих инфраструктур.

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

Упаковка и развертывание функций FaaS проще, чем развертывание всего сервера. Все, что вам нужно сделать, это упаковать весь код в zip-файл и загрузить его.

Суммировать

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

Эта статья была включена вУууу, Флойд нажал .com/11-server…

Самая популярная интерпретация, самая глубокая галантерея, самые краткие уроки и множество трюков, о которых вы не знаете, ждут вас!