Upload
luiz-borba
View
2.476
Download
2
Embed Size (px)
DESCRIPTION
Uma visão pragmática sobre arquitetura de software no mundo web.
Citation preview
Luiz Borba@luizborba - http://borba.blog.br
Arquitetura Pragmática
O que é arquitetura?
"A arquitetura de software de um programa ou sistema computacional é a estrutura (ou estruturas), a qual envolve os elementos de software, as propriedades desses elementos visíveis externamente e seus respectivos inter-relacionamentos."
Arquitetura
Design
Atributos de Qualidade• Performance
• Segurança
• Disponibilidade
• Usabilidade
• Confiabilidade
• Manutenibilidade
• Testabilidade
• Portabilidade
• Integrabilidade
• Reusabilidade
• Legibilidade
• Escalabilidade
Visões
Principais fatores para um bom design
Baixo acomplamento Alta coesão
GRASP(general responsibility assignment patterns)
Primeira Lei de Arquitetura de Software de Borba
(Borba's 1st Software Architecture Law)
Toda arquitetura definida está errada.
Precisa PROVAR!
Segunda Lei de Arquitetura de Software de Borba
(Borba's 2nd Software Architecture Law)
Toda arquitetura definida que comprovadamente funciona
estará errada em breve.
As coisas mudam• Tecnologias mudam
• Requisitos/Planos/Negócios mudam
• Pessoas mudam
• Usuários mudam
• TUDO MUDA. O TEMPO TODO.
O que fazer então?
Design Incremental
TDD
http://bit.ly/dNzRtn
"As melhores arquiteturas, requisitos e design emergem de times auto organizados"
(manifesto para desenvolvimento de software ágil)
1. Não existe nada de especial sobre arquitetura
2. Evite arquiteturas torres de marfim
3. Todo sistema tem uma arquitetura
4. Arquitetura viabiliza projetos grandes
Evolução da arquiteturas WEB
HTTP• Popularidade da WEB fez
servidores de aplicação evoluir
• performance
• escalabilidade
• segurança
• cache
No mundo enterprise...
SOA
e no mundo pop...
Web 2.0
COMET
Rich Internet Applications
• REST (Representational State Transfer)
• Cliente-Servidor
• Stateless
• Cacheable
• Em camadas
• Inteface uniforme
• Sucessor do SOAP em SOA
Estudo de casos
Twitter tweet tableLatência cache = 1ms
Latência MySQL = 10ms
Tabela única
Partição por PK
Partição por usuário
Para encontrar tweets recentes por usuário tem
que procurar em N partições
Para encontrar um tweet por id tem que procurar
em N partições
ELEITO: Partição por tempo
http://slidesha.re/fViE3Y
Facebook BigPipe
Threads
Servidorhttp request
Página
http://on.fb.me/gzNc0K
Caso para reflexão
http://bit.ly/hn3Sd0
E sobre o projeto?
Mais palavras chaves
• NoSQL (http://bit.ly/dE23U6)
• Linguagens Funcionais (http://bit.ly/hug7CM)
• Cloud Computing
• Mobile Apps (http://bit.ly/i6rLsb)
http://bit.ly/hij049
Boa Sorte!
Luiz Borba@luizborba - http://borba.blog.br