advanced
Functions
Event-driven serverless-код: bindings, triggers, планы, компромиссы cold start и права managed identity.
Azure Functions выполняет event-driven код короткими порциями с triggers (HTTP, очереди, таймеры, blob) и bindings, которые связывают входы и выходы без лишнего boilerplate. Планы — от consumption (оплата за выполнение) до Premium (прогретые инстансы) и dedicated App Service plans.
| Понятие | Смысл | |---------|-------| | Trigger | Что запускает функцию | | Binding | Декларативная связка input/output | | Durable Functions | Оркестрация и saga-подобные workflow | | Managed identity | Доступ к Azure-ресурсам без паролей |
module.exports = async function (context, req) {
context.log('HTTP trigger processed a request.');
context.res = { status: 200, body: { ok: true } };
};
На интервью: consumption vs Premium и cold start; лимиты timeout и concurrency; идемпотентные обработчики очередей; Durable Functions для длинных workflow; когда Functions не подходит для стабильного HTTP-трафика.
Типовые ошибки: долгая работа на consumption; состояние в static-переменных; повторная обработка без idempotency keys; Functions там, где App Service или контейнер дешевле и проще.
Компромисс — минимум ops и поминутная оплата против cold start, лимитов выполнения и более сложной локальной отладки по сравнению с always-on сервисом.
Чеклист:
- План хостинга под latency и длительность задач.
- Triggers с семантикой at-least-once delivery.
- Managed identity вместо connection-string секретов.
- Dead-letter для queue triggers.
- Нагрузочный тест cold start и concurrency до запуска.