Estudo de caso · Stack

Como a Conta Azul roda um ERP para pequenas empresas na AWS

A Conta Azul é um ERP online que cuida de finanças, vendas e notas fiscais de pequenas empresas brasileiras e dos contadores delas. Roda na AWS, junta um legado em Java com serviços mais novos em Go e serve milhares de modelos de ML, um por cliente, pelo Amazon SageMaker.
Copiar stackcontaazul.com ERP online para pequenas empresas e contadores · Brasil · fundada em 2011

A stack da Conta Azul

Abrir no montador

Linguagem

  • Pythonaws.amazon.com

    Linguagem do código de ciência de dados e de inferência.

  • Javagithub.com

    Linguagem da base de código mais antiga, com build no Maven.

Hospedagem

  • AWScontaazul.com

    Hospeda o ERP, com certificações ISO 27001 e PCI DSS.

  • Kubernetes (Amazon EKS)aws.amazon.com

    Rodava a inferência dos modelos em pods antes da ida para o SageMaker.

  • Dockeraws.amazon.com

    Empacota o contêiner de inferência próprio, feito sobre o SageMaker Inference Toolkit.

    Por quê: Precisavam de dependências extras e de uma lógica de inferência própria.

Login

Framework de servidor

  • AWS Lambdaaws.amazon.com

    Manda cada previsão para o modelo do cliente, com o modelo global como reserva.

  • Goarc.dev

    Linguagem dos microsserviços novos do backend.

Modelo de IA

  • Amazon SageMakeraws.amazon.com

    Serve milhares de modelos, um por cliente, que categorizam lançamentos financeiros.

    Por quê: Os Multi-Model Endpoints servem milhares de modelos a partir de um contêiner e cuidam do carregamento e do cache.

Erros

  • New Relicgithub.com

    Monitoramento de desempenho das aplicações.

  • Prometheusgithub.com

    Coleta métricas, inclusive as do New Relic, por um exporter feito pelo time.

Como montaram

Um ERP na AWS com API aberta

A Conta Azul informa que o ERP roda em servidores da AWS, com certificações ISO 27001 e PCI DSS e backups automáticos.

Parceiros se conectam por uma API REST pública que troca JSON e autentica com OAuth 2.0, cobrindo financeiro, clientes, produtos, vendas e notas. A empresa também publica no GitHub um node para o n8n, para o cliente automatizar esses fluxos sem programar.

Fontes:contaazul.com developers.contaazul.com github.com

Dos pods no EKS para o SageMaker

A Conta Azul sugere a categoria de cada lançamento financeiro com um modelo por cliente, mais um modelo global de reserva. Esses milhares de modelos eram servidos por pods no Amazon EKS, onde carregar várias versões causava erro de memória e toda atualização exigia reiniciar todos os pods.

Em 2021, o time de ciência de dados levou a inferência para os SageMaker Multi-Model Endpoints, que carregam e guardam em cache os modelos sob demanda a partir de um único contêiner próprio. Uma função Lambda manda cada pedido para o modelo do cliente certo, e o autoscaling segura picos de mais de mil requisições por minuto.

Fontes:aws.amazon.com

Raiz em Java, Go nos serviços novos

O GitHub da empresa mostra a raiz em Java, com uma imagem Docker com Oracle JDK 6 e Maven e uma biblioteca fluente de datas para Java. As vagas mais recentes de backend têm foco em Go e pedem microsserviços escaláveis com REST, GraphQL e gRPC.

O time também escreveu um pequeno exporter em Go que leva as métricas de aplicação do New Relic para o Prometheus.

Fontes:github.com github.com arc.dev github.com

Aposentando o ERP clássico

Cerca de 800 clientes, muitos desde 2012, ainda usavam a versão Clássica, feita com tecnologia que já não conversava com a plataforma moderna. O time passou quase três meses construindo um motor de migração, levou todo mundo em lotes para reduzir o risco e apagou cerca de 175 mil linhas de código.

Fontes:medium.com

Também detectado no site

Achado na página inicial com as regras abertas do Wappalyzer (HTML, scripts e cabeçalhos). Mostra o que roda no navegador, não o backend inteiro.

  • Amazon CloudFront
  • Amazon S3
  • Amazon Web Services