Num mundo marcado por constante mudança e incerteza, as organizações têm necessitado de se adaptar e evoluir continuamente para conseguir competir em contextos imprevisíveis. Considerando um cenário em que é decisivo acompanhar o mercado e inovar rapidamente, a criação de sistemas escaláveis e adaptáveis torna-se extremamente relevante
Com a promessa de maior modularidade, escalabilidade e resiliência, as arquiteturas orientadas a eventos têm-se destacado, nos últimos anos, em relação às abordagens RESTful mais tradicionais para o desenvolvimento de microsserviços. Na comunidade de engenharia, tem-se verificado uma tendência para uma estratégia serverless-first - que se caracteriza pela inexistência de gestão de servidores, preços pay-as-you-go, escalonamento contínuo e tolerância a falhas. Neste artigo, partilho os princípios fundamentais, as preocupações comuns e as principais aprendizagens das equipas de engenharia com quem trabalhei e que adotaram esta abordagem com sucesso. 1) O que é uma arquitetura serverless orientada a eventos?Uma arquitetura orientada a eventos - ou EDA, event-driven architecture - é uma abordagem de design em que as aplicações são compostas por pequenos serviços independentes que reagem a eventos. Estes eventos podem ser qualquer coisa, desde um clique num botão até uma alteração numa base de dados. O termo “serverless” significa que a infraestrutura subjacente é gerida por um fornecedor de serviços na cloud, permitindo que os programadores se concentrem em escrever código, em vez de manter servidores. 2) Preocupações comunsLatência Ao contrário das aplicações monolíticas - que podem processar tudo no mesmo espaço de memória, num único dispositivo -, as aplicações orientadas a eventos comunicam através de redes. Este design favorece o aumento da escalabilidade e da disponibilidade, tendo como consequência uma latência variável. Assim, os serviços que exigem uma baixa latência - assim como as aplicações de negociação de alta frequência (high-frequency trading) nos bancos - dificilmente beneficiam desta arquitetura. A latência é também uma das principais preocupações associadas às serverless functions, especialmente em cenários de “cold start”. Quando uma função é invocada após um período de inatividade, a plataforma pode ter de criar uma nova instância, atrasando assim a sua execução. As soluções para mitigar este problema incluem manter as funções “quentes” (invocando-as regularmente para evitar períodos de inatividade) e otimizar o desempenho da função através de boas práticas de programação. Monitorização e debugging As aplicações monolíticas tradicionais oferecem mecanismos simples de logging e debugging. Em contrapartida, as arquiteturas serverless orientadas a eventos distribuem a funcionalidade por vários serviços e funções, o que dificulta o diagnóstico de problemas. As equipas de engenharia podem ultrapassar esta questão utilizando serviços de logging e monitorização centralizados, como o AWS CloudWatch, o Azure Monitor, ou ferramentas de terceiros (como o Datadog). O logging estruturado e o rastreio abrangente são fundamentais para manter a observabilidade. Vendor Lock-In A adoção de uma arquitetura serverless orientada a eventos geralmente implica a associação a um fornecedor de cloud específico, gerando preocupações com o bloqueio de fornecedor (vendor lock-in). Para mitigar esse risco, algumas equipas optam por estratégias multi-cloud ou utilizam frameworks como o Serverless Framework ou Terraform, que fornecem uma camada de abstração e facilitam a portabilidade. Segurança Uma arquitetura serverless orientada a eventos requer uma abordagem diferente à segurança. As funções têm tempo de execução e acesso limitados, o que minimiza a superfície de ataque. No entanto, garantir uma comunicação segura entre os serviços, gerir as permissões e proteger dados sensíveis continua a ser crucial. A implementação do princípio do privilégio mínimo, a encriptação de dados em trânsito e a atualização regular das dependências são algumas das práticas recomendadas. 3) Aprendizagens das equipas de engenhariaAdotar uma mentalidade diferente Mudar para uma arquitetura orientada a eventos requer uma mudança de mindset. As equipas precisam de criar aplicações que respondam a eventos de forma assíncrona, sendo que esta modularidade promove a escalabilidade e a tolerância a falhas. A título de exemplo, uma aplicação de e-commerce pode gerir o processamento de encomendas, o pagamento e a notificação como funções separadas, despoletadas por eventos específicos, assegurando que as falhas num componente não sejam propagadas pelos restantes componentes. Aceitar a granularidade As equipas de engenharia chegaram à conclusão de que as características das serverless functions promovem o Desenvolvimento Ágil. As funções podem ser desenvolvidas, testadas e implementadas de forma independente, acelerando os ciclos de desenvolvimento. Essa granularidade também permite a otimização e o dimensionamento de partes específicas da aplicação, resultando numa melhor utilização de recursos e economia de custos. Automatizar tudo A automação é crucial para lidar com a complexidade das aplicações serverless orientadas a eventos. Os pipelines de integração contínua/entrega contínua - Continuous Integration (CI) e Continuous Deployment (CD) - devem ser configurados para suportar deployment, teste e escalonamento. Já as ferramentas Infrastructure as Code (IaC) - como o AWS CloudFormation ou o Azure Resource Manager - simplificam a gestão de recursos, permitindo às equipas replicar ambientes sem esforço. Monitorizar os custos Embora uma arquitetura serverless orientada a eventos possa promover a redução de despesas, as equipas devem monitorizar atentamente a sua utilização. O custo das funções está diretamente ligado ao número de invocações e ao tempo de execução, o que pode trazer custos inesperados. As ferramentas que disponibilizam dados sobre a utilização de recursos e a distribuição dos custos ajudam a otimizar as plataformas e a evitar derrapagens orçamentais. ConclusãoUma arquitetura serverless orientada a eventos proporciona um meio eficaz de criar aplicações adaptáveis e resilientes, sendo que as equipas de engenharia podem beneficiar deste paradigma para inovar de forma rápida e eficiente. À medida que mais organizações partilham as suas experiências, o caminho para uma adoção bem sucedida torna-se mais evidente, abrindo-se as portas para a próxima geração de plataformas escaláveis. |