Evoluindo uma Arquitetura Legada:
Ferramentas e Processos
Caesar Ralf Franz Hoppen
@bearded_nerd
<caesar.ralf@elo7.com>
Guilherme Nogueira
@nirev
<guilherme.nogueira@elo7.com>
Sobre Nós
Membros do Greyjoy:
time de busca da Elo7
time de busca da Elo7
Guilherme Nogueira
Sobrevivente do ES
Sobrevivente do ES
Caesar Ralf Franz Hoppen
Gaúcho
A Elo7
Uma plataforma de compra e venda de produtos fora-de-série!
A Elo7
Antes
- Empresa fundada em 2008 por um desenvolvedor e sua esposa
- Foco na comunidade de artesãos
Hoje
- ~70 funcionários, sendo 28 desenvolvedores
- Conceito expandido: produtos fora-de-série
- Cerca de 4 milhões de visitantes únicos ao mês
- Mais de 140 mil vendedores cadastrados
- Mais de 2.5 milhões de produtos cadastrados
A Elo7:
Desenvolvimento
Contexto:
O nosso legado
- Código feito inicialmente em 2008
- Struts 1.3
- Um único desenvolvedor
- Um único servidor dedicado
- Quase nenhum teste
- Código em produção
- Nível de acesso considerável
Contexto:
O que temos hoje
- Aporte de fundos de investimento
- Empresa saiu das mãos do desenvolvedor original
85% dos devs estão na empresa há menos de 1 ano
Contexto:
O que temos hoje
- Aporte de fundos de investimento
- Empresa saiu das mãos do desenvolvedor original
- 85% dos devs estão na empresa há menos de 1 ano
- A plataforma é a principal fonte de renda de vários vendedores
- Grande parte do código foi refatorada
- Migração de framework de Struts para VRaptor
- Injeção de dependências com CDI
- Infraestrutura no AWS com microserviços
- ~3 deploys por dia
- Uptime 99.75%
QUAL O SEGREDO?
VISIBILIDADE
FEEDBACK EARLY
FEEDBACK OFTEN
ANTES DO DEPLOY
Garantir a qualidade do código
=
Pareamento
+
Revisão de código
APÓS O DEPLOY
Monitoração
QUALIDADE DE CÓDIGO
-
COMO GARANTIR QUE O CÓDIGO NOVO MELHORA A QUALIDADE DO SISTEMA?
-
COMO SABER QUE UMA MUDANÇA EM UMA FUNCIONALIDADE NÃO VAI QUEBRAR OUTRA?
Testes
TESTES DE UNIDADE
TESTES DE ACEITAÇÃO
TESTES DE CARACTERIZAÇÃO
Testes de caracterização
Maneira de caracterizar o comportamento
atual de um código, evitando mudanças inesperadas.
REVISÃO DE CÓDIGO
PULL REQUEST
COMMENTS
DONE!
http://www.slideshare.net/joaomilho/code-reviews-34282014
ANALISANDO O CÓDIGO
Visibilidade das métricas
Evolução temporal
Integração com Jenkins
E APÓS O DEPLOY?
Monitoração!
StatsD + Graphite
http://github.com/etsy/statsd/
http://graphite.readthedocs.org/
Dashing
"The exceptionally handsome dashboard framework."
http://shopify.github.io/dashing/
Graylog / logstash
http://graylog2.org/
http://logstash.net/
System Monitoring
Várias alternativas:
- Nagios
- collectd + graphite (*)
- Sensu
- Monit
- NewRelic (*)
Métricas de Aplicação
New Relic
Métricas de Servidor
New Relic
FLARE
(fogueteiro)
Sistema de alertas
baseado em métricas do StatsD
Incident Report
RESUMÃO DA ALEGRIA
FEEDBACK EARLY
FEEDBACK OFTEN
REVISÃO DE CÓDIGO É MUITO IMPORTANTE!
AUTOMATIZE (quase) TUDO!
MONITORE SEU SISTEMA!
Obrigado!
jobs@elo7.com
Estamos contratando!
Evoluindo uma Arquitetura Legada (TDC 2014)
By Guilherme M. Nogueira
Evoluindo uma Arquitetura Legada (TDC 2014)
Slides da palestra apresentada na trilha DevOps do TDC 2014, em 07/08/2014. Uma versão mais curta e focada do https://slides.com/nirev/fisl-elo7-legado
- 3,057