O que aprendi e quero passar adiante - Dev in Sampa 2010
Upcoming SlideShare
Loading in...5
×
 

O que aprendi e quero passar adiante - Dev in Sampa 2010

on

  • 1,818 views

Apresento nessa palestra técnicas, dicas e truques que aprendi durante mais de 2 anos trabalhando com aplicações Ruby e Rails em produção.

Apresento nessa palestra técnicas, dicas e truques que aprendi durante mais de 2 anos trabalhando com aplicações Ruby e Rails em produção.

Statistics

Views

Total Views
1,818
Views on SlideShare
1,818
Embed Views
0

Actions

Likes
5
Downloads
21
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

O que aprendi e quero passar adiante - Dev in Sampa 2010 O que aprendi e quero passar adiante - Dev in Sampa 2010 Presentation Transcript

  • Como ser feliz em apenas 3 passos O Segredo!
  • O que aprendi e quero passar adiante Lucas Húngaro - @lucashungaro http://busk.com
  • Parte 1 - Dicas e Truques
  • Serviços • Hoptoad • New Relic
  • Dicas • Master/Slave • Resque pwns Delayed_Job • Fuja da Amazon (produção)
  • Plugins e Gems • kasket • resque • oink + hodel_3000_compliant_logger • bullet • query_reviewer • rails_indexes
  • Plugins e Gems • oink + hodel_3000_compliant_logger Aug 12 11:31:15 Iron-Man rails[9541]: Memory usage: 101938 | PID: 9541 Aug 12 11:31:15 Iron-Man rails[9541]: Instantiation Breakdown: Total: 39 | User: 20 | FeedItem: 10 | Tag: 9
  • Caching • Negligenciado • Difícil em um nível “realista” • “There are only two hard things in Computer Science: cache invalidation and naming things”
  • Caching • Muleta (otimize primeiro) • Para começar: kasket, cache-money etc • Se é difícil invalidar, #comofas?
  • Caching • Não invalidar! • Ask for the thing you want • O Segredo é a chave! • Ou a chave é o Segredo?
  • Caching • Demo • Smart keys
  • Parte II - Evoluindo • Frameworks induzem um bom início • Comunidade “anêmica” • Maturidade
  • Cargo Culting • Filosofia e relacionamentos na equipe • Código
  • Filosofia • Pressão • Hype • Participar de um grupo • Cool
  • Pressão • “Se não usar X, não está fazendo direito” • A ferramenta certa para o trabalho • Para quem? • Ex: Cucumber/Steak
  • Pressão • Faca ruim ou técnica ruim? • Ruim para a equipe • Eu faço debugging com puts • “It’s tempting for people to obsess over tools instead of what they’re going to do with those tools”
  • “The tone is in your fingers”
  • Código • Entender o problema • Não tente resolver o que não te incomoda • Solução emergente • “The worst misstep one can make in design is to solve the wrong problem.” – John Carroll
  • Atacando o “problema” errado • Demeter: chamar um acessor em outro objeto é o verdadeiro problema? • NullDB: acessar BD em teste é o verdadeiro problema?
  • Atacando o “problema” errado • Demeter • Replica funcionalidade do delegate (stdlib) • Problema real é exposição indevida de comportamento
  • Atacando o “problema” errado • NullDB • Problema real é acoplamento da lógica à persistência • Deve ser possível testar lógica independente da persistência por design
  • Atacando o problema errado • Soluções não-eficientes se tornam padrões
  • It’s evolution baby! • Fat Controllers • Skinny Controllers, Fat Models • Skinny Controllers, Sexy Models, Flexible Services ;) • Domain-Driven Rails?
  • Fat Models • Negócios + Persistência • Quebra SRP • CRUD básico: OK • Excesso de callbacks • Esconde o domínio • Falta: flexibilidade, isolamento
  • Camadas Tudo junto e misturado
  • Conceitos • Muito difícil ensinar • Maturidade através da experiência • Acoplamento • Coesão • “Conascência” (conascence)
  • Mantra Se é difícil de testar em isolamento, está mal projetado
  • Acoplamento • Serviços • Inversão de controle • Injeção de dependência • Não, não estamos falando de Java! ;)
  • Acoplamento • Demo • ActivityService • SearchService
  • Acoplamento • SOLID, DDD • Sandi Metz, Jim Weirich, Pat Maddox, James Golick, Cassio Marques • “Parametrização” • SRP! SRP! SRP! SRP! SRP! SRP! • Think about concerns
  • Conclusão • Repense “Fat Models” • Domínios complexos exigem flexibilidade • Lógica importante deve: • ser explícita • ter um nome • ter uma localização clara
  • Links • The Building Blocks of Modularity (ou Grand Unified Theory of Software Design) - http://is.gd/egHfv • SOLID Ruby - http://is.gd/eeyDn • Demeter is for Encapsulation - http://is.gd/eeyLx • Opinionated Modular Code - http://is.gd/eeyXm • Scaling to Hundreds of Millions of Requests - http://vimeo.com/12814529
  • Obrigado