Sie sind auf Seite 1von 56

Arquitetura Pragmática

Luiz Borba
@luizborba - http://borba.blog.br
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 • Testabilidade

• Segurança • Portabilidade

• Disponibilidade • Integrabilidade

• Usabilidade • Reusabilidade

• Confiabilidade • Legibilidade

• Manutenibilidade • 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 table
Latência cache = 1ms

Latência MySQL = 10ms


Tabela única
Partição por PK
Para encontrar tweets
recentes por usuário tem
que procurar em N partições

Partição por usuário


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

http request
Página Servidor
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

Das könnte Ihnen auch gefallen