O que é a pilha de engenharia? + Exemplo

O que é a pilha de engenharia? + Exemplo
Anonim

A resposta curta é que usamos Flask para Python no backend, Backbone para Javascript no front-end e armazenamos nossos dados no MongoDB, Redis e ElasticSearch. Estamos hospedados na AWS.

O que é uma pilha?

São necessárias muitas peças de tecnologia para entregar um website a você e elas executam uma variedade de funções, incluindo:

  • Criação de páginas em um navegador ou aplicativo, estilizando-as (coloridas, fontes) e tornando-as interativas (por exemplo, transformando o coração em vermelho e mostrando uma caixa de comentários quando você clica nele). Isso é chamado de front end ou client-side
  • Reunir as informações necessárias para uma página (por exemplo, a pergunta, a resposta, os nomes e imagens dos usuários, o número de corações) e enviá-las para o seu computador ou telefone. Isso é chamado de backend ou do lado do servidor
  • Armazenar essas informações para que estejam disponíveis a qualquer momento e permitir que procuremos exatamente as informações de que precisamos. Isso é chamado de banco de dados ou armazenamento de dados
  • Computadores conectados à Internet e sempre ligados para que qualquer pessoa possa acessar o site a qualquer momento. Os computadores são chamados servidores e eles são hospedado algum lugar.
  • Muitas outras funções críticas e secundárias

Em cada uma dessas camadas, várias opções estão disponíveis e as escolhas que qualquer equipe faz são baseadas na experiência e no conforto dos membros da equipe, além de questões práticas, como custo e requisitos específicos de desempenho.

Nossa pilha (quase) completa

Algumas tecnologias são instaladas, atualizadas e gerenciadas por membros de nossa equipe em nossos próprios servidores e laptops. Eles incluem:

  • Backbone para organizar o nosso Javascript
  • Bússola para reutilizar e organizar o nosso CSS
  • Flask, uma estrutura Python para servir a API JSON + HTML e para renderizar páginas HTML completas
  • pyres para nossas filas de tarefas (provavelmente Celery em breve)
  • MongoDB para armazenar nossos dados (possivelmente Postgres em breve)
  • Redis para armazenar em cache coisas como os feeds do site, perguntas sobre tendências e todos os tipos de estatísticas de uso
  • ElasticSearch para poder pesquisar
  • Nginx para servir o site
  • Grunt para minimizar, comprimir e revisar nosso Javascript e CSS
  • Capistrano para implantar nosso aplicativo e realizar algumas outras tarefas úteis
  • Fantoche para configurar o software que precisamos em novos servidores

Algumas tecnologias são serviços construídos e gerenciados por outras empresas. Geralmente, é mais eficiente deixar que outra pessoa se concentre em problemas específicos, em vez de fazer tudo sozinhos. Alguns serviços que usamos são:

  • AWS aka Amazon Web Services para hospedar nossos servidores, ativos estáticos e como um CDN
  • Cloudflare para DNS, cache e algum nível de segurança
  • Google Analytics e Mixpanel para análise
  • Papertrail para log centralizado
  • Sentinela para rastrear erros do lado do cliente
  • DataDog para monitorar nossos servidores e serviços
  • New Relic para monitorar o desempenho do aplicativo Flask
  • Customer.io para enviar e-mails com base no que você faz ou não faz no aplicativo
  • Github para colaboração e hospedagem de código

E provavelmente muitos outros.

É preciso muitas peças para construir e operar um site, mas com a ajuda de ferramentas bem construídas, não é tão difícil!