Struchkov Mark
ffd249fc10
All checks were successful
continuous-integration/drone/push Build is passing
5.6 KiB
5.6 KiB
aliases | tags | date | |
---|---|---|---|
|
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 Автор::