Sistemas para o Mundo Real - TDC 2012

742 views

Published on

Muitos desenvolvedores se preocupam bastante com os aspectos estáticos dos sistemas que constroem, tais como se o código está bonito, se está idiomático, se está seguindo um determinado styleguide, entre outros bullet points do bom design de código; e isso é muito bom. Mas isso não é tudo. Há ainda o aspecto real da coisa, o Runtime. É no Runtime que ômis e mininus se sobressaem. E essa apresentação é sobre com o que os ômis mais se preocupam quanto estão escrevendo sistemas críticos – para o Mundo Real, é lógico.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
742
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
22
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Sistemas para o Mundo Real - TDC 2012

    1. 1. SISTEMAS PARA O MUNDO REAL Leandro Silva, CIO @ Locaweb http://leandrosilva.com.br TDC 2012
    2. 2. QUEM SOU EU?
    3. 3. LEANDRO SILVA @codezone• 15 na indústria (escrevendo software de produção)• Fissurado em programação (Ruby, Java, Erlang, Clojure, C#, F#)• Blogueiro preguiçoso (http://leandrosilva.com.br)• Já fui gerente de sistemas, arquiteto de sistemas, líder técnico, programador e instrutor de programação e arquitetura• Tenho código no GitHub (https://github.com/leandrosilva)• E perfil no LinkedIn (http://linkedin.com/in/lesilva)
    4. 4. VAMOS AO TEMASistemas para o Mundo Real – Diferenciando homens e meninos
    5. 5. O MUNDO DOS UNICÓRNIOS Uma ilusão para os meninos?
    6. 6. É um mundo onde o que é cool é:• Framework que nasceu hoje de manhã• TDD red-green-dummy até da classe Sexo• Cucumber-like stuff para programador• Dojo de HTML• 37 gems instaladas para um hello_world.rb• Devopar em servidor de produçãoE, claro, reinventar a roda. Só que... quadrada!
    7. 7. “Eu posso construir* um sistema em produção em 24h” * Usando meu super-crud framework e um usuário root no servidor de produção
    8. 8. H O O N S“Eu posso construir* um sistema em produção em 24h” * Usando meu super-crud framework e um usuário root no servidor de produção
    9. 9. “Poxa, aquele framework de JavaScript assíncrono que eu inventei é uma super novidade. Adoro surpreender o usuário com coisas que vão simplesmente aparecendo na tela. Como é bom ter liberdade para inovar!”
    10. 10. “Poxa, aquele framework de JavaScript assíncrono que eu inventei é uma super novidade. Adoro surpreender o usuário com coisas que vão simplesmente aparecendo na tela. Como é bom ter liberdade para inovar!” D E IDA IA L E N G
    11. 11. E no final das contas, todo esse sonho e empolgação dá em...
    12. 12. E no final das contas, todo esse sonho e empolgação dá em... O R D
    13. 13. Porque o Mundo Real bate à porta, mais cedo ou mais tarde
    14. 14. O MUNDO REAL (1)Beleza é importante quando homens escrevem sistemas?
    15. 15. Todo mundo gosta de código bonito...
    16. 16. Todo mundo gosta de código bem fatorado...
    17. 17. É sempre bom quando os códigos seguem um padrão, um estilo...
    18. 18. Eu sou assumidamente dotipo que:• Gosta de código bonito• Ama design de software• Tem necessidade de seguir padrões• Adora style guides (Google Python Style Guide, já viu?)E eu preso muito por isso nomeu time de desenvolvimento
    19. 19. Mas a verdade é que escrever código bonito, bemfatorado e desenhado, que segue um style guide super coerente e cheio de testes automatizados nunca livrou ninguém de ser acordado de madrugada para entrar em uma sala de crise, comuma baita pressão no cangote, porque a empresa está perdendo dinheiro em transações não realizadas
    20. 20. Todas essas preocupações com os aspéctos est(é)áticos sãoimportantes, indiscutívelmente, porque elas te ajudam a:• Se comunicar melhor com o time• Entender o que você ou alguém fez, muito tempo depois• Implementar idéias com mais facilidade• Dar mais produtividade no desenvolvimento• Etc, etc, etcNão pare de ter essas preocupações!
    21. 21. Homens se preocupam com osaspéctos esté(á)ticos dos sistemas que escrevem para o Mundo Real, sim! Mas isso não é tudo... * Jennifer Morrison, a Dra Cameron, da série de TV House
    22. 22. O MUNDO REAL (2)É no runtime que homens e meninos se sobressaem
    23. 23. “Enterprise software must be cynical. Cynical software expects bad things to happen and is never surprised when they do.Cynical software doesn’t even trust itself, so it puts up internal barriers to protect itself from failures. It refuses to get too intimate with other systems, because it could get hurt.” – Michael T. Nygard, no livro Release It
    24. 24. Há pelo menos 6 coisas com que homens sepreocupam quando escrevem sistemas para oMundo Real, que definitivamente os diferenciam dosmeninos:• Realidade• Administrabilidade• Alta disponibilidade• Troubleshootabilidade (Existe essa palavra?)• Escalabilidade• Performance
    25. 25. REALIDADEVocê escreve sistemas que passam em que tipo de teste?
    26. 26. Homens sabem que o Mundo Real é bem mais cruel quequalquer ambiente de QA:• Não somente testes funcionais (tenho aqui alguns requisitos funcionais implementados bem bonitinho, olha só... só tem um probleminha: donwtimes frequentes, tudo bem?)• Testes de impulso (carga rápida e repentina, uma martelada)• Testes de estresse (carga excessiva e prolongada, propagando tensão por todo sistema)• Testes de longevidade (para pegar erros que só acontecem quando o sistema está rodando há muito tempo)• Testes de falha de componente (derrubar conexão com BD, particionar rede, congelar job em execução, etc)
    27. 27. ADMINISTRABILIDADEVocê já pensou em quem vai administrar seu sistema?
    28. 28. Homens sabem que sysadmins são os primeiros usuários deduas aplicações:• README (overview do sistema, decisões de arquitetura, pré- requisitos, instalação, update, administração, etc)• Padrões do SO que roda o sistema (empacotamento, diretórios, configurações, start-stop-restart, etc)• Arquivamento de dados (isso vai acontecer algum dia?)• Particionamento de dados (como fazer isso?)• Monitoração (monitorar o que e como?)• Backup (fazer backup do que? É restaurável depois?)
    29. 29. ALTA DISPONIBILIDADEVocê acha que não vai haver falhas em seus sistemas?
    30. 30. Só um detalhe antes... O que são sistemas?Sistemas são mais do que um conjunto de aplicações; aplicaçõessão apenas componentes de um sistema. Um sistema pode sercomposto, por exemplo, de:• Aplicações web (aquelas que os usuários finais usam, sabe?)• Aplicações de processamento em lote (a.k.a. jobs)• Servidores de web, de aplicações, de jobs, de filas, de cache, ...• Balanceadores de carga• Virtualizadores de IP• Bancos de dados• Redes• Storage• Etc, etc, etc
    31. 31. Homens não são ingênuos, eles esperam por falhas no sistema eprocuram por maneiras de lidar com elas:• Redundância de componentes (servidores, BD, filas, zonas)• Balanceamento de carga (cuidado, quando um componente falha, seus pares falham muito mais rápido)• Modo de falha (cache, dados locais “readonly” – é melhor ter menos funcionalidades funcionando do que não ter nada)• Timeout (se for para falhar, que seja rápido então!)• Retry (cuidado com o intervalo e o número de tentativas)• Circuit Breaker (se você sabe que uma operação vai causar falhas, não deixe elas acontecerem e registre-as para estudo)• Barrier (uma fila pode ajudar nisso)• Princípio de Hollywood (quando menor o acoplamento, menhor a propagação de problemas)
    32. 32. TROUBLESHOOTABILIDADEComo é que você investiga e descobre problemas?
    33. 33. Homens sabem que problemas vão acontecer, inevitávelmente,e que em meio a uma crise, cada minuto vale ouro, então estãosempre preocupados com:• Log – muito log! (sistema + negócio, rastreáveis, monitoráveis, pesquisáveis, facilmente acessíveis)• Monitoração (componentes + funcional, histórico de comportamento, correlação de eventos, health)• Watcher (qual o estado atual do sistema?)
    34. 34. ESCALABILIDADEVocê desenha seus sistemas para serem escaláveis?
    35. 35. Homens sabem que, de repente, uma ação de marketing podefazer com que a carga em um sistema se multiplique da noitepara o dia:• Projetar para crescer (building blocks multiplicáveis)• Arquitetura horizontal (crescer favorecendo disponibilidade)• Stateless (o máximo possível, por ser horizontal scale-friendly)• Statefull (Redis ou Memcahed são seus amigos)• Cache (pode ser uma bênção ou uma maldição na hora de escalar um sistema, cuidado como faz isso)• Sizing (seu sistema foi projetado suportar que volume de dados e quantos usuários simultâneos?)
    36. 36. PERFORMANCEVocê negligencia performance no início?
    37. 37. Homens sabem que “otimização prematura é a raíz de todos osmales” não significa “não dê atenção a performance”:• Lento na implementação, N vezes mais lento em produção• Gargalos de performance (latência é frequentente gera falhas)• Cache (pode diminuir a latência, mas pode mascaras falhas)• Índices de banco de dados• Modelos de dados (SQL vs NoSQL, normalizado vs desnormalizado, granularidade grossa vs fina)• Sizing (seu sistema foi projetado completar quantas transações por segundo?)
    38. 38. CONCLUSÃOO que separa homens de meninos?
    39. 39. Homens não se preocupam tão somente com a estética deseus códigos, mas com o runtime de seus sistemas como umtodo:• A infra-estrutura completa• Todos os componentes• Quem vai operá-los e administrá-los• Quão disponíveis precisam ser• Quão fáceis de escalar eles são• Quão seguros (hardening)• Quão monitoráveis e debugáveis• Quantas transações por segundo devem atenderVão acontecer falhas no runtime de produção.Você precisa identificá-las, lidar com elas, superá-las e manter o
    40. 40. Meninos tem boa vontade, empolgação, energia, mas muita ingenuidadede achar que seus códigos bonitos vão livrar seus sistemas de falhas e vão deixá-los dormir à noite, quando estiverem em produção
    41. 41. Você vai ficar de que lado, hamm?
    42. 42. LIVROS QUE RECOMENDOA essência de todo “overview” que dei até aqui
    43. 43. PERGUNTAS?
    44. 44. OBRIGADO!Leandro Silva, CIO @ Locaweb http://leandrosilva.com.br

    ×