SlideShare a Scribd company logo
1 of 20
Download to read offline
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

More Related Content

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

[GUTS-RS] Evento julho 2017 - Como iniciar os testes de performance em uma a...
[GUTS-RS] Evento julho 2017 -  Como iniciar os testes de performance em uma a...[GUTS-RS] Evento julho 2017 -  Como iniciar os testes de performance em uma a...
[GUTS-RS] Evento julho 2017 - Como iniciar os testes de performance em uma a...GUTS-RS
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Softwareeros.viggiano
 
Arquitetura de Computadores - Lecom - UFMG
Arquitetura de Computadores - Lecom - UFMGArquitetura de Computadores - Lecom - UFMG
Arquitetura de Computadores - Lecom - UFMGdjonatascostsa
 
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)André Dias
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Igor Abade
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoComunidade NetPonto
 
Dev rioclaro gerenciando o ciclo de vida das suas aplicações em larga escal
Dev rioclaro   gerenciando o ciclo de vida das suas aplicações em larga escalDev rioclaro   gerenciando o ciclo de vida das suas aplicações em larga escal
Dev rioclaro gerenciando o ciclo de vida das suas aplicações em larga escalLuiz Guilherme Bauer Fraga Moreira
 
Analise de Requisitos
Analise de RequisitosAnalise de Requisitos
Analise de Requisitoselliando dias
 
Aula 7 - Técnicas de Planejamento
Aula 7 - Técnicas de PlanejamentoAula 7 - Técnicas de Planejamento
Aula 7 - Técnicas de PlanejamentoFilipo Mór
 
Monitoracao Inteligente na Globo.com
Monitoracao Inteligente na Globo.comMonitoracao Inteligente na Globo.com
Monitoracao Inteligente na Globo.comDenis Vieira
 
Em Direção às Redes Programáveis na Internet do Futuro
Em Direção às Redes Programáveis na Internet do FuturoEm Direção às Redes Programáveis na Internet do Futuro
Em Direção às Redes Programáveis na Internet do FuturoMagnos Martinello
 
Modelos de desenvolvimento de software (dino brasilis)
Modelos de desenvolvimento de software (dino brasilis)Modelos de desenvolvimento de software (dino brasilis)
Modelos de desenvolvimento de software (dino brasilis)djadrianodez
 
Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...
Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...
Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...André Leon S. Gradvohl
 
Plano do projeto de software
Plano do projeto de softwarePlano do projeto de software
Plano do projeto de softwareDanilo Gois
 
Participação do Time de Teste em Projetos Scrum
Participação do Time de Teste em Projetos ScrumParticipação do Time de Teste em Projetos Scrum
Participação do Time de Teste em Projetos ScrumGustavo Quezada
 

Similar to Overview sobre Arquitetura de Sofware na Prática - CEJUG - Naskar - 13-09-2014 (20)

Planejamento rede
Planejamento rede Planejamento rede
Planejamento rede
 
01 introducaocaats
01 introducaocaats01 introducaocaats
01 introducaocaats
 
[GUTS-RS] Evento julho 2017 - Como iniciar os testes de performance em uma a...
[GUTS-RS] Evento julho 2017 -  Como iniciar os testes de performance em uma a...[GUTS-RS] Evento julho 2017 -  Como iniciar os testes de performance em uma a...
[GUTS-RS] Evento julho 2017 - Como iniciar os testes de performance em uma a...
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Arquitetura de Computadores - Lecom - UFMG
Arquitetura de Computadores - Lecom - UFMGArquitetura de Computadores - Lecom - UFMG
Arquitetura de Computadores - Lecom - UFMG
 
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis Paulino
 
Dev rioclaro gerenciando o ciclo de vida das suas aplicações em larga escal
Dev rioclaro   gerenciando o ciclo de vida das suas aplicações em larga escalDev rioclaro   gerenciando o ciclo de vida das suas aplicações em larga escal
Dev rioclaro gerenciando o ciclo de vida das suas aplicações em larga escal
 
Analise de Requisitos
Analise de RequisitosAnalise de Requisitos
Analise de Requisitos
 
Aula 7 - Técnicas de Planejamento
Aula 7 - Técnicas de PlanejamentoAula 7 - Técnicas de Planejamento
Aula 7 - Técnicas de Planejamento
 
Monitoracao Inteligente na Globo.com
Monitoracao Inteligente na Globo.comMonitoracao Inteligente na Globo.com
Monitoracao Inteligente na Globo.com
 
Planificação do Projeto de Software
Planificação do Projeto de SoftwarePlanificação do Projeto de Software
Planificação do Projeto de Software
 
Em Direção às Redes Programáveis na Internet do Futuro
Em Direção às Redes Programáveis na Internet do FuturoEm Direção às Redes Programáveis na Internet do Futuro
Em Direção às Redes Programáveis na Internet do Futuro
 
Modelos de desenvolvimento de software (dino brasilis)
Modelos de desenvolvimento de software (dino brasilis)Modelos de desenvolvimento de software (dino brasilis)
Modelos de desenvolvimento de software (dino brasilis)
 
Aula Gestão de Projetos
Aula Gestão de ProjetosAula Gestão de Projetos
Aula Gestão de Projetos
 
Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...
Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...
Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...
 
Aula 6 - Qualidade de Software
Aula 6 - Qualidade de SoftwareAula 6 - Qualidade de Software
Aula 6 - Qualidade de Software
 
Plano do projeto de software
Plano do projeto de softwarePlano do projeto de software
Plano do projeto de software
 
Participação do Time de Teste em Projetos Scrum
Participação do Time de Teste em Projetos ScrumParticipação do Time de Teste em Projetos Scrum
Participação do Time de Teste em Projetos Scrum
 

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

  • 1. Overview sobre Arquitetura de 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ência Semâ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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. 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