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

Arquitetura Pragmatica

Embed Size (px)

DESCRIPTION

Uma visão pragmática sobre arquitetura de software no mundo web.

Citation preview

Page 1: Arquitetura Pragmatica

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

Arquitetura Pragmática

Page 2: Arquitetura Pragmatica

O que é arquitetura?

Page 3: Arquitetura Pragmatica

"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 Pragmatica

Arquitetura

Design

Page 5: Arquitetura Pragmatica
Page 6: Arquitetura Pragmatica

Atributos de Qualidade• Performance

• Segurança

• Disponibilidade

• Usabilidade

• Confiabilidade

• Manutenibilidade

• Testabilidade

• Portabilidade

• Integrabilidade

• Reusabilidade

• Legibilidade

• Escalabilidade

Page 7: Arquitetura Pragmatica

Visões

Page 8: Arquitetura Pragmatica
Page 9: Arquitetura Pragmatica
Page 10: Arquitetura Pragmatica
Page 11: Arquitetura Pragmatica
Page 12: Arquitetura Pragmatica
Page 13: Arquitetura Pragmatica

Principais fatores para um bom design

Baixo acomplamento Alta coesão

Page 14: Arquitetura Pragmatica

GRASP(general responsibility assignment patterns)

Page 15: Arquitetura Pragmatica
Page 16: Arquitetura Pragmatica
Page 17: Arquitetura Pragmatica
Page 18: Arquitetura Pragmatica
Page 19: Arquitetura Pragmatica
Page 20: Arquitetura Pragmatica

Primeira Lei de Arquitetura de Software de Borba

(Borba's 1st Software Architecture Law)

Toda arquitetura definida está errada.

Page 21: Arquitetura Pragmatica

Precisa PROVAR!

Page 22: Arquitetura Pragmatica

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 Pragmatica

As coisas mudam• Tecnologias mudam

• Requisitos/Planos/Negócios mudam

• Pessoas mudam

• Usuários mudam

• TUDO MUDA. O TEMPO TODO.

Page 24: Arquitetura Pragmatica

O que fazer então?

Page 25: Arquitetura Pragmatica

Design Incremental

Page 26: Arquitetura Pragmatica

TDD

http://bit.ly/dNzRtn

Page 27: Arquitetura Pragmatica
Page 28: Arquitetura Pragmatica

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

(manifesto para desenvolvimento de software ágil)

Page 29: Arquitetura Pragmatica

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 Pragmatica

Evolução da arquiteturas WEB

Page 31: Arquitetura Pragmatica
Page 32: Arquitetura Pragmatica
Page 33: Arquitetura Pragmatica

HTTP• Popularidade da WEB fez

servidores de aplicação evoluir

• performance

• escalabilidade

• segurança

• cache

Page 34: Arquitetura Pragmatica
Page 35: Arquitetura Pragmatica

No mundo enterprise...

Page 36: Arquitetura Pragmatica

SOA

Page 37: Arquitetura Pragmatica

e no mundo pop...

Page 38: Arquitetura Pragmatica
Page 39: Arquitetura Pragmatica
Page 40: Arquitetura Pragmatica

Web 2.0

Page 41: Arquitetura Pragmatica

COMET

Page 42: Arquitetura Pragmatica

Rich Internet Applications

Page 43: Arquitetura Pragmatica

• REST (Representational State Transfer)

• Cliente-Servidor

• Stateless

• Cacheable

• Em camadas

• Inteface uniforme

• Sucessor do SOAP em SOA

Page 44: Arquitetura Pragmatica

Estudo de casos

Page 45: Arquitetura Pragmatica

Twitter tweet tableLatência cache = 1ms

Latência MySQL = 10ms

Page 46: Arquitetura Pragmatica

Tabela única

Page 47: Arquitetura Pragmatica

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 Pragmatica

ELEITO: Partição por tempo

http://slidesha.re/fViE3Y

Page 49: Arquitetura Pragmatica

Facebook BigPipe

Page 50: Arquitetura Pragmatica

Threads

Servidorhttp request

Página

Page 51: Arquitetura Pragmatica

http://on.fb.me/gzNc0K

Page 52: Arquitetura Pragmatica

Caso para reflexão

http://bit.ly/hn3Sd0

Page 53: Arquitetura Pragmatica

E sobre o projeto?

Page 54: Arquitetura Pragmatica

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 Pragmatica

http://bit.ly/hij049

Page 56: Arquitetura Pragmatica

Boa Sorte!

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