Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

Бессерверная среда выполнения [ править ]

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

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

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

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

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

IBM предлагает IBM Cloud Functions в общедоступном IBM Cloud с 2016 года. [10]

Microsoft Azure предлагает функции Azure как в общедоступном облаке Azure, так и локально через Azure Stack. [11]

Cloudflare предлагает Cloudflare Workers с 2017 года. [12]

Бессерверные базы данных [ править ]

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

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

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

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

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

Преимущества [ править ]

Стоимость [ править ]

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

Это можно охарактеризовать как оплату по мере использования [17] или «чистый код» [17], поскольку вы платите исключительно за время и память, выделенные для выполнения вашего кода; без сопутствующих комиссий за простой. [17]

Непосредственная экономическая выгода связана с отсутствием затрат на операционные системы, включая: лицензии, установку, зависимости, обслуживание, поддержку и исправления. [17]

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

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

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

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

Производительность [ править ]

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

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

Производительность [ править ]

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

Ограничения ресурсов [ править ]

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

Мониторинг и отладка [ править ]

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

Безопасность [ править ]

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

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

Конфиденциальность [ править ]

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

Стандарты [ править ]

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

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

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

См. Также [ править ]

  • Облачные вычисления
  • Функционировать как услуга

Ссылки [ править ]

  1. ↑ a b c Миллер, Рон (24 ноября 2015 г.). «AWS Lambda делает бессерверные приложения реальностью» . TechCrunch . Проверено 10 июля +2016 . CS1 maint: обескураженный параметр ( ссылка )
  2. ^ a b MSV, Джанакирам (16 июля 2015 г.). «Поставщики PaaS, будьте осторожны! Amazon намерен подорвать рынок» . Проверено 10 июля +2016 . CS1 maint: обескураженный параметр ( ссылка )
  3. ^ Уильямс, Кристофер. «Фотанго, чтобы задушить Зимки в канун Рождества» . Проверено 11 июня 2017 .
  4. ^ «Python Runtime Environment | Стандартная среда App Engine для Python | Google Cloud Platform» . Облачная платформа Google . Проверено 11 июня 2017 .
  5. ^ «PiCloud запускает платформу бессерверных вычислений для общественности» . TechCrunch . Проверено 17 декабря 2018 .
  6. ^ Эванс, Джон. TechCrunch https://techcrunch.com/2015/04/11/whatever-happened-to-paas/ . Проверено 17 декабря 2020 года . Отсутствует или пусто |title=( справка )
  7. ^ Кинкейд, Джейсон. "Google App Engine предлагает тарифный план сверх квот; получите бесплатный билет на ввод-вывод, чтобы отпраздновать это событие" . TechCrunch . Проверено 17 декабря 2020 года .
  8. Миллер, Рон (13 ноября 2014 г.). «Amazon запускает Lambda, вычислительную службу, управляемую событиями» . TechCrunch . Проверено 10 июля +2016 . CS1 maint: обескураженный параметр ( ссылка )
  9. ^ NOVET, Иордания (9 февраля 2016). «Google незаметно представил свой ответ AWS Lambda» . VentureBeat . Проверено 10 июля +2016 . CS1 maint: обескураженный параметр ( ссылка )
  10. Рианна Циммерман, Майк (23 февраля 2016 г.). «IBM представляет быструю открытую альтернативу программированию, основанному на событиях» .
  11. ^ a b Миллер, Рон (31 марта 2016 г.). «Microsoft отвечает на запускаемые событиями бессерверные приложения AWS Lambda с помощью функций Azure» . TechCrunch . Проверено 10 июля +2016 . CS1 maint: обескураженный параметр ( ссылка )
  12. Варда, Кентон (29 сентября 2017 г.). «Представляем Cloudflare Workers: запускайте сервисных воркеров JavaScript на периферии» . Cloudflare .
  13. ^ https://www.nutanix.com/products/era/
  14. ^ «Amazon Aurora Serverless - реляционная база данных с автоматическим масштабированием по запросу - AWS» . Amazon Web Services, Inc . Проверено 8 августа 2019 .
  15. ^ Лардинуа, Фредерик. "Google приобретает Firebase, чтобы помочь разработчикам создавать лучшие приложения в реальном времени | TechCrunch" . Проверено 11 июня 2017 .
  16. ^ Дэрроу, Барб (2013-06-20). «Firebase получает 5,6 миллиона долларов на запуск своего платного продукта и активизацию своей базы» . gigaom.com . Проверено 11 июня 2017 .
  17. ^ a b c d e f g h Джеймисон, Фрейзер (4 сентября 2017 г.). «Потеря сервера? Все говорят о бессерверной архитектуре» .
  18. ^ ван Эйк, Эрвин; Иосуп, Александру; Abad, Cristina L .; Громанн, Йоханнес; Эйсманн, Саймон (2018). «Взгляд группы SPEC RG Cloud на проблемы производительности облачных архитектур FaaS»: 21–24. DOI : 10.1145 / 3185768.3186308 . Цитировать журнал требует |journal=( помощь )
  19. ^ Hellerstein, Джозеф; Фалейро, Хосе; Гонсалес, Джозеф; Шлейер-Смит, Иоганн; Скриканти, Викрам; Туманов Алексей; У, Ченган (2019). «Бессерверные вычисления: один шаг вперед, два шага назад». Цитировать журнал требует |journal=( помощь )
  20. ^ Лейтнер, Филипп; Виттерн, Эрик; Спилнер, Йозеф; Хаммер, Вальдемар (2019). «Эмпирическое исследование смешанных методов разработки программного обеспечения« функция как услуга »в промышленной практике». Журнал систем и программного обеспечения . 149 : 340–359. DOI : 10.1016 / j.jss.2018.12.013 . ISSN 0164-1212 . 
  21. ^ https://www.puresec.io/serverless-security-top-12-csa-puresec
  22. ^ Солоу, Гилель (2019-02-05). «Риски и проблемы безопасности бессерверных вычислений» . protego.io . Проверено 20 марта 2019 .
  23. ^ «CNCF, Усилия по бессерверной стандартизации Oracle Boost» . SDxCentral . Проверено 24 ноября 2018 .
  24. ^ Башир, Файзан (2018-05-28). «Что такое бессерверная архитектура? Каковы ее плюсы и минусы?» . Хакерский полдень . Проверено 3 апреля 2019 .
  25. ^ "Что такое бессерверный? Вот простой ответ!" . Squadex . 2019-01-17 . Проверено 3 апреля 2019 .

Дальнейшее чтение [ править ]

  • Робертс, Майк (25 июля 2016 г.). «Бессерверные архитектуры» . MartinFowler.com . Проверено 30 июля 2016 года . CS1 maint: обескураженный параметр ( ссылка )
  • Джеймисон, Фрейзер (4 сентября 2017 г.). «Потеря сервера? Все говорят о бессерверной архитектуре» . BCS, дипломированный институт информационных технологий . Проверено 7 ноября 2017 года . CS1 maint: обескураженный параметр ( ссылка )