Паттерны проектирования для бессерверных функций, которые никуда не денутся

Бессерверность была одним из модных словечек 2017 года, но, более того, многие организации пошли дальше и внедрили эти технологии. У других есть планы или прототип. Итак, какие формы архитектурных проблем подходят для бессерверного решения? TL; микросервисы аварийного восстановления, преобразование данных и предоставление разработчикам интерфейсов и мобильных приложений возможности изменить мир.

API и микросервисы

Микросервис изменения размера изображения - классический вариант использования бессерверной технологии, потому что это отличный пример! Бессерверная технология подходит для такого рода приложений двояко. Во-первых, делегирование любого вида обработки от основного приложения является преимуществом, а бессерверный режим идеально подходит для обработки переменных рабочих нагрузок, поскольку платформа масштабируется в соответствии с предъявляемыми к ней требованиями. Изменение размера изображения обычно соответствует ограниченному объему памяти и времени выполнения, типичному для бессерверных платформ, и каждая единица работы не зависит от всех остальных. Сравните это с накладными расходами на поддержание работы сервера с фиксированной мощностью и очередью для обработки любых всплесков трафика, и вариант без сервера начинает иметь большой смысл.

Другая причина, по которой микросервис изменения размера изображения идеален, заключается в том, что API-интерфейсы (или, по их мнению, имя лидера мнений микросервисы) и бессерверное использование являются естественным подходом. Напишите одну бессерверную функцию и подключите ее к шлюзу API - и вы сразу получите конечную точку API. Промойте и повторите, чтобы создать API, состоящий из такого количества независимых конечных точек, которое необходимо для вашего API или требований микросервиса. В более традиционном подходе к программированию для обеспечения маршрутизации часто используются микрофреймы, такие как Flask, Express или Slim. В бессерверном режиме шлюз API обеспечивает связующее звено, и фактический код (он же интересный бит) находится в каждом отдельном действии, а не в серии обратных вызовов.

Самая веская причина, по которой разработчики создают API-интерфейсы таким образом, - это масштабируемость. Если ваш трафик невелик, по крайней мере, для начала, тогда ваши затраты будут низкими, поскольку бессерверный режим оплачивается по единице времени выполнения. В быстрорастущей или нестабильной среде возможность роста платформы для удовлетворения текущего спроса очень важна и позволяет избежать необходимости держать много серверов, работающих с пустым резервом, «на всякий случай».

Конвейеры данных и преобразование

Один из примеров успешного использования бессерверных приложений, с которым я сталкивался несколько раз в этом году, связан с перемещением и обработкой данных. Мы работаем со все более крупными наборами данных, поэтому стремление к масштабируемой обработке является ключевым моментом в этой области отрасли. Распределенные подходы, такие как MapReduce, здесь действительно очень хорошо работают, а бессерверный подход - отличный способ реализовать распределенный подход. Для работы с постоянным потоком данных бессерверный режим является очень доступным способом для тех, у кого есть небольшие знания в области программирования, чтобы иметь возможность применять обработку к данным по мере их поступления. Для одноразовой пакетной миграции или задач преобразования, таких как очистка данных, бессерверный режим является еще более привлекательным. Она по-прежнему доступна, но в перерывах между партиями платформа ничего не стоит, пока ее не используют. При более традиционной настройке вы должны подготовить эту мощную платформу и платить за нее между пакетами данных или поддерживать ее работу с резервной емкостью, которая может не понадобиться.

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

Достаточно кода на стороне сервера, чтобы быть опасным!

Чтобы развернуть веб-приложение или мобильное приложение сегодня, требуется знание огромного набора технологий. У каждого разработчика есть свои специализации, будь то создание тем, доступность для мобильных устройств… вы поняли. Бессерверная технология представляет собой простой способ для разработчиков, не являющихся экспертами в области серверов, реализовать любые мелкие функции, которые им нужны, - независимо. Это перекликается с вышесказанным о платформе, доступной для профессионалов в области данных, которые также могут быть экспертами в дисциплинах, отличных от внутреннего кода. Часто можно услышать, что бессерверные технологии называют «NoOps», что неточно; здесь происходит большое количество отличной автоматизации! Однако как разработчик мне не нужно беспокоиться об установке, защите или администрировании сервера. Устранение этого большого препятствия открывает двери для многих разработчиков, которые могут делать то, что им нужно, без приобретения стольких дополнительных навыков.

Предоставление возможности разработчикам мобильных приложений и интерфейсов создавать все, для чего они могут написать код, без необходимости узнавать, как безопасно администрировать сервер Linux? Это начало кардинальных изменений в отрасли. Поскольку как JavaScript (почти на всех бессерверных платформах), так и Swift (на IBM Cloud Functions и других платформах Apache OpenWhisk) широко доступны, бессерверные решения открывают двери для профессионалов, которые уже создают великие дела. Предоставляя им возможность создавать что-то, что может попасть в хранилище данных или сохранить ключ аутентификации на сервере, многие другие приложения становятся чем-то, что можно создавать без внешней помощи, оплаты доступа к сторонней службе или большого количества исследований.

Кривая обучения бессерверным технологиям невысока. Это изменение может занять некоторое время, чтобы распространиться на всю отрасль веб-разработки, но это изменение изменит большую часть работы, которую мы делаем в ближайшие годы. Бессерверная версия позволяет такому великому сообществу строить так много вещей… смотрите на это пространство!

Бессерверные и будущее

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