Sistemas para o Mundo Real

3,430 views
3,322 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
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,430
On SlideShare
0
From Embeds
0
Number of Embeds
2,594
Actions
Shares
0
Downloads
9
Comments
0
Likes
6
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
  • \n
  • Sistemas para o Mundo Real

    1. 1. SISTEMAS PARA O MUNDO REAL Leandro Silva, CIO @ Locaweb http://leandrosilva.com.br Abril pro Ruby 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 hibernado (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 ônis e mininus
    5. 5. Mas antes, 1 minuto de silêncio pela moquequinha perfeita que comi em minha primeira refeição aqui em Recife
    6. 6. O MUNDO DOS UNICÓRNIOS Ilusão para mininus?
    7. 7. É 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... bem quadradinha!
    8. 8. “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. 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
    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”
    11. 11. “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
    12. 12. E no final das contas, todo esse sonho e empolgação dá em...
    13. 13. E no final das contas, todo esse sonho e empolgação dá em... O R D
    14. 14. Porque o Mundo Real bate à porta, mais cedo ou mais tarde
    15. 15. O MUNDO REAL (1)Beleza é importante quando ômis escrevem sistemas?
    16. 16. Todo mundo gosta de código bonito...
    17. 17. Todo mundo gosta de código bem fatorado...
    18. 18. É sempre bom quando os códigos seguem um padrão, um estilo...
    19. 19. 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
    20. 20. 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
    21. 21. 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!
    22. 22. Ômis se preocupam com os aspéctosesté(á)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
    23. 23. O MUNDO REAL (2)É no runtime que ômis e mininus se sobressaem
    24. 24. “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
    25. 25. Há pelo menos 6 coisas com que ômis se preocupamquando escrevem sistemas para o Mundo Real, quedefinitivamente os diferenciam dos mininus:• Realidade• Administrabilidade• Alta disponibilidade• Troubleshootabilidade (Existe essa palavra?)• Escalabilidade• Performance
    26. 26. REALIDADEVocê escreve sistemas que passam em que tipo de teste?
    27. 27. Ômis sabem que o Mundo Real é bem mais cruel que qualquerambiente 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)
    28. 28. ADMINISTRABILIDADEVocê já pensou em quem vai administrar seu sistema?
    29. 29. Ômis 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?)
    30. 30. ALTA DISPONIBILIDADEVocê acha que não vai haver falhas em seus sistemas?
    31. 31. 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
    32. 32. Ômis 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)
    33. 33. TROUBLESHOOTABILIDADEComo é que você investiga e descobre problemas?
    34. 34. Ômis sabem que problemas vão acontecer, inevitávelmente, eque 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?)
    35. 35. ESCALABILIDADEVocê desenha seus sistemas para serem escaláveis?
    36. 36. Ômis 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?)
    37. 37. PERFORMANCEVocê negligencia performance no início?
    38. 38. Ômis 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?)
    39. 39. CONCLUSÃOO que separa ômis de mininus?
    40. 40. Ômis não se preocupam tão somente com a estética de seuscódigos, mas com o runtime de seus sistemas como um todo:• 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 osistema disponível, completando transações para seus usuários
    41. 41. Mininus 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
    42. 42. Você vai ficar de que lado, hamm?
    43. 43. LIVROS QUE RECOMENDOA essência de todo “overview” que dei até aqui
    44. 44. PERGUNTAS?
    45. 45. OBRIGADO!Leandro Silva, CIO @ Locaweb http://leandrosilva.com.br “Eita terra boa ess’aqui, hein?!”

    ×