Struchkov Mark
ffd249fc10
All checks were successful
continuous-integration/drone/push Build is passing
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) -->
|
||
|