# Implemente microsserviços com Functions

Adotar uma [arquitetura de microsserviços serverless](https://www.azion.com/pt-br/solucoes/aplicacoes-baseadas-em-microsservicos/) com Azion Functions traz vários benefícios significativos. Melhora a escalabilidade ao permitir que cada serviço escale independentemente com base em sua própria demanda, em vez de escalar toda a aplicação com base na demanda de um único serviço. Isso usa os recursos de forma mais eficiente e reduz custos.

Além disso, aumenta a flexibilidade ao permitir que cada serviço seja desenvolvido, implantado e atualizado independentemente. Isso significa que mudanças podem ser feitas em um serviço sem impactar os outros, permitindo uma inovação mais rápida e reduzindo o risco de falhas em todo o sistema.

---

## Arquitetura

![Representação de uma requisição/resposta em uma configuração de microsserviços](/assets/docs/images/uploads/microservices-arch.png?v=2)

### Fluxo de dados

1. Um usuário envia uma requisição para o **Domínio** associado a uma aplicação. Essa requisição é direcionada para o **Azion Traffic Router**, que identifica o **Edge Node** apropriado para processar a requisição.

2. Nesta etapa, com base na arquitetura de microsserviços, a requisição se ramifica para diferentes serviços em resposta à configuração do **Rules Engine**. Essa ramificação significa que os serviços podem evoluir independentemente, facilitando ciclos de inovação mais rápidos e rápida implantação de novos recursos.

3. **Functions** são invocadas. Cada serviço em uma arquitetura de microsserviços corresponde a diferentes capacidades de negócios. Por exemplo, um serviço de **Middleware de Autenticação** lida com a autenticação do usuário, um serviço de **Carrinho de Compras** gerencia operações do carrinho do usuário e um serviço de **Cálculo de Frete** calcula os custos de envio. Esses serviços são desenvolvidos em JavaScript, implantados e escalados independentemente, proporcionando agilidade e resiliência.

4. O conteúdo estático é salvo no **Object Storage** de onde é recuperado e servido como uma resposta. Isso aproveita a edge computing para garantir menor latência e entrega de conteúdo mais rápida.

5. **SQL Database** lida com operações que envolvem transações de banco de dados. Isso enfatiza ainda mais a separação de responsabilidades, com cada serviço assumindo a propriedade de seu banco de dados específico para garantir baixo acoplamento e alta coesão.

Após esses processos distintos, porém coesos, o conteúdo — processado e montado — é entregue de volta ao cliente. Esse fluxo de dados orientado a microsserviços com edge computing garante operações altamente eficientes, escaláveis e resilientes, oferecendo consideráveis vantagens comerciais.

---

## Componentes

- [Applications](/pt-br/documentacao/plataforma/applications/): configure uma aplicação para definir políticas de entrega e cache, criar regras para automatizar atribuições de políticas de cache com base no tipo de conteúdo e determinar como o conteúdo é armazenado em cache.
  - [Functions](/pt-br/documentacao/plataforma/functions/): permite criar aplicações serverless orientadas a eventos que executam perto dos usuários.
  - [Object Storage](/pt-br/documentacao/plataforma/object-storage/): um serviço de armazenamento escalável e seguro, projetado para integrar armazenamento de objetos com a Azion usando o padrão S3 para operações de objetos.
  - [SQL Database](/pt-br/documentacao/plataforma/sql-database/): uma solução SQL projetada para aplicações serverless. É totalmente compatível com ACID e utiliza o dialeto SQLite para fornecer um ambiente de desenvolvimento familiar, facilitando a integração rápida.

---

## Implementação

1. Crie uma aplicação:
   - No [Console](https://console.azion.com), crie uma aplicação usando o botão **+ Create** na página inicial.
   - Use a [API da Azion](https://api.azion.com/#d43c5509-fb99-4b20-a7bd-64f0924af352) para criar uma aplicação.
   - Use a [Azion CLI](/pt-br/documentacao/devtools/cli/recursos/application/) para criar e implantar uma aplicação.

2. [Crie uma function](/pt-br/documentacao/plataforma/functions/primeiros-passos/) e [instancie](/pt-br/documentacao/guias/desenvolvimento-de-aplicacoes/primeiros-passos/instanciar-functions/) na aplicação recém-criada.

3. Crie um domínio e associe-o à aplicação:
   - No Console, [crie um domínio](/pt-br/documentacao/guias/plataforma/migracao/configurar-dominio/) usando o botão **+ Create** na página inicial.
   - Usando a [API da Azion](https://api.azion.com/#d43c5509-fb99-4b20-a7bd-64f0924af352) para criar um domínio.
   - Se você criou uma aplicação através de um template, o domínio é criado para você.

> **nota**
>
> A aplicação é acessível através do domínio fornecido pela Azion, que se parece com: `xxxxxxxxxx.map.azionedge.net`.

4. Teste e monitore sua aplicação.

---

## Recursos relacionados

- [Azion Marketplace](/pt-br/documentacao/plataforma/marketplace/)
- [Compatibilidade com APIs Web no Azion Runtime](/pt-br/documentacao/devtools/runtime/frameworks/compatibilidade-frameworks/)
- [Compatibilidade com Node.js no Azion Runtime](/pt-br/documentacao/devtools/runtime/node/)
