Overview sobre Arquitetura de Sofware na Prática - CEJUG - Naskar - 13-09-2014

Preview:

Citation preview

Overview sobre Arquitetura de

Software na prática

Agenda

• O que é ?

• Como fazer ?

– ATAM

– Risk-Driven Approach

• Critérios ?

– Modificabilidade

– Disponibilidade

– Performance

O que é ?

- Arquitetura

de Software

de Sistemas

Corporativa

O que é ? (2)

- Papel do Arquiteto

Analista de Requisitos, Tester e QA

Qualidade

Gerente do projeto

Tempo

Custo

Desenvolvedores

Rápido e divertido

O que é ? (3)

“Modele as relações, não os componentes!”

- Todo sistema precisa de uma definição forma de

arquitetura ?

- Arquitetura Evolutiva e Design Emergente

Como fazer ?

- ATAM: Architecture Tradeoff Analysis Method

- Risk-Driven Approach

Risk-Driven Approach (1)

- Tipos de Riscos quanto as incertezas:

Coisas que você sabe

(Known)

Coisas que você sabe que não sabe

(Known Unknown)

Coisas que você não sabe que não sabe

(Unknown Unknown)

Risk-Driven Approach (2)

- Tipos de Riscos quanto a disciplina:

de Projeto

de Arquitetura

Risk-Driven Approach (3)

- Tipos de Respostas ao Risco:

Evitar

Transferir

Mitigar

Aceitar

Critérios ?

- Modificabilidade

- Disponibilidade

- Performance

- Segurança

- Usabilidade

Modificabilidade

- Metas

Manter Coerência Semântica

Antecipar mudanças esperadas

Evitar Efeito Ripple

Modificabilidade (2)- Técnicas: SOLID

Single responsibility principle

Open/closed principle

Liskov substitution principle

Interface segregation principle

Dependency inversion principle

Modificabilidade

- Ferramentas: Exemplo Simples

Disponibilidade- Detectar

Ping/Echo

Exceptions

- Recuperar

Redundância ativa

Redundância passiva

- Prevenir

Monitoramento e análise de indicadores com estimativa de

crescimento: CPU, Memória, Disco, Rede

Disponibilidade (2)- Detectar

Analisar baseado em uma métrica: 40% a 60%

- Recuperar

Redundância ativa e/ou passiva

- Prevenir

Load Balancer e/ou Cluster

Virtualização e/ou Nugem

Performance- Tempo de resposta : O que contribui para o tempo de resposta ?

- Consumo de Recurso

CPU, Memória, Disco, Rede, etc

- Aumentar o recurso

- Otimizar o uso do recurso

- Tempo bloqueado

Contenção, Disponibilidade, Dependência do recurso

- Introduzir concorrência

- Manter múltiplas cópias

Performance (2)- Técnicas e Ferramentas

CPU: JProfiler e jvisualvm

Memory: Eclipse Memory Analyzer

Resource: JProfiler (ej-technologies), AppDynamics, etc

- Dicas para implementação

Stateless

Callback para gerenciar um recurso

Stream é bom!!! Evitar ByteArray[Input|Output]Stream

Performance (3)- Configuração em Servidores de Aplicação

Memória: Xmx, Xms, PermSize

GC: Paralelo e/ou Concorrente para Old e New Generation

ThreadPool

DataSource Connection Pool

GZip compression

Referências

Software Architecture in Practice, Second

Edition Len Bass, Paul Clements, Rick Kazman

Pattern-Oriented Software Architecture (POSA)

Frank Buschmann, Regine Meunier,

Hans Rohnert, Peter Sommerlad

Just Enough Software Architecture: A Risk-

Driven Approach

George H. Fairbanks

Obrigado!!!

www.naskar.com.br

rafael@naskar.com.brwww.cejug.net