diff --git a/doc/decisions/log.md b/doc/decisions/log.md index 44057e8..61b70b6 100644 --- a/doc/decisions/log.md +++ b/doc/decisions/log.md @@ -77,3 +77,29 @@ **Решение:** Атрибут `code_hash` в `sless_function` — пользователь задаёт через `filemd5("./handler.zip")`. Изменение hash → провайдер перезагружает zip и запускает пересборку. **Причина:** Terraform не отслеживает содержимое файлов автоматически. Это стандартный паттерн (аналогично `aws_lambda_function.source_code_hash`). + +--- + +## 2026-03-07 — Scale-to-zero откладываем до v2 + +**Решение:** В v1 функции работают как Deployment с постоянно живым подом (always-on). Scale-to-zero — в v2 через KEDA HTTP Add-on. + +**Причина:** Scale-to-zero меняет архитектуру контроллера и routing. Для MVP это несоразмерная сложность. Пользователь может управлять ресурсами вручную через `replicas = 0/1/N` (планируется в v1.1). + +**v2 план:** Заменить Deployment на `HTTPScaledObject` (KEDA), минимальные реплики = 0. KEDA буферизует запросы во время cold start (~1-3 сек). + +--- + +## 2026-03-07 — replicas как ручное управление масштабом (TODO v1.1) + +**Решение:** Добавить поле `replicas *int32` в `FunctionSpec`. Пользователь задаёт через Terraform: `replicas = 0` (выключить), `replicas = 1` (включить), `replicas = N` (масштабировать). + +**Причина:** Без этого функция жрёт ресурсы 24/7 даже если не нужна. Это минимальный механизм контроля потребления до реализации scale-to-zero. + +--- + +## 2026-03-07 — PostgreSQL опционален для базового Function Hosting + +**Решение:** Postgres нужен только для логов вызовов (`invocations`). Для базового деплоя функций — не нужен. Оператор работает без него (просто не пишет логи). + +**Минимальные зависимости для production:** k8s кластер + S3 + Docker registry + Ingress.