Com o crescimento acelerado da Ingresse nos últimos anos, tivemos que reformular nossa arquitetura e infraestrutura inicial para poder escalar com essa demanda.
A Ingresse nasceu com uma base em PHP
, um Monolito que atendeu bem o MVP e os primeiros anos do produto, mas com o passar do tempo acabou dificultando a evolução dele.
No processo de reformulação da arquitetura em 2016 nasceram os primeiros serviços em Python
que resolveram bem os problemas para qual a linguagem foi escolhida. No início de 2017 quando estávamos com uma stack com um misto de PHP
e Python
começamos a olhar para outras linguagens que nos ajudasse a escalar e aproveitar melhor todos os recursos disponíveis da nossa infra. Mas para essa linguagem a gente tinha um foco muito importante, ela tinha que ser developer friendly, estávamos buscando uma linguagem que nos ajudasse na escalabilidade e performance mas principalmente na produtividade do nosso time.
Prova de conceito
Para começar fizemos uma prova de conceito de um microserviço novo implementando poucas features, mas desenvolvendo as mesmas features utilizando duas das linguagens que estávamos analisando. A idéia não era comparar só a performance do serviço entre essas duas linguagens, mas também, como é o dia a dia desenvolvendo com essas linguagens.
Escolhendo o Elixir
Uma das linguagens escolhidas para o teste foi o Elixir. Uma linguagem open source criada pelo José Valim na Plataformatec, empresa recentemente adquirida pelo Nubank.
O Elixir
é uma linguagem moderna que executa na Máquina Virtual Erlang (BEAM), conhecida por executar sistemas de baixa latência, distribuídos e tolerantes a falhas.
Além disso tem uma comunidade muito ativa e frameworks para desenvolvimento web como o Phoenix que tem foco em criar uma estrutura produtiva que não compromete a velocidade de desenvolvimento nem a manutenção.
Alguns pontos altos do Elixir
:
Instalação simples
A instalação do Elixir
é muito simples, tem instalador para Linux, Mac, Windows e para quem prefere container como eu, imagens Docker para não sujar seu ambiente.
Documentação e conteúdo
A documentação é bem completa e fácil de navegar. O site da linguagem aponta diversos materiais de leitura, cursos e screencasts para quem quer começar. Tem muito material gerado pela comunidade, tanto aqui no Dev.to quanto no Medium.
Um ótimo lugar para iniciar com conteúdo em português é o ElixirSchool.
Gerenciador de pacotes
Uma coisa que a gente espera em todas as linguagens modernas é um gerenciador de pacotes decente. E esse é o caso do Hex, um gerenciador de pacotes para as linguagens que compilam para rodar na Maquina Virtual do Erlang (BEAM).
Ferramenta de build
O Mix é uma ferramenta de build que fornece tasks para criar, compilar e testar projetos Elixir
, gerenciar suas dependências e muito mais. É uma ferramenta que facilita o dia a dia no desenvolvimento e nos processos de automatização.
Testes
O ExUnit é um framework completo para testes no Elixir
. Totalmente integrado para ser executado com um simples mix test
e com capacidade de rodar os testes de forma assíncrona.
Produtividade
A velocidade de desenvolvimento no Elixir
é muito boa. Tem um syntax que é fácil escrever um código limpo e compreensível sem sacrificar a produtividade de um desenvolvedor.
Processo de mudança
Hoje ainda temos microserviços em outras linguagens rodando em produção, simplesmente porque estão dando conta do recado. Já até pensamos em migrar alguns mas se ainda estão funcionando bem não tem porque mexer.
Com o tempo o nosso time foi pegando pequenas tarefas para executar em Elixir
até sentirem que tinham o domínio na linguagem para poder dar manutenção e criar novos microserviços do zero. A troca de conhecimento entre as equipes é essencial para que esse tipo de mudança tenha sucesso.
Com certeza não é um processo rápido adotar uma nova linguagem em produção, quando se tem uma quantidade enorme de acessos, mas acredito que os benefícios de ter uma linguagem moderna com um grande foco no desenvolvedor e na sua produtividade é um grande diferencial para a equipe e para o futuro da empresa.
Um dos nossos desenvolvedores Backend escreveu um post sobre Elixir
, com uma visão de quem veio do PHP
. Muito útil pra quem está tendo seu primeiro contato com a linguagem e com o paradigma funcional.
Conclusão
Essa prova de conceito hoje se tornou um dos nossos principais serviços e está em produção desde o final de 2017.
Ele é responsável por transacionar centenas de milhões de Reais em ingressos todo ano, não só na Ingresse mas em outras "tiqueteiras" do mercado que utilizam nossas API's. É um Gateway de pagamentos, com múltiplos adquirentes e plataformas de pagamento integradas como Cielo
, Stone
, Getnet
, PicPay
, StarkBank
, Iugu
e PayPal
.
Hoje todos os nossos serviços novos são desenvolvidos em Elixir
. Até agora temos 5 deles em produção e no momento mais 3 sendo desenvolvidos em 2020.
Se já trabalha com Elixir
ou estiver querendo aprender estamos sempre com vagas abertas.
Top comments (0)