По мере того, как концепции DevOps и микросервисов все больше принимаются в ИТ-индустрии, появился еще один новый термин — бессерверные.Начинатьв поле зрения людей. Особенно после того, как Alibaba Cloud и Tencent Cloud, два основных отечественных поставщика облачных услуг, запустили свои соответствующие бессерверные продукты в апреле этого года, бессерверные услуги какое-то время были дорогими. Так что же такое Serverless и как оно связано с DevOps и микросервисами? В этой статье мы попытаемся демистифицировать Serverless и дать вам представление о нем.
1 Serverless != No Server
Прежде всего, необходимо уточнить, что Serverless не означает буквально безсерверный, а означает, что разработчикам приложений больше не нужноволноватьсяБольшинство операций, связанных с сервером, таких как покупка сервера, настройка операционной среды приложения, балансировка нагрузки, сбор журналов, мониторинг системы и т. д., можно оставить на бессерверную платформу.Единственное, что нужно сделать разработчикам приложений, — это написать код приложения. Реализовать бизнес-логику. Во избежание двусмысленности в этой статье будет сохранено использование Serverless, а не его обычный китайский перевод Serverless.
Serverless впервые был предложен Amazon, а первая бессерверная платформа была запущена в конце 2014 года.Amazon Lambda, разработчику приложения нужно только загрузить код или пакет приложения, чтобы опубликовать приложение. После этого крупные поставщики облачных услуг по всему миру запустили собственные бессерверные платформы, такие какGoogle Cloud Functions,Azure Functions,IBM Cloud Functions, и вышеупомянутыйОблачные вычисления Alibabaа такжеБессерверная облачная функция Tencent CloudЖдать. В дополнение к поставщикам облачных услуг в сообществе с открытым исходным кодом появилось много отличных бессерверных сред, таких какApache OpenWhisk,Spring Cloud Function,Lambada Framework,webtaskЖдать.
согласно сServerless ArchitecturesВ этой статье бессерверные приложения можно разделить на две категории: BaaS и FaaS.
- BaaS: серверная часть как услуга, где серверная часть может относиться к приложениям и службам, предоставляемым любой третьей стороной, например к службам облачных баз данных.Firebaseа такжеParse, который предоставляет единую службу аутентификации пользователейAuth0а такжеAmazon CognitoЖдать.
- FaaS: функции как услуга, приложения существуют в виде функций, размещаются и запускаются сторонними облачными платформами, такими как вышеупомянутые Amazon Lambda, Google Cloud Functions и т. д.
В этой статье в основном обсуждается FaaS, который также является основным типом, поддерживаемым различными бессерверными платформами и фреймворками.
2 функции
О чем именно мы говорим, когда говорим о функциях?
Функция, говорят, что это может быть основная функция приложения, а может быть и простая дополнительная функция Как вы понимаете функции в FaaS? Давайте сначала посмотрим на картинку.
Монолит слева — это то, что мы часто называем отдельным приложением, посередине — микросервис, а справа — функция в FaaS (во избежание двусмысленности, если не указано иное, функции, упомянутые ниже, относятся к функциям в FaaS). Точно так же, как одно приложение можно разделить на несколько микрослужб на основе бизнес-модулей, микрослужбу также можно разделить на несколько функций в зависимости от сценариев использования. Например, рекламный микросервис можно по крайней мере разделить на несколько функций, таких как ставки в реальном времени, подсчет показов и запрос отчета. То есть функции в FaaS и API в микросервисах имеют одинаковую степень детализации. Но в отличие от API, в бессерверной архитектуре каждая функция развертывается независимо и выполняется по запросу. Есть ли смысл в таком разделении? Затем посмотрите вниз.
3 Поймите 4 ключа Serverless
По сравнению с другими архитектурами бессерверная архитектура обладает следующими четырьмя характеристиками.
3.1 Более низкие эксплуатационные расходы
Будь то IDC в прошлом или облачный хост сегодня, это, по сути, модель ежемесячного выставления счетов, то есть независимо от того, есть ли пользователи, получающие доступ к вашим приложениям, и независимо от того, развертываете ли вы приложения или нет, вы должны платить те же деньги. Но для бессерверных приложений вам нужно использовать только реальное количество ресурсов (например, Amazon Lambda内存大小*计算时间Оплачивается количество вычислительных ресурсов, то есть сколько используется и сколько оплачивается, что эквивалентно модели дозированной тарификации мобильной сети. Так почему вы говорите, что использование этой модели может снизить эксплуатационные расходы?
Прямоугольная область под красной линией представляет собой стоимость, которую вам необходимо заплатить в соответствии с традиционной моделью ежемесячного выставления счетов, а область в синей области представляет собой стоимость в соответствии с моделью выставления счетов по счетчику.Очевидно, что последняя намного ниже, чем первая. Согласно отчету, опубликованному Forbes в 2015 г.исследовательский отчет, С точки зрения всего года, средний коэффициент использования ресурсов серверов в типичном центре обработки данных составляет всего лишь от 5% до 15%, что означает, что если все серверы используются, теоретически, по крайней мере, 80% эксплуатационных расходов можно спасти.
Еще одно скрытое преимущество тарификации по счетчику заключается в том, что любое повышение производительности может быть напрямую отражено в эксплуатационных расходах, что более полно отражает ценность технического специалиста.
3.2 Автоматическое масштабирование
Вторая часто упоминаемая функция Serverless — автоматическое масштабирование. Как упоминалось ранее, функция - это приложение.Функция делает только одну вещь и может быть расширена или сокращена независимо, не беспокоясь о влиянии на другие функции.Более того, из-за меньшей детализации скорость расширения и сокращения также выше. Для монолитных приложений и микросервисов с помощью различных технологий оркестрации контейнеров, хотя и можно добиться автоматического расширения и сжатия, из-за гранулярности всегда будет определенная трата ресурсов по сравнению с функциями. Например, микросервис предоставляет два API, и один из API нужно расширять, а другой нет, тогда расширение в это время — пустая трата ненужных API.
3.3 Событийный
Функция по существу реализуетIPO(ввод-процесс-вывод), которая является эфемерной и готова к работе. Это еще одна особенность, которая отличает функции от монолитов и микросервисов. Будь то монолитное приложение или микросервис, это резидентный процесс в системе.Используя крылатую фразу, я здесь, придешь ты или нет, и я не сдамся. Отличие функции в том, что она не публикует никакой службы и не потребляет никаких ресурсов, когда нет запроса, только когда запрос приходит, она будет потреблять ресурсы для ответа, и ресурсы будут освобождены сразу после завершения службы. Из-за этого функции естественным образом подходят для любых бизнес-сценариев, управляемых событиями, таких как рекламные ставки, аутентификация, запланированные задачи и некоторые новые приложения IoT.
Холодильник IoT, предоставленный OpenWhiskкейс
3.4 Безгражданство
Характер функции IPO определяет еще одну особенность функции — безгражданство. С одной стороны, безгражданство помогает улучшить повторное использование и переносимость функций, но, с другой стороны, также приносит некоторые потери в производительности. Во-первых, функция не является резидентным процессом, а это значит, что каждый раз, когда приходит запрос, функция должна подвергаться холодному старту, что является кошмаром для приложений, написанных на компилируемых языках (Возьмите в качестве примера Spring Boot, даже Запуск самого простого приложения Hello World занимает не менее 5 секунд). Во-вторых, каждый раз, когда обслуживается запрос, процесс, в котором находится функция, будет уничтожен, а это означает, что использование памяти для кэширования больше не имеет смысла для функции. В-третьих, поскольку каждая загрузка может быть запланирована для нового сервера, любые методы кэширования на локальном диске больше не применимы. Из второго и третьего пунктов кэшировать функции можно только с помощью внешней памяти (такой как Redis, БД), а операции с внешней памятью нужно проходить через сеть, а производительность на один-два порядка хуже памяти и локальной жесткие диски.
4 DevOps => NoOps
Если Agile+IaaS внесли свой вклад в DevOps, то Agile+PaaS породил Serverless.
Поймите, что такое Serverless, а затем посмотрите на его связь с DevOps. Хотя DevOps сделал много Dev вещей, его козырь — Ops (например, медведь-панда выглядит как кошка, но на самом деле это медведь). Но Serverless отличается. По сути, он передает управление эксплуатации на стороннюю платформу, позволяя разработчикам сосредоточиться на реализации бизнес-логики, не беспокоясь о работе, связанной с управлением. Конечным результатом является то, что большинству предприятий больше не требуется управление. Самое большое, что у него общего с DevOps, — это помощь компаниям в сокращении времени выхода на рынок.
5 Резюме
Вышеизложенное является моим кратким введением в Serverless, добро пожаловать в мойдоска объявленийДелитесь и делитесь со всеми. В следующей статье я научу вас, как развернуть бессерверное приложение на основе Spring Cloud Function в Amazon Lambda, так что следите за обновлениями.