arquitetura pragmática
TRANSCRIPT
![Page 1: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/1.jpg)
Luiz Borba @luizborba - http://borba.blog.br
Arquitetura Pragmática
![Page 2: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/2.jpg)
O que é arquitetura?
![Page 3: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/3.jpg)
"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."
![Page 4: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/4.jpg)
Arquitetura
Design
![Page 5: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/5.jpg)
![Page 6: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/6.jpg)
Atributos de Qualidade• Performance
• Segurança
• Disponibilidade
• Usabilidade
• Confiabilidade
• Manutenibilidade
• Testabilidade
• Portabilidade
• Integrabilidade
• Reusabilidade
• Legibilidade
• Escalabilidade
![Page 7: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/7.jpg)
Visões
![Page 8: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/8.jpg)
![Page 9: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/9.jpg)
![Page 10: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/10.jpg)
![Page 11: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/11.jpg)
![Page 12: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/12.jpg)
![Page 13: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/13.jpg)
Principais fatores para um bom design
Baixo acomplamento Alta coesão
![Page 14: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/14.jpg)
GRASP(general responsibility assignment patterns)
![Page 15: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/15.jpg)
![Page 16: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/16.jpg)
![Page 17: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/17.jpg)
![Page 18: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/18.jpg)
![Page 19: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/19.jpg)
![Page 20: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/20.jpg)
Primeira Lei de Arquitetura de Software de Borba
(Borba's 1st Software Architecture Law)
Toda arquitetura definida está errada.
![Page 21: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/21.jpg)
Precisa PROVAR!
![Page 22: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/22.jpg)
Segunda Lei de Arquitetura de Software de Borba
(Borba's 2nd Software Architecture Law)
Toda arquitetura definida que comprovadamente funciona
estará errada em breve.
![Page 23: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/23.jpg)
As coisas mudam• Tecnologias mudam
• Requisitos/Planos/Negócios mudam
• Pessoas mudam
• Usuários mudam
• TUDO MUDA. O TEMPO TODO.
![Page 24: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/24.jpg)
O que fazer então?
![Page 25: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/25.jpg)
Design Incremental
![Page 26: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/26.jpg)
TDD
http://bit.ly/dNzRtn
![Page 27: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/27.jpg)
![Page 28: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/28.jpg)
"As melhores arquiteturas, requisitos e design emergem de times auto organizados"
(manifesto para desenvolvimento de software ágil)
![Page 29: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/29.jpg)
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
![Page 30: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/30.jpg)
Evolução da arquiteturas WEB
![Page 31: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/31.jpg)
![Page 32: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/32.jpg)
![Page 33: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/33.jpg)
HTTP• Popularidade da WEB fez
servidores de aplicação evoluir
• performance
• escalabilidade
• segurança
• cache
![Page 34: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/34.jpg)
![Page 35: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/35.jpg)
No mundo enterprise...
![Page 36: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/36.jpg)
SOA
![Page 37: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/37.jpg)
e no mundo pop...
![Page 38: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/38.jpg)
![Page 39: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/39.jpg)
![Page 40: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/40.jpg)
Web 2.0
![Page 41: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/41.jpg)
COMET
![Page 42: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/42.jpg)
Rich Internet Applications
![Page 43: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/43.jpg)
• REST (Representational State Transfer)
• Cliente-Servidor
• Stateless
• Cacheable
• Em camadas
• Inteface uniforme
• Sucessor do SOAP em SOA
![Page 44: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/44.jpg)
Estudo de casos
![Page 45: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/45.jpg)
Twitter tweet tableLatência cache = 1ms
Latência MySQL = 10ms
![Page 46: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/46.jpg)
Tabela única
![Page 47: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/47.jpg)
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
![Page 48: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/48.jpg)
ELEITO: Partição por tempo
http://slidesha.re/fViE3Y
![Page 49: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/49.jpg)
Facebook BigPipe
![Page 50: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/50.jpg)
Threads
Servidorhttp request
Página
![Page 51: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/51.jpg)
http://on.fb.me/gzNc0K
![Page 52: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/52.jpg)
Caso para reflexão
http://bit.ly/hn3Sd0
![Page 53: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/53.jpg)
E sobre o projeto?
![Page 54: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/54.jpg)
Mais palavras chaves
• NoSQL (http://bit.ly/dE23U6)
• Linguagens Funcionais (http://bit.ly/hug7CM)
• Cloud Computing
• Mobile Apps (http://bit.ly/i6rLsb)
![Page 55: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/55.jpg)
http://bit.ly/hij049
![Page 56: Arquitetura pragmática](https://reader030.vdocuments.site/reader030/viewer/2022020307/55c58aa1bb61ebf0168b4869/html5/thumbnails/56.jpg)
Boa Sorte!
Luiz Borba @luizborba - http://borba.blog.br