Curso Desenvolvendo Microserviços com Dapr e WebAssembly
16 horasVisão Geral
Este curso oferece uma visão abrangente e prática sobre como combinar duas das tecnologias mais inovadoras para microserviços: Dapr (Distributed Application Runtime) e WebAssembly (Wasm). Do ponto de vista técnico, os participantes aprenderão a simplificar o desenvolvimento de aplicações distribuídas, utilizando os "building blocks" do Dapr para gerenciamento de estado, pub/sub, invocação de serviços e muito mais. Concomitantemente, explorarão o poder do WebAssembly para criar componentes leves, seguros e de alto desempenho, capazes de serem executados em qualquer ambiente. o curso prepara os profissionais para construir sistemas mais resilientes, escaláveis e eficientes, reduzindo a complexidade inerente às arquiteturas distribuídas. A adoção de Dapr e WebAssembly pode levar a menores custos operacionais, melhor desempenho de aplicações e maior produtividade da equipe, pois permite que os desenvolvedores se concentrem na lógica de negócio, abstraindo preocupações com infraestrutura e interoperabilidade. Este é um curso estratégico para empresas que buscam modernizar suas aplicações e equipes de desenvolvimento.
Objetivo
Após realizar este Desenvolvendo Microserviços com Dapr e WebAssembly, você será capaz de:
- Compreender os desafios de arquiteturas de microserviços e como Dapr os resolve.
- Utilizar os principais "building blocks" do Dapr para construir aplicações distribuídas robustas.
- Entender o WebAssembly (Wasm) e sua relevância para o desenvolvimento de back-end e edge computing.
- Desenvolver e compilar código para WebAssembly em linguagens como Rust ou TinyGo.
- Integrar e executar módulos WebAssembly em suas aplicações.
- Combinar Dapr e WebAssembly para criar microserviços otimizados, seguros e eficientes.
- Configurar a observabilidade de aplicações que utilizam Dapr e WebAssembly.
- Implementar e operar microserviços Dapr com componentes WebAssembly em ambientes de contêineres.
Publico Alvo
- Desenvolvedores de Software: Especialmente aqueles que trabalham com microserviços e buscam otimizar o desenvolvimento e a operação.
- Arquitetos de Sistemas: Interessados em projetar soluções distribuídas mais eficientes e portáveis.
- Engenheiros de DevOps e SREs: Que procuram ferramentas para simplificar a implantação, monitoramento e gerenciamento de aplicações distribuídas.
- Profissionais de TI: Curiosos sobre as últimas tendências em desenvolvimento de aplicações e execução de código em ambientes variados.
Pre-Requisitos
- Conhecimento básico em desenvolvimento de aplicações (experiência em alguma linguagem como Go, Rust, C#, Python ou JavaScript é altamente recomendada).
- Familiaridade com conceitos de microserviços e contêineres (Docker).
- Noções básicas de linha de comando (CLI) e ambiente de desenvolvimento.
Materiais
Inglês/Português/Lab PráticoConteúdo Programatico
Módulo I: Fundamentos de Dapr e WebAssembly (4 horas)
- 1.1. Contexto de Microserviços e Desafios (1h)
- Revisão de arquiteturas distribuídas e seus benefícios.
- Complexidades do desenvolvimento de microserviços (comunicação, estado, resiliência).
- A proposta de valor do Dapr como um runtime de aplicação distribuída.
- 1.2. Introdução ao Dapr: Arquitetura e Componentes (1.5h)
- O modelo sidecar do Dapr e como ele simplifica o código da aplicação.
- Visão geral dos principais "building blocks" do Dapr (Service Invocation, State Management, Pub/Sub, etc.).
- Instalação e configuração básica do Dapr CLI e runtime (
dapr init
). - Estrutura de diretórios de componentes do Dapr.
- 1.3. Introdução ao WebAssembly (Wasm) e WASI (1.5h)
- O que é WebAssembly e sua ascensão fora do navegador.
- Características chave: segurança (sandboxing), performance, portabilidade e interoperabilidade.
- A máquina virtual Wasm e o conceito de WASI (WebAssembly System Interface) para execução no servidor.
- Linguagens que suportam compilação para Wasm (Rust, Go, C/C++, TinyGo, etc.).
- Run-times Wasm populares para execução no servidor (Wasmtime, Wasmer, WAMR, Spin, WasmEdge).
Módulo II: Desenvolvendo com os Building Blocks do Dapr (4 horas)
- 2.1. Invocação de Serviço e Comunicação entre Microserviços (1h)
- Chamadas síncronas entre serviços via Dapr (HTTP/gRPC).
- Resiliência com Dapr: retries e timeouts configuráveis.
- Prática: Criando dois serviços que se comunicam através do Dapr Service Invocation.
- 2.2. Gerenciamento de Estado Distribuído (1h)
- Persistência de estado usando o "state management building block".
- Componentes de estado suportados (Redis, CosmosDB, DynamoDB, etc.).
- Prática: Implementando um serviço de carrinho de compras com gerenciamento de estado Dapr.
- 2.3. Publicação e Assinatura de Mensagens (Pub/Sub) (1h)
- Comunicação assíncrona baseada em eventos com o Dapr Pub/Sub.
- Configuração e uso de componentes de Pub/Sub (Kafka, RabbitMQ, Azure Service Bus).
- Prática: Construindo um sistema de processamento de pedidos assíncrono.
- 2.4. Bindings e Triggers para Integração Externa (1h)
- Conectando microserviços a recursos externos (filas de mensagens, bancos de dados, sistemas de arquivos).
- Disparando código da aplicação com eventos externos.
- Prática: Criando um serviço que consome eventos de uma fila e publica em um armazenamento de objetos.
Módulo III: Construindo Componentes com WebAssembly (4 horas)
- 3.1. Escrevendo e Compilando Código para WebAssembly (1.5h)
- Configuração do ambiente de desenvolvimento para Wasm (foco em Rust e/ou TinyGo).
- Principais ferramentas e bibliotecas para desenvolvimento Wasm.
- Considerações sobre o tamanho do módulo e otimização.
- Prática: Desenvolvendo um módulo Wasm para validação de dados complexa ou transformação de texto.
- 3.2. Embedding e Execução de Módulos Wasm (1.5h)
- Diferentes abordagens para hospedar e executar módulos Wasm (via runtimes como Wasmtime, Wasmer, ou embutido em linguagens host).
- Mecanismos de comunicação entre a aplicação host e o módulo Wasm (export/import de funções, memória compartilhada).
- Prática: Integrando o módulo Wasm desenvolvido em uma aplicação host (e.g., Go, Node.js) e executando-o.
- 3.3. Casos de Uso Avançados e Tendências de Wasm (1h)
- Extensibilidade baseada em plugins Wasm.
- Funções serverless leves e seguras com Wasm.
- Wasm em cenários de Edge Computing e IoT.
- Desafios e futuras direções do ecossistema WebAssembly.
Módulo IV: Dapr e WebAssembly em Sinergia e Operação (4 horas)
- 4.1. Integrando Dapr e WebAssembly (1.5h)
- Cenários onde Dapr e Wasm se complementam para arquiteturas de microserviços.
- Chamando módulos Wasm a partir de serviços Dapr-enabled.
- Implementando lógicas de negócio em Wasm disparadas por Triggers ou Bindings do Dapr.
- Prática: Re-arquitetando um serviço Dapr para delegar uma funcionalidade crítica a um módulo Wasm.
- 4.2. Observabilidade para Aplicações Distribuídas Híbridas (1.5h)
- Recursos de observabilidade do Dapr (tracing, métricas, logs).
- Desafios de observabilidade específicos para componentes WebAssembly.
- Integração com ferramentas de monitoramento e APM (New Relic, Prometheus, Grafana).
- Prática: Configurando o rastreamento e a coleta de métricas para uma aplicação Dapr com Wasm.
- 4.3. Implantação, Escalabilidade e Melhores Práticas (1h)
- Estratégias de empacotamento e implantação de aplicações Dapr e Wasm (Docker, Kubernetes).
- Considerações de segurança e gerenciamento de dependências.
- Escalabilidade de microserviços com Dapr e o impacto de componentes Wasm.
- Discussão de padrões e anti-padrões.