ArquiteturaFlexíveleEscalávelby Cesar Grillo
Dojododia:18/02/2016
EquipedeDesenvolvimentodeSistemas
Começandocom 5segredosparaseobterumsistema altamente escalável
STATELESS(protocolosemestado)
● protocolodecomunicação,ondeomesmoconsistedeparesderequisiçãoerespostas
independentes.Ex:“I...
RequestResponseTime
● otempoqueaaplicaçãolevaparaatenderacadarequisiçãotemqueseromaisbaixopossível
● Solução:otimizarotrab...
Cache
● Páginasquenecessitamguardarbancodedadosparaseremrenderizadas
● guardaruma“cópia”dapáginaéimportante
● depoisésómos...
RemoteData
● Obancodedadosnãodeveficarnamesmamáquinaqueoservidordeaplicação,ouoendereçodo
bancodeveráserconfigurável
● emu...
ProxyReverso
● utilizadoparamascararalgumasdastécnicasdecaching
● paraimplementaralgumastécnicasdecachingeprincipalmentepa...
“Boaspráticasdeprogramação”
Algunsprincípiosqueumbomprogramadordeveseguir:
(V)Refatoraromáximopossível
(V)Semprerealizartestesfuncionaiseunitários
(V)...
(V)Nãoexagerarnoscomentários
(V)Manterumpadrãonoscódigos
(V)Evitarcódigo“in-line”muitoextenso
(V)Pareamentocom outrosprogr...
TDD(testdrivendevelopment)
BenefíciosdoTDD
(V)Deixaocódigocomqualidade
(V)Ajudaamelhoraroraciocínio doprogramador
(V)Fazoprogramadorsesentirsegurodoq...
DesvantagensdequemnãoutilizaTDD
(X)Dificuldadesemcomeçarafazertestes(faltadeexperiência)
(X)Curvadeaprendizado(dependedavo...
Exemplosdetesteunitárioefuncional
testefeitonoNetBeansIDE8.1
testefeitonoseleniumIDE
Oprogramadortambémdeveseguirestes3passos:
Vermelho-Verde-Refatora
EscreveumTestequeinicialmente não
passa
Fazotestepassar
...
DDD(domaindrivendesign)-projetoorientadoadomínio
● nomeoriginadodolivroescritoporEricEvans,donodadomainLanguage(empresade
...
MDD(modeldrivendesign)-Projetodirigidopelomodelo
● Utilizandoumalinguagemubíquaépossívelcriarummodelodedomínio,atravésdomd...
BlocosdeconstruçãodoMDD
Interface do usuário - responsável pela exibição de
informações do sistema ao usuário e também por...
Camadaanti-corrupção
● Quandosetemumsistemalegado,comcódigomuitocomplexoeestasendoescritoumsistemanovo
comocódigorazoavelm...
CQRS(Responsabilidade deSegregaçãodocomandoQuery)
● padrãodearquiteturadocumentadoporGregYoung
● essepadrãoseparaasoperaçõ...
Exemplode padrãoCQRS
UI - dependendo do usuário, pode
executar opções de leitura ou escrita
dedados
Service Interfaces - p...
Porúltimoenãomenosimportante…
BRAINSTORMING
Referências
● http://www.infoq.com/br/news/2011/10/construindo-sistema-escalavel
● http://sobrecodigo.com/os-4-segredos-pa...
Próximos SlideShares
Carregando em…5
×

Dojo - Arquitetura flexível e escalável

182 visualizações

Publicada em

Dojo apresentado no dia 18/02/2016 para a equipe de Projetos e Sistemas.

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
182
No SlideShare
0
A partir de incorporações
0
Número de incorporações
112
Ações
Compartilhamentos
0
Downloads
3
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Dojo - Arquitetura flexível e escalável

  1. 1. ArquiteturaFlexíveleEscalávelby Cesar Grillo Dojododia:18/02/2016 EquipedeDesenvolvimentodeSistemas
  2. 2. Começandocom 5segredosparaseobterumsistema altamente escalável
  3. 3. STATELESS(protocolosemestado) ● protocolodecomunicação,ondeomesmoconsistedeparesderequisiçãoerespostas independentes.Ex:“IP”e“HTTP”. ● Motivo: Casovocêprecise rodarsuaaplicaçãoemumcluster,vocênãoprendeoclienteemum “nó”docluster.
  4. 4. RequestResponseTime ● otempoqueaaplicaçãolevaparaatenderacadarequisiçãotemqueseromaisbaixopossível ● Solução:otimizarotrabalhoomelhorpossível
  5. 5. Cache ● Páginasquenecessitamguardarbancodedadosparaseremrenderizadas ● guardaruma“cópia”dapáginaéimportante ● depoisésómostraraquelacópiaparaopróximoqueacessarapágina
  6. 6. RemoteData ● Obancodedadosnãodeveficarnamesmamáquinaqueoservidordeaplicação,ouoendereçodo bancodeveráserconfigurável ● emumcluster,oidealéquetodososnósacessemomesmobancodedados,ounomínimoque todososbancosdoclusterestejamsincronizados
  7. 7. ProxyReverso ● utilizadoparamascararalgumasdastécnicasdecaching ● paraimplementaralgumastécnicasdecachingeprincipalmenteparaesconderdousuárioque vocêtemdiversosservidores ● elevaisero“front-end”dasuaaplicação ● Podetambémesconderdousuárioofatodevocêusarum“servidorderecursosestáticos” ● oproxyreversopodemascararoendereçorealdaaplicação
  8. 8. “Boaspráticasdeprogramação”
  9. 9. Algunsprincípiosqueumbomprogramadordeveseguir: (V)Refatoraromáximopossível (V)Semprerealizartestesfuncionaiseunitários (V)Deixarocódigolimpo(simples,direto,eficiente,elegante…) (V)Questionarosanalistasdesistemaquandosurgiremdúvidasousugestõesperanteuma determinadaatividade (V)Procurarentenderocódigo(nãoresolvercomum“CTRL+C”e“CTRL+V”) (V)Indentaçãocorreta
  10. 10. (V)Nãoexagerarnoscomentários (V)Manterumpadrãonoscódigos (V)Evitarcódigo“in-line”muitoextenso (V)Pareamentocom outrosprogramadores(assimvocêcompartilhaconhecimentoetroca experiências) (V)Fazerdiáriasparasabercomofoioexpedienteatéaquelemomento
  11. 11. TDD(testdrivendevelopment)
  12. 12. BenefíciosdoTDD (V)Deixaocódigocomqualidade (V)Ajudaamelhoraroraciocínio doprogramador (V)Fazoprogramadorsesentirsegurodoqueestáfazendo (V)Trabalhoemequipe (V)Documentação(Com ostestesunitários a“documentação” égeradaantesmesmodanovafeatureserimplementadaepermanecefiela qualquer alteração)
  13. 13. DesvantagensdequemnãoutilizaTDD (X)Dificuldadesemcomeçarafazertestes(faltadeexperiência) (X)Curvadeaprendizado(dependedavontadeedisponibilidadedoprogramador) (X)Cultura(programadoresreclamamda“faltadetempo”)
  14. 14. Exemplosdetesteunitárioefuncional testefeitonoNetBeansIDE8.1 testefeitonoseleniumIDE
  15. 15. Oprogramadortambémdeveseguirestes3passos: Vermelho-Verde-Refatora EscreveumTestequeinicialmente não passa Fazotestepassar Melhora ocódigo
  16. 16. DDD(domaindrivendesign)-projetoorientadoadomínio ● nomeoriginadodolivroescritoporEricEvans,donodadomainLanguage(empresade desenvolvimentodesoftware) ● DDDpodeservistocomoavoltadaorientaçãoaobjetos ● algunspontosimportantesdoDDD: alinhamentodocódigocomonegócio,favorece reutilização,mínimodeacoplamentoeindependênciadatecnologia
  17. 17. MDD(modeldrivendesign)-Projetodirigidopelomodelo ● Utilizandoumalinguagemubíquaépossívelcriarummodelodedomínio,atravésdomdd ● aideiaéqueomodeloabstratodeveserumarepresentaçãoperfeitadoseudomínio ● tudoqueaparecernonegócio,deveestarnomodelo ● Agrandemaioriadaspessoasquemodelamodomíniosãonecessariamentepessoasquecolocama mãoemcódigo(Hands-onModelers) ● mddéumprocessocontínuo
  18. 18. BlocosdeconstruçãodoMDD Interface do usuário - responsável pela exibição de informações do sistema ao usuário e também por interpretar comandos dousuário Aplicação - apenas uma camada fina, responsável por conectar aInterfacedeUsuárioàscamadasinferiores Domínio - representa os conceitos, regras e lógicas de negócio. Todoofoco deDDDestánessacamada Infra-estrutura - fornece recursos técnicos que darão suporte àscamadassuperiores
  19. 19. Camadaanti-corrupção ● Quandosetemumsistemalegado,comcódigomuitocomplexoeestasendoescritoumsistemanovo comocódigorazoavelmentebemfeito,devesecriarumacamadaentreessesdoissistemas ● responsávelportraduzireadaptaraschamadasparaosistemalegado,usandoumafachada interna
  20. 20. CQRS(Responsabilidade deSegregaçãodocomandoQuery) ● padrãodearquiteturadocumentadoporGregYoung ● essepadrãoseparaasoperaçõesdeleituraeescritaemdiferentesmodelos ● OCQRSfoidocumentadoduranteaimplementaçãodeprojetosutilizando osconceitosdeDDD(domaindrivendesign) ● OCQRSéumabordagem,umaformadepensare nãoumareceitapronta ● Eleéaplicávelagrandessistemasdistribuídos,permitindoassim construiraplicaçõesmaisescaláveis
  21. 21. Exemplode padrãoCQRS UI - dependendo do usuário, pode executar opções de leitura ou escrita dedados Service Interfaces - pode interagir commodelosdiferentes Querymodel-operaçõesdeleitura Commandmodel-comandos
  22. 22. Porúltimoenãomenosimportante… BRAINSTORMING
  23. 23. Referências ● http://www.infoq.com/br/news/2011/10/construindo-sistema-escalavel ● http://sobrecodigo.com/os-4-segredos-para-um-sistema-altamente-escalavel/ ● http://eltonminetto.net/docs/app_web_escalaveis.pdf ● http://www.profissionaisti.com.br/2014/10/quais-design-patterns-devo-usar-no-meu-projeto/ ● http://www.infoq.com/br/news/2011/11/cqrs

×