SlideShare uma empresa Scribd logo
1 de 47
SISTEMAS PARA O
  MUNDO REAL
  Leandro Silva, CIO @ Locaweb
        http://leandrosilva.com.br




              TDC 2012
QUEM SOU EU?
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)
VAMOS AO TEMA
Sistemas para o Mundo Real – Diferenciando homens e meninos
O MUNDO DOS UNICÓRNIOS
    Uma ilusão para os meninos?
É 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ção
E, claro, reinventar a roda. Só que... quadrada!
“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
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
“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!”
“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
E no final das contas, todo esse sonho e empolgação dá em...
E no final das contas, todo esse sonho e empolgação dá em...




                                              O R
                                          D
Porque o Mundo Real bate à porta, mais cedo ou mais tarde
O MUNDO REAL (1)
Beleza é importante quando homens escrevem sistemas?
Todo mundo gosta de código bonito...
Todo mundo gosta de código bem fatorado...
É sempre bom quando os códigos seguem um padrão, um estilo...
Eu sou assumidamente do
tipo 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 no
meu time de desenvolvimento
Mas a verdade é que escrever código bonito, bem
fatorado 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, com
uma baita pressão no cangote, porque a empresa está
    perdendo dinheiro em transações não realizadas
Todas essas preocupações com os aspéctos est(é)áticos são
importantes, 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, etc
Não pare de ter essas preocupações!
Homens se preocupam com os
aspé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
O MUNDO REAL (2)
É no runtime que homens e meninos se sobressaem
“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
Há pelo menos 6 coisas com que homens se
preocupam quando escrevem sistemas para o
Mundo Real, que definitivamente os diferenciam dos
meninos:

• Realidade
• Administrabilidade
• Alta disponibilidade
• Troubleshootabilidade (Existe essa palavra?)
• Escalabilidade
• Performance
REALIDADE
Você escreve sistemas que passam em que tipo de teste?
Homens sabem que o Mundo Real é bem mais cruel que
qualquer 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)
ADMINISTRABILIDADE
Você já pensou em quem vai administrar seu sistema?
Homens sabem que sysadmins são os primeiros usuários de
duas 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?)
ALTA DISPONIBILIDADE
Você acha que não vai haver falhas em seus sistemas?
Só um detalhe antes... O que são sistemas?

Sistemas são mais do que um conjunto de aplicações; aplicações
são apenas componentes de um sistema. Um sistema pode ser
composto, 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
Homens não são ingênuos, eles esperam por falhas no sistema e
procuram 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)
TROUBLESHOOTABILIDADE
Como é que você investiga e descobre problemas?
Homens sabem que problemas vão acontecer, inevitávelmente,
e que em meio a uma crise, cada minuto vale ouro, então estão
sempre 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?)
ESCALABILIDADE
Você desenha seus sistemas para serem escaláveis?
Homens sabem que, de repente, uma ação de marketing pode
fazer com que a carga em um sistema se multiplique da noite
para 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?)
PERFORMANCE
Você negligencia performance no início?
Homens sabem que “otimização prematura é a raíz de todos os
males” 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?)
CONCLUSÃO
O que separa homens de meninos?
Homens não se preocupam tão somente com a estética de
seus có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 atender

Vão acontecer falhas no runtime de produção.
Você precisa identificá-las, lidar com elas, superá-las e manter o
Meninos tem boa vontade, empolgação, energia, mas muita ingenuidade
de 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
Você vai ficar de que lado, hamm?
LIVROS QUE RECOMENDO
A essência de todo “overview” que dei até aqui
PERGUNTAS?
OBRIGADO!
Leandro Silva, CIO @ Locaweb
      http://leandrosilva.com.br

Mais conteúdo relacionado

Mais procurados

Kanban, o Método - Melhorando seu fluxo de trabalho de forma realmente eficiente
Kanban, o Método - Melhorando seu fluxo de trabalho de forma realmente eficienteKanban, o Método - Melhorando seu fluxo de trabalho de forma realmente eficiente
Kanban, o Método - Melhorando seu fluxo de trabalho de forma realmente eficientethiagodacosta
 
Show Me Your Board (#SuperTrends2016)
Show Me Your Board (#SuperTrends2016)Show Me Your Board (#SuperTrends2016)
Show Me Your Board (#SuperTrends2016)Rodrigo Yoshima
 
Kanban: Aplicando TDD à melhoria contínua do seu processo
Kanban: Aplicando TDD à melhoria contínua do seu processoKanban: Aplicando TDD à melhoria contínua do seu processo
Kanban: Aplicando TDD à melhoria contínua do seu processoRodrigo Yoshima
 
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatos
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatosSCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatos
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatosPaulo César M Jeveaux
 
Desenvolvimento Ágil com Scrum e XP
Desenvolvimento Ágil com Scrum e XPDesenvolvimento Ágil com Scrum e XP
Desenvolvimento Ágil com Scrum e XPlucianocoelho
 
Kanban: O Método preferido para Desenvolvedores de Alta Performance
Kanban: O Método preferido para Desenvolvedores de Alta PerformanceKanban: O Método preferido para Desenvolvedores de Alta Performance
Kanban: O Método preferido para Desenvolvedores de Alta PerformanceRodrigo Yoshima
 
Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.Rômulo Augusto Santos
 
Scrum - Framework, Competências e Valores (versão community)
Scrum -  Framework, Competências e Valores (versão community)Scrum -  Framework, Competências e Valores (versão community)
Scrum - Framework, Competências e Valores (versão community)Manoel Pimentel Medeiros
 
Lean, Kanban e Kaizen para sua área de Tecnologia
Lean, Kanban e Kaizen para sua área de TecnologiaLean, Kanban e Kaizen para sua área de Tecnologia
Lean, Kanban e Kaizen para sua área de TecnologiaRodrigo Yoshima
 
MERCEDES BENZ - SLA e SLS: Um fator de sucesso na Mercedes Benz
MERCEDES BENZ - SLA e SLS: Um fator de sucesso na Mercedes BenzMERCEDES BENZ - SLA e SLS: Um fator de sucesso na Mercedes Benz
MERCEDES BENZ - SLA e SLS: Um fator de sucesso na Mercedes BenzRobtec
 
Lean - Gestão e Princípios
Lean - Gestão e PrincípiosLean - Gestão e Princípios
Lean - Gestão e PrincípiosLourenco P Soares
 
Apresentação e guerra dos métodos 2.0
Apresentação e guerra dos métodos 2.0Apresentação e guerra dos métodos 2.0
Apresentação e guerra dos métodos 2.0Rodrigo Yoshima
 
Vivenciando dev ops para além da automação de infraestrutura 2.0
Vivenciando dev ops para além da automação de infraestrutura 2.0Vivenciando dev ops para além da automação de infraestrutura 2.0
Vivenciando dev ops para além da automação de infraestrutura 2.0Diego Pacheco
 

Mais procurados (19)

Kanban, o Método - Melhorando seu fluxo de trabalho de forma realmente eficiente
Kanban, o Método - Melhorando seu fluxo de trabalho de forma realmente eficienteKanban, o Método - Melhorando seu fluxo de trabalho de forma realmente eficiente
Kanban, o Método - Melhorando seu fluxo de trabalho de forma realmente eficiente
 
Como Se Dar Bem Com Java
Como Se Dar Bem Com JavaComo Se Dar Bem Com Java
Como Se Dar Bem Com Java
 
Show Me Your Board (#SuperTrends2016)
Show Me Your Board (#SuperTrends2016)Show Me Your Board (#SuperTrends2016)
Show Me Your Board (#SuperTrends2016)
 
Kanban: Aplicando TDD à melhoria contínua do seu processo
Kanban: Aplicando TDD à melhoria contínua do seu processoKanban: Aplicando TDD à melhoria contínua do seu processo
Kanban: Aplicando TDD à melhoria contínua do seu processo
 
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatos
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatosSCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatos
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatos
 
SETIC Scrum & XP
SETIC Scrum & XPSETIC Scrum & XP
SETIC Scrum & XP
 
Desenvolvimento Ágil com Scrum e XP
Desenvolvimento Ágil com Scrum e XPDesenvolvimento Ágil com Scrum e XP
Desenvolvimento Ágil com Scrum e XP
 
Kanban: O Método preferido para Desenvolvedores de Alta Performance
Kanban: O Método preferido para Desenvolvedores de Alta PerformanceKanban: O Método preferido para Desenvolvedores de Alta Performance
Kanban: O Método preferido para Desenvolvedores de Alta Performance
 
Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.
 
Kanban
KanbanKanban
Kanban
 
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + ScrumDDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
 
Scrum - Framework, Competências e Valores (versão community)
Scrum -  Framework, Competências e Valores (versão community)Scrum -  Framework, Competências e Valores (versão community)
Scrum - Framework, Competências e Valores (versão community)
 
Lean, Kanban e Kaizen para sua área de Tecnologia
Lean, Kanban e Kaizen para sua área de TecnologiaLean, Kanban e Kaizen para sua área de Tecnologia
Lean, Kanban e Kaizen para sua área de Tecnologia
 
MERCEDES BENZ - SLA e SLS: Um fator de sucesso na Mercedes Benz
MERCEDES BENZ - SLA e SLS: Um fator de sucesso na Mercedes BenzMERCEDES BENZ - SLA e SLS: Um fator de sucesso na Mercedes Benz
MERCEDES BENZ - SLA e SLS: Um fator de sucesso na Mercedes Benz
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Lean - Gestão e Princípios
Lean - Gestão e PrincípiosLean - Gestão e Princípios
Lean - Gestão e Princípios
 
Apresentação e guerra dos métodos 2.0
Apresentação e guerra dos métodos 2.0Apresentação e guerra dos métodos 2.0
Apresentação e guerra dos métodos 2.0
 
Modelo ágil
Modelo ágilModelo ágil
Modelo ágil
 
Vivenciando dev ops para além da automação de infraestrutura 2.0
Vivenciando dev ops para além da automação de infraestrutura 2.0Vivenciando dev ops para além da automação de infraestrutura 2.0
Vivenciando dev ops para além da automação de infraestrutura 2.0
 

Destaque

Desvendando a Plataforma de Serviços Windows Azure
Desvendando a Plataforma de Serviços Windows AzureDesvendando a Plataforma de Serviços Windows Azure
Desvendando a Plataforma de Serviços Windows AzureLucasRomao
 
Introdução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows AzureIntrodução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows AzureGiovanni Bassi
 
AAB308 - Cloud Computing Windows Azure - wcamb.pdf
AAB308 - Cloud Computing Windows Azure - wcamb.pdfAAB308 - Cloud Computing Windows Azure - wcamb.pdf
AAB308 - Cloud Computing Windows Azure - wcamb.pdfMicrosoft Brasil
 
Desenvolvendo para o Windows Azure e SQL Azure
Desenvolvendo para o Windows Azure e SQL AzureDesenvolvendo para o Windows Azure e SQL Azure
Desenvolvendo para o Windows Azure e SQL AzureLuciano Condé
 
O que há de novo no Microsoft Azure IaaS
O que há de novo no Microsoft Azure IaaSO que há de novo no Microsoft Azure IaaS
O que há de novo no Microsoft Azure IaaSLucas A. Romão
 
Mongo db no mundo real slides
Mongo db no mundo real   slidesMongo db no mundo real   slides
Mongo db no mundo real slidesSuissa
 
TDC2016POA | Trilha DevOps - Métricas, métricas para todos os lados!
TDC2016POA | Trilha DevOps - Métricas, métricas para todos os lados!TDC2016POA | Trilha DevOps - Métricas, métricas para todos os lados!
TDC2016POA | Trilha DevOps - Métricas, métricas para todos os lados!tdc-globalcode
 
TDC2016POA | Trilha DevOps - Monitoramento real-time com ELK
TDC2016POA | Trilha DevOps - Monitoramento real-time com ELKTDC2016POA | Trilha DevOps - Monitoramento real-time com ELK
TDC2016POA | Trilha DevOps - Monitoramento real-time com ELKtdc-globalcode
 
TDC2016POA | Trilha DevOps - DevOps Anti-Patterns
TDC2016POA | Trilha DevOps - DevOps Anti-PatternsTDC2016POA | Trilha DevOps - DevOps Anti-Patterns
TDC2016POA | Trilha DevOps - DevOps Anti-Patternstdc-globalcode
 
TDC2016POA | Trilha DevOps - Monitoramento da infraestrutura para aplicac?o?e...
TDC2016POA | Trilha DevOps - Monitoramento da infraestrutura para aplicac?o?e...TDC2016POA | Trilha DevOps - Monitoramento da infraestrutura para aplicac?o?e...
TDC2016POA | Trilha DevOps - Monitoramento da infraestrutura para aplicac?o?e...tdc-globalcode
 
TDC2016POA | Trilha Dinamica - Facilitação - Que momento o grupo se encontra?
TDC2016POA | Trilha Dinamica - Facilitação - Que momento o grupo se encontra?	TDC2016POA | Trilha Dinamica - Facilitação - Que momento o grupo se encontra?
TDC2016POA | Trilha Dinamica - Facilitação - Que momento o grupo se encontra? tdc-globalcode
 
TDC2016POA | Trilha Dinamica - Desenvolvimento de Ideias através de Brainwriting
TDC2016POA | Trilha Dinamica - Desenvolvimento de Ideias através de BrainwritingTDC2016POA | Trilha Dinamica - Desenvolvimento de Ideias através de Brainwriting
TDC2016POA | Trilha Dinamica - Desenvolvimento de Ideias através de Brainwritingtdc-globalcode
 
TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...
TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...
TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...tdc-globalcode
 
TDC2016POA | Trilha Dinamicas - Valores individuais e de sua equipe?
TDC2016POA | Trilha Dinamicas - Valores individuais e de sua equipe?TDC2016POA | Trilha Dinamicas - Valores individuais e de sua equipe?
TDC2016POA | Trilha Dinamicas - Valores individuais e de sua equipe?tdc-globalcode
 
TDC2016POA | Trilha Dinamica - Team Building Games não é recreio, cada moment...
TDC2016POA | Trilha Dinamica - Team Building Games não é recreio, cada moment...TDC2016POA | Trilha Dinamica - Team Building Games não é recreio, cada moment...
TDC2016POA | Trilha Dinamica - Team Building Games não é recreio, cada moment...tdc-globalcode
 
TDC2016POA | Trilha BigData - Google BigQuery: Estudo de Caso Globo.com
TDC2016POA | Trilha BigData - Google BigQuery: Estudo de Caso Globo.comTDC2016POA | Trilha BigData - Google BigQuery: Estudo de Caso Globo.com
TDC2016POA | Trilha BigData - Google BigQuery: Estudo de Caso Globo.comtdc-globalcode
 
TDC2016POA | Trilha Cloud Computing - Microsoft Azure ? From Zero To Hero!
TDC2016POA | Trilha Cloud Computing - Microsoft Azure ? From Zero To Hero!TDC2016POA | Trilha Cloud Computing - Microsoft Azure ? From Zero To Hero!
TDC2016POA | Trilha Cloud Computing - Microsoft Azure ? From Zero To Hero!tdc-globalcode
 

Destaque (20)

Desvendando a Plataforma de Serviços Windows Azure
Desvendando a Plataforma de Serviços Windows AzureDesvendando a Plataforma de Serviços Windows Azure
Desvendando a Plataforma de Serviços Windows Azure
 
A plataforma Azure da Microsoft
A plataforma Azure da MicrosoftA plataforma Azure da Microsoft
A plataforma Azure da Microsoft
 
Introdução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows AzureIntrodução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows Azure
 
AAB308 - Cloud Computing Windows Azure - wcamb.pdf
AAB308 - Cloud Computing Windows Azure - wcamb.pdfAAB308 - Cloud Computing Windows Azure - wcamb.pdf
AAB308 - Cloud Computing Windows Azure - wcamb.pdf
 
Desenvolvendo para o Windows Azure e SQL Azure
Desenvolvendo para o Windows Azure e SQL AzureDesenvolvendo para o Windows Azure e SQL Azure
Desenvolvendo para o Windows Azure e SQL Azure
 
O que há de novo no Microsoft Azure IaaS
O que há de novo no Microsoft Azure IaaSO que há de novo no Microsoft Azure IaaS
O que há de novo no Microsoft Azure IaaS
 
Mongo db no mundo real slides
Mongo db no mundo real   slidesMongo db no mundo real   slides
Mongo db no mundo real slides
 
TDC2016POA | Trilha DevOps - Métricas, métricas para todos os lados!
TDC2016POA | Trilha DevOps - Métricas, métricas para todos os lados!TDC2016POA | Trilha DevOps - Métricas, métricas para todos os lados!
TDC2016POA | Trilha DevOps - Métricas, métricas para todos os lados!
 
TDC2016POA | Trilha DevOps - Monitoramento real-time com ELK
TDC2016POA | Trilha DevOps - Monitoramento real-time com ELKTDC2016POA | Trilha DevOps - Monitoramento real-time com ELK
TDC2016POA | Trilha DevOps - Monitoramento real-time com ELK
 
TDC2016POA | Trilha DevOps - DevOps Anti-Patterns
TDC2016POA | Trilha DevOps - DevOps Anti-PatternsTDC2016POA | Trilha DevOps - DevOps Anti-Patterns
TDC2016POA | Trilha DevOps - DevOps Anti-Patterns
 
TDC2016POA | Trilha DevOps - Monitoramento da infraestrutura para aplicac?o?e...
TDC2016POA | Trilha DevOps - Monitoramento da infraestrutura para aplicac?o?e...TDC2016POA | Trilha DevOps - Monitoramento da infraestrutura para aplicac?o?e...
TDC2016POA | Trilha DevOps - Monitoramento da infraestrutura para aplicac?o?e...
 
Hadoop, Big Data e Cloud Computing
Hadoop, Big Data e Cloud ComputingHadoop, Big Data e Cloud Computing
Hadoop, Big Data e Cloud Computing
 
TDC2016POA | Trilha Dinamica - Facilitação - Que momento o grupo se encontra?
TDC2016POA | Trilha Dinamica - Facilitação - Que momento o grupo se encontra?	TDC2016POA | Trilha Dinamica - Facilitação - Que momento o grupo se encontra?
TDC2016POA | Trilha Dinamica - Facilitação - Que momento o grupo se encontra?
 
TDC2016POA | Trilha Dinamica - Desenvolvimento de Ideias através de Brainwriting
TDC2016POA | Trilha Dinamica - Desenvolvimento de Ideias através de BrainwritingTDC2016POA | Trilha Dinamica - Desenvolvimento de Ideias através de Brainwriting
TDC2016POA | Trilha Dinamica - Desenvolvimento de Ideias através de Brainwriting
 
TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...
TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...
TDC2016POA | Trilha DevOps - Gestão de ciclo de vida de banco de dados: Já pa...
 
TDC2016POA | Trilha Dinamicas - Valores individuais e de sua equipe?
TDC2016POA | Trilha Dinamicas - Valores individuais e de sua equipe?TDC2016POA | Trilha Dinamicas - Valores individuais e de sua equipe?
TDC2016POA | Trilha Dinamicas - Valores individuais e de sua equipe?
 
Azure @ Rio Cloud Meetup
Azure @ Rio Cloud MeetupAzure @ Rio Cloud Meetup
Azure @ Rio Cloud Meetup
 
TDC2016POA | Trilha Dinamica - Team Building Games não é recreio, cada moment...
TDC2016POA | Trilha Dinamica - Team Building Games não é recreio, cada moment...TDC2016POA | Trilha Dinamica - Team Building Games não é recreio, cada moment...
TDC2016POA | Trilha Dinamica - Team Building Games não é recreio, cada moment...
 
TDC2016POA | Trilha BigData - Google BigQuery: Estudo de Caso Globo.com
TDC2016POA | Trilha BigData - Google BigQuery: Estudo de Caso Globo.comTDC2016POA | Trilha BigData - Google BigQuery: Estudo de Caso Globo.com
TDC2016POA | Trilha BigData - Google BigQuery: Estudo de Caso Globo.com
 
TDC2016POA | Trilha Cloud Computing - Microsoft Azure ? From Zero To Hero!
TDC2016POA | Trilha Cloud Computing - Microsoft Azure ? From Zero To Hero!TDC2016POA | Trilha Cloud Computing - Microsoft Azure ? From Zero To Hero!
TDC2016POA | Trilha Cloud Computing - Microsoft Azure ? From Zero To Hero!
 

Semelhante a Sistemas para o Mundo Real: Diferenciando Homens e Meninos

Sistemas para o Mundo Real
Sistemas para o Mundo RealSistemas para o Mundo Real
Sistemas para o Mundo RealLeandro Silva
 
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...Gleicon Moraes
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de DesenvolvimentoAlvaro Viebrantz
 
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsComo automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsRafael Salerno de Oliveira
 
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOSAULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOSprofjotamarcosduarte
 
Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...
Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...
Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...Rodrigo Vieira
 
Armadilhas no Desenvolvimento de Software
Armadilhas no Desenvolvimento de SoftwareArmadilhas no Desenvolvimento de Software
Armadilhas no Desenvolvimento de Softwarejamersonlima
 
O ciclo da vida
O ciclo da vidaO ciclo da vida
O ciclo da vidaLuiz Borba
 
Administradores e suas gambiarras
Administradores e suas gambiarrasAdministradores e suas gambiarras
Administradores e suas gambiarrasdebian-rs
 
Webinar: Oportunidades e requisitos no projeto de hardware para IoT
Webinar: Oportunidades e requisitos no projeto de hardware para IoTWebinar: Oportunidades e requisitos no projeto de hardware para IoT
Webinar: Oportunidades e requisitos no projeto de hardware para IoTEmbarcados
 
O Mítico Homem-Mês
O Mítico Homem-MêsO Mítico Homem-Mês
O Mítico Homem-MêsJuliane Silva
 
Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?Mozart Diniz
 
Metodologias Ágeis: Uma breve introdução
Metodologias Ágeis: Uma breve introduçãoMetodologias Ágeis: Uma breve introdução
Metodologias Ágeis: Uma breve introduçãoAchiles Camilo
 
Como optimizar um computador
Como optimizar um computadorComo optimizar um computador
Como optimizar um computadorFlashplaneta
 
Optimizar um computador
Optimizar um computadorOptimizar um computador
Optimizar um computadorFlashplaneta
 
Optimizar um computador
Optimizar um computadorOptimizar um computador
Optimizar um computadorFlashplaneta
 

Semelhante a Sistemas para o Mundo Real: Diferenciando Homens e Meninos (20)

Sistemas para o Mundo Real
Sistemas para o Mundo RealSistemas para o Mundo Real
Sistemas para o Mundo Real
 
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de Desenvolvimento
 
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsComo automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
 
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOSAULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
 
Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...
Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...
Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...
 
Introdução ao XP
Introdução ao XPIntrodução ao XP
Introdução ao XP
 
Armadilhas no Desenvolvimento de Software
Armadilhas no Desenvolvimento de SoftwareArmadilhas no Desenvolvimento de Software
Armadilhas no Desenvolvimento de Software
 
O ciclo da vida
O ciclo da vidaO ciclo da vida
O ciclo da vida
 
Administradores e suas gambiarras
Administradores e suas gambiarrasAdministradores e suas gambiarras
Administradores e suas gambiarras
 
Webinar: Oportunidades e requisitos no projeto de hardware para IoT
Webinar: Oportunidades e requisitos no projeto de hardware para IoTWebinar: Oportunidades e requisitos no projeto de hardware para IoT
Webinar: Oportunidades e requisitos no projeto de hardware para IoT
 
O Mítico Homem-Mês
O Mítico Homem-MêsO Mítico Homem-Mês
O Mítico Homem-Mês
 
Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?
 
Metodologias Ágeis: Uma breve introdução
Metodologias Ágeis: Uma breve introduçãoMetodologias Ágeis: Uma breve introdução
Metodologias Ágeis: Uma breve introdução
 
Novas Fronteiras
Novas FronteirasNovas Fronteiras
Novas Fronteiras
 
Qualidade e Testes de Software
Qualidade e Testes de SoftwareQualidade e Testes de Software
Qualidade e Testes de Software
 
Como optimizar um computador
Como optimizar um computadorComo optimizar um computador
Como optimizar um computador
 
Optimizar um computador
Optimizar um computadorOptimizar um computador
Optimizar um computador
 
Optimizar um computador
Optimizar um computadorOptimizar um computador
Optimizar um computador
 
PHP Anti Patterns
PHP Anti PatternsPHP Anti Patterns
PHP Anti Patterns
 

Mais de Leandro Silva

Arquitetura de Software 101
Arquitetura de Software 101Arquitetura de Software 101
Arquitetura de Software 101Leandro Silva
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#Leandro Silva
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao TerraformLeandro Silva
 
SRE - Esperança não é uma estratégia
SRE - Esperança não é uma estratégiaSRE - Esperança não é uma estratégia
SRE - Esperança não é uma estratégiaLeandro Silva
 
Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013Leandro Silva
 
Gerenciando times autogerenciáveis
Gerenciando times autogerenciáveisGerenciando times autogerenciáveis
Gerenciando times autogerenciáveisLeandro Silva
 
Como vi Scrum ser rechaçado em uma grande empresa
Como vi Scrum ser rechaçado em uma grande empresaComo vi Scrum ser rechaçado em uma grande empresa
Como vi Scrum ser rechaçado em uma grande empresaLeandro Silva
 
Erlang/OTP - Caelum Tech Day 2009
Erlang/OTP - Caelum Tech Day 2009Erlang/OTP - Caelum Tech Day 2009
Erlang/OTP - Caelum Tech Day 2009Leandro Silva
 

Mais de Leandro Silva (8)

Arquitetura de Software 101
Arquitetura de Software 101Arquitetura de Software 101
Arquitetura de Software 101
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao Terraform
 
SRE - Esperança não é uma estratégia
SRE - Esperança não é uma estratégiaSRE - Esperança não é uma estratégia
SRE - Esperança não é uma estratégia
 
Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013
 
Gerenciando times autogerenciáveis
Gerenciando times autogerenciáveisGerenciando times autogerenciáveis
Gerenciando times autogerenciáveis
 
Como vi Scrum ser rechaçado em uma grande empresa
Como vi Scrum ser rechaçado em uma grande empresaComo vi Scrum ser rechaçado em uma grande empresa
Como vi Scrum ser rechaçado em uma grande empresa
 
Erlang/OTP - Caelum Tech Day 2009
Erlang/OTP - Caelum Tech Day 2009Erlang/OTP - Caelum Tech Day 2009
Erlang/OTP - Caelum Tech Day 2009
 

Sistemas para o Mundo Real: Diferenciando Homens e Meninos

  • 1. SISTEMAS PARA O MUNDO REAL Leandro Silva, CIO @ Locaweb http://leandrosilva.com.br TDC 2012
  • 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. VAMOS AO TEMA Sistemas para o Mundo Real – Diferenciando homens e meninos
  • 5. O MUNDO DOS UNICÓRNIOS Uma ilusão para os meninos?
  • 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ção E, claro, reinventar a roda. Só que... quadrada!
  • 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. 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. “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. “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. E no final das contas, todo esse sonho e empolgação dá em...
  • 12. E no final das contas, todo esse sonho e empolgação dá em... O R D
  • 13. Porque o Mundo Real bate à porta, mais cedo ou mais tarde
  • 14. O MUNDO REAL (1) Beleza é importante quando homens escrevem sistemas?
  • 15. Todo mundo gosta de código bonito...
  • 16. Todo mundo gosta de código bem fatorado...
  • 17. É sempre bom quando os códigos seguem um padrão, um estilo...
  • 18. Eu sou assumidamente do tipo 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 no meu time de desenvolvimento
  • 19. Mas a verdade é que escrever código bonito, bem fatorado 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, com uma baita pressão no cangote, porque a empresa está perdendo dinheiro em transações não realizadas
  • 20. Todas essas preocupações com os aspéctos est(é)áticos são importantes, 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, etc Não pare de ter essas preocupações!
  • 21. Homens se preocupam com os aspé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. O MUNDO REAL (2) É no runtime que homens e meninos se sobressaem
  • 23.
  • 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.
  • 26. Há pelo menos 6 coisas com que homens se preocupam quando escrevem sistemas para o Mundo Real, que definitivamente os diferenciam dos meninos: • Realidade • Administrabilidade • Alta disponibilidade • Troubleshootabilidade (Existe essa palavra?) • Escalabilidade • Performance
  • 27. REALIDADE Você escreve sistemas que passam em que tipo de teste?
  • 28. Homens sabem que o Mundo Real é bem mais cruel que qualquer 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)
  • 29. ADMINISTRABILIDADE Você já pensou em quem vai administrar seu sistema?
  • 30. Homens sabem que sysadmins são os primeiros usuários de duas 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?)
  • 31. ALTA DISPONIBILIDADE Você acha que não vai haver falhas em seus sistemas?
  • 32. Só um detalhe antes... O que são sistemas? Sistemas são mais do que um conjunto de aplicações; aplicações são apenas componentes de um sistema. Um sistema pode ser composto, 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
  • 33. Homens não são ingênuos, eles esperam por falhas no sistema e procuram 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)
  • 34. TROUBLESHOOTABILIDADE Como é que você investiga e descobre problemas?
  • 35. Homens sabem que problemas vão acontecer, inevitávelmente, e que em meio a uma crise, cada minuto vale ouro, então estão sempre 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?)
  • 36. ESCALABILIDADE Você desenha seus sistemas para serem escaláveis?
  • 37. Homens sabem que, de repente, uma ação de marketing pode fazer com que a carga em um sistema se multiplique da noite para 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?)
  • 39. Homens sabem que “otimização prematura é a raíz de todos os males” 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?)
  • 40. CONCLUSÃO O que separa homens de meninos?
  • 41. Homens não se preocupam tão somente com a estética de seus có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 atender Vão acontecer falhas no runtime de produção. Você precisa identificá-las, lidar com elas, superá-las e manter o
  • 42. Meninos tem boa vontade, empolgação, energia, mas muita ingenuidade de 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
  • 43. Você vai ficar de que lado, hamm?
  • 44. LIVROS QUE RECOMENDO A essência de todo “overview” que dei até aqui
  • 45.
  • 47. OBRIGADO! Leandro Silva, CIO @ Locaweb http://leandrosilva.com.br

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n