digital-garden/dev/architecture/Serverless.md
Struchkov Mark ffd249fc10
All checks were successful
continuous-integration/drone/push Build is passing
Обновление
2024-12-11 20:30:18 +03:00

5.6 KiB
Raw Blame History

aliases tags date
maturity/🌱
2024-12-08

Serverless-архитектура — это модель разработки приложений, при которой серверы все еще существуют, но управление ими полностью скрыто от разработчиков. Вместо этого, разработчики пишут небольшие, автономные функции, которые исполняются в облачной среде. Инфраструктурой управляет провайдер (например, AWS, Azure, Google Cloud).

Несмотря на название, серверы в Serverless есть, но разработчики:

  • Не управляют серверами напрямую.
  • Не занимаются их настройкой, мониторингом или масштабированием.
  • Платят только за фактическое время выполнения кода (pay-as-you-go).

Основные принципы

  • Вызов на основе событий. Код (функция) запускается в ответ на событие: HTTP-запрос, запись в базу данных, загрузка файла и т. д. Пример: загрузка изображения в облако запускает функцию для изменения его размера.
  • Автоматическое масштабирование. Серверная инфраструктура автоматически увеличивает или уменьшает количество ресурсов в зависимости от нагрузки. Пример: при росте числа запросов добавляются новые инстансы функции.
  • Оплата за использование. Вы платите только за фактическое время выполнения кода, а не за простаивающие серверы. Пример: если функция исполняется 200 мс, вы платите только за эти миллисекунды.
  • Фокус на коде. Разработчики сосредотачиваются на написании бизнес-логики, а не на настройке инфраструктуры.

Преимущества Serverless

  • Снижение затрат. Отсутствие расходов на простаивающие ресурсы. Вы платите только за выполнение кода.
  • Автоматическое масштабирование. Приложение автоматически адаптируется к изменяющимся нагрузкам.
  • Быстрота разработки. Упрощённое управление инфраструктурой позволяет сосредоточиться на бизнес-логике.
  • Упрощённое развертывание. Разработчики могут быстро выкатывать изменения, так как управление серверами осуществляется провайдером.

Недостатки

  • Задержки холодного старта. При запуске функции, которая долгое время не использовалась, может возникнуть задержка из-за необходимости инициализации контейнера.
  • Ограниченная гибкость. Провайдеры накладывают ограничения на использование определённых языков, библиотек и объёма ресурсов.
  • Трудности отладки. Локальное тестирование может быть сложным из-за особенностей облачных платформ.
  • Зависимость от провайдера. Использование специфичных для платформы инструментов может усложнить переносимость приложения.
  • Высокая стоимость при больших нагрузках. Для очень нагруженных систем Serverless может оказаться дороже традиционной модели.

Serverless подходит, если:

  • Вы разрабатываете приложения с переменной нагрузкой.
  • Вам нужна быстрая обработка событий (ETL, IoT, уведомления).
  • Вы хотите минимизировать управление инфраструктурой.

Serverless может быть не лучшим выбором, если:

  • Требуется минимальная задержка (например, в высоконагруженных системах реального времени).
  • Вы работаете с задачами, требующими долгого выполнения или сложных вычислений.

Мета информация

Область:: ../../meta/zero/00 Архитектура ИС Родитель:: Архитектурный паттерн Источник:: Создана:: 2024-12-08 Автор::

Дополнительные материалы

Дочерние заметки