Arquitetura pragmática

56
Luiz Borba @luizborba - http://borba.blog.br Arquitetura Pragmática

Transcript of Arquitetura pragmática

Page 1: Arquitetura pragmática

Luiz Borba @luizborba - http://borba.blog.br

Arquitetura Pragmática

Page 2: Arquitetura pragmática

O que é arquitetura?

Page 3: Arquitetura pragmática

"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

Arquitetura

Design

Page 5: Arquitetura pragmática
Page 6: Arquitetura pragmática

Atributos de Qualidade• Performance

• Segurança

• Disponibilidade

• Usabilidade

• Confiabilidade

• Manutenibilidade

• Testabilidade

• Portabilidade

• Integrabilidade

• Reusabilidade

• Legibilidade

• Escalabilidade

Page 7: Arquitetura pragmática

Visões

Page 8: Arquitetura pragmática
Page 9: Arquitetura pragmática
Page 10: Arquitetura pragmática
Page 11: Arquitetura pragmática
Page 12: Arquitetura pragmática
Page 13: Arquitetura pragmática

Principais fatores para um bom design

Baixo acomplamento Alta coesão

Page 14: Arquitetura pragmática

GRASP(general responsibility assignment patterns)

Page 15: Arquitetura pragmática
Page 16: Arquitetura pragmática
Page 17: Arquitetura pragmática
Page 18: Arquitetura pragmática
Page 19: Arquitetura pragmática
Page 20: Arquitetura pragmática

Primeira Lei de Arquitetura de Software de Borba

(Borba's 1st Software Architecture Law)

Toda arquitetura definida está errada.

Page 21: Arquitetura pragmática

Precisa PROVAR!

Page 22: Arquitetura pragmática

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

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

O que fazer então?

Page 25: Arquitetura pragmática

Design Incremental

Page 26: Arquitetura pragmática

TDD

http://bit.ly/dNzRtn

Page 27: Arquitetura pragmática
Page 28: Arquitetura pragmática

"As melhores arquiteturas, requisitos e design emergem de times auto organizados"

(manifesto para desenvolvimento de software ágil)

Page 29: Arquitetura pragmática

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

Evolução da arquiteturas WEB

Page 31: Arquitetura pragmática
Page 32: Arquitetura pragmática
Page 33: Arquitetura pragmática

HTTP• Popularidade da WEB fez

servidores de aplicação evoluir

• performance

• escalabilidade

• segurança

• cache

Page 34: Arquitetura pragmática
Page 35: Arquitetura pragmática

No mundo enterprise...

Page 36: Arquitetura pragmática

SOA

Page 37: Arquitetura pragmática

e no mundo pop...

Page 38: Arquitetura pragmática
Page 39: Arquitetura pragmática
Page 40: Arquitetura pragmática

Web 2.0

Page 41: Arquitetura pragmática

COMET

Page 42: Arquitetura pragmática

Rich Internet Applications

Page 43: Arquitetura pragmática

• REST (Representational State Transfer)

• Cliente-Servidor

• Stateless

• Cacheable

• Em camadas

• Inteface uniforme

• Sucessor do SOAP em SOA

Page 44: Arquitetura pragmática

Estudo de casos

Page 45: Arquitetura pragmática

Twitter tweet tableLatência cache = 1ms

Latência MySQL = 10ms

Page 46: Arquitetura pragmática

Tabela única

Page 47: Arquitetura pragmática

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

ELEITO: Partição por tempo

http://slidesha.re/fViE3Y

Page 49: Arquitetura pragmática

Facebook BigPipe

Page 50: Arquitetura pragmática

Threads

Servidorhttp request

Página

Page 51: Arquitetura pragmática

http://on.fb.me/gzNc0K

Page 52: Arquitetura pragmática

Caso para reflexão

http://bit.ly/hn3Sd0

Page 53: Arquitetura pragmática

E sobre o projeto?

Page 54: Arquitetura pragmática

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

http://bit.ly/hij049

Page 56: Arquitetura pragmática

Boa Sorte!

Luiz Borba @luizborba - http://borba.blog.br