Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes corporativos

1,059 views
970 views

Published on

Slides in pt-br from my talk with @cv at #RubyConfBR 2012: "From the trenches: do's and dont's of ruby applications in corporate environments"

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,059
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes corporativos

  1. 1. DIRETO DAS TRINCHEIRASBOAS E MÁS PRÁTICAS DE APLICAÇÕES RUBY EM AMBIENTES CORPORATIVOSBOAS
  2. 2. DANILO SATO Lead Consultant Líder Técnico Arquiteto DevOps Coach Treinador SP, Londres, Chicago@dtsato
  3. 3. CARLOS VILLELA Lead Consultant Líder Técnico Velho Chato Arquiteto DevOps Inovação Contínua SP, Londres, Porto Alegre@cv
  4. 4. ENTERPRISE IN-TER-PRÁI-ZIUma empresa que não é uma start-up, seguindo processos que não são Lean. Mas você tem contas pra pagar e vai trabalhar lá.
  5. 5. AUTÓPSIASAtropelamento por bolas de lamaMontanhas de pepinosMorte por # f e idfAsfixia por DBAsEstupro remoto de servidoresAlucinações e flashbacks do J2EE
  6. 6. DEPLOYMENT PIPELINE
  7. 7. EXPLOSÃO DE CÓDIGO “Por trás de toda má ideia tem sempre uma boa intenção”
  8. 8. EXPLOSÃO DE CÓDIGOAbuso de monkey-patchingForks pessoaisDeixar upgrades para depoisForçar o Rails além do seu limiteThe Rails Way is the only way
  9. 9. EXPLOSÃO DE CÓDIGOTeste seus monkey-patchesExtraia gems para facilitar a manutenção EXPLOSÃO DE CÓDIGOPense além do model/view/controller/helperLimite o número de pontos de integraçãoBom design OO: crie abstrações úteis Algo entre F o oe AsrcBsFoigeoFcoyenml btataeoSnltnatrBaIp
  10. 10. ESTRATÉGIAS DE TESTECnro Uurofzlgncmscso eái: sái a oi o uesDd qeetun pgn d lgn ao u so a áia e oiQad e penh ocmo"oed uuro cm"sr uno u reco ap nm e sái" o ue"Ee penh ocmo"eh"cm"3rt u reco ap sna o sc3"Ee cion bto"oi" u lc o oã LgnEtoe vupr ahmpg cmuamnae d scso"oi eeud cms nã u o aa oeae o m esgm e ues Lgn ftao oues" cso
  11. 11. ESTRATÉGIAS DE TESTEGerenciar teste funcionais por históriaAbuso no uso de mocks Re-testar o framework Mockar o objeto sendo testadoTer um time separado cuidando dos testesInvestir em automação de teste de UITestes só rodam em um determinado ambiente
  12. 12. ESTRATÉGIAS DE TESTETestes funcionais de user journeys e não por históriaMuito mais testes unitários do que testes funcionais ESTRATÉGIAS DE TESTETodo mundo é dono dos testesCódigo de teste também é códigoEvite acoplar testes com um determinado ambiente
  13. 13. RUBY EM MÚLTIPLAS PLATAFORMAS “ Ruby is highly portable: it is developed mostly on GNU/Linux, but sort of works on many types ofUNIX, Mac OS X, Windows 95/98/Me/NT/2000/XP, DOS, BeOS, OS/2, etc. ”
  14. 14. RUBY EM MÚLTIPLAS PLATAFORMAS Desenvolver em ambiente/plataforma diferente Usar infra diferente (BD, jobs, in-memory) Falta de cuidado com gems nativas Múltiplos encodings Linebreak/whitespace wars RVM em produção
  15. 15. RUBY EM MÚLTIPLAS PLATAFORMASBundlerVendorize tudo RUBY EM MÚLTIPLAS PLATAFORMASJRubyCrie ambientes parecidos com produçãoUTF-8 no stack inteiroVocê não quer rodar GCC em produção, IT Ops agradecevgatris arn_alMingle , Go : JRuby e pacotes para diversos SOs
  16. 16. LIDANDO COM DADOS
  17. 17. LIDANDO COM DADOSForçar ActiveRecord num schema que você não controlaUsar vários BDs na mesma aplicaçãoSQLServerUsar NoSQL como RDBMS
  18. 18. LIDANDO COM DADOSDivida em aplicações/serviços menoresDefina quem tem posse dos dados LIDANDO COM DADOSRepresentantes do negócio em decisões arquiteturaisConsidere usar processos ETLTeste!
  19. 19. CAPISTRANODSL para executar sequências de comandos em máquinas remotas de acordo com roles. Amplamente utilizado para fazer deployment de aplicações Rails. #cppouto dpo mse a rdcin ely atr
  20. 20. CAPISTRANOMultiplexação de conexões SSHReferenciar servidores através de papéis (roles) CAPISTRANODSL Ruby, boa integração com Rake, etc.Fácil de automatizar deployments e trocar receitas
  21. 21. CAPISTRANOEncoraja deployments… …fora da integração contínua …direto do controle de versãoBranches para ajustes de produçãoCiclo de vida complicado (Maven, alguém?)Processos difíceis de auditar
  22. 22. CAPISTRANO: ALTERNATIVASNão usar o ciclo de vida padrãoEmpacotar aplicação usando RPM, DEB, etc Receitas fáceis de escrever Evoluem desde os anos 90 IT Ops friendly :)Use Cap para instalar os RPM/DEB/etc em ambientes
  23. 23. RESTEstilo arquitetural bem difundido em APIs web recentes. Aplicações feitas da web, e não apenas para a web. ENTITY EJB 1.X Inferno.
  24. 24. RESTSistemas pequenos, distribuídosEscalabilidade horizontal RESTManutenção e upgrades independentesComposabilidadeConways Law
  25. 25. ENTITY EJB 1.XGranularidade erradaPerformance horrenda (e pilhas de hacks)Deployments sofríveis, upgrades tensosMuito difícil de usar bemLiteratura cheia de péssimos exemplos
  26. 26. REST, RUIMGranularidade erradaPerformance horrenda (e pilhas de hacks)Deployments sofríveis, upgrades tensosLiteratura cheia de exemplos questionáveis (Rails API)Caching fora do HTTP
  27. 27. RESTDocumentos e representações (vs. DB em JSON)Transições de estado (vs. RPC) RESTEstados de erro bem definidos e testadosFail-over bem definido e testadoUpgrades oferecem retro-compatibilidadeCaching e de-caching óbvios (HTTP)
  28. 28. Q&A? DIRETO DAS TRINCHEIRASBOAS E MÁS PRÁTICAS DE APLICAÇÕES RUBY EM AMBIENTES CORPORATIVOSBOAS Danilo Sato @dtsato Carlos Villela @cv

×