Jump to content

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

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

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

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

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

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

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

[ редактировать ]

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

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

[ редактировать ]

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

Knative и Fission — две платформы FaaS с открытым исходным кодом , работающие с Kubernetes .

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

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

Google Cloud Platform создала второе бессерверное предложение — Google Cloud Functions . В 2016 году [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, которая представляет собой службу автономной обработки транзакций. Бессерверная служба также включает версию JSON. [16]

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

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

[ редактировать ]

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

Это можно назвать вычислениями с оплатой по факту использования. [19] или голый код, [19] поскольку плата взимается исключительно на основе времени и памяти, выделенных для запуска кода, без соответствующей платы за время простоя. [19] Здесь можно провести полезную аналогию между арендой автомобиля (традиционные облачные виртуальные машины) и приложениями для совместного использования поездок, такими как Uber или Lyft (бессерверные вычисления). Непосредственная экономическая выгода связана с отсутствием эксплуатационных расходов, включая: лицензии, установку, зависимости и затраты на персонал для обслуживания, поддержки или исправлений. [19]

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

[ редактировать ]

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

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

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

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

[ редактировать ]

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

Недостатки

[ редактировать ]

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

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

[ редактировать ]

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

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

[ редактировать ]

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

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

[ редактировать ]

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

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

[ редактировать ]

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

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

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

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

[ редактировать ]

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

Стандарты

[ редактировать ]

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

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

[ редактировать ]

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

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

[ редактировать ]

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

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

[ редактировать ]

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

  • Аналитика данных
  • Потоковая обработка видео
  • CI/CD-операции
  • Преобразование файлов
  • Агрегация и реструктуризация журналов
  • Поддержка динамического контента веб-сайта

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б с Миллер, Рон (24 ноября 2015 г.). «AWS Lambda делает бессерверные приложения реальностью» . ТехКранч . Проверено 10 июля 2016 г.
  2. ^ Лифт архитектора программного обеспечения: новое определение роли архитектора на цифровом предприятии . О'Рейли Медиа. 2020. ISBN  978-1492077541 .
  3. ^ Перейти обратно: а б MSV, Джанакирам (16 июля 2015 г.). «Продавцы PaaS, будьте осторожны! Amazon готов разрушить рынок» . Форбс . Проверено 10 июля 2016 г.
  4. ^ Кунев, Самуэль (23 августа 2023 г.). «Бессерверные вычисления: что это такое и чем не является?» . Коммуникации АКМ . Проверено 4 апреля 2024 г.
  5. ^ Перейти обратно: а б Цуй, Ян (2020). Бессерверные архитектуры на AWS (2-е изд.). Мэннинг. ISBN  978-1617295423 .
  6. ^ Уильямс, Кристофер. «Фотанго задушит Зимки в канун Рождества» . Регистр . Проверено 11 июня 2017 г.
  7. ^ «Среда выполнения Python | Стандартная среда App Engine для Python | Google Cloud Platform» . Облачная платформа Google . Проверено 11 июня 2017 г.
  8. ^ «PiCloud представляет общедоступную платформу бессерверных вычислений» . ТехКранч . 20 июля 2010 г. Проверено 17 декабря 2018 г.
  9. ^ Эванс, Джон (11 апреля 2015 г.). «Что случилось с PaaS?» . ТехКранч . Проверено 17 декабря 2020 г.
  10. ^ Кинкейд, Джейсон (25 февраля 2009 г.). «Google App Engine предлагает тарифный план, выходящий за рамки квот; воспользуйтесь бесплатным билетом ввода-вывода, чтобы отпраздновать это событие» . ТехКранч . Проверено 17 декабря 2020 г.
  11. ^ Миллер, Рон (13 ноября 2014 г.). «Amazon запускает Lambda, службу вычислений, управляемую событиями» . ТехКранч . Проверено 10 июля 2016 г.
  12. ^ Новет, Иордания (9 февраля 2016 г.). «Google незаметно запустил свой ответ AWS Lambda» . ВенчурБит . Проверено 10 июля 2016 г.
  13. ^ «Как выбрать облачную бессерверную платформу» . www.arnnet.com.au . 3 марта 2021 г. Проверено 23 марта 2022 г.
  14. ^ «Администрирование и автоматизация баз данных в один клик | Эра Nutanix» .
  15. ^ «Amazon Aurora Serverless — реляционная база данных с автоматическим масштабированием по требованию — AWS» . Amazon Веб-сервисы, Inc. Проверено 8 августа 2019 г.
  16. ^ «Oracle переводит автономную базу данных в формат JSON» . ЗДНет . Проверено 23 марта 2022 г.
  17. ^ Лардинуа, Фредерик (21 октября 2014 г.). «Google приобретает Firebase, чтобы помочь разработчикам создавать лучшие приложения, работающие в реальном времени | TechCrunch» . Проверено 11 июня 2017 г.
  18. ^ Дэрроу, Барб (20 июня 2013 г.). «Firebase получает 5,6 миллиона долларов на запуск платного продукта и запуск своей базы» . gigaom.com . Проверено 11 июня 2017 г.
  19. ^ Перейти обратно: а б с д и ж г час Джеймисон, Фрейзер (4 сентября 2017 г.). «Потерять сервер? Все говорят о бессерверной архитектуре» .
  20. ^ Миллер, Рон (31 марта 2016 г.). «Microsoft отвечает на бессерверные приложения AWS Lambda, запускаемые по событиям, с помощью функций Azure» . ТехКранч . Проверено 10 июля 2016 г.
  21. ^ Ричардс, Марк (3 марта 2020 г.). Основы архитектуры программного обеспечения: инженерный подход (1-е изд.). О'Рейли Медиа. ISBN  978-1492043454 .
  22. ^ Ричардс, Марк (2021). Архитектура программного обеспечения: сложные части: современный анализ компромиссов для распределенных архитектур (1-е изд.). О'Рейли Медиа. ISBN  978-1492086895 .
  23. ^ ван Эйк, Эрвин; Иосуп, Александру; Абад, Кристина Л.; Громанн, Йоханнес; Эйсманн, Саймон (2018). «Видение облачной группы SPEC RG на проблемы производительности облачных архитектур FaaS» (PDF) . Участник Международной конференции ACM/SPEC 2018 по проектированию производительности . стр. 21–24. дои : 10.1145/3185768.3186308 . hdl : 1871.1/8aa529e9-f8f9-4305-8073-91dd1a9451fb . ISBN  9781450356299 . S2CID   4718290 .
  24. ^ Хеллерштейн, Джозеф; Фалейро, Хосе; Гонсалес, Джозеф; Шлейер-Смит, Иоганн; Скриканти, Викрам; Туманов, Алексей; Ву, Чэнган (2019). «Бессерверные вычисления: один шаг вперед, два шага назад». arXiv : 1812.03651 . {{cite journal}}: Для цитирования журнала требуется |journal= ( помощь )
  25. ^ Лейтнер, Филипп; Виттерн, Эрик; Шпилнер, Йозеф; Хаммер, Вальдемар (2019). «Эмпирическое исследование смешанного метода разработки программного обеспечения по принципу «функция как услуга» в производственной практике». Журнал систем и программного обеспечения . 149 : 340–359. дои : 10.1016/j.jss.2018.12.013 . hdl : 11475/14313 . ISSN   0164-1212 . S2CID   67775784 .
  26. ^ «Топ-10 бессерверных приложений OWASP | Фонд OWASP» . owasp.org . Проверено 20 мая 2024 г.
  27. ^ OWASP/Serverless-Top-10-Project , OWASP, 02 мая 2024 г. , получено 20 мая 2024 г.
  28. ^ «Защита облачных рабочих нагрузок (CWP) | CWPP» .
  29. ^ Солоу, Гилель (5 февраля 2019 г.). «Риски и проблемы безопасности бессерверных вычислений» . protego.io . Проверено 20 марта 2019 г.
  30. ^ «Структура стандартов для экосистемы приложений | Международный орган центров обработки данных (IDCA)» .
  31. ^ «CNCF, Oracle ускоряет усилия по стандартизации бессерверных технологий» . SDxЦентральный . Проверено 24 ноября 2018 г.
  32. ^ Аске, Остин; Чжао, Синхуэй (13 августа 2018 г.). «Поддержка бессерверных вычислений с участием нескольких поставщиков на периферии» . Материалы 47-й Международной конференции по параллельной обработке данных . Семинары ICPP '18. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 1–6. дои : 10.1145/3229710.3229742 . ISBN  978-1-4503-6523-9 . S2CID   195348799 .
  33. ^ Баарзи, Атаолла Фатахи; Кесидис, Джордж; Джо-Вонг, Карли; Шахрад, Мохаммед (1 ноября 2021 г.). «О достоинствах и жизнеспособности мультиоблачной бессерверной среды» . Материалы симпозиума ACM по облачным вычислениям . SoCC '21. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 600–608. дои : 10.1145/3472883.3487002 . ISBN  978-1-4503-8638-8 . S2CID   239890130 .
  34. ^ Чжао, Хайдун; Беномар, Закария; Пфандзельтер, Тобиас; Георгантас, Николаос (06 декабря 2022 г.). «Поддержка мультиоблака в бессерверных вычислениях» . 2022 IEEE/ACM 15-я Международная конференция по коммунальным и облачным вычислениям (UCC) . стр. 285–290. arXiv : 2209.09367 . дои : 10.1109/UCC56403.2022.00051 . ISBN  978-1-6654-6087-3 . S2CID   252383217 .
  35. ^ Катцер, Джейсон (2020). Изучение бессерверных технологий: уверенное проектирование, разработка и развертывание . О'Рейли Медиа. ISBN  978-1492057017 .
  36. ^ «Что такое бессерверные вычисления?» . ИТПро сегодня . 13 декабря 2021 г. Проверено 23 марта 2022 г.

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

[ редактировать ]
  1. ^ Йонас, Эрик (февраль 2019 г.). «Упрощенное облачное программирование: взгляд Беркли на бессерверные вычисления». стр. 1–33. arXiv : 1902.03383 [ cs.OS ].
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 6387956c364510da68a1fedba8404b4a__1721285820
URL1:https://arc.ask3.ru/arc/aa/63/4a/6387956c364510da68a1fedba8404b4a.html
Заголовок, (Title) документа по адресу, URL1:
Serverless computing - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)