Como o Duolingo saiu de um back-end em Python para 500 serviços na AWS
O Duolingo ensina idiomas, matemática e música para um público enorme com apps nativos e pelo site. O back-end começou em Python e virou mais de 500 serviços na AWS escritos em Python, Kotlin e Java, enquanto os apps são nativos em Swift e Kotlin e usam IA da OpenAI.
O GPT-4 sustenta os recursos do Duolingo Max, como Explain My Answer e Roleplay.
Como montaram
Python primeiro, Scala onde a velocidade importava
Como quase todo o back-end do Duolingo, o Session Generator, o motor que monta cada lição, foi escrito primeiro em Python. Em 2017 o time reescreveu tudo em Scala. Eles apontaram três problemas: o Python era bem mais lento, não lidava bem com threads e por isso limitava o cache em memória, e a tipagem dinâmica deixava muitos bugs chegarem à produção.
A reescrita derrubou a latência média de 750 ms para 14 ms e levou a disponibilidade de 99,9% para 100% nos primeiros meses.
O Duolingo tem hoje mais de 500 serviços de back-end, cuidados por 30 times de produto, todos na AWS. O Python continua no centro, e o Kotlin virou linguagem oficial de back-end ao lado de Python e Java, o que deu pouco trabalho porque o time reaproveitou código Java e as ferramentas de Kotlin do Android.
A maioria dos serviços rodava no AWS ECS, e o time de plataforma está levando tudo para o Amazon EKS. Eles queriam deploys blue-green e canary, um ambiente temporário para cada pull request, suporte a IPv6 e mais ferramentas abertas como Argo CD, Karpenter e KEDA. Em 2026 a mudança ainda estava em andamento, e todo serviço novo já nasce no EKS.
O Duolingo faz os apps de forma nativa, Swift no iOS e Kotlin no Android. O app de Android ficou 100% em Kotlin em 2020: código menos verboso, menos travamentos por valor nulo e desenvolvedores bem mais contentes. Converter um arquivo de Java cortava uns 30% do tamanho, e o código ficou do mesmo tamanho por dois anos mesmo com o dobro de gente mexendo.
Para animações o time usa o Rive. Quando o curso de matemática saiu do iOS para o Android, os visuais em Swift não davam para reaproveitar, então o Rive virou a solução para todas as plataformas e passou parte do trabalho dos engenheiros para os designers.
Em 2024 o Duolingo cortou 20% do gasto com nuvem. O time comprou capacidade reservada com base no uso de EC2, RDS e ElastiCache, passou um banco para o Aurora I/O-Optimized e economizou centenas de milhares de dólares por ano, colocou regras de expiração no DynamoDB e no S3 e enxugou logs exagerados no CloudWatch.
Em 2025 eles testaram Python assíncrono em vez de reescrever um serviço em Go. A versão assíncrona aguentou uns 40% mais requisições por máquina, cerca de 30% menos gasto com EC2 por serviço migrado, custando bem menos que uma reescrita.
Em março de 2023 o Duolingo lançou o Duolingo Max, um plano acima do Super feito com o GPT-4 da OpenAI. Os primeiros recursos, Explain My Answer e Roleplay, saíram depois de meses de trabalho junto com a OpenAI para ajustar a tecnologia.