54 lines
5.6 KiB
Markdown
54 lines
5.6 KiB
Markdown
|
---
|
|||
|
aliases:
|
|||
|
tags:
|
|||
|
- maturity/🌱
|
|||
|
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 Архитектура ИС|00 Архитектура ИС]]
|
|||
|
**Родитель**:: [[Архитектурный паттерн]]
|
|||
|
**Источник**::
|
|||
|
**Создана**:: [[2024-12-08]]
|
|||
|
**Автор**::
|
|||
|
### Дополнительные материалы
|
|||
|
-
|
|||
|
|
|||
|
### Дочерние заметки
|
|||
|
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
|||
|
|