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

В последней статье мы узнали об определении бессерверных архитектур и о том, как они на самом деле работают.

Мы также узнали, чем они отличаются от традиционных архитектур баз данных клиент-сервер.

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

Но сначала давайте рассмотрим некоторые ключевые понятия 👇

Хранимые процедуры

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

Эти функции могут быть вызваны рабочим процессом, созданным конкретной микрослужбой. Эта дополнительная сложность часто может потребовать некоторых дополнительных соображений для вашей системы:

  • Это может заставить вас быть специфичным для поставщика. Например, с помощью платформы AWS Serverless Application Management у вас есть возможность выбрать определенный язык или платформу и разработать на них свою функцию. Затем вы можете использовать репозиторий бессерверных приложений (SAR) от AWS, чтобы легко управлять и распределять свои функции.
  • Привязка к поставщику — сложная задача, поскольку ваши функции должны выполняться в контексте этого поставщика, и ваши модульные и интеграционные тесты также начнут это отражать.
  • Если вы выберете поставщика, который не предлагает таких возможностей, вам придется найти эти решения самостоятельно.

Если ваше приложение достаточно простое, ему не нужны накладные расходы, как мы видели выше. Однако в сложных архитектурах, таких как видеоплатформа Netflix, это необходимо.

Требования

Некоторые требования к сервису видеоплатформы Netflix включают в себя:

  • Конвейер обработки аудио/видео, достаточно надежный для обработки сложных рабочих процессов с высокой задержкой от секунд до нескольких минут.
  • Рабочие процессы с низкой задержкой или чувствительные к задержкам, которые требуют от пользователя ожидания завершения задания.
  • Кодовая база должна быть достаточно модульной, чтобы поддерживать…