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
Guilherme Nogueira
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