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

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

  • 1.
    Overview sobre Arquiteturade Software na prática
  • 2.
    Agenda • O queé ? • Como fazer ? – ATAM – Risk-Driven Approach • Critérios ? – Modificabilidade – Disponibilidade – Performance
  • 3.
    O que é? - Arquitetura de Software de Sistemas Corporativa
  • 4.
    O que é? (2) - Papel do Arquiteto Analista de Requisitos, Tester e QA Qualidade Gerente do projeto Tempo Custo Desenvolvedores Rápido e divertido
  • 5.
    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
  • 6.
    Como fazer ? -ATAM: Architecture Tradeoff Analysis Method - Risk-Driven Approach
  • 7.
    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)
  • 8.
    Risk-Driven Approach (2) -Tipos de Riscos quanto a disciplina: de Projeto de Arquitetura
  • 9.
    Risk-Driven Approach (3) -Tipos de Respostas ao Risco: Evitar Transferir Mitigar Aceitar
  • 10.
    Critérios ? - Modificabilidade -Disponibilidade - Performance - Segurança - Usabilidade
  • 11.
    Modificabilidade - Metas Manter CoerênciaSemântica Antecipar mudanças esperadas Evitar Efeito Ripple
  • 12.
    Modificabilidade (2) - Técnicas:SOLID Single responsibility principle Open/closed principle Liskov substitution principle Interface segregation principle Dependency inversion principle
  • 13.
  • 14.
    Disponibilidade - Detectar Ping/Echo Exceptions - Recuperar Redundânciaativa Redundância passiva - Prevenir Monitoramento e análise de indicadores com estimativa de crescimento: CPU, Memória, Disco, Rede
  • 15.
    Disponibilidade (2) - Detectar Analisarbaseado 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
  • 16.
    Performance - Tempo deresposta : 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
  • 17.
    Performance (2) - Técnicase 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
  • 18.
    Performance (3) - Configuraçãoem 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
  • 19.
    Referências Software Architecture inPractice, 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
  • 20.