An Azure service that provides an event-driven serverless compute platform.
Hey @David Carter
when you’re just spinning up small practice projects, say a couple of Azure Functions talking to Storage and exposing a simple HTTP API—here’s a pattern that tends to keep things clean, reusable, and easy to manage:
Scaffold everything in one repo, but separate by concern • /functions – host.json (shared settings) – local.settings.json (dev secrets & connection strings) – Function1/Function2 folders (each with its own function.json or code file) • /api-client (optional) – basic script or Postman collection to hit your HTTP-triggered functions • /infra (optional) – ARM/Bicep/Terraform or Azure Developer CLI (azd) templates
Use Azure Developer CLI or VS Code extensions for quickstarts • azd init (functions-quickstart…-js or ‑ps template) will spin up a resource group, storage account, function app, etc. • You get a consistent structure plus an “environment” folder for your dev config
One Function App per logical workload • If all your functions share the same triggers, bindings, storage connection string and permissions, deploy them together. • If you need different app settings, separate privileges (e.g., one set of functions needs read/write to Storage, another only reads), or different scaling, spin up a second Function App.
Keep storage accounts scoped to each Function App • In dev, you can point multiple apps to the same Storage account locally (UseDevelopmentStorage=true), but in Azure use one storage account per Function App for less cross-pollution and lower latency.
Leverage host.json for shared runtime settings • Common retry/prefetch/extension configs belong here. Anything function-specific lives in function.json or your function code.
Local dev → cloud parity • local.settings.json mirrors your Application Settings in the portal (AzureWebJobsStorage, your own connection strings, FUNCTIONS_WORKER_RUNTIME). • Test everything locally with func start, then publish with azd up or VS Code/Azure CLI.
Simple API layering • Build your HTTP-triggered endpoints in Functions, then if you grow beyond “just functions” you can front them with API Management or an Azure App Service. • Keep business logic in shared libraries/packages so you can call it from multiple functions or even a separate web API project.
That setup will let you iterate quickly, keep config and code tidy, and—when you’re ready—scale one piece without dragging everything else along. Hope it helps!
Reference list
- Improve the performance and reliability of Azure Functions: https://dori-uw-1.kuma-moon.com/azure/azure-functions/performance-reliability
- Best practices for reliable Azure Functions: https://dori-uw-1.kuma-moon.com/azure/azure-functions/functions-best-practices#configure-storage-correctly
- Quickstart: Build a scalable web API using Azure Functions (JavaScript): https://dori-uw-1.kuma-moon.com/azure/azure-functions/create-first-function-azure-developer-cli?#initialize-the-project
- Quickstart: Build a scalable web API using Azure Functions (PowerShell): https://dori-uw-1.kuma-moon.com/azure/azure-functions/create-first-function-azure-developer-cli?#run-in-your-local-environment