SlideShare uma empresa Scribd logo
1 de 70
Ismael Soares 2011
1º Dia
Key Notes
Aprendizados de grandes Sistema HTTP Jim Webber
Dificuldades * com arquitetura SOA * mudanças de schema * sistemas não escaláveis * segurança * transações complexas  * etc
Case * serviço de SMS por voz onde a utilização de REST com middleware de HTML comum foi mais barata que a solução baseada em ESB (Enterprise Service Bus) http://pt.wikipedia.org/wiki/Enterprise_Service_Bus
Otimização de Sites Sérgio Lopes
A importância de otimizar um site... * Cada 400ms de melhora, o Yahoo! aumenta o tráfego em 9% * Ao diminuir 2.2s de sua página principal, a Mozilla aumentou em 15% os downloads do FireFox * 100ms de melhora aumentaram o faturamento da Amazon em 1% * O Google fez um experimento aumentando o número de resultados da busca de 10 para 30 levando de 0.4 para 0.9s. O tráfego caiu 20% * 2s a mais na busca do Bing diminuíram o faturamento em 4,3%
75% dos sites demoraram 400ms ou menos no servidor. A coisa tá feia mesmo!
Diminua o tamanho das Requests * Habilitar o GZIP no servidor * Comprimir o JavaScript, CSS e HTML * Não redimensionar Imagens no HTML * Otimize as imagens * Diminua cookies e headers
Diminua a quantidade de Requests * Junte os JavaScripts e CSS * Use Data URIs (consome menos banda) <img src=&quot;http://phpied.com/images/check.png&quot; /> <img src=&quot; data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAIAAAA7ljm RAAAAGElEQVQIW2P4DwcMDAxAfBvMAhEQMYgcACEHG8ELxtbPAAAAAElFTkSuQmCC&quot; />
Outras dicas * Coloque o css no inicio da página * Coloque o javaScript no fim da página * Carregamento de Js assíncrono * Adie o carregamento do for possível * Use ferramentas de diagnóstico
Engenharia de performance no Twitter Evan Weaver
Pontos principais * mostrou algumas técnicas para escalar utilizadas pela equipe do Twitter * otimizar o garbadge collector do Ruby * Porque devemos acessar os dados em massa e como gerencia-los na memória.
Trilhas
Refatoração em Larga Escala Danilo Sato
Porque Refatorar? * Adicionar nova funcionalidade * Corrigir bugs * Melhorar o Design * Otimizar o código
Para refatorar… * Entender os motivos da mudança * Planejá-las * Coding Kata!  (exercício de programação baseado em repetições)
Para refatorar… * Entender os motivos da mudança * Planejá-las * Coding Kata! (exercício de programação baseado em repetições) * Fazer o passo-a-passo * Identificar o objetivo - Design ativo - Design passivo * Traçar a estratégia
Para refatorar… * isole o impacto das mudanças * baby Steps  * mantenha os testes passando * Regredir para progredir * Manter o plano traçado * Se possível, faça um diagrama de efeitos * Use ferramentas
Veja o exemplo em: http://github.com/dtsato/refactoring-experiment
Design de Código: a qualidade que faz a diferença Guilherme Silveira
Dificuldades em um projeto *   Implementação * Design * Arquitetura
Design =  como seu código se comunica Implementação =  como seu código é executado
Não adianta ter uma boa arquitetura se ela for difícil de entender  Porque a única coisa que existe de fato é a implementação!
Não dá para falar de arquitetura ou design sem falar de implementação
Em suma, cuide do código! Faça-o mais legível possível Porque um dia você vai precisar dar manutenção nele e ai você não poder reclamar
Divida Técnica Alexandre Freire
Tipos... Irresponsável Consciente
Débito não é Divida
Divida se paga
* Atrasos * Bugs * Sistema Engessado * Baixa Cobertura de Código * Falha de comunicação
Calcule e pague
2º Dia
Key Notes
Caching e NoSQL? Kunal Bhasin
Que tal Centenas de Gigabytes no cache da memória?
Garbage Collector não deixa!
Os caras da TerraCotta conseguiram resolver este problema
Em 2003, Greg Luck começou o projeto do  Ehcache . Em 2009 a TerraCotta assumiu o projeto.
O Ehcache gerencia os objetos que estão em cache e decide quando joga-los ou não no lixo.
MythBuster – Mission Cloud Computing @NASA Khawaja Shams
Cloud Computing
Cloud não é seguro?
Cloud não é confiável?
Cloud é apenas para pequenas empresas?
Amazon
O Jet Propulsion Laboratory da NASA +TI
Evolução da Arquitetura  como fazê-la funcionar  Rebecca Parson
Arquitetura Evolucionária  Vs Design Emergente
www.ibm.com/developerworks/br/java/library/j-eaed10/ Arquitetura Design
A hora de agir
Usar ferramentas fáceis de mudar
Automatize...
Almoço
Trilhas
Edição de Homes com Javascript End to End Jorge Walendowsky
Dificuldades no...
Sacadas...
Java Script  + Json  + NodeJs + HTML 5
Separam a lógica do HTML
Programação funcional Com OO em Java Script Christiano Milfont
Dificuldades com JS
Linguagem Fraca
Usar técnicas para contornar...
Testes de Interface Andrews Medina Francisco Souza
Várias Ferramentas...
Splinter
 
Referências http://en.wikipedia.org/wiki/Data_URI_scheme blog.caelum.com.br/qcon-2011-como-foi-a-segunda-edicao-do-principal-evento-de-arquitetos-e-desenvolvedores-no-brasil/

Mais conteúdo relacionado

Semelhante a SOA, Otimização, Refatoração e Arquitetura Evolutiva

[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...iMasters
 
Webinar: Oportunidades e requisitos no projeto de hardware para IoT
Webinar: Oportunidades e requisitos no projeto de hardware para IoTWebinar: Oportunidades e requisitos no projeto de hardware para IoT
Webinar: Oportunidades e requisitos no projeto de hardware para IoTEmbarcados
 
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...Taller Negócio Digitais
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sitesthiagolima
 
Edge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudEdge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudAlvaro Viebrantz
 
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresceEncontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresceCarolina Karklis
 
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchXen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchBernardo Donadio
 
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Renato Groff
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsJosé Alexandre Macedo
 
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on AzureTDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azuretdc-globalcode
 
Big Data, Performance, Posix, RTB no mercado de publicidade online
Big Data, Performance, Posix, RTB no mercado de publicidade onlineBig Data, Performance, Posix, RTB no mercado de publicidade online
Big Data, Performance, Posix, RTB no mercado de publicidade onlineTiago Peczenyj
 
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Renato Groff
 
O que vi na QCon 2012 São Paulo
O que vi na QCon 2012 São PauloO que vi na QCon 2012 São Paulo
O que vi na QCon 2012 São PauloIsmael
 
Infraestrutura como código Terraform aws openshift Ansible
Infraestrutura como código Terraform aws openshift AnsibleInfraestrutura como código Terraform aws openshift Ansible
Infraestrutura como código Terraform aws openshift AnsibleClaudemir de Almeida Rosa
 
Minicurso Ajax - 5. Semana de Informática PUC Minas São Gabriel
Minicurso Ajax - 5. Semana de Informática PUC Minas São GabrielMinicurso Ajax - 5. Semana de Informática PUC Minas São Gabriel
Minicurso Ajax - 5. Semana de Informática PUC Minas São GabrielMarcelo Linhares
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme ProgrammingRodrigo Branas
 
Boas Práticas em Aplicações Silverlight 2
Boas Práticas em Aplicações Silverlight 2Boas Práticas em Aplicações Silverlight 2
Boas Práticas em Aplicações Silverlight 2sagostinho
 

Semelhante a SOA, Otimização, Refatoração e Arquitetura Evolutiva (20)

[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
 
Webinar: Oportunidades e requisitos no projeto de hardware para IoT
Webinar: Oportunidades e requisitos no projeto de hardware para IoTWebinar: Oportunidades e requisitos no projeto de hardware para IoT
Webinar: Oportunidades e requisitos no projeto de hardware para IoT
 
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
 
Edge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudEdge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google Cloud
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresceEncontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
 
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchXen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
 
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
Revista programar 12
Revista programar 12Revista programar 12
Revista programar 12
 
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on AzureTDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
 
Big Data, Performance, Posix, RTB no mercado de publicidade online
Big Data, Performance, Posix, RTB no mercado de publicidade onlineBig Data, Performance, Posix, RTB no mercado de publicidade online
Big Data, Performance, Posix, RTB no mercado de publicidade online
 
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
 
O que vi na QCon 2012 São Paulo
O que vi na QCon 2012 São PauloO que vi na QCon 2012 São Paulo
O que vi na QCon 2012 São Paulo
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Infraestrutura como código Terraform aws openshift Ansible
Infraestrutura como código Terraform aws openshift AnsibleInfraestrutura como código Terraform aws openshift Ansible
Infraestrutura como código Terraform aws openshift Ansible
 
Minicurso Ajax - 5. Semana de Informática PUC Minas São Gabriel
Minicurso Ajax - 5. Semana de Informática PUC Minas São GabrielMinicurso Ajax - 5. Semana de Informática PUC Minas São Gabriel
Minicurso Ajax - 5. Semana de Informática PUC Minas São Gabriel
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme Programming
 
Boas Práticas em Aplicações Silverlight 2
Boas Práticas em Aplicações Silverlight 2Boas Práticas em Aplicações Silverlight 2
Boas Práticas em Aplicações Silverlight 2
 

Mais de Ismael

TDC 2020 - Trilha de Management 3.0 e Gestão Ágil
TDC 2020 - Trilha de Management 3.0 e Gestão ÁgilTDC 2020 - Trilha de Management 3.0 e Gestão Ágil
TDC 2020 - Trilha de Management 3.0 e Gestão ÁgilIsmael
 
Introducao ao Pensamento Sistemico
Introducao ao Pensamento SistemicoIntroducao ao Pensamento Sistemico
Introducao ao Pensamento SistemicoIsmael
 
Testes de unidade alem do basico
Testes de unidade alem do basicoTestes de unidade alem do basico
Testes de unidade alem do basicoIsmael
 
Bluesoft Culture
Bluesoft CultureBluesoft Culture
Bluesoft CultureIsmael
 
Como dar e receber feedbacks
Como dar e receber feedbacksComo dar e receber feedbacks
Como dar e receber feedbacksIsmael
 
Eficiencia de fluxo
Eficiencia de fluxoEficiencia de fluxo
Eficiencia de fluxoIsmael
 
Como você testa seu software TDC 2017
Como você testa seu software  TDC 2017Como você testa seu software  TDC 2017
Como você testa seu software TDC 2017Ismael
 
Como ter Entregas Frequentes
Como ter Entregas FrequentesComo ter Entregas Frequentes
Como ter Entregas FrequentesIsmael
 
JUnit 5 vs JUnit 4
JUnit 5 vs JUnit 4JUnit 5 vs JUnit 4
JUnit 5 vs JUnit 4Ismael
 
Conceitos por trás do Ágil
Conceitos por trás do ÁgilConceitos por trás do Ágil
Conceitos por trás do ÁgilIsmael
 
Boas Praticas de Testes, Bad Smell e Outros Macetes
Boas Praticas de Testes, Bad Smell e Outros MacetesBoas Praticas de Testes, Bad Smell e Outros Macetes
Boas Praticas de Testes, Bad Smell e Outros MacetesIsmael
 
8 passos para mudança de John Kotter
8 passos para mudança de John Kotter8 passos para mudança de John Kotter
8 passos para mudança de John KotterIsmael
 
Curva da Mudança Kubler-Ross
Curva da Mudança Kubler-RossCurva da Mudança Kubler-Ross
Curva da Mudança Kubler-RossIsmael
 
DevCamp 2016
DevCamp 2016DevCamp 2016
DevCamp 2016Ismael
 
7 Caracteristicas de um bom Lider Agil
7 Caracteristicas de um bom Lider Agil7 Caracteristicas de um bom Lider Agil
7 Caracteristicas de um bom Lider AgilIsmael
 
Law of demeter
Law of demeterLaw of demeter
Law of demeterIsmael
 
Junit Lambda
Junit LambdaJunit Lambda
Junit LambdaIsmael
 
Feedback dos Testes
Feedback dos TestesFeedback dos Testes
Feedback dos TestesIsmael
 
Refactoring Databases - Estrategias
Refactoring Databases - EstrategiasRefactoring Databases - Estrategias
Refactoring Databases - EstrategiasIsmael
 
Refactoring Databases - parte 1
Refactoring Databases - parte 1Refactoring Databases - parte 1
Refactoring Databases - parte 1Ismael
 

Mais de Ismael (20)

TDC 2020 - Trilha de Management 3.0 e Gestão Ágil
TDC 2020 - Trilha de Management 3.0 e Gestão ÁgilTDC 2020 - Trilha de Management 3.0 e Gestão Ágil
TDC 2020 - Trilha de Management 3.0 e Gestão Ágil
 
Introducao ao Pensamento Sistemico
Introducao ao Pensamento SistemicoIntroducao ao Pensamento Sistemico
Introducao ao Pensamento Sistemico
 
Testes de unidade alem do basico
Testes de unidade alem do basicoTestes de unidade alem do basico
Testes de unidade alem do basico
 
Bluesoft Culture
Bluesoft CultureBluesoft Culture
Bluesoft Culture
 
Como dar e receber feedbacks
Como dar e receber feedbacksComo dar e receber feedbacks
Como dar e receber feedbacks
 
Eficiencia de fluxo
Eficiencia de fluxoEficiencia de fluxo
Eficiencia de fluxo
 
Como você testa seu software TDC 2017
Como você testa seu software  TDC 2017Como você testa seu software  TDC 2017
Como você testa seu software TDC 2017
 
Como ter Entregas Frequentes
Como ter Entregas FrequentesComo ter Entregas Frequentes
Como ter Entregas Frequentes
 
JUnit 5 vs JUnit 4
JUnit 5 vs JUnit 4JUnit 5 vs JUnit 4
JUnit 5 vs JUnit 4
 
Conceitos por trás do Ágil
Conceitos por trás do ÁgilConceitos por trás do Ágil
Conceitos por trás do Ágil
 
Boas Praticas de Testes, Bad Smell e Outros Macetes
Boas Praticas de Testes, Bad Smell e Outros MacetesBoas Praticas de Testes, Bad Smell e Outros Macetes
Boas Praticas de Testes, Bad Smell e Outros Macetes
 
8 passos para mudança de John Kotter
8 passos para mudança de John Kotter8 passos para mudança de John Kotter
8 passos para mudança de John Kotter
 
Curva da Mudança Kubler-Ross
Curva da Mudança Kubler-RossCurva da Mudança Kubler-Ross
Curva da Mudança Kubler-Ross
 
DevCamp 2016
DevCamp 2016DevCamp 2016
DevCamp 2016
 
7 Caracteristicas de um bom Lider Agil
7 Caracteristicas de um bom Lider Agil7 Caracteristicas de um bom Lider Agil
7 Caracteristicas de um bom Lider Agil
 
Law of demeter
Law of demeterLaw of demeter
Law of demeter
 
Junit Lambda
Junit LambdaJunit Lambda
Junit Lambda
 
Feedback dos Testes
Feedback dos TestesFeedback dos Testes
Feedback dos Testes
 
Refactoring Databases - Estrategias
Refactoring Databases - EstrategiasRefactoring Databases - Estrategias
Refactoring Databases - Estrategias
 
Refactoring Databases - parte 1
Refactoring Databases - parte 1Refactoring Databases - parte 1
Refactoring Databases - parte 1
 

SOA, Otimização, Refatoração e Arquitetura Evolutiva

Notas do Editor

  1. De um lado o consumidor (SOAP e RNI) e do outro lado o Produtor (REST e JNI). No meio temos o ESB como Middlware (meio de comunicação entre as diversas tecnologias). O ESB fornece um driver de evento e padrões baseados em mensagens (BUS).
  2. URI (Indentificador Uniforme de Recursos) – É uma forma de obter recursos na NET de forma otimizada.
  3. Design ativo – decisões arquiteturiais direcionadas para melhorar o projeto Design passivo – maus cheiros, métricas, visualizações
  4. Design ativo – decisões arquiteturiais direcionadas para melhorar o projeto Design passivo – maus cheiros, métricas, visualizações
  5. Dificil em um projeto é implementar bem....
  6. Dificil em um projeto é implementar bem....
  7. Dificil em um projeto é implementar bem....
  8. Dificil em um projeto é implementar bem....
  9. Dívida irresponsável - proposital ou não Dívida consciente - empréstimo do carro, dívida de cartão de crédito ou cheque especial ou empréstimo da casa
  10. Citou alguns Cases
  11. Você precisa confiar em um terceiro Só conseguimos garantir o que está em nosso controle.
  12. Cai...mas os Data Center também caem Temos que nos precaver com redundâncias de aplicações, roteamento, etc
  13. Grandes empresas usam. Provavelmente até a Apple Não infinita mas é virtualmente ilimitada
  14. Quase trezentas instâncias em poucos minutos
  15. O Jet Propulsion Laboratory da NASA tem feito investimentos significativos nos últimos três anos através de uma exemplar parceria entre as missões e a TI Imagens de 45 Giga pixels vindos do espaço em 10 minutos com Cloud
  16. Decisões que você precisa tomar ao iniciar um projeto
  17. Fowler: Arquitetura é aquela coisa que é difícil de mudar depois. E deve existir o mínimo possível dessa coisa.
  18. Tomar as decisões na hora certa Diminuir sua divida técnica Foque nos lugares mais alterados
  19. Testes e Deploy
  20. sistema de gerenciamento do IG (marketing) Usabilidade, Performance, Duplicidade e edição Simultânia
  21. Interface intuitiva (games) Reunir as informações Trazer um pouco da carga para lado do cliente Servidores leves (NoSQL)
  22. Não tem métodos, Classes, padrões
  23. Não tem métodos, Classes, padrões
  24. Criar objetos
  25. Pyccuracy, Selenium, Zope, HTML Unit, Zombie, Capybara