Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Tunando sua aplicação Rails! Like a Boss.

Tunando sua aplicação Rails! Like a Boss.

Está é uma viagem através dos detalhes de otimização de uma app Rails. Em breve publicarei um video com demonstrações do que é realizado na atividade.

Robson Mendonça

December 05, 2015
Tweet

More Decks by Robson Mendonça

Other Decks in Programming

Transcript

  1. QUEM SOU? Nome: Robson Mendonça Profissão: Software Developer Linguagens: Ruby,

    Python, Javascript, Java e C++ Formação: Jogos Digitais - Unisinos (em andamento) Software Designer: Hewlett Packard Inc. Co-founder: Hardfun Studios
  2. PROTOTIPAÇÃO Sua app nasce da forma mais rápida possível para

    validar seu negócio. ! Nesse momento preocupações com performance e segurança são irrelevantes.
  3. ESTABILIZAÇÃO Depois que o negócio se provou válido, é preciso

    garantir a resiliência da app. ! Nesse momento as preocupações giram em torno dos tratamentos de exceções e corner cases, que impactam na usabilidade do software.
  4. POLIMENTO Esse é aquele momento em que se faz ajustes

    estéticos da app. ! Cabe aqui formalizar o uso de design patterns, e abordagens que garantem uma melhor manutenção a longo prazo. Além de facilitar a expansão da aplicação.
  5. BLINDAGEM Esse é o estágio em que as preocupações com

    segurança ganham prioridade. ! Testes de invasão e exploração de possíveis brechas da aplicação são utilizados para garantir que os dados dos usuários estão seguros e que sua aplicação não sucumbirá as incessantes tentativas dos Breakers.
  6. OTIMIZAÇÃO Finalmente, tornar a aplicação escalável. ! Refactoring para extrair

    o máximo de performance do código. Somado a várias mudanças de infra-estrutura para garantir a disponibilidade da app em momentos de alto tráfego.
  7. OTIMIZAÇÃO * Otimização de consultas ao DB * Otimização a

    nível de código * Object Caching * Fragment Caching * Http Caching * Client-side Caching
  8. O QUE MAIS PODE SER FEITO? * Balanceamento de carga

    * Banco de dados em memória * Replicação de banco de dados * Usar NoSQL em alguns casos * Background Jobs * Arquitetura de Serviços