SlideShare ist ein Scribd-Unternehmen logo
1 von 23
ArquiteturaFlexíveleEscalávelby Cesar Grillo
Dojododia:18/02/2016
EquipedeDesenvolvimentodeSistemas
Começandocom 5segredosparaseobterumsistema altamente escalável
STATELESS(protocolosemestado)
● protocolodecomunicação,ondeomesmoconsistedeparesderequisiçãoerespostas
independentes.Ex:“IP”e“HTTP”.
● Motivo: Casovocêprecise rodarsuaaplicaçãoemumcluster,vocênãoprendeoclienteemum
“nó”docluster.
RequestResponseTime
● otempoqueaaplicaçãolevaparaatenderacadarequisiçãotemqueseromaisbaixopossível
● Solução:otimizarotrabalhoomelhorpossível
Cache
● Páginasquenecessitamguardarbancodedadosparaseremrenderizadas
● guardaruma“cópia”dapáginaéimportante
● depoisésómostraraquelacópiaparaopróximoqueacessarapágina
RemoteData
● Obancodedadosnãodeveficarnamesmamáquinaqueoservidordeaplicação,ouoendereçodo
bancodeveráserconfigurável
● emumcluster,oidealéquetodososnósacessemomesmobancodedados,ounomínimoque
todososbancosdoclusterestejamsincronizados
ProxyReverso
● utilizadoparamascararalgumasdastécnicasdecaching
● paraimplementaralgumastécnicasdecachingeprincipalmenteparaesconderdousuárioque
vocêtemdiversosservidores
● elevaisero“front-end”dasuaaplicação
● Podetambémesconderdousuárioofatodevocêusarum“servidorderecursosestáticos”
● oproxyreversopodemascararoendereçorealdaaplicação
“Boaspráticasdeprogramação”
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
(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
TDD(testdrivendevelopment)
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)
DesvantagensdequemnãoutilizaTDD
(X)Dificuldadesemcomeçarafazertestes(faltadeexperiência)
(X)Curvadeaprendizado(dependedavontadeedisponibilidadedoprogramador)
(X)Cultura(programadoresreclamamda“faltadetempo”)
Exemplosdetesteunitárioefuncional
testefeitonoNetBeansIDE8.1
testefeitonoseleniumIDE
Oprogramadortambémdeveseguirestes3passos:
Vermelho-Verde-Refatora
EscreveumTestequeinicialmente não
passa
Fazotestepassar
Melhora ocódigo
DDD(domaindrivendesign)-projetoorientadoadomínio
● nomeoriginadodolivroescritoporEricEvans,donodadomainLanguage(empresade
desenvolvimentodesoftware)
● DDDpodeservistocomoavoltadaorientaçãoaobjetos
● algunspontosimportantesdoDDD: alinhamentodocódigocomonegócio,favorece
reutilização,mínimodeacoplamentoeindependênciadatecnologia
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
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
Camadaanti-corrupção
● Quandosetemumsistemalegado,comcódigomuitocomplexoeestasendoescritoumsistemanovo
comocódigorazoavelmentebemfeito,devesecriarumacamadaentreessesdoissistemas
● responsávelportraduzireadaptaraschamadasparaosistemalegado,usandoumafachada
interna
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
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
Porúltimoenãomenosimportante…
BRAINSTORMING
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

Weitere ähnliche Inhalte

Was ist angesagt?

Fazendo uma manada de elefantes passar por baixo da porta
Fazendo uma manada de elefantes passar por baixo da portaFazendo uma manada de elefantes passar por baixo da porta
Fazendo uma manada de elefantes passar por baixo da portaFabio Telles Rodriguez
 
pf: O Filtro de Pacotes do OpenBSD
pf: O Filtro de Pacotes do OpenBSDpf: O Filtro de Pacotes do OpenBSD
pf: O Filtro de Pacotes do OpenBSDVinícius Zavam
 
Debian 6: Instalação e Hardening
Debian 6: Instalação e HardeningDebian 6: Instalação e Hardening
Debian 6: Instalação e HardeningBruna Griebeler
 
Tunando sua aplicação LNMP
Tunando sua aplicação LNMPTunando sua aplicação LNMP
Tunando sua aplicação LNMPLeandro Mendes
 
Conhecendo o Nodejs
Conhecendo o NodejsConhecendo o Nodejs
Conhecendo o NodejsCaio Cutrim
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoEduardo Bohrer
 
Sim, existe vida além do FTP!
Sim, existe vida além do FTP!Sim, existe vida além do FTP!
Sim, existe vida além do FTP!Gustavo Pereira
 
Introdução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SPIntrodução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SPArthur Fücher
 
Minicurso Criando Uma Distro JoomlaCD - V FGSL e I SGSL
Minicurso Criando Uma Distro JoomlaCD - V FGSL e I SGSLMinicurso Criando Uma Distro JoomlaCD - V FGSL e I SGSL
Minicurso Criando Uma Distro JoomlaCD - V FGSL e I SGSLfgsl
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJSGiovanni Bassi
 
TDC2016POA | Trilha Python - Heimdall Guard - Spam Filter
TDC2016POA | Trilha Python - Heimdall Guard - Spam FilterTDC2016POA | Trilha Python - Heimdall Guard - Spam Filter
TDC2016POA | Trilha Python - Heimdall Guard - Spam Filtertdc-globalcode
 
Tutorial do shell script para criar imagens de HDs Win7 usando Linux
Tutorial do shell script para criar imagens de HDs Win7 usando LinuxTutorial do shell script para criar imagens de HDs Win7 usando Linux
Tutorial do shell script para criar imagens de HDs Win7 usando LinuxLuiz Francisco Bozo
 

Was ist angesagt? (20)

Fazendo uma manada de elefantes passar por baixo da porta
Fazendo uma manada de elefantes passar por baixo da portaFazendo uma manada de elefantes passar por baixo da porta
Fazendo uma manada de elefantes passar por baixo da porta
 
pf: O Filtro de Pacotes do OpenBSD
pf: O Filtro de Pacotes do OpenBSDpf: O Filtro de Pacotes do OpenBSD
pf: O Filtro de Pacotes do OpenBSD
 
Node js - Javascript Server Side
Node js - Javascript Server SideNode js - Javascript Server Side
Node js - Javascript Server Side
 
Postgres Big data
Postgres Big dataPostgres Big data
Postgres Big data
 
Debian 6: Instalação e Hardening
Debian 6: Instalação e HardeningDebian 6: Instalação e Hardening
Debian 6: Instalação e Hardening
 
Tunando sua aplicação LNMP
Tunando sua aplicação LNMPTunando sua aplicação LNMP
Tunando sua aplicação LNMP
 
Conhecendo o Nodejs
Conhecendo o NodejsConhecendo o Nodejs
Conhecendo o Nodejs
 
Postgres Tuning
Postgres TuningPostgres Tuning
Postgres Tuning
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
 
Hacking Linux
Hacking LinuxHacking Linux
Hacking Linux
 
Sim, existe vida além do FTP!
Sim, existe vida além do FTP!Sim, existe vida além do FTP!
Sim, existe vida além do FTP!
 
PostgreSQL Rock Star
PostgreSQL Rock StarPostgreSQL Rock Star
PostgreSQL Rock Star
 
Introdução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SPIntrodução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SP
 
Servidores linux
Servidores linuxServidores linux
Servidores linux
 
Minicurso Criando Uma Distro JoomlaCD - V FGSL e I SGSL
Minicurso Criando Uma Distro JoomlaCD - V FGSL e I SGSLMinicurso Criando Uma Distro JoomlaCD - V FGSL e I SGSL
Minicurso Criando Uma Distro JoomlaCD - V FGSL e I SGSL
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJS
 
Replicação PostgreSQL com RepManager
Replicação PostgreSQL com RepManagerReplicação PostgreSQL com RepManager
Replicação PostgreSQL com RepManager
 
TDC2016POA | Trilha Python - Heimdall Guard - Spam Filter
TDC2016POA | Trilha Python - Heimdall Guard - Spam FilterTDC2016POA | Trilha Python - Heimdall Guard - Spam Filter
TDC2016POA | Trilha Python - Heimdall Guard - Spam Filter
 
Tutorial do shell script para criar imagens de HDs Win7 usando Linux
Tutorial do shell script para criar imagens de HDs Win7 usando LinuxTutorial do shell script para criar imagens de HDs Win7 usando Linux
Tutorial do shell script para criar imagens de HDs Win7 usando Linux
 
Padrão de Projeto Facade
Padrão de Projeto FacadePadrão de Projeto Facade
Padrão de Projeto Facade
 

Ähnlich wie Arquitetura Flexível e Escalável

3000 questoes de informatica resolvidos banco do brasil (bb), cef, ibge, tre...
3000 questoes de informatica  resolvidos banco do brasil (bb), cef, ibge, tre...3000 questoes de informatica  resolvidos banco do brasil (bb), cef, ibge, tre...
3000 questoes de informatica resolvidos banco do brasil (bb), cef, ibge, tre...Rafaella Botelho
 
3000 questoes de informatica resolvidos banco do brasil (bb), cef, ibge, tre...
3000 questoes de informatica  resolvidos banco do brasil (bb), cef, ibge, tre...3000 questoes de informatica  resolvidos banco do brasil (bb), cef, ibge, tre...
3000 questoes de informatica resolvidos banco do brasil (bb), cef, ibge, tre...Thiago Carvalho
 
See Project - Segurança em Cloud Computing FLISOL GO 2010
See Project - Segurança em Cloud Computing FLISOL GO 2010See Project - Segurança em Cloud Computing FLISOL GO 2010
See Project - Segurança em Cloud Computing FLISOL GO 2010Marcelo Fleury
 
OpenLDAP, criando e explorando um overlay
OpenLDAP, criando e explorando um overlayOpenLDAP, criando e explorando um overlay
OpenLDAP, criando e explorando um overlayDiego Santos
 
Open ldap criando e explorando um overlay
Open ldap   criando e explorando um overlayOpen ldap   criando e explorando um overlay
Open ldap criando e explorando um overlayMarcelo Fleury
 
Apostila informatica para concursos robson aquila
Apostila informatica para concursos   robson aquilaApostila informatica para concursos   robson aquila
Apostila informatica para concursos robson aquilaJosé Antonio Almeida
 
Apostila 3000 questoes (testes) resolvidos banco do brasil (bb), cef, ibge,...
Apostila   3000 questoes (testes) resolvidos banco do brasil (bb), cef, ibge,...Apostila   3000 questoes (testes) resolvidos banco do brasil (bb), cef, ibge,...
Apostila 3000 questoes (testes) resolvidos banco do brasil (bb), cef, ibge,...Claudio Santos
 
Domando a irreversibilidade com feature flags
Domando a irreversibilidade com feature flagsDomando a irreversibilidade com feature flags
Domando a irreversibilidade com feature flagsHugo Bessa
 
Oracle Exadata - Consolidação & Migração
Oracle Exadata - Consolidação & MigraçãoOracle Exadata - Consolidação & Migração
Oracle Exadata - Consolidação & MigraçãoRodrigo Almeida
 
PHP e a (in)segurança de aplicações
PHP e a (in)segurança de aplicaçõesPHP e a (in)segurança de aplicações
PHP e a (in)segurança de aplicaçõesrjsmelo
 
Segurança em servidores Linux
Segurança em servidores LinuxSegurança em servidores Linux
Segurança em servidores LinuxSoftD Abreu
 
TDC2016SP - Trilha BigData
TDC2016SP - Trilha BigDataTDC2016SP - Trilha BigData
TDC2016SP - Trilha BigDatatdc-globalcode
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linuxeliezer
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linuxeliezer
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linuxguest7a481e8
 
Imei módulo2 - ficha formativa nº4
Imei   módulo2 - ficha formativa nº4Imei   módulo2 - ficha formativa nº4
Imei módulo2 - ficha formativa nº4teacherpereira
 

Ähnlich wie Arquitetura Flexível e Escalável (20)

Backtrack4 inguma
Backtrack4 ingumaBacktrack4 inguma
Backtrack4 inguma
 
3000 questoes de informatica resolvidos banco do brasil (bb), cef, ibge, tre...
3000 questoes de informatica  resolvidos banco do brasil (bb), cef, ibge, tre...3000 questoes de informatica  resolvidos banco do brasil (bb), cef, ibge, tre...
3000 questoes de informatica resolvidos banco do brasil (bb), cef, ibge, tre...
 
3000 questoes de informatica resolvidos banco do brasil (bb), cef, ibge, tre...
3000 questoes de informatica  resolvidos banco do brasil (bb), cef, ibge, tre...3000 questoes de informatica  resolvidos banco do brasil (bb), cef, ibge, tre...
3000 questoes de informatica resolvidos banco do brasil (bb), cef, ibge, tre...
 
See Project - Segurança em Cloud Computing FLISOL GO 2010
See Project - Segurança em Cloud Computing FLISOL GO 2010See Project - Segurança em Cloud Computing FLISOL GO 2010
See Project - Segurança em Cloud Computing FLISOL GO 2010
 
OpenLDAP, criando e explorando um overlay
OpenLDAP, criando e explorando um overlayOpenLDAP, criando e explorando um overlay
OpenLDAP, criando e explorando um overlay
 
Open ldap criando e explorando um overlay
Open ldap   criando e explorando um overlayOpen ldap   criando e explorando um overlay
Open ldap criando e explorando um overlay
 
Apostila informatica para concursos robson aquila
Apostila informatica para concursos   robson aquilaApostila informatica para concursos   robson aquila
Apostila informatica para concursos robson aquila
 
Apostila 3000 questoes (testes) resolvidos banco do brasil (bb), cef, ibge,...
Apostila   3000 questoes (testes) resolvidos banco do brasil (bb), cef, ibge,...Apostila   3000 questoes (testes) resolvidos banco do brasil (bb), cef, ibge,...
Apostila 3000 questoes (testes) resolvidos banco do brasil (bb), cef, ibge,...
 
Domando a irreversibilidade com feature flags
Domando a irreversibilidade com feature flagsDomando a irreversibilidade com feature flags
Domando a irreversibilidade com feature flags
 
Oracle Exadata - Consolidação & Migração
Oracle Exadata - Consolidação & MigraçãoOracle Exadata - Consolidação & Migração
Oracle Exadata - Consolidação & Migração
 
Gerenciamento de memoria
Gerenciamento de memoriaGerenciamento de memoria
Gerenciamento de memoria
 
PHP e a (in)segurança de aplicações
PHP e a (in)segurança de aplicaçõesPHP e a (in)segurança de aplicações
PHP e a (in)segurança de aplicações
 
Serverless com python
Serverless com pythonServerless com python
Serverless com python
 
Segurança em servidores Linux
Segurança em servidores LinuxSegurança em servidores Linux
Segurança em servidores Linux
 
TDC2016SP - Trilha BigData
TDC2016SP - Trilha BigDataTDC2016SP - Trilha BigData
TDC2016SP - Trilha BigData
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linux
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linux
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linux
 
Arquitetura 8 2
Arquitetura 8 2Arquitetura 8 2
Arquitetura 8 2
 
Imei módulo2 - ficha formativa nº4
Imei   módulo2 - ficha formativa nº4Imei   módulo2 - ficha formativa nº4
Imei módulo2 - ficha formativa nº4
 

Arquitetura Flexível e Escalável