Há alguns anos, tivemos um problema interessante. Somos uma empresa totalmente remota, com todo o nosso software na nuvem. E tínhamos um conjunto de aplicações Spring Boot rodando em contêineres com Infraestrutura como Código.
precisávamos
agilidade nos negócios.O mercado de trabalho global é dinâmico e sempre há demanda por novos produtos. Precisávamos encontrar uma maneira de manter nossa liderança no setor.
​​ 

Somos uma empresa de tecnologia com uma estratégia arrojada.​​ 

Em 2022, criamos um ADR (Registro de Decisão de Arquitetura) que dizia: "prioridade a arquitetura sem servidor e contêineres conforme necessário". E gerou debates em quase 40 equipes de engenharia.​​ 

Vamos começar explicando alguns termos.​​ 

A abordagem "serverless-first" não se limita apenas a funções como serviço. Ela também engloba um conjunto de serviços gerenciados de provedores de nuvem que:​​  

  • Reduza os custos operacionais ao não precisar gerenciar a infraestrutura.​​ 

  • Dimensionamento conforme necessário, incluindo a possibilidade de dimensionamento até zero para torná-los totalmente elásticos.​​ 

  • Tenha preços flexíveis (você paga apenas pelo que usa).​​  

Na GP, "serverless-first" refere-se ao nosso uso de AWS Lambda, EventBridge, Step Functions, Fargate, SQS, SNS, API Gateway, S3, DynamoDB e outros.​​ 

Priorizar soluções sem servidor significa que, ao selecionar uma solução para computação, armazenamento, mensagens ou similares, preferimos que as equipes comecem com uma opção sem servidor. Uma observação importante: se o serviço sem servidor não atender às necessidades, as equipes devem recorrer a um serviço mais robusto — um que exija maior investimento operacional.​​ 

O conceito de "containers-as-needed" esclarece que "serverless-first" não significa "exclusivamente serverless". Há momentos em que precisamos de contêineres (por exemplo, para instalar um produto de software COTS) — e isso não tem problema.​​ 

Uma estratégia tecnológica que prioriza os clientes.​​ 

Agimos com agilidade para atender às necessidades de nossos clientes e usuários. Serviços como Lambda, S3 e DynamoBD são incrivelmente resilientes e rápidos. Ao desonerar os usuários das tarefas pesadas e não diferenciadas, podemos dedicar mais tempo ao desenvolvimento de funcionalidades para eles, em vez de trabalhar na configuração genérica da infraestrutura.​​ 

Um princípio fundamental da GP é: "Você constrói, você opera." Nossas equipes são proprietárias de seus próprios softwares. Portanto, não simplesmente entregamos o software para uma equipe de DevOps.​​  

Benefícios da abordagem "serverless-first"​​ 

A arquitetura sem servidor (Serverless) é inerentemente orientada a eventos.​​ 

Nossa arquitetura é totalmente orientada a eventos. Ao utilizarmos a EDA (Arquitetura Orientada a Eventos), podemos dimensionar tanto nossa organização quanto nosso software. A arquitetura sem servidor nos obriga a manter um raio de ação reduzido e a nos comunicar de maneira totalmente nativa da nuvem por meio de eventos.​​ 

Habilitando restrições​​ 

Como plataforma global de empregos, levamos a conformidade a sério. Nossa infraestrutura em nuvem é bem arquitetada e utilizamos uma estratégia de múltiplas contas que separa as cargas de trabalho e automatiza a conformidade com a nuvem. A arquitetura sem servidor nos ajuda a impor altos padrões, controlando como provisionamos recursos na nuvem.​​ 

Delegue o trabalho​​ 

Nosso provedor de nuvem gerencia nossos serviços sem servidor. Um conjunto único de componentes básicos — integrados, protegidos, ajustados, habilitados e mantidos pela AWS — nos permite focar em aspectos mais estratégicos da cadeia de valor para os clientes.​​ 

Cargas de trabalho bem arquitetadas​​ 

Todas as cargas de trabalho que criamos são analisadas com base no AWS Well-Architected Framework. Nosso foco está na escalabilidade, segurança, confiabilidade e otimização de custos para garantir que não apenas atendamos, mas também superemos nosso SLA (Acordo de Nível de Serviço). Isso capacita nossas equipes de engenharia à medida que continuamos a evoluir com ambientes de nuvem.​​  

Sobre nossas equipes​​ 

Nossa estratégia tecnológica é ambiciosa, e isso a torna desafiadora. Muitos engenheiros não trabalharam em uma arquitetura sem servidor (ou em uma arquitetura distribuída). A transição para a arquitetura sem servidor não é fácil, e buscamos engenheiros que se sintam à vontade para aprender, pensar grande e trabalhar em ritmo acelerado.​​ 

Alguns engenheiros não têm certeza sobre o termo "serverless" (sim, sabemos que existem servidores) porque a abordagem vai além de simplesmente escrever código em funções. Nossa estratégia exige uma abordagem holística aos princípios clássicos da computação em nuvem.​​ 

O resultado​​ 

Fizemos progressos extraordinários em dois anos. A modernização oferece muitos benefícios (veja nosso artigo sobre AWS / valor comercial conhecido da modernização da nuvem). Especificamente, observamos o seguinte:​​ 

1. Velocidade: A forma como dividimos nosso sistema permite que equipes e produtos inovem e evoluam de forma independente. Isso tem um impacto enorme na agilidade dos negócios.​​ 

2. Conformidade: Utilizamos o AWS Well-Architected Framework para revisar todas as cargas de trabalho. Como utilizamos muitos serviços gerenciados da AWS, podemos confiar em sua excelência operacional e partir de um ponto de partida de alta qualidade.​​ 

3. Pensamento sistêmico: Tivemos que padronizar muitos de nossos processos para que pudéssemos raciocinar sobre o sistema, sua confiabilidade e seu valor para o negócio. Não dedicamos tempo a componentes de baixo valor.​​ 

4. Inovação: Serverless significa que tudo é uma API. Essa restrição imposta exige uma abordagem que priorize a API. Ao nos enxergarmos como uma plataforma, podemos alcançar um novo nível de inovação conectando sistemas facilmente por meio de APIs, como integrar o GP Gia ™ a uma nova base de conhecimento.​​ 

5. Propriedade: A AWS é proprietária da nossa infraestrutura, mas nós somos proprietários do nosso domínio de negócios. A abordagem "serverless first" com design orientado a domínio nos obrigou a focar no problema de negócio. Isso mantém a propriedade da capacidade bem definida.​​ 

Priorizar arquiteturas sem servidor nem sempre é mais rápido, mas é mais vantajoso. Preferimos otimizar a velocidade do sistema em vez da velocidade de cada desenvolvedor individual. A abordagem "serverless first" não se concentra tanto no uso de funções, mas sim na ideia de que "código é um risco". O sistema é o ativo.” Quanto menos código tivermos que escrever, mais poderemos considerar e moldar o sistema de negócios que estamos construindo.​​ 

Ao compartilharmos nossa história, ficará evidente a velocidade com que estamos trabalhando, o que é resultado direto da abordagem "serverless-first". Fique atento.​​