Бессерверные вычисления - Serverless computing
Бессерверные вычисления это облачные вычисления модель исполнения в котором облачный провайдер запускает сервер, и динамически управляет распределением машинных ресурсов. Цены основаны на фактическом количестве ресурсов, потребляемых приложением, а не на заранее приобретенных единицах мощности.[1] Это может быть форма служебные вычисления. Serverless - это неправильное употребление в том смысле, что серверы по-прежнему используются поставщиками облачных услуг для выполнения кода для разработчиков. Управление и подробности этих серверов прозрачный разработчикам приложений.
Бессерверные вычисления могут упростить процесс развертывание кода в производство. Операции масштабирования, планирования емкости и обслуживания могут быть скрыты от разработчика или оператора. Бессерверный код можно использовать вместе с кодом, развернутым в традиционных стилях, например микросервисы. В качестве альтернативы приложения могут быть написаны как полностью бессерверные и вообще не использовать подготовленные серверы.[2]Это не следует путать с вычислительными или сетевыми моделями, которые не требуют наличия реального сервера для работы, например пиринговый (P2P).
Бессерверная среда выполнения
Большинство поставщиков бессерверных систем, но не все, предлагают среды выполнения вычислений, также известные как функционировать как услуга (FaaS) платформы, которые выполняют логику приложения, но не хранят данные. Первой платформой исполнения кода с оплатой по мере использования была Zimki, выпущенная в 2006 году, но она не имела коммерческого успеха.[3] В 2008 году Google выпустил Google App Engine, в котором было предусмотрено выставление счетов по счетчику для приложений, которые использовали пользовательскую среду Python, но не могли выполнять произвольный код.[4] PiCloud, выпущенный в 2010 году, предлагал поддержку FaaS для Python.[5]
Кубелесс и деление - два Открытый исходный код Платформы FaaS, работающие с Kubernetes.
AWS Lambda, представленный Amazon в 2014 году,[6] был первым поставщиком инфраструктуры общедоступного облака, предложившим абстрактные бессерверные вычисления. Он поддерживается рядом дополнительных бессерверных инструментов AWS, таких как AWS Serverless Application Model (AWS SAM). Amazon CloudWatch, и другие.
Google Cloud Platform предлагает Облачные функции Google с 2016 года.[7]
IBM предлагает IBM Cloud Functions в общедоступном IBM Cloud с 2016 года.[8]
Microsoft Azure предлагает функции Azure, предлагаемые как в общедоступном облаке Azure, так и локально через Azure Stack.[9]
Бессерверные базы данных
Несколько бессерверных базы данных появились в последние несколько лет. Эти системы расширяют модель бессерверного исполнения на СУБД, устраняя необходимость выделения или масштабирования виртуализированный или физическое оборудование базы данных.
Нутаникс предлагает решение под названием Era, которое превращает существующую СУБД, такую как Oracle, MariaDB, PostgreSQL или Microsoft SQL Server в бессерверную службу.[10]
Амазонка Аврора предлагает бессерверную версию своих баз данных, основанную на MySQL и PostgreSQL, с автоматическими масштабируемыми конфигурациями по запросу. [11]
Озеро данных Azure - это высокомасштабируемая служба хранения данных и аналитики. Служба размещена в Лазурь, Публичное облако Microsoft. Аналитика озера данных Azure предоставляет распределенную инфраструктуру, которая может динамически распределять или освобождать ресурсы, поэтому клиенты платят только за те услуги, которые они используют.
Firebase, также принадлежит Google,[12] включает иерархическая база данных и доступен по фиксированным планам и планам с оплатой по мере использования.[13]
Преимущества
Расходы
Бессерверная версия может быть более рентабельной, чем аренда или покупка фиксированного количества серверов.[14] что обычно связано со значительными периодами недоиспользования или простоя.[1] Это может быть даже более рентабельным, чем предоставление группа автомасштабирования, за счет более эффективных тара основных машинных ресурсов.
Это можно описать как оплату по мере использования.[14] или голый код[14] так как с вас взимается плата исключительно за время и память, выделенные для выполнения вашего кода; без сопутствующих комиссий за простой.[14]
Непосредственная экономическая выгода связана с отсутствием затрат на операционные системы, включая: лицензии, установку, зависимости, обслуживание, поддержку и исправления.[14]
Эластичность против масштабируемости
Кроме того, бессерверная архитектура означает, что разработчикам и операторам не нужно тратить время на установку и настройку политик или систем автомасштабирования; поставщик облачных услуг отвечает за масштабирование емкости в соответствии со спросом.[1][9][14]. Как говорит Google: «от прототипа до производства и масштаба планеты».[14]
Поскольку облачные системы по своей природе масштабируются как вниз, так и вверх, эти системы известны как эластичные, а не масштабируемые.
Небольшие группы разработчиков могут запускать код самостоятельно, независимо от команд инфраструктуры и инженеров поддержки; все больше разработчиков становятся DevOps опыт и различия между разработчиком программного обеспечения и инженером по оборудованию стираются.[14]
Продуктивность
С участием функционировать как услуга, единицы кода, доступные внешнему миру, являются простыми событиями функции. Это означает, что обычно программисту не нужно беспокоиться о многопоточность или непосредственно обращение HTTP запросы в своем коде, упрощая задачу разработки внутреннего программного обеспечения.
Недостатки
Спектакль
Нечасто используемый бессерверный код может страдать от большего отклика задержка чем код, который постоянно выполняется на выделенном сервере, виртуальной машине или контейнере. Это связано с тем, что, в отличие от автомасштабирования, поставщик облачных услуг обычно полностью «замедляет» бессерверный код, когда он не используется. Это означает, что если среда выполнения (например, Ява runtime) требует значительного количества времени для запуска, это создаст дополнительную задержку.
Ограничения ресурсов
Бессерверные вычисления не подходят для некоторых вычислительных рабочих нагрузок, таких как высокопроизводительные вычисления из-за ограничений ресурсов, налагаемых облачными провайдерами, а также потому, что было бы, вероятно, дешевле выделить количество серверов, которые, как считается, потребуются в любой момент времени.
Мониторинг и отладка
Диагностика проблем производительности или чрезмерного использования ресурсов с бессерверным кодом может быть сложнее, чем с традиционным серверным кодом, потому что, хотя все функции могут быть синхронизированы по времени,[2] обычно нет возможности углубиться в подробности, прикрепив профилировщики, отладчики или APM инструменты. Кроме того, среда, в которой выполняется код, обычно не Открытый исходный код, поэтому его рабочие характеристики не могут быть точно воспроизведены в местная среда.
Безопасность
Бессерверные архитектуры иногда ошибочно считаются более безопасными, чем традиционные архитектуры. Хотя это в некоторой степени верно, поскольку об уязвимостях ОС заботится поставщик облачных услуг, общая поверхность атаки значительно больше, поскольку в приложении гораздо больше компонентов по сравнению с традиционными архитектурами, и каждый компонент является точкой входа в бессерверное приложение. . Более того, решения безопасности, которые клиенты использовали для защиты своих облачных рабочих нагрузок, теряют актуальность, поскольку клиенты не могут контролировать и устанавливать что-либо на конечная точка и сеть уровень, такой как система обнаружения / предотвращения вторжений (IDS / IPS). [15]
Это усиливается монокультурными свойствами всей серверной сети. (Единственный недостаток может применяться глобально.) Согласно Protego, «решение для защиты бессерверных приложений - это тесное сотрудничество между разработчиками, DevOps и AppSec, также известным как DevSecOps. Найдите баланс, когда разработчики не владеют безопасностью, но они также не освобождаются от ответственности. Примите меры, чтобы сделать это проблемой каждого. Создавайте кросс-функциональные группы и работайте над тесной интеграцией между специалистами по безопасности и группами разработчиков. Сотрудничайте, чтобы ваша организация могла устранять риски безопасности со скоростью бессерверной скорости ".[16]
Конфиденциальность
Многие бессерверные функциональные среды основаны на проприетарный общедоступные облачные среды. Здесь некоторые Конфиденциальность Необходимо учитывать такие последствия, как совместное использование ресурсов и доступ внешних сотрудников. Однако бессерверные вычисления также могут выполняться в среде частного облака или даже локально, например, с использованием Kubernetes Платформа. Это дает компаниям полный контроль над механизмами конфиденциальности, как и в случае с традиционными настройками серверов.
Стандарты
Бессерверные вычисления рассматриваются Управлением международного центра обработки данных (IDCA) в их Framework AE360. Однако часть, связанная с переносимостью, может быть проблемой при переносе бизнес-логики из одного общедоступного облака в другое, для которого Докер решение было создано. Cloud Native Computing Foundation (CNCF) также работает над разработкой спецификации с Oracle.[17]
Привязка к поставщику
Бессерверные вычисления предоставляются как сторонняя услуга. Приложения и программное обеспечение, работающие в бессерверной среде, по умолчанию привязаны к определенному поставщику облачных услуг.[18] Таким образом, бессерверный режим может вызвать множество проблем во время миграции.[19]
Смотрите также
Рекомендации
- ^ а б c Миллер, Рон (24 ноября 2015 г.). «AWS Lambda делает бессерверные приложения реальностью». TechCrunch. Получено 10 июля 2016.
- ^ а б MSV, Джанакирам (16 июля 2015 г.). «Поставщики PaaS, будьте осторожны! Amazon собирается подорвать рынок». Получено 10 июля 2016.
- ^ Уильямс, Кристофер. "Фотанго, чтобы задушить Зимки в канун Рождества". Получено 2017-06-11.
- ^ «Среда выполнения Python | Стандартная среда App Engine для Python | Облачная платформа Google». Облачная платформа Google. Получено 2017-06-11.
- ^ «PiCloud представляет платформу бессерверных вычислений для общественности». TechCrunch. Получено 2018-12-17.
- ^ Миллер, Рон (13 ноября 2014 г.). «Amazon запускает Lambda, вычислительную службу, управляемую событиями». TechCrunch. Получено 10 июля 2016.
- ^ Новет, Иордания (9 февраля 2016 г.). «Google незаметно представила свой ответ AWS Lambda». VentureBeat. Получено 10 июля 2016.
- ^ Циммерман, Майк (23 февраля 2016 г.). «IBM представляет быструю открытую альтернативу программированию, основанному на событиях».
- ^ а б Миллер, Рон (31 марта 2016 г.). «Microsoft отвечает на запускаемые событиями бессерверные приложения AWS Lambda с помощью функций Azure». TechCrunch. Получено 10 июля 2016.
- ^ https://www.nutanix.com/products/era/
- ^ «Amazon Aurora Serverless - реляционная база данных с автоматическим масштабированием по запросу - AWS». Amazon Web Services, Inc. Получено 2019-08-08.
- ^ Лардинуа, Фредерик. "Google приобретает Firebase, чтобы помочь разработчикам создавать лучшие приложения для работы в реальном времени | TechCrunch". Получено 2017-06-11.
- ^ Дэрроу, Барб (2013-06-20). «Firebase получает 5,6 миллиона долларов на запуск своего платного продукта и активизацию своей базы». gigaom.com. Получено 2017-06-11.
- ^ а б c d е ж грамм час Джеймисон, Фрейзер (4 сентября 2017 г.). «Потеря сервера? Все говорят о бессерверной архитектуре».
- ^ https://www.puresec.io/serverless-security-top-12-csa-puresec
- ^ Солоу, Гилель (05.02.2019). «Риски и проблемы безопасности бессерверных вычислений». protego.io. Получено 2019-03-20.
- ^ "CNCF, усилия по бессерверной стандартизации Oracle Boost". SDxCentral. Получено 2018-11-24.
- ^ Башир, Файзан (28.05.2018). «Что такое бессерверная архитектура? Каковы ее преимущества и недостатки?». Хакерский полдень. Получено 2019-04-03.
- ^ «Что такое бессерверное? Вот простой ответ!». Squadex. 2019-01-17. Получено 2019-04-03.
дальнейшее чтение
- Робертс, Майк (25 июля 2016 г.). «Бессерверные архитектуры». MartinFowler.com. Получено 30 июля 2016.
- Джеймисон, Фрейзер (4 сентября 2017 г.). «Потеря сервера? Все говорят о бессерверной архитектуре». BCS, дипломированный институт ИТ. Получено 7 ноября 2017.