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