Estudo de caso · Stack

Como a Olist montou um hub de marketplaces com Python, Django e filas

A Olist ajuda pequenos lojistas brasileiros a vender nos grandes marketplaces e a tocar a loja. A stack é Python e Django REST Framework de ponta a ponta, com mais de cem microsserviços conversando por filas do Amazon SQS.
Copiar stackolist.com Plataforma de e-commerce para pequenos lojistas · Brasil · fundada em 2015

A stack da Olist

Abrir no montador

Linguagem

  • Pythonspeakerdeck.com

    Linguagem principal das APIs, dos services e das ferramentas internas.

Hospedagem

  • Herokuspeakerdeck.com

    Plataforma onde os serviços rodavam, segundo a palestra de 2020.

  • AWSspeakerdeck.com

    Fornece API Gateway, SQS, SNS, S3, Lambda, RDS e Athena.

Banco de dados

  • PostgreSQLspeakerdeck.com

    Banco principal, com busca full-text, réplica de leitura e particionamento.

Busca de dados

  • Amazon SQSspeakerdeck.com

    Filas que todos os services consomem para reagir a eventos.

    Por quê: Concentrar todas as regras de eleição e publicação numa API síncrona não funcionou, então juntaram HTTP com pub/sub.

  • Redisspeakerdeck.com

    Banco em memória listado na stack de 2020.

Framework de servidor

  • Django REST Frameworkspeakerdeck.com

    Monta as APIs REST dos microsserviços.

  • Gospeakerdeck.com

    Segunda linguagem, usada em parte das APIs.

  • Loafergithub.com

    Dispatcher Python open source da Olist, base de todos os services para consumir o SQS.

Testes

  • Locustspeakerdeck.com

    Faz teste de carga nas APIs antes das datas de pico, junto com o Siege.

Qualidade do código

  • pre-commitgithub.com

    Roda os hooks de lint próprios da Olist, publicados no projeto hulks.

Busca

Modelo de IA

  • Claude Codegithub.com

    Assistente de código que os devs usam pelo gateway de IA da Olist.

Erros

  • Elastic APMspeakerdeck.com

    Monitora o desempenho das APIs, junto com pgHero e django-silk.

  • OpenTelemetrygithub.com

    Rastreia cada tarefa em segundo plano que o worker de tarefas do Django executa.

WhatsApp e SMS

  • WhatsAppgithub.com

    Recebe os webhooks do WhatsApp por um app Django.

Como montaram

Uma casa de Python desde o começo

Em 2018, a Olist descreveu a arquitetura em quatro camadas. As APIs são portas de entrada REST escritas em Django, Go ou Apistar. Os services guardam as regras de negócio, leem e gravam nos bancos e consomem filas do SQS. Os brokers juntam services com um objetivo comum, como publicar num marketplace específico, e os apps são as interfaces, sem banco próprio.

Fontes:speakerdeck.com

As filas seguram tudo

Quando um lojista muda um preço, o produto precisa ser reavaliado e publicado de novo em vários canais. Concentrar todas essas regras de eleição e publicação numa única API síncrona não deu certo, e a Olist passou a combinar HTTP com publicação e assinatura de eventos.

Todo service é feito sobre o Loafer, biblioteca Python open source da Olist que consome filas do Amazon SQS de forma assíncrona e separa quem produz a mensagem de quem consome.

Fontes:speakerdeck.com github.com

Preparando a Black Friday

Em 2020, a Olist já rodava mais de cem microsserviços em Python 3, Django REST Framework, Heroku, PostgreSQL e uma lista grande de serviços da AWS. Para aguentar a Black Friday, o time reorganizou relações no banco, ligou a busca full-text do Postgres, criou réplica de leitura e particionamento e adotou cache e código assíncrono.

O desempenho era acompanhado com Elastic APM, pgHero e django-silk, os testes de carga rodavam com Siege e Locust, e saíram bibliotecas pequenas como um renderer com rapidjson para o Django REST Framework.

Fontes:speakerdeck.com opensource.olist.com

Ainda Django em 2026

Os repositórios públicos da Olist mostram a mesma base hoje. Entre os projetos recentes estão um worker assíncrono para o django-tasks-db com rastreamento em OpenTelemetry e um app Django que recebe webhooks do WhatsApp.

O time também criou o olist-code, um proxy local que passa o Claude Code e o opencode pelo gateway de IA da própria Olist, com login da empresa e controle de uso por modelo.

Fontes:github.com github.com github.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.

  • Cloudflare
  • Cloudflare Bot Management
  • Envoy
  • Google Tag Manager
  • Next.js
  • React
  • Webpack