21-03-19
5 платформ для построения serverless архитектуры

5 Платформ для построения serverless архитектуры

С каждым днём к serverless-архитектуре приложений растет интерес не только разработчиков и devops, но и руководителей бизнеса. Популярность решений aws и google часто заставляет руководителей рассматривать возможность перехода на новую архитектуру, но жёсткая привязка проекта к одному поставщику зачастую заставляет отказаться от новых технологий. В этой статье мы рассмотрим актуальные open-source решения для построения serverless архитектуры на аппаратных серверах, которые можно арендовать без особых проблем.

Концепция serverless

Само слово serverless в последнее время встречается во многих докладах и обсуждениях. Прежде чем приступим к рассмотрению платформ, давайте проясним концепцию serverless и связанные с ней понятия, такие как serverless вычисления и serverless платформа.

Если рассматривать serverless решения с точки зрения сервисной модели, то его можно смело заменить термином FaaS («Функции как услуга»). Но отсутствие сервера в названии предоставляемой услуги не означает, что сервер не используется вовсе. На самом деле, существует множество виртуальных серверов, которые запускаются при необходимости. Каждый такой сервер выполняет лишь малую часть всего кода и при необходимости может быть запущен во множестве экземпляров. В этом и заключается наибольшая выгода при эксплуатации serverless архитектуры — масштабируются только те функции, которые востребованы и нет необходимости масштабировать те ресурсы, которые не востребованы. Например, первая функция активно использует процессорные мощности, а вторая — оперативную память. При организации микросервисной архитектуры обе функции выполняют один сервис и при резком скачке числа запросов к первой функции будут запускаться новые копии микросервиса. Тем самым будут увеличиваться объемы потребления оперативной памяти, которая не будет востребована.

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

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

Как это работает

Serverless платформы предоставляют API, которые позволяют пользователям запускать функции кода (также называемые actions) и возвращать результаты каждой функции. Serverless платформы также предоставляют конечные точки, позволяющие разработчику получать результаты функций по HTTPS. Эти конечные точки могут использоваться в качестве входных данных для других функций, обеспечивая тем самым последовательность (или связывание) выполнения связанных функций.

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

Apache OpenWhisk

Apache OpenWhisk — это серверная облачная платформа с открытым исходным кодом, которая позволяет выполнять код в ответ на события любого масштаба. Сама платформа написана на языке Scala. Фреймворк обрабатывает входные данные от триггеров, таких как HTTP-запросы, в качестве выхода может выступать не только HTTP запрос, но и фрагмент кода на JavaScript или Swift. OpenWhisk управляет инфраструктурой и масштабированием с помощью Docker контейнеров. Платформа поддерживает широкий список популярных языков, таких как NodeJS, Swift, Java, Go, Scala, Python, PHP, Ruby и Ballerina. OpenWhisk позволяет разработчикам легко интегрировать функции со многими популярными сервисами, используя пакеты OpenWhisk.
Пакеты OpenWhisk предлагают интеграцию с общими службами, такими как очереди сообщений Kafka, базы данных, Push-уведомления из мобильных приложений, обмен сообщениями Slack и RSS- каналы.

Kubeless

Kubeless — это безсерверная инфраструктура на основе Kubernetes, которая позволяет развертывать небольшие фрагменты кода, не беспокоясь о базовой инфраструктуре. Платформа использует ресурсы Kubernetes для автоматического масштабирования, маршрутизации API, мониторинга, устранения неполадок и многого другого. Kubeless позволяет осуществить реализацию функций таких языков как Python, Node.js, Ruby, PHP, Golang, .NET и Ballerina. Следует отметить поддержку механизма PubSub.

Fission

Fission — это serverless фреймворк, который позволяет разработчикам создавать функции с использованием Kubernetes. Архитектура Fission позволяет разработчикам создавать кратковременные функции на любом языке программирования и сопоставлять их с любыми триггерами событий на основе HTTP-запросов. Важной особенностью Fission является поддержка пула «теплых» контейнеров, каждый из которых содержит небольшой динамический загрузчик. При первом запросе функции (Холодный запуск), выбирается работающий контейнер и функция загружается. Именно этот пул позволяет Fission быстро обрабатывать запросы: задержки при холодном запуске обычно не превышают 100 мсек.

Fn Project

Fn Project — это серверная платформа с открытым исходным кодом, которую вы можете запускать где угодно — в любом облаке или локально. Он прост в использовании, поддерживает Go, Node.js, Ruby, Python, Java, является расширяемым и производительным. Пакет включает в себя собственный балансировщик нагрузки, а также легковесные Docker контейнеры.

OpenFaas

OpenFaas — это платформа для построения serverless решений на основе Docker и Kubernetes. Основное развитие проекта фокусируется на контроле и обработке метрик. при помощи этой платформы любой процесс может быть упакован как функция, позволяющая вам использовать HTTP запросы как точки запуска и выхода функции. OpenFaaS написан на Golang и распространяется на основании MIT лицензии.

При изучении новых подходов в архитектуре приложений очень часто ловишь себя на мысли об очередном революционном продукте, который никому не нужен, но с serverless решениями революции не наблюдается. Скорее всего можно наблюдать очередной виток развития гибкого подхода к организации многофункциональных приложений. По статистике не более 40% всего функционала приложений используется постоянно и около 15% используются раз в месяц. Serverless архитектура позволяет использовать ресурсы рационально и увеличивать ресурсы только там где это необходимо. Не стоит забывать, что serverless платформы значительно ускоряют разработку приложений и снижают влияние ошибок на работу всего функционала ввиду изолированности функций друг от друга.

Значительная часть обзоров serverless решений от таких гигантов как AWS и Google пытается сообщить, что DevOps/SRE инженер не будет востребован и разработчики не будут задаваться вопросом об инфраструктуре, но даже беглого анализа платформ достаточно для того чтобы увидеть архитектуру большинства serverless окружений — все они используют контейнеры для изоляции и запуска отдельных функций. В связи с этим работа DevOps/SRE инженера просто отдалится от написания кода и будет сосредоточена на построении сильно разветвленной динамической системы управления контейнерами, выполняющими малые функции всего приложения.
Как и прежде, мы рады помочь в развертывании serverless архитектуры.