Acelerando a Transformação Digital — A Adoção Serverless na Syngenta Digital

Lucas Coppio
Syngenta Digital Insights
3 min readMay 30, 2023

Na Syngenta Digital usamos arquitetura serverless no desenvolvimento de muitas partes de nossa plataforma e nos produtos Cropwise. Ela se tornou uma ferramenta importante e mudou bastante nossa maneira de trabalhar. Porém, essa arquitetura é muito mais do que uma forma de programação que revolucionou o desenvolvimento de software, Serverless nos mostrou onde precisávamos melhorar em observabilidade, depuração, documentação e complexidade de testes.

Nuvens cumulus nos céus de Montenegro

Uma das promessas que a arquitetura serverless faz é a de que o tempo entre ter uma ideia, implementá-la e colocá-la em produção é curto, e ela cumpre com a promessa. Enquanto a pessoa que está desenvolvendo conseguir entender o ecossistema de APIs e recursos a que tem acesso, a criação de uma nova feature se torna tão rápida e fácil quanto escrever um script em sua IDE favorita.

Com esse aumento na velocidade de entrega, vemos também o aumento exponencial na complexidade da aplicação, exigindo que tempo seja dedicado para melhoria do projeto e da equipe, podendo focar na implementação de processos automatizados, treinamento e criação de documentação.

A adoção da tecnologia na Syngenta Digital não foi imediata, nós usávamos funções serverless de forma bastante pontual para lidar com limitações de implementação em microsserviços.

O primeiro que eu me lembro de ter implementado foi uma função que verificava a presença de um arquivo em um bucket no S3; a razão era simples: a aplicação tinha sido feita em Java e a biblioteca AWS SDK tinha uma latência enorme para verificar se o arquivo existia. E como precisávamos verificar centenas de arquivos em uma única requisição do usuário, isso chegava a levar mais de 30 segundos para resolver em alguns casos.

Já a implementação da mesma funcionalidade em Javascript da biblioteca AWS SDK realizava essa operação de forma praticamente instantânea. Não precisamos nem mesmo debater o assunto. Criamos uma função lambda pelo console da AWS, escrevemos as 20 linhas de código que precisávamos para realizar a operação e em algumas horas a solução estava em produção.

A adoção da arquitetura serverless transformou significativamente a cultura DevOps entre as equipes de desenvolvimento. Anteriormente, quando se trabalhava apenas com microsserviços e monolitos em servidores ou Kubernetes, a responsabilidade de manter os sistemas funcionando recaía sobre os profissionais com maior experiência. Por outro lado, a abordagem serverless requer que todos os recursos sejam tratados como parte integral da aplicação, em vez de serem apenas uma “infraestrutura” consumida pela aplicação. Isso acaba por eliminar a distinção entre “configurar um recurso na nuvem” e “arquivo de configuração da aplicação”.

Dessa forma, é imprescindível ter algum conhecimento sobre o provedor de serviços utilizado ao programar com arquitetura serverless.

Hoje, muitos dos nossos produtos são construídos ou estendidos usando arquitetura serverless, desde produtos de API para integrações, gerenciamento de contas, APIs para aplicações mobile, até ferramentas de análise de imagem de satélite.

Sem dúvida alguma, a mudança na mentalidade que ela causa, onde uma única funcionalidade é o suficiente para “começar” o tempo de desenvolvimento de novas funcionalidades e produtos, reduziu de semanas para dias, além do paradigma ter facilitado muito a adoção de outras práticas como constant-deployment, TDD e BDD.

A arquitetura serverless permite também que diversos dos requisitos não funcionais, como escalabilidade e observabilidade, sejam atingidos com pouco ou nenhum esforço. Mas todos esses benefícios vêm acompanhados de um custo alto. Afinal, trabalhar com serverless é lidar com um nível muito elevado de complexidade na depuração, exigindo muita maturidade da equipe e do projeto.

O uso de automação de teste e deploys, feature-flags, um bom tracing, boa observabilidade sobre as métricas de operação e bons logs, são requisitos importantíssimos de serem cumpridos para que a aplicação seja colocada em produção.

Em suma, a implementação da arquitetura serverless trouxe impactos significativos na cultura e no desenvolvimento de produtos, proporcionando maior agilidade e facilitando a adoção de práticas eficientes. No entanto, é crucial enfrentar os desafios relacionados à complexidade inerente dessa arquitetura. Ao superar esses desafios, as equipes de desenvolvimento estarão bem-posicionadas para aproveitar os benefícios dela e impulsionar a inovação em seus produtos e serviços.

--

--

Lucas Coppio
Syngenta Digital Insights

Software developer and staff engineer even at my free time.