stringtranslate.com

Бессерверные вычисления

Serverless computing — это модель выполнения облачных вычислений , в которой поставщик облачных услуг выделяет машинные ресурсы по требованию, заботясь о серверах от имени своих клиентов. Serverlessнеправильное название в том смысле, что серверы по-прежнему используются поставщиками облачных услуг для выполнения кода для разработчиков . Однако разработчики serverless- приложений не занимаются планированием емкости , конфигурацией, управлением, обслуживанием, отказоустойчивостью или масштабированием контейнеров, виртуальных машин или физических серверов. Когда приложение не используется, ему не выделяются вычислительные ресурсы. Цены основаны на фактическом количестве ресурсов, потребляемых приложением. [1] Это может быть формой утилитарных вычислений .

Одно из предлагаемых определений для бессерверных вычислений, которое охватывает эти идеи, заключается в том, что бессерверные вычисления — это «парадигма облачных вычислений, охватывающая класс платформ облачных вычислений, которые позволяют разрабатывать, развертывать и запускать приложения (или их компоненты) в облаке без выделения и управления виртуализированными серверами и ресурсами или без заботы о других эксплуатационных аспектах. Ответственность за эксплуатационные аспекты, такие как отказоустойчивость или эластичное масштабирование вычислительных, хранилищных и коммуникационных ресурсов для соответствия изменяющимся требованиям приложений, перекладывается на поставщика облачных услуг. Поставщики применяют биллинг на основе использования: они взимают с пользователей облака плату с мелкой детализацией, пропорционально ресурсам, которые приложения фактически потребляют из облачной инфраструктуры, таким как вычислительное время, память и дисковое пространство». [2] Обратите внимание, что определение бессерверных вычислений со временем расширилось. По словам Бена Кехо, бессерверные вычисления — это спектр; не следует зацикливаться на строгом определении бессерверных вычислений или какой-либо конкретной бессерверной технологии. Вместо этого следует сосредоточиться на бессерверном мышлении: как использовать бессерверные вычисления для решения своих бизнес-задач. [3]

Бессерверные вычисления могут упростить процесс развертывания кода в производстве . Это не полностью устраняет сложность, но в основном переносит ее из группы эксплуатации в группу разработки. И чем более мелкозернистым является приложение, тем сложнее им управлять. [ необходимо разъяснение ] [4]

Бессерверный код может использоваться в сочетании с кодом, развернутым в традиционных стилях, таких как микросервисы или монолиты . В качестве альтернативы приложения могут быть написаны как полностью бессерверные и не использовать никаких выделенных серверов вообще. [5] Это не следует путать с вычислительными или сетевыми моделями, которым не требуется фактический сервер для функционирования, такими как одноранговые сети (P2P).

По словам Янь Цуя, бессерверные решения следует внедрять только тогда, когда они помогают быстрее предоставлять ценность для клиентов. И при внедрении организации должны предпринимать небольшие шаги и снижать риски на этом пути. [6]

Бессерверные среды выполнения

Поставщики Serverless предлагают вычислительные среды выполнения, которые выполняют логику приложения, но не хранят данные. Распространенные модели среды выполнения — это функция как услуга (FaaS) и контейнер как услуга . Распространенные языки, поддерживаемые Serverless средами выполнения, — это Java , Python и PHP . Обычно функции выполняются в границах изоляции, таких как контейнеры Linux .

Коммерческие предложения

Первой платформой исполнения кода с оплатой по факту использования была Zimki , выпущенная в 2006 году, но она не имела коммерческого успеха. [7] В 2008 году Google выпустила Google App Engine , в котором была реализована тарификация для приложений, использующих пользовательский фреймворк Python, но которые не могли выполнять произвольный код. [8] PiCloud, выпущенный в 2010 году, предлагал поддержку FaaS для Python.

Google App Engine, представленный в 2008 году, был первым абстрактным предложением для бессерверных вычислений. [9] App Engine включал в себя функции HTTP с 60-секундным тайм-аутом, хранилище больших двоичных объектов и хранилище данных с собственными тайм-аутами. Не допускалось сохранение в памяти. Все операции должны были выполняться в этих пределах, но это позволяло приложениям, созданным в App Engine, масштабироваться практически бесконечно и использовалось для поддержки ранних клиентов, включая Snapchat , а также многих внешних и внутренних приложений Google. Поддержка языка была ограничена Python с использованием собственных модулей Python, а также ограниченным выбором модулей Python на языке C, которые были выбраны Google. Как и более поздние бессерверные платформы, App Engine также использовала оплату по принципу «плати за то, что используешь». [10]

AWS Lambda , представленная Amazon в 2014 году, [11] популяризировала абстрактную модель бессерверных вычислений. Она поддерживается рядом дополнительных бессерверных инструментов AWS, таких как AWS Serverless Application Model (AWS SAM) , Amazon CloudWatch и другие.

В 2016 году Google Cloud Platform создала второе бессерверное предложение — Google Cloud Functions . [12]

Oracle Cloud Functions — это бессерверная платформа, предлагаемая на Oracle Cloud Infrastructure , и основанная на проекте Fn с открытым исходным кодом, чтобы разработчики могли создавать приложения, которые можно переносить в другие облачные и локальные среды. Она поддерживает код на Python , Go , Java , Ruby и Node . [13]

Бессерверные базы данных

Появилось несколько бессерверных баз данных , расширяющих модель бессерверного выполнения на СУБД , устраняя необходимость в предоставлении или масштабировании виртуализированного или физического оборудования для баз данных.

Nutanix предлагает решение под названием Era, которое превращает существующую СУБД, такую ​​как Oracle , MariaDB , PostgreSQL или Microsoft SQL Server , в бессерверную службу. [14]

Amazon Aurora предлагает версию своих баз данных без сервера, основанную на MySQL и PostgreSQL, предоставляя конфигурации с автоматическим масштабированием по требованию. [15]

Azure Data Lake — это высокомасштабируемая служба хранения и аналитики данных. Служба размещена в Azure , публичном облаке Microsoft. Azure Data Lake Analytics предоставляет распределенную инфраструктуру, которая может динамически выделять или отменять выделение ресурсов, поэтому клиенты платят только за те службы, которые они используют.

Oracle Cloud предлагает версию Oracle Autonomous Database, которая является сервисом Autonomous Transaction Processing. Сервис Serverless также включает в себя JSON-версию. [16]

Firebase , также принадлежащая Google, [17] включает в себя иерархическую базу данных и доступна по фиксированным и оплачиваемым по мере использования планам. [18]

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

Расходы

Serverless может быть более рентабельным, чем аренда или покупка фиксированного количества серверов, [19] что обычно подразумевает значительные периоды недоиспользования или простоя. [1] Это может быть даже более рентабельным, чем предоставление группы автоматического масштабирования , из-за более эффективной упаковки базовых ресурсов машины.

Это можно описать как оплату по мере использования [19] или как bare-code, [19] , поскольку плата взимается исключительно за время и память, выделенные для запуска кода, без сопутствующих сборов за время простоя. [19] Полезная аналогия здесь — между арендой автомобилей (традиционные облачные виртуальные машины) и приложениями совместных поездок, такими как Uber или Lyft (серверные вычисления). Непосредственные выгоды от затрат связаны с отсутствием эксплуатационных расходов, включая: лицензии, установку, зависимости и расходы на персонал для обслуживания, поддержки или исправления. [19] Из-за бесконечной масштабируемости разработчики могут столкнуться с шоком от счетов в результате неисправного кода или атаки типа «отказ в обслуживании» . Однако эти деньги часто возмещаются за счет поставщика услуг. [20]

Эластичность против масштабируемости

Кроме того, архитектура без сервера означает, что разработчикам и операторам не нужно тратить время на настройку и настройку политик или систем автоматического масштабирования; поставщик облачных услуг отвечает за масштабирование мощности в соответствии со спросом. [1] [21] [19] Как говорит Google: «от прототипа до производства и масштабирования в масштабах планеты». [19]

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

Небольшие команды разработчиков могут самостоятельно запускать код, не завися от команд инженеров инфраструктуры и поддержки; все больше разработчиков становятся специалистами DevOps , а различия между разработчиками программного обеспечения и инженерами по оборудованию стираются. [19]

Производительность

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

Недостатки

Serverless приложения подвержены заблуждениям распределенных вычислений . Кроме того, они подвержены следующим заблуждениям: [22] [23]

Производительность

Редко используемый серверный код может страдать от большей задержки ответа , чем код, который постоянно выполняется на выделенном сервере, виртуальной машине или контейнере. Это связано с тем, что, в отличие от автоматического масштабирования, поставщик облачных услуг обычно полностью останавливает серверный код, когда он не используется. Это означает, что если среде выполнения (например, среде выполнения Java ) требуется значительное время для запуска, это создаст дополнительную задержку. [24] Это называется холодным стартом в серверных вычислениях.

Ограничения ресурсов

Бессерверные вычисления не подходят для некоторых вычислительных рабочих нагрузок, таких как высокопроизводительные вычисления , из-за ограничений ресурсов, налагаемых поставщиками облачных услуг, а также потому, что, вероятно, будет дешевле массово предоставить необходимое количество серверов в любой момент времени. [25] Это затрудняет развертывание сложных приложений (например, с направленным ациклическим графом функций); бессерверные вычисления из коробки больше всего подходят для выполнения отдельных функций без сохранения состояния. Некоторые коммерческие предложения, такие как AWS Step Functions от Amazon и Azure Durable Functions от Microsoft, призваны облегчить эту задачу.

Мониторинг и отладка

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

Безопасность

Согласно OWASP , бессерверные приложения уязвимы к разновидностям традиционных атак, небезопасному коду и некоторым специфичным для бессерверных атак (например, Denial of Wallet [27] ). Таким образом, риски изменились, и предотвращение атак требует изменения мышления. [28] [29]

Serverless иногда ошибочно считается более безопасным, чем традиционные архитектуры. Хотя это в некоторой степени верно, поскольку уязвимости ОС устраняются поставщиком облачных услуг, общая поверхность атаки значительно больше, поскольку в приложении гораздо больше компонентов по сравнению с традиционными архитектурами, и каждый компонент является точкой входа в serverless-приложение. Более того, решения по безопасности, которые клиенты использовали для защиты своих облачных рабочих нагрузок, становятся неактуальными, поскольку клиенты не могут контролировать и устанавливать что-либо на уровне конечной точки и сети, например, систему обнаружения/предотвращения вторжений (IDS/IPS). [30]

Это усиливается монокультурными свойствами всей серверной сети. (Один недостаток может быть применен глобально.) По словам Protego, «решение для обеспечения безопасности бессерверных приложений — это тесное партнерство между разработчиками, DevOps и AppSec, также известным как DevSecOps. Найдите баланс, при котором разработчики не владеют безопасностью, но и не освобождаются от ответственности. Примите меры, чтобы сделать это проблемой каждого. Создавайте кросс-функциональные команды и работайте над тесной интеграцией между специалистами по безопасности и командами разработчиков. Сотрудничайте, чтобы ваша организация могла устранять риски безопасности со скоростью бессерверных приложений». [31]

Конфиденциальность

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

Стандарты

Бессерверные вычисления охватываются Международным управлением по центрам обработки данных (IDCA) в их Framework AE360. [32] Однако часть, связанная с переносимостью, может стать проблемой при перемещении бизнес-логики из одного публичного облака в другое, для чего было создано решение Docker . Cloud Native Computing Foundation (CNCF) также работает над разработкой спецификации совместно с Oracle . [33]

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

Бессерверные вычисления предоставляются как сторонняя услуга. Приложения и программное обеспечение, работающие в бессерверной среде, по умолчанию привязаны к определенному поставщику облачных вычислений. Эта проблема усугубляется в бессерверных вычислениях, поскольку с его повышенным уровнем абстракции публичные поставщики разрешают клиентам загружать код только на платформу FaaS без полномочий настраивать базовые среды. Что еще более важно, при рассмотрении более сложного рабочего процесса, включающего Backend-as-a-Service (BaaS), предложение BaaS обычно может изначально запустить только предложение FaaS от того же поставщика. Это делает миграцию рабочей нагрузки в бессерверных вычислениях практически невозможной. Поэтому рассмотрение того, как проектировать и развертывать бессерверные рабочие процессы с точки зрения нескольких облаков , кажется многообещающим и начинает преобладать [ когда? ] . [34] [35] [36]

Лучшие практики

Следование практикам DevSecOps может помочь более эффективно использовать и защищать бессерверные технологии. [37] В бессерверных приложениях граница между инфраструктурой и бизнес-логикой размыта, и приложения обычно распределены по различным сервисам. По словам Янь Цуя, чтобы получить максимальную отдачу от усилий по тестированию, бессерверные приложения следует тестировать в основном для их интеграции, и, возможно, модульные тесты следует использовать только в случае сложной бизнес-логики. Кроме того, чтобы упростить отладку и реализацию бессерверных приложений, разработчикам следует использовать оркестровку в ограниченном контексте микросервиса и хореографию между ограниченными контекстами . [ 6]

По словам Янь Цуя, эфемерные ресурсы должны храниться вместе для достижения высокой сплоченности . Однако общие ресурсы, которые имеют длительное время развертывания (например, кластер AWS RDS ) и зона приземления должны иметь свой собственный отдельный репозиторий , конвейер развертывания и стек. [6]

Использование/функции

Бессерверные функции могут использоваться для: [38]

Смотрите также

Ссылки

  1. ^ abc Miller, Ron (24 ноября 2015 г.). «AWS Lambda делает бессерверные приложения реальностью». TechCrunch . Получено 10 июля 2016 г. .
  2. ^ Кунев, Сэмюэл (23 августа 2023 г.). «Serverless Computing: What It Is, and What It Is Not?». Сообщения ACM . Получено 4 апреля 2024 г.
  3. ^ Serverless как фактор изменения правил игры. Как извлечь максимальную пользу из облака . 2023. ISBN 9780137392551.
  4. ^ Лифт архитектора программного обеспечения: переосмысление роли архитектора в цифровом предприятии . O'Reilly Media. 2020. ISBN 978-1492077541.
  5. ^ ab MSV, Джанакирам (16 июля 2015 г.). «Поставщики PaaS, берегитесь! Amazon готов разрушить рынок». Forbes . Получено 10 июля 2016 г.
  6. ^ abc Cui, Yan (2020). Serverless Architectures on AWS (2-е изд.). Manning. ISBN 978-1617295423.
  7. ^ Уильямс, Кристофер. "Fotango задушит Зимки в канун Рождества". The Register . Получено 11 июня 2017 г.
  8. ^ "Python Runtime Environment | Стандартная среда App Engine для Python | Google Cloud Platform". Google Cloud Platform . Получено 2017-06-11 .
  9. ^ Эванс, Джон (11 апреля 2015 г.). «Что случилось с PaaS?». TechCrunch . Получено 17 декабря 2020 г.
  10. ^ Кинкейд, Джейсон (25 февраля 2009 г.). «Google App Engine предлагает тарифный план, выходящий за рамки квот; получите бесплатный билет на I/O, чтобы отпраздновать». TechCrunch . Получено 17 декабря 2020 г.
  11. ^ Миллер, Рон (13 ноября 2014 г.). «Amazon Launches Lambda, An Event-Driven Compute Service». TechCrunch . Получено 10 июля 2016 г. .
  12. ^ Нове, Джордан (9 февраля 2016 г.). «Google тихо запустил свой ответ на AWS Lambda». VentureBeat . Получено 10 июля 2016 г.
  13. ^ «Как выбрать облачную серверную платформу». www.arnnet.com.au . 3 марта 2021 г. Получено 23.03.2022 .
  14. ^ «Администрирование и автоматизация баз данных в один клик | Эра Nutanix».
  15. ^ "Amazon Aurora Serverless - Автоматически масштабируемая реляционная база данных по требованию - AWS". Amazon Web Services, Inc. Получено 08.08.2019 .
  16. ^ "Oracle переводит автономную базу данных на JSON". ZDNet . Получено 23.03.2022 .
  17. ^ Лардинойс, Фредерик (21 октября 2014 г.). «Google приобретает Firebase, чтобы помочь разработчикам создавать лучшие приложения в реальном времени | TechCrunch» . Получено 11 июня 2017 г.
  18. ^ Дарроу, Барб (2013-06-20). «Firebase получает $5,6 млн на запуск своего платного продукта и запуск своей базы». gigaom.com . Получено 2017-06-11 .
  19. ^ abcdefgh Джеймисон, Фрейзер (4 сентября 2017 г.). «Теряем сервер? Все говорят о бессерверной архитектуре».
  20. ^ Андерсон, Тим (10.12.2020). «Google Cloud (over)Run: как эксперимент с бесплатной пробной версией закончился счетом на 72 000 долларов за одну ночь». The Register . Получено 09.10.2024 .{{cite web}}: CS1 maint: url-status ( ссылка )
  21. ^ Миллер, Рон (31 марта 2016 г.). «Microsoft отвечает на бессерверные приложения AWS Lambda, запускаемые событиями, с помощью Azure Functions». TechCrunch . Получено 10 июля 2016 г.
  22. ^ Ричардс, Марк (3 марта 2020 г.). Основы архитектуры программного обеспечения: инженерный подход (1-е изд.). O'Reilly Media. ISBN 978-1492043454.
  23. ^ Ричардс, Марк (2021). Архитектура программного обеспечения: сложные части: современный анализ компромиссов для распределенных архитектур (1-е изд.). O'Reilly Media. ISBN 978-1492086895.
  24. ^ ван Эйк, Эрвин; Иосуп, Александру; Абад, Кристина Л.; Громанн, Йоханнес; Айсманн, Саймон (2018). «Видение SPEC RG Cloud Group на проблемы производительности архитектур FaaS Cloud» (PDF) . Companion of the 2018 ACM/SPEC International Conference on Performance Engineering . pp. 21–24. doi :10.1145/3185768.3186308. hdl : 1871.1/8aa529e9-f8f9-4305-8073-91dd1a9451fb . ISBN 9781450356299. S2CID  4718290.
  25. ^ Хеллерстайн, Джозеф; Фалейро, Хосе; Гонсалес, Джозеф; Шлейер-Смит, Иоганн; Скриканти, Викрам; Туманов, Алексей; У, Чэнган (2019). «Бессерверные вычисления: один шаг вперед, два шага назад». arXiv : 1812.03651 . {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  26. ^ Лейтнер, Филипп; Виттерн, Эрик; Шпильнер, Йозеф; Хаммер, Вальдемар (2019). «Эмпирическое исследование смешанного метода разработки программного обеспечения «функция как услуга» в промышленной практике». Журнал систем и программного обеспечения . 149 : 340–359. doi : 10.1016/j.jss.2018.12.013. hdl : 11475/14313 . ISSN  0164-1212. S2CID  67775784.
  27. ^ Келли, Дэниел; Главин, Фрэнк Г.; Барретт, Энда (01.08.2021). «Отказ от кошелька — определение надвигающейся угрозы бессерверным вычислениям». Журнал информационной безопасности и приложений . 60 : 102843. doi : 10.1016/j.jisa.2021.102843. ISSN  2214-2126.
  28. ^ "OWASP Serverless Top 10 | OWASP Foundation". owasp.org . Получено 20 мая 2024 г. .
  29. ^ OWASP/Serverless-Top-10-Project, OWASP, 2024-05-02 , получено 2024-05-20
  30. ^ «Защита облачной рабочей нагрузки (CWP) | CWPP».
  31. ^ Солоу, Хиллел (2019-02-05). «Риски и проблемы безопасности бессерверных вычислений». protego.io . Получено 20-03-2019 .
  32. ^ «Структура стандартов для экосистемы приложений | Международный орган по центрам обработки данных (IDCA)».
  33. ^ "CNCF, Oracle усиливают усилия по стандартизации Serverless". SDxCentral . Получено 24.11.2018 .
  34. ^ Aske, Austin; Zhao, Xinghui (2018-08-13). «Поддержка многопровайдерных серверных вычислений на периферии». Труды 47-й Международной конференции по параллельной обработке Companion . Семинары ICPP '18. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 1–6. doi :10.1145/3229710.3229742. ISBN 978-1-4503-6523-9. S2CID  195348799.
  35. ^ Baarzi, Ataollah Fatahi; Kesidis, George; Joe-Wong, Carlee; Shahrad, Mohammad (2021-11-01). «О достоинствах и жизнеспособности многооблачных серверов». Труды симпозиума ACM по облачным вычислениям . SoCC '21. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 600–608. doi :10.1145/3472883.3487002. ISBN 978-1-4503-8638-8. S2CID  239890130.
  36. ^ Чжао, Хайдун; Беномар, Закария; Пфандцельтер, Тобиас; Георгантас, Николаос (2022-12-06). «Поддержка мультиоблачных вычислений в бессерверных вычислениях». 15-я международная конференция IEEE/ACM по коммунальным и облачным вычислениям (UCC) 2022 г. стр. 285–290. arXiv : 2209.09367 . doi :10.1109/UCC56403.2022.00051. ISBN 978-1-6654-6087-3. S2CID  252383217.
  37. ^ Катцер, Джейсон (2020). Изучение Serverless: проектирование, разработка и развертывание с уверенностью . O'Reilly Media. ISBN 978-1492057017.
  38. ^ «Что такое бессерверные вычисления?». ITPro Today . 2021-12-13 . Получено 2022-03-23 .

Дальнейшее чтение

  1. ^ Джонас, Эрик (февраль 2019 г.). «Упрощенное облачное программирование: взгляд Беркли на бессерверные вычисления». стр. 1–33. arXiv : 1902.03383 [cs.OS].