Что такое бессерверные вычисления и когда их использовать? — CloudSavvy ИТ

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

Бессерверные вычисления — это новая парадигма кодирования, которая позволяет запускать код без настройки серверов. Он предлагается в качестве услуги многими поставщиками облачных услуг, включая Amazon и Google. О чем весь этот ажиотаж?

Что такое бессерверное?

Термин «бессерверный» употребляется неправильно: ваш код все равно будет где-то выполняться на сервере. Вам просто не придется беспокоиться об этом, потому что весь металл, на котором он работает, будет управляться за вас «в облаке», а вы сможете сосредоточиться исключительно на программном обеспечении. В этом прелесть бессерверных решений; сокращение затрат на управление серверами экономит ваши деньги, как затраты на рабочую силу системных администраторов, так и стоимость работы VPS, особенно такого, который может быть больше, чем вам нужно.

Бессерверные — это широкая категория, но большинство сервисов будет включать в себя три основных элемента:

  • Нет серверов управлять (очевидно).
  • Автоматическое масштабирование без дополнительной настройки. Поскольку код выполняется в небольших контейнерах, легко запустить несколько контейнеров параллельно.
  • Оплата по факту использования. Это может сделать бессерверный код дешевле, чем традиционное решение на основе VPS, поскольку вы, вероятно, не работаете с этим VPS постоянно с максимальной нагрузкой.

Это делает бессерверную модель конкурентоспособной, основанной только на стоимости. Для такого сайта, как Bustle, переход на AWS Lambda принес им Снижение затрат на 84% над своей старой архитектурой. Масштабирование бессерверных решений гораздо более линейно, потому что вам не придется платить за отдельные экземпляры сервера.

PaaS против FaaS

Важно прояснить разницу между «бессерверными» моделями PaaS и FaaS, потому что маркетинг для каждого типа во многом одинаков.

Платформа как услуга (PaaS) отключает серверы, но не затрагивает базовый код и не применяет какие-либо новые методы кодирования. Обычно это делается через контейнеры, такие как Docker, где снимки вашего приложения могут быть очень быстро развернуты на нескольких серверах. С некоторыми услугами, например AWS Fargate и Экземпляры контейнеров Azure, вам вообще не нужно беспокоиться о серверах, что делает их «бессерверными». С другими сервисами, например Heroku, вы по-прежнему платите за сервер, но вам не нужно беспокоиться о его настройке самостоятельно, а масштабирование между несколькими экземплярами легко.

Функция как услуга (FaaS) полностью исключает идею серверов. Вместо этого ваш код запускается, выполняет быструю функцию и взимает с вас плату за память и время вычислений, которые вы использовали. Модели FaaS воплощают идею «микросервисов», разбивая ваше приложение на составные части и разрабатывая каждую по отдельности. Это работает не для всех, но когда это работает, это может значительно ускорить разработку и обслуживание по сравнению с традиционными «монолитными» проектами приложений. AWS Lambda, Облачные функции Google, и Функции Azure все модели FaaS.

FaaS обычно считается «бессерверным» вычислением, хотя, возможно, это не самый описательный термин для него. «Микросервисы» в большей степени отражают идеи, лежащие в основе моделей FaaS и «бессерверных». Вы все еще можете создавать микросервисы с помощью служб PaaS, но FaaS вынуждает вас это делать.

Где сияют микросервисы

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

Монолитное приложение с множеством частей

Все эти части вашего приложения взаимодействуют друг с другом и зависят друг от друга, чтобы все работало. Но это беспорядок, все переплетено, и управление зависимостями становится проблемой. Если вы хотите, чтобы несколько команд работали над разными частями приложения, вы довольно часто будете бить друг друга за плечи.

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

Приложение Microservices масштабирует одну часть отдельно от других

Это может быть дополнительно разбито с помощью поставщиков FaaS, где теперь эти строительные блоки могут быть отдельными функциями, а не целыми службами. Например, у вас может быть функция автоматического изменения размера изображений для разных устройств, например Сиэтл Таймс использует лямбда для. Вы можете создать отдельные функции для каждой конечной точки REST API и вообще отказаться от запуска сервера API.

Очевидно, что эта модель работает не для всех приложений. Некоторые вещи не предназначены для разделения, и делать это задним числом может быть очень сложно. Но когда это сработает, вы можете получить очень структурированное приложение, которое легче исправить, когда оно начнет ломаться.

Микросервисы не всегда проще

Микросервисы чище, и когда вы все это выкладываете, они выглядят намного лучше, чем беспорядочный монолитный дизайн, который используют многие приложения. Но кто-то должен спроектировать всю эту структуру.

Создание приложения на основе микросервисов оказывает сильное давление на ваш цикл DevOps, особенно при планировании всего. Хотя у вас может быть возможность загрузить монолитное приложение и построить все по ходу работы, микросервисы требуют тщательного планирования с самого начала. Для этого нужны хорошие архитекторы и хорошее общение с остальной командой по поводу структуры приложения.

А чем больше сервисов, тем больше вещей, которые нужно отслеживать, отлаживать и поддерживать. Если у вас небольшая команда разработчиков, попытка создать и исправить сразу несколько сервисов может быть непосильной задачей.

В частности, FaaS также заставляет привязаться к поставщику. Хотя обычно вы можете взять образ Docker и развернуть его на другом провайдере, создание приложения на такой службе, как Lambda, вынуждает вас использовать Lambda только для размещения вашего приложения. Вы замыкаетесь в экосистеме, и вдруг вы пишете не код JavaScript, а код лямбда. У вас по-прежнему есть контроль над тем, что вы пишете, поэтому вы можете перенести это на другую службу, но отсоединение от службы, на которую вы полагаетесь, обычно сложнее, чем кажется.

Кроме того, службы FaaS обычно не предназначены для круглосуточной работы без выходных. Если вы используете Lambda-функции для создания приложения, которое постоянно запускает Lambda-функции, вы увеличите свой счет больше, чем просто заплатите за VPS.

Когда и когда не использовать бессерверную версию

Услуги PaaS, такие как AWS Fargate просто запускайте контейнерные приложения, не беспокоя вас о том, на каком металле они работают. Вы можете без проблем переключить всю инфраструктуру своего приложения на такую ​​службу. Кроме того, PaaS обеспечивает легкую кластеризацию, а принятие некоторых идеалов из модели микросервисов может помочь вам улучшить масштабируемость вашего приложения без особой реструктуризации.

Услуги FaaS более сложные. Они подходят не для всего, но при правильном использовании очень полезны. Они отлично подходят для простых облегченных серверных служб, которым не требуется особая настройка или целый VPS для их запуска. Вы можете использовать их в качестве дополнений к существующему приложению, и хотя вы можете создать целое приложение на основе микросервисов, используя только бессерверные облачные функции, это решение намного сложнее.

Но деньги также являются важным фактором, и хотя микросервисы и модели бессерверных приложений может быть сложнее спланировать, если вам удастся это сделать, вы сэкономите много денег.

AWS Lambda также очень полезен в сочетании с другими сервисами AWS. Лямбда-функции могут запускаться на основе действий в вашей инфраструктуре AWS, таких как автоматический запуск функции, когда файл помещается в корзину S3. Если вы уже используете сервисы AWS, Lambda может стать отличным инструментом автоматизации.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован.