Pular para o conteúdo principal
BlogFerramentas para desenvolvedoresPortabilidade na nuvem: Arquitetura orientada a eventos (EDA) e computação sem servidor

Portabilidade na nuvem: Arquitetura orientada a eventos (EDA) e computação sem servidor

Portabilidade na nuvem: Arquitetura orientada a eventos (EDA) e computação sem servidor

A EDA (Event-Driven Architecture, arquitetura orientada a eventos) é reativa a eventos ou mensagens e aciona ações específicas em vez de depender de comunicação direta e síncrona. A EDA é assíncrona, o que permite que os componentes operem de forma independente, melhorando a capacidade de resposta e o desempenho do sistema sob cargas de trabalho variáveis.

Considere dois exemplos simples: uploads de arquivos e registro de novos usuários. Essas duas operações podem ocorrer por meio de um fluxo síncrono de solicitação-resposta (ou seja, REST API), mas uma nova solicitação precisaria ser feita para uma atualização de status no upload do arquivo ou para acionar a próxima ação a ser tomada depois que os novos dados do usuário forem inseridos no banco de dados. Imagine que você tenha um grupo de executores de tarefas continuamente buscando mensagens; eles trabalham incansavelmente durante períodos de silêncio ou conversas não relacionadas para ocasionalmente receber uma mensagem sobre a qual possam agir. Você pode ver que esse não é o uso mais eficiente da elasticidade dos recursos de computação em nuvem sob demanda. A EDA resolve essa questão com uma abordagem baseada em push.

Os sistemas orientados por eventos podem ser dimensionados rapidamente, adicionando ou removendo componentes conforme necessário, e podem ser altamente resilientes a falhas, pois o sistema pode continuar funcionando mesmo que um componente não esteja disponível. A EDA também é adequada para o processamento em tempo real e para a manipulação de grandes volumes de dados, pois os componentes podem reagir a eventos e processar dados à medida que eles chegam, sem esperar por um conjunto completo de dados.

Por que você deve considerar a EDA?

  • Maior flexibilidade do sistema: A natureza de acoplamento frouxo de uma arquitetura orientada por eventos permite que você modifique, adicione ou remova componentes facilmente sem afetar todo o sistema, tornando-o adaptável a requisitos em constante mudança.
  • Escalabilidade aprimorada: A EDA oferece suporte ao dimensionamento horizontal fácil, permitindo que as empresas lidem com o aumento das cargas de trabalho ou do tráfego adicionando mais instâncias de componentes ou serviços conforme necessário.
  • Aumento da resiliência do sistema: A comunicação assíncrona e os componentes desacoplados da EDA contribuem para melhorar a tolerância a falhas, pois a falha de um componente não causa necessariamente uma interrupção em todo o sistema.
  • Recursos de processamento em tempo real: A EDA permite o processamento em tempo real de grandes volumes de dados e padrões de eventos complexos, o que a torna adequada para empresas que exigem percepções ou respostas imediatas a condições que mudam rapidamente.
  • Uso otimizado de recursos: Ao reagir a eventos somente quando eles ocorrem, a EDA ajuda a otimizar a utilização de recursos e reduz a necessidade de processos em execução contínua, o que pode resultar em economia de custos e maior eficiência.

Computação sem servidor nativa na nuvem

A EDA possibilita modelos de desenvolvimento de aplicativos como a computação sem servidor, permitindo que o código seja portátil e independente de provedor, para que você possa escolher seu provedor de nuvem com base em recursos, linguagem suportada, custos etc. O FaaS (Functions-as-a-Service, funções como serviço) é um produto popular oferecido por muitos provedores de nuvem, que permite aos usuários gerenciar funções e infraestrutura de aplicativos em um só lugar. O provedor de nuvem atua como a camada de responsabilidade, lidando com a infraestrutura subjacente, incluindo provisionamento, dimensionamento e manutenção de servidores, permitindo que os desenvolvedores se concentrem em escrever códigos.

Serviços FaaS conhecidos, como AWS Lambda, Azure Functions e Google Cloud Functions, são o que chamamos de nativos da plataforma. Eles geralmente prendem você ao uso de um provedor de nuvem específico, sem nenhuma maneira fácil de migrar. Você nos ouvirá falar muito sobre o Knative como uma plataforma de código aberto baseada no Kubernetes para execução sem servidor, o que significa que ele pode dimensionar seu aplicativo de 0 a N números de réplicas em poucos segundos. O dimensionamento para 0 é fantástico porque permite que o Kubernetes e a Knative realoquem recursos conforme necessário.

Seu único trecho de código pode dimensionar os recursos automaticamente porque pode ser invocado várias vezes em paralelo. Em sua essência, as ofertas de FaaS nativas da plataforma que mencionamos anteriormente não são favoráveis por causa dos preços imprevisíveis. Ao executar o Knative em nossas instâncias de computação por meio do nosso serviço Kubernetes gerenciado, você paga um preço fixo e previsível e não precisa se preocupar com o preço de pagamento por execução que entra em vigor após algumas camadas gratuitas.

Por que você deve considerar o Serverless?

  • Eficiência de custos: O modelo de preço de pagamento conforme o uso da computação sem servidor pode levar à economia de custos, pois as empresas pagam apenas pelo tempo de computação que usam, sem alocar recursos antecipadamente.
  • Escalabilidade aprimorada: A computação sem servidor pode dimensionar automaticamente os recursos para atender à demanda, garantindo que os aplicativos possam lidar com o aumento das cargas de trabalho sem intervenção manual ou tempo de inatividade.
  • Redução da sobrecarga operacional: Com a computação sem servidor, o provedor de nuvem gerencia a infraestrutura subjacente, liberando as equipes de TI para se concentrarem no desenvolvimento de aplicativos, na inovação e em outras iniciativas estratégicas.
  • Tempo de colocação no mercado mais rápido: Os processos simplificados de desenvolvimento e implantação oferecidos pela computação sem servidor podem ajudar as empresas a acelerar o lançamento de novos recursos, atualizações e correções de bugs, aumentando sua vantagem competitiva.
  • Flexibilidade e adaptabilidade: A computação sem servidor permite que as empresas criem e implementem aplicativos usando uma variedade de linguagens de programação e tecnologias, facilitando a adaptação às mudanças de requisitos ou a incorporação de novas tecnologias conforme necessário.

Como mencionei anteriormente, a computação sem servidor baseia-se na arquitetura orientada por eventos, o que significa que as funções são acionadas por eventos como solicitações HTTP, uploads de arquivos, atualizações de banco de dados e assim por diante. Isso pode ajudar a simplificar a arquitetura do aplicativo e melhorar a escalabilidade.

As funções sem servidor também devem ser stateless. Elas não armazenam nenhum dado ou estado entre as invocações, garantindo que as funções sejam facilmente escalonáveis e que você possa substituí-las em caso de falha. Elas também devem ser de curta duração, garantindo que os recursos não sejam desperdiçados e que a função possa ser dimensionada rapidamente. Se a tarefa de uma função for de longa duração, avalie se um serviço em execução constante é mais adequado.

Não se esqueça de também monitorar e registrar suas funções sem servidor para garantir que elas estejam funcionando conforme o esperado e identificar quaisquer problemas ou erros. Use ferramentas como agregadores de registros e ferramentas de monitoramento de desempenho de aplicativos (APM), como Prometheus e Grafana. E não se esqueça de proteger suas funções usando as práticas recomendadas, como autenticação, autorização e criptografia. Isso garante que o aplicativo seja seguro e que os dados confidenciais sejam protegidos. Teste-os completamente antes de implantá-los na produção para garantir que funcionem conforme o esperado e estejam livres de vulnerabilidades.

A computação sem servidor pode ser econômica, mas é importante usar técnicas de otimização de custos, como otimização de funções, compartilhamento de recursos e dimensionamento automático para reduzir custos e aumentar a eficiência. Avalie sua carga de trabalho, padrões de uso e requisitos para determinar se a computação sem servidor é econômica para seu caso de uso específico. Considere os padrões de uso esperados, os requisitos de desempenho e a estrutura de preços da plataforma sem servidor que você escolher usar.


Comentários

Deixe uma resposta

Seu endereço de e-mail não será publicado. Os campos obrigatórios estão marcados com *