Overview sobre Arquitetura de Sofware na Prática - CEJUG - Naskar - 13-09-2014
Click here to load reader
-
Upload
rafael-uchoa -
Category
Software
-
view
318 -
download
0
Transcript of Overview sobre Arquitetura de Sofware na Prática - CEJUG - Naskar - 13-09-2014
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