Please enable JavaScript.
Coggle requires JavaScript to display documents.
AZ-204 - Coggle Diagram
AZ-204
-
Module 02 - Implement Azure functions
- Código serverless dentro da plataforma do azure;
- Permite rodar pequenas aplicações de forma reativa. Reativa porque ela só é executada quando algum tipo de evento dispara sua trigger: requisições http, mensagem de uma fila, documento criado no cosmos db, timmers, arquivo que caiu no blob storage, quando disparada a função é acionada e alimentada com os dados/informações;
- Vantagem os dados chegam prontos para a function;
- Escalabilidade automática (até o máximo de 200 instâncias) - posso definir parametros?;
- Cobrança pelo tempo de execução da function;
- O primeiro milhão é gratuito, a partir disso é cobrado;
- São stateless;
Support
- C# (pré compilada ou c# script), Java, PHP, Python, Javascript, power shell, shell script;
WebJobs
- Permitem que eles sejam reativos;
- Mais triggers, output;
Integrations
- Service bus;
- Storage;
- Event grid;
- Event hub;
- Cosmos DB;
- Notification Hubs;
Scale and hosting
- Consumption: Paga pelo consumo (tempo de processamento). Limitação de execução de 05 minutos, tempo máximo de duração. Não pode estar vinculado a uma virtual network;
- Functions rodam dentro de um app service gerenciado e mantido pelo engine da azure function;
- Memória, processamento e threads são limitadas;
Functions até 10 minutos;
- Aqui temos o code start;
- Premium: Inclui a capacidade de always on (não adormece a aplicação). Aqui não tem o code start.;
- Podemos rodar as funções por um tempo ilimitado;
- Podemos ter integração de vnet;
- Cobrado pela quantidade de vcors de processamento;
- se alway on estiver habilitado (vai cobrar o tempo todo);
- Tipo app service plan: não tem o scale automático, a responsabilidade passa a ser do app service plan. utilizado em cenários onde o app service n esta sendo muito utilizado;
Tiggers
- Estimulo para function trabalhar;
- Baseadas em:
- Cosmos;
- Blob e queues;
- Event hub e service bus;
- Http request, schedule timmer;
- Github;
- Executa com timer desde que não esteja executando uma function no momento. Se tiver executando ele atrasa a execução da segunda;
- 20 minutos em warm, se receber estimulo aumenta;
- Trigger define como ela será invocada, é pré-requisito para criar uma function;
- HTTPTrigger;
- TimerTrigger;
- BlobTrigger;
- CosmosDBTrigger;
Bindings - Input and Output
- Vincular dados de entrada para minha function;
- Binding são opcionais;
- pode usar binding de saída: podemos considerar que é o retorno de uma função;
- Binding não conta o tempo;
- Types of bindings
- Input binding: Conecta-se a uma fonte de dados. Nossa função pode ler dados dessas entradas;
- Output binding: Conecta-se a um destino de dados. Nossa função pode gravar dados nesses destinos.
- Bindings types
- Blob storage;
- Service bus queues;
- CosmosDB;
- Event hubs;
- External files;
- External tables;
- HTTP endpoints;
- Binding properties
- Name: Define o parâmetro da função por meio do qual você acessa os dados;
- Type: Identifica o tipo de ligação (por exemplo, o tipo de dados ou serviço com o qual queremos interagir);
- Direction: Indica a direção do fluxo dos dados (por exemplo, é uma ligação de entrada ou saída)?
- Connection: Fornece o nome de uma chave de configuração do aplicativo que contém a string de conexão. As ligações usam strings de conexão armazenadas nas configurações do aplicativo para manter os segredos fora do código de função. Isso torna seu código mais configurável e seguro;
Integration with azure virtual network
- Só está disponível no plano premium;
Best practices
- Evitar funções de grande duração;
- Escreva funções stateless (não controla estado);
- Se eu executar a função com o mesmo input, deve ter o mesmo resultado;
- Principal limitação conhecida é tempo. Se receber muitos registros precisa quebrar. Retorna de onde parou;
Funções Cross function
- Utilizar filas;
- Queue triggers tem um mecanismo de polly;
- Azure storage queue, trabalha muito bem com trigger;
Durable function and logic apps
- Recomendado para workflows;
Scaling - Comportamentos de escala
- Máximo de instâncias: escala horizontal para no máximo 200 instâncias. Uma única instância pode processar mais de uma mensagem ou solicitação por vez.
- Nova taxa de instância: Para gatilhos HTTP, novas instâncias são alocadas, no máximo, uma vez por segundo. Para gatilhos não HTTP, novas instâncias são alocadas, no máximo, uma vez a cada 30 segundos.
- É possível limitar, Você pode especificar um número máximo inferior para um aplicativo específico modificando o valor functionAppScaleLimit
Durable Functions
Durable Functions
- Extensão dos azure functions;
- Possibilita sub-orchestrations;
- Possibilita escrever funções que mantém estados (stateful);
- Bastante utilizados para criar workflows;
- Pode ser vista como um encadeamento de funções;
Types
- Types: Orchestor, activity, entity and Client;
- Orchestor: função que gerencia (como?, ordem?) a execução das outras funções (podem executar em série, em paralelo ou uma combinação de ambos); (cada instância possui um ID)
- Activity: são uma unidade básica de trabalho que fazem parte de uma orquestração;
- Entity: Funções que possuem um tipo especifico de gatilho, o gatilho de entidade. Usados para ler/atualizar pequenos pedaços de estado;
- Client:
- Sempre teremos 2+ tipos. Orchestor + um tipo;
- Usada para processar itens longos, utiliza muito async e await para as activts;
Patterns
- Fan-out/Fan-in: Chama as atividades ao mesmo tempo, condensa os resultados e finaliza;
- Async HTTP APIs: Ajuda a resolver o problema de requisições de longa duração, oferecendo a possibilidade de acompanhar o status de suas requisições assíncronas;
- Monitor: Você pode usar funções duráveis para criar intervalos de recorrência flexíveis, gerenciar durações de tarefas e criar vários processos de monitoramento a partir de uma única orquestração. (basicamente é fazer polling até encontrar a condição desejada)
- Human interaction: Processo também pode ser startados através de uma interação humana;
- Control Timing: Devemos utilizar o CreateTimer, ao invés de setTimeout ou Thread.Sleep, etc;
-
Send and wait for Events
- Wait: WaitForExternalEvent;
- Send: RaiseEventAsync/RaiseEvent;
Plans
- Consumption: Escala automaticamente, cobra pelo tempo de execução das funções.
- Premium: Escala automaticamente, incluindo a capacidade de always on. (não tem necessidade de cold start)
- Service plan: Utiliza os recursos do plano de serviço como scale e processamento, sugerido para funções de longa duração;
-
-
Develop event-based solutions
- Desacoplamento;
- Escalabilidade;
- Resiliência;
- As filas aumentam a confiabilidade da troca de mensagens porque, em momentos de alta demanda, as mensagens podem esperar até que um componente de destino esteja pronto para processá-las.
Event Grid
- A Grade de Eventos agrega todos os seus eventos e fornece os roteiros de qualquer origem para qualquer destino. A Grade de Eventos é um serviço que gerencia os roteiros e a entrega de eventos de várias fontes e assinantes.
- A Grade de Eventos do Azure é um serviço de roteamento de eventos totalmente gerenciado em execução no Azure Service Fabric;
- Os Events sources enviam eventos para a Event Grid e ela encaminha os eventos relevantes para os subscribes.
- Event source: são responsáveis por enviar eventos para a grade de eventos. Como por exemplo: Blob storage, Resource groups, event hub, service bus, etc;
- Event handlers: Um manipulador de eventos (às vezes referido como um "assinante" de evento) é qualquer componente (aplicativo ou recurso) que pode receber eventos do event grid. Como por exemplo: Functions, logic apps, web hooks, queue storage, event hubs;
- Os eventos são as mensagens de dados que passam pela grade de eventos que descrevem o que aconteceu. Cada evento é independente, pode ter até 64 KB e contém várias informações;
- O tamanho máximo permitido pelo Hub de Eventos do Azure para uma única publicação (individual ou lote) é 1 MB.
Conceitos
- Eventos: o que aconteceu.
- Origens do evento: Onde o evento ocorreu.
- Tópicos: o ponto de extremidade onde os publicadores enviam eventos.
- Assinaturas de evento: o ponto de extremidade ou o mecanismo interno para encaminhar eventos, às vezes, para mais de um manipulador.
- Manipuladores de eventos: o aplicativo ou serviço que reage ao evento.
Evento
- Descreve por completo algo que aconteceu no sistema.
- Todos os eventos apresentam informações comuns: origem do evento, hora em que o evento ocorreu e identificador exclusivo.
- Cada evento também apresenta informações específicas que são relevantes somente para o tipo de evento em questão.
Origens de eventos
- A origem de um evento é onde o evento acontece.
- Cada origem do evento está relacionada a um ou mais tipos de evento.
- Por exemplo, o Armazenamento do Azure é a origem dos eventos criados pelo blob
Tópicos
O tópico da grade de eventos fornece um ponto de extremidade em que a fonte envia eventos.
- tópicos do sistema: você não ve na sua assinatura, você os assina para começar a receber os eventos;
- tópicos personalizados: são tópicos de aplicativo e de terceiros. Ao criar ou receber acesso a um tópico personalizado, você verá o tópico personalizado em sua assinatura
Assinatura de evento
Uma assinatura informa à Grade de Eventos do Azure com eventos em um tópico você está interessado em receber. Ao criar a assinatura, você fornece um ponto de extremidade para manipular o evento.
Manipulador de eventos
Sob a perspectiva de uma Grade de Eventos, um manipulador de eventos é o local em que o evento é enviado. O manipulador usa alguma ação adicional para processar o evento.
Explorar a durabilidade da entrega de eventos
- Se não houver confirmação de recebimento ou em caso de falha ao tentar entregar o evento, a grade de eventos tenta fazer o envio novamente com base em uma política de envio.
- É possível realizar envio em Lote, máximo de 5.000 eventos;
- Entrega atrasada: atrasa as mensagens quando identifica que o ponto de extremidade não está integro;
- Eventos de mensagens mortas: Quando a Grade de Eventos não puder entregar um evento dentro de um determinado período ou depois de tentar entregar o evento um determinado número de vezes, ela poderá enviar o evento não entregue a uma conta de armazenamento. (se uma das condições abaixo for atendida)
- O evento não é entregue dentro do período de vida útil.
- O número de tentativas de entregar o evento excede o limite.
Queue Storage - (Message)
- é um serviço que usa o Armazenamento do Azure para armazenar um grande número de mensagens que podem ser acessadas com segurança de qualquer lugar do mundo usando uma interface simples baseada em REST.
- As filas podem conter milhões de mensagens, limitadas apenas pela capacidade da conta de armazenamento que as possui.
- Precisa de uma trilha de auditoria de todas as mensagens que passam pela fila;
- Deseja acompanhar o andamento do processamento de uma mensagem dentro da fila;
- Deve ser parte de uma storage account;
Event hub - Número massivo de eventos de diversas fontes
Use event hub se:
- Você precisa oferecer suporte à autenticação de um grande número de editores.
- Você precisa salvar um fluxo de eventos no armazenamento de Data Lake ou Blob.
- Você precisa de agregação ou análise em seu fluxo de eventos.
- Você precisa de mensagens confiáveis ou resiliência.
- Por padrão, os Hubs de Eventos tem quatro partições;
Service Bus - (Message)
- Planos: Básico, standard, Premium;
- Tamanho da mensagem 256 KB ou 1 MB no premium;
- Trabalha com o protocolo AMQP;
Queues
- Precisa de uma garantia de entrega no máximo uma vez.
- Necessita de uma garantia FIFO.
- Necessidade de agrupar mensagens em transações.
- Deseja receber mensagens sem consultar a fila.
- Precisa fornecer um modelo de acesso baseado em função para as filas.
- Precisa lidar com mensagens maiores que 64 KB, mas menores que 256 KB.
- O tamanho da fila não ultrapassará 80 GB.
- Deseja publicar e consumir lotes de mensagens.
- Pode ter N produdores e um único consumidor;
Topics
- Topics são como filas, mas podem ter vários consumidores;
- Quando uma mensagem é enviada para um tópico em vez de uma fila, vários componentes podem ser acionados para fazer seu trabalho;
- Pode ter N produdores e N consumidores;
-
Transactional support
- Ajuda a garantir que caso eu tenha que enviar duas mensagem, ele garante que as duas serão entregues ou nenhuma será;
Cenários
- Aplicações distribuidas;
- Processamento de longa duração;
- Arquitetura baseada em microserviços;
Comunicação
- Envia mensagens ou eventos;
- Mensagem
- Contém dados brutos que serão consumidos por outro componente;
- Contém seus próprios dados não apenas uma referencia para o dado;
- Eventos
- Os eventos são mais leves do que as mensagens e e são mais frequentemente usados para comunicações de transmissão;
- Os componentes que enviam o evento são conhecidos como publishers e os receptores são conhecidos como subscribers.
- Indicação de que algo aconteceu;
- Pode ser enviado a vários destinatários;
- O remetente não tem uma expectativa específica de que os destinatários do evento farão algo em particular em resposta a esse evento.
- Considere a seguinte questão: O componente de envio espera que a comunicação seja processada de uma maneira particular pelo componente de destino?
- Se a resposta for sim, opte por usar uma mensagem. Se a resposta for não, você pode usar eventos.
-
Module 07 - Implement user authentication and authorization
- Providers: AAD, Facebook, Gmail, Twitter
Key Vault
- É um cofre de chaves (chaves, certificados, senhas);
- Ambiente seguro, protegido e centralizado;
- Aqui vão coisas mais sensíveis;
- Possibilita auditoria;
- Vault: grupo lógico de segredos;
- Recomendado ter um vault para cada sistema;
- Vault owner: tem controle completo do vault;
- Vault consumer: pessoa, serviço, sistema;
- Service principal: chaves que representam o usuário, eu sou um user principal, tenho um conjunto de credenciais atrelados a mim;
- Managed identity: azure ad gerencia tudo, não preciso
gerenciar as chaves;
- Types: chaves criptográficas, pares chave e valor, certificados;
- Azure storage: posso utilizar uma chave para encriptar o azure storage;
- Cria um id para cada mudança de chave;
Azure App Configuration
- Chave/Valor;
- Feature flags: podemos usar a chave sentinela (evitar custos adicionais);
Implement API Management
- O serviço de gerenciamento de API do Azure (APIM) permite que você construa uma API a partir de um conjunto de microsserviços distintos;
- Ajuda as organizações a publicar APIs para desenvolvedores externos, parceiros e internos para desbloquear o potencial de seus dados e serviços;
- É um ponto de extremidade que recebe as requisições e as encaminha para os backends (outras APIs), além de validar token, usar caches, etc;
- Ele atua como um proxy reverso, encaminhando as solicitações de clientes para serviços;
Configuração de políticas
- Inbound: declarações a serem aplicadas à solicitação;
- Backend: declarações a serem aplicadas antes que o pedido seja encaminhado para o serviço de back-end;
- Outbound: declarações a serem aplicadas à resposta;
- On-error: instruções a serem aplicadas se houver uma condição de erro;
Políticas
- choose;
- forward-request;
- limit-concurrency;
- mock-response;
- log-to-eventhub;
- retry;
- return-response;
-
-
-
-