Arquitetura Pragmatica

Preview:

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