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

54 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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) -->