Автор: Гао Лу
Публичный аккаунт Bump Lab: AOTULabs
Бессерверная архитектура — это «бессерверная» архитектура, представляющая собой совершенно новый метод архитектуры и революционную модель архитектуры в эпоху облачных вычислений. Подобно облачным вычислениям, контейнерам и искусственному интеллекту, в последние два года слово «бессерверные» стало популярным в ИТ-индустрии, и оно широко освещается в различных технических статьях и на форумах.
В настоящее время отрасль может быть больше в контейнере Docker + Kubernetes, используя IaaS, PaaS и SaaS для быстрого создания и развертывания приложений.
Что такое бессерверное
В бессерверных кругах бессерверная архитектура широко известна как «бессерверная архитектура». Проще говоря, Serverless — это идея и метод архитектуры программной системы, основная идея которого заключается в том, что пользователям не нужно обращать внимание на базовый хост, который поддерживает работу служб приложений. Идеи и методы этой архитектуры окажут глубокое влияние на проектирование, разработку и эксплуатацию будущих программных приложений.
Так называемый «бессерверный» не означает, что программное приложение, основанное на бессерверной архитектуре, может работать без сервера, это означает, что пользователю не нужно заботиться о состоянии и ресурсах базового сервера (таких как ЦП, память , диск и сеть), участвующие в работе программного приложения, и их количество. Вычислительные ресурсы, необходимые для нормальной работы программных приложений, динамически предоставляются базовой платформой облачных вычислений.
Техническая реализация бессерверных технологий
Основная идея без сервера состоит в том, чтобы сделать сервер в качестве вычислительного ресурса, больше не ресурс, который пользователи обращают внимание. Его цель состоит в том, чтобы повысить эффективность доставки приложений и уменьшить рабочую нагрузку и стоимость операции приложения. Различные рамки, инструменты и платформы, основанные на идее серверу, являются реализациями различных безмерно. Serverless не является простым инструментом или структурой. Для пользователей невозможно реализовать безверенно, просто реализуя продукт или инструмент. Однако для реализации реализации архитектуры без сервеса, некоторые реальные инструменты и рамки необходимы как сильная техническая поддержка и фундамент.
С ростом популярности бессерверной архитектуры в последние годы в отрасли появилось множество платформ и инструментов, помогающих пользователям трансформировать и внедрять бессерверную архитектуру. Самый популярный на рынкеБессерверные инструменты, фреймворки и платформыимеют:
- AWS Lambda, самая ранняя бессерверная реализация, признанная публикой.
- Функции Azure — бессерверная реализация из общедоступного облака Microsoft.
- OpenWhisk, бессерверная среда с открытым исходным кодом для сообщества Apache.
- Kubeless — бессерверная платформа с открытым исходным кодом, основанная на архитектуре Kubernetes.
- Fission, бессерверная среда с открытым исходным кодом, запущенная Platform9.
- OpenFaaS, бессерверная платформа с открытым исходным кодом, в основе которой лежит контейнерная технология.
- Fn, бессерверная среда с открытым исходным кодом от Oracle, разработанная оригинальной командой Iron Functions.
Перечисленные бессерверные реализации представляют собой общедоступные облачные службы или инструменты платформы, которые можно развернуть в частных облаках в частных центрах обработки данных (частные облачные бессерверные платформы OpenWhisk, Fission и OpenFaaS). Реализация каждого бессерверного сервиса или фреймворка отличается и имеет свои особенности.
FaaS против BaaS
ИТ — это отрасль, которая никогда не останавливается.В этой отрасли постоянно рождаются различные новые термины и технологии.Появление облачных вычислений — самое значительное изменение в ИТ-индустрии в 21 веке. Развитие облачных вычислений постепенно эволюционировало от инфраструктуры как услуги (IaaS), платформы как услуги (PaaS), программного обеспечения как услуги (SaaS) до функционирования как услуги (функция как услуга, FaaS) и серверной части как услуги. (Backend as a Service, BaaS), Serverless не требует обслуживания.
Что касается функций, различные бессерверные реализации в отрасли в основном обеспечивают два аспекта поддержки служб приложений: функция как услуга (FaaS) и серверная часть как услуга (BaaS).
1.FaaS
FaaS предоставляет вычислительную платформу, на которой приложения разрабатываются, запускаются и управляются как одна или несколько функций. Платформа FaaS предоставляет рабочую среду для функциональных приложений, обычно поддерживающую различные основные языки программирования, такие как Java, PHP и Python. FaaS может выполнять автоматическую динамическую загрузку приложений и автоматическое динамическое распределение ресурсов в соответствии с фактическим трафиком. Большинство платформ FaaS основаны на идее Event Driven, которая может запускать заданную логику приложения функции в соответствии с предопределенными событиями.
Представителем очень успешной платформы FaaS в отрасли являетсяAWS Lambda Платформа. AWS Lambda — это функциональная вычислительная платформа для общедоступных облачных сервисов AWS. С помощью AWS Lambda пользователи AWS могут быстро создавать сервисы приложений на основе функций в общедоступном облаке AWS.
2.BaaS
Чтобы реализовать бессерверное применение фоновых служб, BaaS (фон как услуга) также должен быть включен в объем полной бессерверной реализации. Платформа BaaS обслуживает и высвобождает сторонние службы, от которых зависит приложение, такие как базы данных, очереди сообщений и хранилище. заботиться о конкретной эксплуатации и обслуживании этих служб.
BaaS охватывает широкий спектр услуг, от которых зависит любое приложение. Типичным примером является база данных как услуга (DBaaS). Многие приложения нуждаются в хранении данных, и большинство приложений хранят данные в базах данных. Традиционно базы данных работают в центрах обработки данных, а за эксплуатацию и техническое обслуживание отвечает пользовательская группа эксплуатации и обслуживания. В сценарии DBaaS пользователи обращаются за ресурсами базы данных с платформы DBaaS, и им не нужно заботиться об установке, развертывании, эксплуатации и обслуживании базы данных.
Технические особенности бессерверного доступа
Чтобы отделить приложения и серверные ресурсы и сделать серверные ресурсы прозрачными для пользователей, по сравнению с традиционными архитектурами, бессерверные архитектуры имеют множество различных технических функций.
- 1. Загрузка по запросу
В бессерверной архитектуре загрузка и выгрузка приложений контролируются безсерверной платформой облачных вычислений. Это означает, что приложение не всегда находится в сети все время. Он будет развернут и запущен только при поступлении запроса или возникновении события. Когда приложение бездействует в течение определенного периода времени, приложение прибудет или произойдет событие, прежде чем оно будет развернуто и запущено. Когда приложение не используется в течение определенного периода времени, оно будет автоматически остановлено и удалено. Следовательно, приложение не будет постоянно находиться в сети и не будет продолжать занимать вычислительные ресурсы.
- 2. Событийный
Приложение бессерверной архитектуры не всегда находится в сети, а загружается и выполняется по требованию. Загрузка и выполнение приложения управляются событиями, такими как получение HTTP-запроса, получение новой информации в очереди сообщений или изменение файла в службе хранилища. Связывая события из разных источников событий с определенными функциями, можно предпринимать разные ответные действия для разных событий, так что архитектура, управляемая событиями (Event Driven), может быть очень легко реализована.
- 3. Состояние нелокального сохранения
Платформа облачных вычислений автоматически контролирует загрузку и выгрузку экземпляров приложений, а приложение и сервер полностью развязаны, и приложение больше не связано с конкретным сервером. Следовательно, состояние приложения не может и не будет сохраняться на сервере, на котором оно запущено, и оно не может обеспечить локальное сохранение состояния в традиционном понимании.
- 4. Удержание вне сеанса
Приложение больше не связано с конкретным сервером. Экземпляр приложения, каждый раз обрабатывающий запрос, может быть экземпляром приложения на том же сервере или может быть экземпляром приложения на вновь сгенерированном сервере. Поэтому пользователи не могут гарантировать, что два запроса от одного клиента будут обрабатываться одним и тем же экземпляром приложения на одном сервере. Другими словами, невозможно поддерживать сессию в традиционном понимании (Sticky Session). Поэтому бессерверная архитектура больше подходит для приложений без сохранения состояния.
- 5. Автоматическое эластичное масштабирование
Бессерверные приложения изначально могут поддерживать высокую доступность и справляться с внезапным высоким трафиком. Платформа облачных вычислений гибко и автоматически увеличивает или сокращает число экземпляров приложений в соответствии с фактическим количеством посещений.Платформа облачных вычислений динамически обеспечивает наличие достаточных вычислительных ресурсов и достаточного количества экземпляров приложений для обработки запросов.
- 6. Примените функционализацию
Каждый вызов завершает бизнес-действие, а приложение разбивается на несколько мелких операций. Поскольку состояние не может быть сохранено локально, эти мелкие операции не имеют состояния, подобно функциям без состояния в традиционном программировании. Приложения в бессерверной архитектуре будут функционализированы, но нельзя сказать, что бессерверная архитектура — это функция как услуга (FaaS). Serverless охватывает некоторые функции FaaS.Можно сказать, что FaaS является важным средством реализации бессерверной архитектуры.
Сценарии бессерверных приложений
Объединив концепцию бессерверной архитектуры с техническими характеристиками современных бессерверных реализаций, бессерверную архитектуру можно применять в различных бизнес-сценариях.
- 1. Веб-приложение
Бессерверная архитектура может хорошо поддерживать все виды статических и динамических веб-приложений. Например, различные действия запроса (GET, POST, PUT, DELETE и т. д.) RESTful API могут быть хорошо сопоставлены с функциями FaaS, и может быть установлено хорошее соответствие между функциями и функциями. Благодаря функции автоматического эластичного расширения FaaS бессерверные веб-приложения могут быстро создавать сайты, способные поддерживать высокий трафик.
- 2. Мобильный Интернет
Бессерверные приложения используют BaaS для подключения к различным серверным службам для удовлетворения потребностей бизнеса и повышения эффективности разработки приложений. Внешний интерфейс подключается к мобильному трафику посредством автоматического эластичного расширения, предоставляемого FaaS, поэтому разработчикам легче справляться с внезапным ростом трафика. В архитектуре FaaS приложения существуют в виде функций. Логика каждой функции относительно независима, что упрощает обновление приложения и сокращает время разработки, тестирования и запуска новых функций.
- 3. Интернет вещей (IoT)
Приложения Интернета вещей (IoT) должны быть подключены к большому количеству различных устройств. Различные устройства должны постоянно собирать и передавать данные на сервер. Бессерверная архитектура может помочь приложениям IoT взаимодействовать с различными источниками ввода данных.
- 4. Мультимедийная обработка
Веб-сайты с видео и изображениями должны обрабатывать и преобразовывать изображения и видеоинформацию, загружаемую пользователями. Но такая работа по преобразованию мультимедиа выполняется не постоянно, и ее необходимо выполнять только при возникновении определенных событий, например, когда пользователи загружают или редактируют изображения и видео. Благодаря управляемому событиями механизму Serverless пользователи могут запускать логику обработки при возникновении определенного события, тем самым экономя вычислительные ресурсы в периоды простоя и, в конечном итоге, снижая стоимость эксплуатации и обслуживания.
- 5. Обработка потока данных и событий
Serverless можно использовать для анализа и обработки некоторых непрерывных потоков событий и потоков данных в реальном времени, фильтрации, преобразования и анализа событий и данных в реальном времени, а затем запуска следующей обработки. Например, в режиме реального времени выполняется анализ журналов или информации из социальных сетей различных систем, а ключевая информация, соответствующая определенным характеристикам, записывается и предупреждается.
- 6. Системная интеграция
Функциональная архитектура бессерверных приложений идеально подходит для системной интеграции. Пользователям не нужно разрабатывать и использовать законченное приложение для какой-то простой логики интеграции, как это было раньше, пользователи могут больше сосредоточиться на необходимой логике интеграции и писать и интегрировать только связанную логику кода вместо полного приложения. Децентрализованная архитектура функциональных приложений делает добавление и изменение логики интеграции более гибкими.
Ограничения без сервера
Не существует универсального решения и архитектурной философии, которая могла бы решить все проблемы. Бессерверная технология имеет свои особенности и преимущества, но также имеет и свои ограничения. Некоторые ограничения определяются его архитектурными характеристиками, а некоторые - зрелостью текущей технологии.В конце концов, бессерверные технологии все еще являются развивающейся областью технологий, которая долгое время не начиналась и нуждается в постепенном улучшении во многих аспектах.
- 1. Контроль
Одним из выдающихся преимуществ безсерверных вычислений является то, что пользователям не нужно обращать внимание на базовые вычислительные ресурсы, но противоположность этого преимущества заключается в том, что пользователи не имеют контроля над базовыми вычислительными ресурсами. Для некоторых сценариев приложений, которые хотят управлять базовыми вычислительными ресурсами, бессерверная архитектура не самый подходящий выбор.
- 2. Портативность
Реализация бессерверных приложений в значительной степени зависит от бессерверной платформы и услуг FaaS и BaaS на этой платформе. Конкретная реализация бессерверных платформ и решений разных поставщиков ИТ неодинакова. Кроме того, в настоящее время нет соответствующего отраслевого стандарта в области бессерверных приложений, а это означает, что стоимость переноса бессерверных приложений с одной платформы на другую для пользователей будет относительно высокой. Более низкая переносимость приведет к привязке к поставщику. Это вызов для компаний, которые хотят развивать бессерверные технологии, но не хотят чрезмерно зависеть от конкретного поставщика.
- 3. Безопасность
В бессерверной архитектуре пользователь не может напрямую управлять хостом, на котором фактически работает приложение. Приложения разных пользователей или разные приложения одного пользователя могут совместно использовать базовые ресурсы хоста во время выполнения. Для некоторых приложений с высокими требованиями к безопасности это создает потенциальную угрозу безопасности.
- 4. Производительность
Когда бессерверное приложение бездействует в течение длительного времени, оно будет удалено с хоста. Когда запрос приходит снова, платформа должна перезагрузить приложение. Будет определенная задержка в процессе первой загрузки и перезагрузки приложения. Для некоторых приложений, чувствительных к задержке, необходимо выполнить предварительную загрузку или увеличить время простоя.
- 5. Время выполнения
Важной особенностью бессерверных приложений является то, что приложения загружаются и выполняются по запросу, а не постоянно развертываются на хосте в течение длительного времени. В настоящее время большинство бессерверных платформ имеют ограничения на время выполнения функций FaaS. Поэтому бессерверные приложения больше подходят для некоторых задач с коротким временем выполнения.
- 6. Зрелость технологии
Хотя бессерверные технологии быстро развиваются, это все еще новая технология, которая не была запущена в течение длительного времени. Таким образом, текущие бессерверные платформы, инструменты и фреймворки все еще находятся в стадии постоянных изменений и эволюции, и пользовательский опыт разработки и отладки нуждается в дальнейшем улучшении. Существует относительно немного документов и материалов, связанных с бессерверной архитектурой, и относительно небольшое количество архитекторов, разработчиков, эксплуатационного и обслуживающего персонала имеют глубокое понимание бессерверной архитектуры.