5. Dificuldades * com arquitetura SOA * mudanças de schema * sistemas não escaláveis * segurança * transações complexas * etc
6. 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
8. 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%
9. 75% dos sites demoraram 400ms ou menos no servidor. A coisa tá feia mesmo!
10. 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
11. Diminua a quantidade de Requests * Junte os JavaScripts e CSS * Use Data URIs (consome menos banda) <img src="http://phpied.com/images/check.png" /> <img src=" data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAIAAAA7ljm RAAAAGElEQVQIW2P4DwcMDAxAfBvMAhEQMYgcACEHG8ELxtbPAAAAAElFTkSuQmCC" />
12. 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
14. 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.
17. Porque Refatorar? * Adicionar nova funcionalidade * Corrigir bugs * Melhorar o Design * Otimizar o código
18. Para refatorar… * Entender os motivos da mudança * Planejá-las * Coding Kata! (exercício de programação baseado em repetições)
19. 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
20. 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
21. Veja o exemplo em: http://github.com/dtsato/refactoring-experiment
22. Design de Código: a qualidade que faz a diferença Guilherme Silveira
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).
URI (Indentificador Uniforme de Recursos) – É uma forma de obter recursos na NET de forma otimizada.
Design ativo – decisões arquiteturiais direcionadas para melhorar o projeto Design passivo – maus cheiros, métricas, visualizações
Design ativo – decisões arquiteturiais direcionadas para melhorar o projeto Design passivo – maus cheiros, métricas, visualizações
Dificil em um projeto é implementar bem....
Dificil em um projeto é implementar bem....
Dificil em um projeto é implementar bem....
Dificil em um projeto é implementar bem....
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
Citou alguns Cases
Você precisa confiar em um terceiro Só conseguimos garantir o que está em nosso controle.
Cai...mas os Data Center também caem Temos que nos precaver com redundâncias de aplicações, roteamento, etc
Grandes empresas usam. Provavelmente até a Apple Não infinita mas é virtualmente ilimitada
Quase trezentas instâncias em poucos minutos
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
Decisões que você precisa tomar ao iniciar um projeto
Fowler: Arquitetura é aquela coisa que é difícil de mudar depois. E deve existir o mínimo possível dessa coisa.
Tomar as decisões na hora certa Diminuir sua divida técnica Foque nos lugares mais alterados
Testes e Deploy
sistema de gerenciamento do IG (marketing) Usabilidade, Performance, Duplicidade e edição Simultânia
Interface intuitiva (games) Reunir as informações Trazer um pouco da carga para lado do cliente Servidores leves (NoSQL)
Não tem métodos, Classes, padrões
Não tem métodos, Classes, padrões
Criar objetos
Pyccuracy, Selenium, Zope, HTML Unit, Zombie, Capybara