Este repositorio documenta o projeto pratico sobre aplicacoes serverless na Azure, explorando Azure Functions, Logic Apps e Service Bus.
Explorar as diferencas funcionais entre Azure Functions, Logic Apps e WebJobs, descrever as opcoes de plano de hospedagem do Azure Functions e entender como o Azure Functions escala para atender as necessidades dos negocios.
- Azure Functions - Servico de computacao serverless para executar codigo sob demanda
- Azure Logic Apps - Plataforma de integracao para automatizar workflows
- Azure Service Bus - Servico de mensageria corporativa
- Azure WebJobs - Execucao de tarefas em background
| Caracteristica | Azure Functions | Logic Apps | WebJobs |
|---|---|---|---|
| Modelo | Serverless | Serverless | App Service |
| Trigger | HTTP, Timer, Queue, Blob | 200+ conectores | Timer, Queue, Blob |
| Linguagens | C#, JS, Python, Java, PowerShell | Designer visual | C#, Script |
| Escalabilidade | Auto-scale | Auto-scale | Manual/Auto |
| Custo | Pay-per-execution | Pay-per-execution | App Service Plan |
- Escala automaticamente
- Pagamento apenas por execucao
- Timeout padrao de 5 minutos (max 10)
- Cold start possivel
- Instancias pre-aquecidas (sem cold start)
- Conectividade VNet
- Execucao ilimitada
- Hardware mais poderoso
- Executa em VMs dedicadas
- Ideal para cenarios long-running
- Escala manual ou auto-scale
- Custo previsivel
[Event Source] --> [Azure Functions] --> [Service Bus Queue] --> [Logic App]
| | |
v v v
[HTTP Request] [Process Data] [Send Notification]
[Timer] [Transform] [Update Database]
[Queue Message] [Validate] [Call External API]
[FunctionName("ProcessOrder")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequest req,
[ServiceBus("orders-queue")] IAsyncCollector<string> outputMessages,
ILogger log)
{
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
var order = JsonConvert.DeserializeObject<Order>(requestBody);
log.LogInformation($"Processing order: {order.Id}");
await outputMessages.AddAsync(JsonConvert.SerializeObject(order));
return new OkObjectResult(new { message = "Order processed", orderId = order.Id });
}[FunctionName("ProcessQueueMessage")]
public static void Run(
[ServiceBusTrigger("orders-queue")] string message,
ILogger log)
{
var order = JsonConvert.DeserializeObject<Order>(message);
log.LogInformation($"Processing queued order: {order.Id}");
}- Azure Functions Documentation
- Azure Logic Apps Documentation
- Azure Service Bus Documentation
- Serverless Computing
Projeto desenvolvido como parte do bootcamp Microsoft Azure Advanced #2 da DIO.