Arquitectura Web

125
ARQUITECTURA WEB ADOLFO SANZ DE DIEGO ENERO 2014

description

Historia evolutiva de la Web, entorno de ejecución y tecnologías en servidor, entorno de ejecución y tecnologías en cliente.

Transcript of Arquitectura Web

Page 1: Arquitectura Web

ARQUITECTURAWEBADOLFOSANZDEDIEGO

ENERO2014

Page 2: Arquitectura Web

1ACERCADE

Page 3: Arquitectura Web

1.1ÍNDICEContenidos:AcercadeIntroducciónHistoriaevolutivadelaWebArquitecturawebEntornodeejecuciónenservidorTecnologíasdeservidorEntornodeejecuciónenclienteTecnologíasdecliente

Page 4: Arquitectura Web

1.2ADOLFOSANZDEDIEGOAntiguoprogramadorwebJEEHoyendía:ProfesordeFPdeinformática:Hardware,SistemasOperativosRedes,Programación

FormadorFreelance:Java,AndroidJavaScript,jQueryJSF,Spring,HibernateGroovy&Grails

Megustaprogramar

Page 5: Arquitectura Web

1.3HACKALOVER

Paralosamantesdeloshackathones.Meetup:

LinkedIn:

Tumblr:Twitter:YouTube:

http://www.meetup.com/Hackathon-Lovers/

http://www.linkedin.com/groups/Hackathon-Lovers-6510465

http://hackathonlovers.tumblr.com/http://twitter.com/HackathonLovers

http://www.youtube.com/channel/UCRwSe7jK-y62BMvIiNBV1qw

Page 6: Arquitectura Web

1.4TWEETSSENTIMENT

Esunanalizadordetweetsqueextraeinformaciónsemánticaparaconocersielsentimientogeneraldelostweetsdeundeterminadotemaespositivoonegativo.Web:Twitter:

http://tweetssentiment.com/http://twitter.com/TweetsSentiment

Page 7: Arquitectura Web

1.5¿DONDEENCONTRARME?Minick:asanzdiegoAboutMe:Blog:GitHub:Google+:

LinkedIn:SlideShare:Twitter:

http://about.me/asanzdiegohttp://asanzdiego.blogspot.com.eshttp://github.com/asanzdiego

http://plus.google.com/+AdolfoSanzDeDiegohttp://www.linkedin.com/in/asanzdiegohttp://www.slideshare.net/asanzdiego

http://twitter.com/asanzdiego

Page 8: Arquitectura Web

1.6CRÉDITOSAgradecimientosaMicaelGallego

Introducciónalasaplicacionesweb

Tecnologíasdedesarrollodeaplicacionesweb

Estastransparenciasestánhechascon:

http://twitter.com/micael_gallego

http://www.slideshare.net/micaelgallego/qu-es-la-web-30036167

http://www.slideshare.net/micaelgallego/tema2-tecnologas-de-desarrollo-de-aplicaciones-web

https://github.com/asanzdiego/marckdownslides

Page 9: Arquitectura Web

1.7LICENCIAEstastransparenciasestánbajounalicencia:

Elcódigodelosprogramasestánbajounalicencia:

CreativeCommonsReconocimiento-CompartirIgual3.0

GPL3.0

Page 10: Arquitectura Web

1.8FUENTESOtrosformatos:SlideShare

DeckSlides

RevealSlides

PlainHTML

Markdown

http://www.slideshare.net/asanzdiego/arquitectura-web-30984535

http://asanzdiego.github.io/arquitectura-web/export/arquitectura-web-deck-slides.html

http://asanzdiego.github.io/arquitectura-web/export/arquitectura-web-reveal-slides.html

http://asanzdiego.github.io/arquitectura-web/export/arquitectura-web.html

http://raw.github.com/asanzdiego/arquitectura-web/master/md/arquitectura-web.md

Page 11: Arquitectura Web

2INTRODUCCIÓN

Page 12: Arquitectura Web

2.1¿QUÉESINTERNET?InternetesunconjuntodescentralizadoderedesdecomunicacióninterconectadasqueutilizanlafamiliadeprotocolosTCP/IP.Funcionacomounaredlógicaúnica,dealcancemundial,aunqueestéformadapormultitudderedesfísicasheterogéneas.UnodelosserviciosquemáséxitohatenidoenInternethasidolaWorldWideWeb(WWW,o"laWeb"),aunqueeshabituallaconfusiónentreambostérminosporgentenoexperta.

Page 13: Arquitectura Web

2.2¿QUÉESLAWEB?LaWebesunconjuntodeprotocolos,estándaresytecnologías,basadasenInternet,diseñadooriginalmenteparalaconsultaremotadeinformaciónenarchivosdehipertexto.

Page 14: Arquitectura Web

2.3OTROSSERVICIOSExistenmuchosotrosserviciosyprotocolosenInternet:Envíoyrecepcióndecorreoelectrónico(POP3,IMAP,SMTP)Transmisióndearchivos(SSH,FTP,P2P,HTTP)Mensajeríainstantánea(IRC,XMPP)Transmisióndecontenidomultimedia(VoIP,IPTV,RTP)Conexiónremotaporconsola(SSH,Telnet)Conexiónremotagráfica(VNC)

Page 15: Arquitectura Web

2.4LAWEB1.0Alprincipio,elusuariosóloleíacontenidopublicadoporotros.Erauncontenidomuyestático,ymuydifícildeeditarporelpropiousuario.Elnavegadorweberalaúnicaaplicación"conectada",yhayquereconocerlo...laweberasobretodoparaFrikis.

Page 16: Arquitectura Web

2.5LASCOSASEMPIEZANACAMBIARPocoapocolastecnologíassedesarrollanylosusuariosempiezanatenermásfacilidadesparaeditarelpropiocontenido.Googleseempiezaapopularizar,naceBlogger,WordPress,laWikipedia,LinkedIn...

Page 17: Arquitectura Web

2.6NACELAWEB2.0En2004DaleDougherty(O'Reilly)acuñaeltérminoWeb2.0parareferirseaLaWebcomounaplataformaconaplicacionesligeras,dinámicasyenconstanteevolución.ConlaWeb2.0,laspáginaswebdejandesersimplesdocumentosonlineparaconvertirseenaplicacionesweb,yesentoncescuandolosusuariostomanelcontroldeloscontenidos.

Page 18: Arquitectura Web

2.7WEB1.0VSWEB2.0

Page 19: Arquitectura Web

3HISTORIAEVOLUTIVADELAWEB

Page 20: Arquitectura Web

3.1LOSORÍGENESDEINTERNETEn1962,acausadelaguerrafríaconlaURSS,lasFuerzasAéreasdeEstadosUnidospidieronaunreducidogrupodeinvestigadoresquecrearaunareddecomunicacionesmilitaresquepudieraresistirunataquenuclear.En1964,PaulBarantuvolaideadecrearunaredenformadetelaraña.Elconceptodeestaredsebasabaenunsistemadescentralizado,demaneraquelaredpudieraseguirfuncionandoaunquesedestruyeranunoovariosequipos.

Page 21: Arquitectura Web

3.2ARPANET(1969)

En1969,elproyectomilitarARPA(AgenciadeProyectosdeInvestigaciónAvanzados,unadivisióndelMinisteriodeDefensadeEstadosUnidos)creólaredexperimentalARPANETcuyofineraconectarlasprincipalesuniversidadesdeEEUU.

Page 22: Arquitectura Web

3.3NACELAWEB(1989)

En1989,TimBerners-LeejuntoaRobertCailliaucreanlaWorldWideWeb.Habilitaronlosdominiosodireccionesconletras(envezdeloscomplejoscódigosIP).Tambiéninventaronlosenlaces.EstomarcóelnacimientodeLaWebcomoloconocemoshoyendía.

Page 23: Arquitectura Web

3.4YAHOO(1994)

En1994,JerryYangyDavidFilo,estudiantesdeStanford,creanYahoo!undirectoriodesitiossegúnlacategoríadesucontenido,paraasíintentarponerordendentrodelbazar,cadadíamásextenso,queseestabaconvirtiendoInternet.

Page 24: Arquitectura Web

3.5HOTMAIL(1996)

En1996,selanzóHotmailelcorreoelectrónicogratuitodeMicrosoft.

Page 25: Arquitectura Web

3.6GOOGLE(1997)

En1997,LarryPageySergeyBrin,dosestudiantesdeStanford,creanGoogle,unsistemaqueanalizalosenlacesqueconectanlossitiosdeInternetparahallarinformacióndemaneraefectiva.

Page 26: Arquitectura Web

3.7LAS'.COM'(1998)

En1998,bancoseinversionistasvolcaronmilesdemillonesdedólaresalfinanciamientodetodotipodeempresasbasadasenlaRed,conocidascomolas'punto-com'.

Page 27: Arquitectura Web

3.8NAPSTER(1998)

En1998,SeanParkeryShawnFanningcreanNapsterunodelosprimerosprogramasP2P.

Page 28: Arquitectura Web

3.9XMPP(1999)

En1999,naceXMPP,unprotocoloabiertoideadoparalamensajeríainstantánea.

Page 29: Arquitectura Web

3.10BLOGGER(1999)

En1999,tambiénnaceBlogger,unserviciowebparagestionarblogs.

Page 30: Arquitectura Web

3.11LABURBUJA(2001)

En2001,estallalaburbujadelas'punto-com'quellevóalaquiebraalamayoría.

Page 31: Arquitectura Web

3.12WIKIPEDIA(2001)

En2001,salióalaluzWikipedia,unaenciclopediavirtualqueadiariosealimentaysecorrigeporsuspropiosusuarios.

Page 32: Arquitectura Web

3.13THEPIRATEBAY(2003)

En2003,naceenSueciaelportaldebúsquedadetorrentsThePirateBay.

Page 33: Arquitectura Web

3.14LINKEDIN(2003)

En2003,selanzalaredsocialdecontactosprofesionalesLinkedIn.

Page 34: Arquitectura Web

3.15WORDPRESS(2003)

En2003,selanzalaplataformadegestióndeblogsWordPress.

Page 35: Arquitectura Web

3.16GMAIL(2004)

En2004,naceGMailelcorreoelectrónicogratuitodeGoogle.

Page 36: Arquitectura Web

3.17FACEBOOK(2004)

En2004,MarkZuckerberg,estudiantedelaUniversidaddeHarvard,creaFacebook,unadelasredessocialesmásconocidas.

Page 37: Arquitectura Web

3.18YOUTUBE(2005)

En2005,conelaugedelabandaancha,elvídeoenlíneadejadeserunautopíayvelaluzelfamosoportaldeYoutube.

Page 38: Arquitectura Web

3.19TWITTER(2006)

En2006,JackDorseylanzalafamosaredsocialdemicrobloggingTwitter.

Page 39: Arquitectura Web

3.20HOYEn2009,Internetsuperalos180millonesdesitiosweb.En2012,Facebooksuperalos1000millonesdeusuarios,yestátraducidoa70idiomas.En2013,LinkedInsuperalos225millonesdeusuariosenmás200paísesyterritorios.En2013,Twittersuperalos280millonesdeusuariosactivos,ylos480millonesdeperfiles.En2013,sesuperanlos1000millonesdedispositivosAndroidenelmundo.

Page 40: Arquitectura Web

4ARQUITECTURAWEB

Page 41: Arquitectura Web

4.1CLIENTE-SERVIDORLaarquitecturawebesunaarquitecturacliente-servidorformadaporlossiguienteselementos:Unnavegador:Hacedeclienteyrealizapeticionessolicitandorecursosalosservidoresweb.Unservidorweb:Recibepeticionesdeclientesyrespondeaesaspeticionesenviadounrecursoonotificandounerror.Elprotocolohttp:EselprotocolobasadoenTCP/IPqueseutilizaparaqueelnavegadorrealicelaspeticionesalservidorwebyesteresponda.

Page 42: Arquitectura Web

4.2PÁGINASESTÁTICASEnloscomienzosdelaweb,todoslossitiosweberanconjuntosdepáginaswebenformadeficherosHTML.Lossitiosweberancomolibrosperoconnavegaciónmedianteenlacesenvezdenavegaciónsecuencial.Laedicióndesitioswebserealizabaconherramientassimilaresalaedicióndedocumentos(p.e.MicrosoftFrontPage)Aestaspáginasselasdenominabapáginaswebestáticas.

Page 43: Arquitectura Web

4.3PÁGINASDINÁMICASPocoapocolaspáginasempezaronasermásdinámicas.EnvezdeserficherosHTMLeneldisco,empezabanaserpequeñosprogramasqueseejecutabancadavezqueunusuariopedíaunapágina.Inicialmenteerancambiosmínimos(contadordevisitas,fechaactual,cambiarlaimagendecabecera,...)conlenguajesdescriptcomoPERLyPHP.

Page 44: Arquitectura Web

4.4APLICACIONESWEBLoscambiosseríancadavezmásprofundosylaspáginaswebseconvertiríanencompletasaplicacionesweb.UnaaplicaciónwebesaquellaquelosusuariosutilizanaccediendoaunservidorwebatravésdeInternetmedianteunnavegador.TienenlaventajadeserindependientesdelSistemaOperativo,ydequesonfácilesdeactualizarymantener.

Page 45: Arquitectura Web

5ENTORNODEEJECUCIÓNENSERVIDOR

Page 46: Arquitectura Web

5.1SERVIDORESWEBESTÁTICOSAlprincipio,laformadetrabajarconlosserivoderesweberadelasiguienteforma:Primero,elnavegadorhaceunapeticiónalservidormediantehttp.Seguidamente,elservidortransformalaURLenunarutaelsistemadearchivosydevuelveelarchivoalnavegador.

Enestecaso,paraunamismaURLelservidorsiemprevaadevolverelmismorecurso,siendonormalmenteestosrecursosficherosHTML,CSS,JavaScript,imágenes...

Page 47: Arquitectura Web

5.2SERVIDORESWEBDINÁMICOS(I)Perohoyendía,lamayoríadelosservidoreswebpermitenqueencadapeticiónseejecuteunprogramaquegeneradinámicamenteelrecursoqueseenvíaalusuario(server-sidescripting).AhoraparaunamismaURLelservidorpuededevolverunrecursodistinto.Aestecontenidogenerado"alvuelo"seledenominacontenidodinámico,encontraposiciónalcontenidoestáticoobtenidodelsistemadearchivos.

Page 48: Arquitectura Web

5.3SERVIDORESWEBDINÁMICOS(II)Esbastantehabitualqueelcontenidodinámicosegenereconlainformacióndeunabasededatos.Losservidoreswebconcontenidodinámiconosóloenvíanrecursosalnavegador,tambiénpuedenprocesarinformaciónquelesllegadelmismo:Datoscontenidosenformulariosweb.Ficherosenviadosdesdeelnavegador.Informacióncodificadaenlosenlacesquepulsanlosusuarios.

Estafuncionalidadpermiteeldesarrollodecompletasaplicacionesweb.

Page 49: Arquitectura Web

5.4HISTORIADELOSSERVIDORESWEBLosprincipalesservidoreswebsonohansido:CERNhttpd(1990)Apache(1995)IIS(1995)NginX(2004)

Page 50: Arquitectura Web

5.5CERNHTTPD(1990)CreadoporTimBerners-Leeyotros,fuéelprimerservidorweb.AlprincipiosólocorríaenordenadoresNeXTSTEP,peromásadelantefueportadoaotrossistemas.Enagostode1991,TimBerners-LeeanuncióladisponibilidaddelcódigofuenteydelsoftwareWorldWideWebdesdeelsitioFTPCERN.EldesarrollodelCERNhttpdfueadquiridoporW3Cylaúltimaversiónes1996,yhoyestátotalmenteendesuso.

Page 51: Arquitectura Web

5.6APACHE(1995)

Lanzadoen1995ydesarrolladoporlaApacheSoftwareFundation,hoyendíaeselservidormáspopular(Enerode2014con42%cuota)EsunservidorwebmultiplataformayconunalicenciadeSoftwareLibre(ApacheLicense)SunombrecompletoesApacheHTTPServerProject.

Page 52: Arquitectura Web

5.7IIS(1995)

Lanzadotambiénen1995ydesarrolladoporMicrosoft,hoyendíaeselsegundoservidormásusado(Enerode2014con30%cuota)EstáintegradoenWindowsServer,ysecompaginabienconlabasededatosMSSQLServer.SunombrecompletoesMicrosoftInternetInformationServices.

Page 53: Arquitectura Web

5.8NGINX(2004)

Lanzadoen2004ydesarrolladoporelrusoIgorSysoev,hoyendíaeseltercerservidormásusadoa(Enerode2014con14%cuota)EsunservidormultiplataformayconunalicenciadeSoftwareLibre(tipoBSD)Esmuyrápidoysesueleusarcomobalanceadordecarga.

Page 54: Arquitectura Web

5.9CUOTASERVIDORESWEB

http://news.netcraft.com

Page 55: Arquitectura Web

6TECNOLOGÍASDESERVIDOR

Page 56: Arquitectura Web

6.1INTRODUCCIÓNLosestándaressonmuyimportantesenlosnavegadoresweb(HTML,CSS,JavaScript)porquelawebtienequesercompatibleconcualquierdispositivo.Encambiolosestándaresnosontannecesariosenelservidor,ycadaorganizacióndesarrollasuservidorconlatecnologíadesuelección.

Page 57: Arquitectura Web

6.2CUOTASTECNOLOGÍAS

http://w3techs.comExistenmultituddetecnologíasdeconstruccióndeaplicacioneswebenelservidor,siendolasmásusadas:PHP,ASP.NET,JavaEE.

Page 58: Arquitectura Web

6.3OTRASTECNOLOGÍAS

Existenotrosmenosusadas,peroconungrancrecimientodepupularidad:RubyonRails,Grails(Groovy),Django(Python),Node(JavaScript),etc.

Page 59: Arquitectura Web

6.4PHP(I)

PHP(acrónimorecursivoquesignificaPHPHypertextPre-processor)esunlenguajedeprogramaciónoriginalmentediseñadoparaeldesarrollowebdecontenidodinámico.FueunodelosprimerosenpermitircombinarseconelHTMLdelpropiodocumento.

Page 60: Arquitectura Web

6.5PHP(II)FuecreadooriginalmenteporRasmusLerdorfen1994yactualmenteellenguajesiguesiendodesarrolladoconunalicencialibre(PHPlicense)porlacomunidadenPHPGroup,puesnoexisteunorganismodeestandarización.Puedeserusadoenlamayoríadelosservidoreswebyencasitodoslossistemasoperativossinningúncosto.

Page 61: Arquitectura Web

6.6PHP(III)EjemploscomoFacebookoWordpresssonsindudaunamuestraimportantedelapopularidaddePHP.

Page 62: Arquitectura Web

6.7PHP(IV)Eslatecnologíadeprogramacióndelladodelservidormásusadaenelpasadoyenelpresente.SeintegranormalmenteconApacheyMySQLenentornosLinuxenunpaquetellamadoLAMP

Page 63: Arquitectura Web

6.8PHP(V)ExistenmultituddeframeworksparaeldesarrollodeaplicacionesPHP:CakePHP,CodeIgniter,Symfony,YiiZend,etc.

Page 64: Arquitectura Web

6.9ASP.NET(I)

ASP.NETesunframeworkparaaplicacioneswebdesarrolladoporMicrosoftyusadoparaconstruirpáginaswebdinámicas.EssucesoradelatecnologíaActiveServerPages(ASP),tieneunalicenciapropietariayestápensadaparaserusadaenplataformasWindows.EstápensadaparaserprogramadoenellenguajeC#,aunquepermitecualquierlenguajedelaplataforma.NET.

Page 65: Arquitectura Web

6.10ASP.NET(II)LamayoríadelaslibreríasparaASP.NETsonlasoficialesproporcionadasporMicrosoft:(I)WebPages:permitecombinarHTMLconcódigoASP(similaraJSPyPHP)WebForms:permiteconstruiraplicacioneswebbasadasencomponentes(similaraJSF)MVCFramework:permitedesarrollaraplicacioneswebusandoelpatrónmodelo-vista-controlador

Page 66: Arquitectura Web

6.11ASP.NET(III)LamayoríadelaslibreríasparaASP.NETsonlasoficialesproporcionadasporMicrosoft:(II)AJAX:permitelaactualizacióndedatossinlarecargacompletadeunapáginaweb.EntityFramework:permitemapearobjetosalparadigmarelacional(similaraJPA)DynamicData:permitecrearaplicacionesweborientadasadatos(similaraRubyonRails)

Page 67: Arquitectura Web

6.12JAVAEE(I)

Javaesunlenguajedeprogramacióndepropósitogeneral,concurrente,orientadoaobjetosybasadoenclasescreadoporJamesGoslingdeSunMicrosystemsypublicadoen1995.SuscomponentessongeneralmentecompiladasabytecodeparaquepuedanejecutarseencualquiermáquinavirtualJava(JVM)sinimportarlaarquitecturadelacomputadorasubyacente.

Page 68: Arquitectura Web

6.13JAVAEE(II)JavajuntoconCesellenguajemáspopularenelíndiceTIOBE.

http://www.tiobe.com/

Page 69: Arquitectura Web

6.14JAVAEE(III)JavaEEeslaediciónempresarialdelaplataformaJava(lenguaje+JVM+bibliotecas),yestádesarrolladaporunacoalicióndeempresaslideradasporOracle,IBM,RedHat,etc.Esunatecnologíamuyusadaanivelempresarial,ybastanteestandarizadapuestieneunaorganizacióndeestandarizaciónpropiallamadaJavaCommunityProcess(JCP)quedefinelosestándaresdelaplataforma.

Page 70: Arquitectura Web

6.15JAVAEE(IV)

Page 71: Arquitectura Web

6.16JAVAEE(V)EstándaresmásimportantesenJavaEE:(I)Servlets:permiteejecutardecódigoJavaanteunapeticiónwebenunservidorJavaEE.Applets:permiteejecutardecódigoJavadentrodeunnavegadorweb.JSP(JavaServerPages):permitecombinarHTMLconcódigoJavaparagenerarpáginaswebdinámicas.JDBC(JavaDatabaseConectivity):permitelaconexiónabasesdedatosrelacionalesdesdeJava.

Page 72: Arquitectura Web

6.17JAVAEE(VI)EstándaresmásimportantesenJavaEE:(II)JPA(JavaPersistenceAPI):permitemapearobjetosalparadigmarelacional(ORM,ObjectRelationalMapping)JSF(JavaServerFaces):permiteconstruiraplicacioneswebbasadasencomponentesreutilizables.JMS(JavaMessegeService):permitelacreaciónygestióndecolasdemensajesentreaplicaciones.

Page 73: Arquitectura Web

6.18JAVAEE(VII)TodaaplicaciónwebJavaEEtienequeejecutarseenunaservidordeaplicacionesJavaEE(aunqueluegoseintegreenApache,NginXoIIS)Existenmuchostiposdeservidores,dependiendodesusfuncionalidades/rendimientoydesulicencia/coste.

Page 74: Arquitectura Web

6.19JAVAEE(VIII)ParadesarrollaraplicacionesJavaEEseutilizanIDEsyplugins:Eclipse:Fundación.Muchadiversidad,faltadeintegración.Softwarelibre.Netbeans:Oracle.Muyintegrado.Softwarelibre.IntelliJ:Jetbrains.Muyintegrado.Propietario.

Page 75: Arquitectura Web

6.20BASESDEDATOSLasbasesdedatostienenunpapelmuyimportanteeneldesarrollodeaplicacionesweb.Lasmáspopulareshansidolasbasesdedatosrelacionales,perocadavezmásseusanlasbasesdedatosNoSQL.

Page 76: Arquitectura Web

6.21BBDDRELACIONALES

Sonlasbasesdedatosmáspopulareseneldesarrollodeaplicaciones.Enelladodelsoftwarelibrelasmásusadasson:PostgreSQLyMySQL,Yenladodelsoftwareprivativolasmásusadasson:OracleyMicrosoftSQLServer.

Page 77: Arquitectura Web

6.22BBDDNOSQL

Comolasaplicacioneswebtienenmuchasnecesidadesdeescalabilidadytoleranciaafallos,hayunanuevafamiliadebasesdedatosquesedenominangenéricamenteNoSQL,quesepuedeinterpretarcomo:'NoSQL'ocomo'NotOnlySQL'

Page 78: Arquitectura Web

6.23TEOREMACAP(I)ElteoremaCAPoteoremaBrewer,dicequeensistemasdistribuidosesimposiblegarantizaralavez:consistencia,disponibilidadytoleranciaaparticiones.

Page 79: Arquitectura Web

6.24TEOREMACAP(II)

Page 80: Arquitectura Web

6.25TEOREMACAP(III)Definiciones:Consistencia:alrealizarunaconsultaoinserciónsiempresetienequerecibirlamismainformación,conindependenciadelnodooservidorqueproceselapetición.Disponibilidad:quetodoslosclientespuedanleeryescribir,aunquesehayacaídounodelosnodos.Toleranciaafallos:implicaqueelsistematienequeseguirfuncionandoaunqueexistanfallosocaídasparcialesquedividanelsistema.

Page 81: Arquitectura Web

6.26TEOREMACAP(IV)Segúnlascondicionesquecumplan:AP:garantizandisponibilidadytoleranciaafallos,peronolaconsistencia.Algunasconsiguenunaconsistenciaparcialatravésdelareplicaciónylaverificación.CP:garantizanconsistenciaytoleranciaafallos.Paralograrlaconsistenciaatravésdelosnodos,sacrificanladisponibilidad.CA:garantizanconsistenciaydisponibilidad,perotienenproblemasconlatoleranciaafallos.Esteproblemalosuelengestionarreplicandolosdatos.

Page 82: Arquitectura Web

6.27TIPOSDEBDNOSQLExisten4tiposdebasesdedatosNoSQL:OrientadasadocumentosOrientadasacolumnasDeclavevalorEngrafo

Page 83: Arquitectura Web

6.28ORIENTADASADOCUMENTOSGestionandatossemiestructuradosalmacenadosenalgúnformatoestándarcomoXMLoJSON.Sonlasmásversátilesysepuedenutilizarenmuchosproyectos,inclusoaquellosquetradicionalmentefuncionaríansobrebasesdedatosrelacionales.Enestacategoríaencontramos:MongoDB:probablementelamásfamosadelmomento.AlgunascompañíaslautilizansonFoursquareoeBay.CouchDB:esdeApacheysusdatossonaccesiblesvíaunaAPIREST.EsutilizadaporcompañíascomoCreditSuisseylaBBC.

Page 84: Arquitectura Web

6.29ORIENTADASACOLUMNASEstánpensadaspararealizarconsultasyagregacionessobregrandescantidadesdedatos.Funcionandeformaparecidaalasbasesdedatosrelacionales,peroalmacenandocolumnasdedatosenlugarderegistros.Enestacategoríaencontramos:Cassandra:incluidaenestasección,aunqueenrealidadsigueunmodelohíbridoentreorientadaacolumnasyclave-valor.EsutilizadaporFacebookyTwitter.HBase:EscritaenJavaymantenidaporelProjectoHadoopdeApache,seutilizaparaprocesargrandescantidadesdedatos.LautilizanFacebook,TwitteroYahoo.

Page 85: Arquitectura Web

6.30DECLAVEVALORSonlasmássencillasdeentender.Simplementeguardantuplasquecontienenunaclaveysuvalor.Cuándosequiererecuperarundato,simplementesebuscaporsuclaveyserecuperaelvalor.Enestacategoríaencontramos:DynamoDB:desarrolladaporAmazon,esunaopcióndealmacenajequepodemosusardesdelosAmazonWebServices.LautilizanelWashingtonPostyScopely.Redis:desarrolladaenCydecódigoabierto,esutilizadaporCraiglistyStackOverflow(amododecaché).

Page 86: Arquitectura Web

6.31ENGRAFOBasadasenlateoríadegrafosutilizannodosyaristaspararepresentarlosdatosalmacenados.Sonmuyútilesparaguardarinformaciónenmodelosconmuchasrelaciones,comoredesyconexionessociales.Enestacategoríaencontramos:InfiniteGraph:escritaenJavayC++porlacompañíaObjectivity.Tienedosmodelosdelicenciamiento:unogratuitoyotrodepago.Neo4j:basededatosdecódigoabierto,escritaenJavaporlacompañíaNeoTechnology.UtilizadaporcompañíascomoHP,InfojobsoCisco.

Page 87: Arquitectura Web

7ENTORNODEEJECUCIÓNENCLIENTE

Page 88: Arquitectura Web

7.1PÁGINASWEBESTÁTICASSonpáginasenlasqueelnavegadorrenderizaelHTMLconestilosCSSeimágenesperosinJavaScript.Enestaspáginas,cadavezqueelusuariohaceclicenunenlace,elnavegadorrecargaporcompletolapáginaweb.Lasprimeraspáginasweberanasí,yhoytodavíasesiguenutilizandobastante:enpáginaspersonales,en'landingspages',en'homepages',enpáginasdedocumentación,etc.

Page 89: Arquitectura Web

7.2PÁGINASWEBDINÁMICASElclienteesdinámicoporquelaspáginasincluyencódigoJavaScriptqueseejecutaenelnavegador.DependiendodecómoseuseelJavaScriptenelcliente,lasaplicacionessepuedendividirentrestipos:JavaScriptparaefectosgráficos.JavaScriptconpeticionesensegundoplano(AJAX)SinglePageApplication.

Page 90: Arquitectura Web

7.3JAVASCRIPTPARAEFECTOSGRÁFICOSJavaScriptsediseñó,entreotrascosas,paraañadirefectosgráficosbásicosalaspáginascuandoelCSSeramuylimitado.LagranmayoríadelasaplicacioneswebqueexistenenInternetutilizanJavaScriptalmenosconestepropósito.

Page 91: Arquitectura Web

7.4JAVASCRIPTPETICIONESENSEGUNDOPLANO

JavaScriptseusatambiénparanotenerquerecargarlapáginacompleta,realizandopeticionesensegundoplanoqueactualizansóloaquellaspartesdelapáginanecesarias.AestatécnicaselaconocecomoAJAX(AsynchronousJavaScriptAndXML),ylagranmayoríadelasaplicacionesdehoyendíalousanparamejorarlaexperienciadelusuario.

Page 92: Arquitectura Web

7.5SINGLEPAGEAPPLICATIONEnestecaso,laaplicaciónwebesunconjuntoderecursosHTMLyCSSestáticosquesecarganenelnavegador,yelcontenidodinámicosecargaensegundoplanoconJavaScript.UnaSPAesunaúnicapáginacuyocontenidovacambiandosegúnelusuariointeractúaconbotones,pestañas,etc.

Page 93: Arquitectura Web

7.6HISTORIADELOSCLIENTESWEBLosprincipalesclienteswebsonohansido:Mosaic(1993)NetscapeNavigator(1994)InternetExplorer(1995)Opera(1996)MozillaFirefox(2002)iPhone(2007)Android(2008)GoogleChrome(2008)FirefoxOS(2013)

Page 94: Arquitectura Web

7.7MOSAIC(1993)

En1993,salióalaluzMosaicelprimernavegadorquepermitíavergráficamentelosdocumentosescritosenHTMLyseguirlosenlacesentredistintossitiosweb.

Page 95: Arquitectura Web

7.8NETSCAPENAVIGATOR(1994)

En1994,nacióNetscapeNavigator,comoevolucióndeMosaic.

Page 96: Arquitectura Web

7.9INTERNETEXPLORER(1995)

En1995,MicrosoftlanzaelnavegadorInternetExplorer.Llegóatenerunacuotadel70%,perohoyendía,aunqueeselsegundonavegadormásusado,estáendeclivedesobretodoporelimpulsodeGoogleChrome.

Page 97: Arquitectura Web

7.10OPERA(1996)

En1996,nacióOperaunnavegadorquenuncahatenidounagrancuotademercado.

Page 98: Arquitectura Web

7.11SAFARI(2003)

En2003,ApplelanzaSafari,unnavegadorbasadoenWebKit(libre).Hoyendíaeselcuartonavegadormásusado.

Page 99: Arquitectura Web

7.12MOZILLAFIREFOX(2002)

En2002,naceelelnavegadorlibreMozillaFirefox.Hoyendíaeseltercernavegadormásusado.

Page 100: Arquitectura Web

7.13IPHONE(2007)

En2007,SteveJobs,cofundadordeAppel,lanzaeliPhone.

Page 101: Arquitectura Web

7.14ANDROID(2008)

En2008,sevendeelprimersmartphoneconelsistemaoperativoAndroid.

Page 102: Arquitectura Web

7.15GOOGLECHROME(2008)

En2008,elgiganteGooglelanzaalmercardosupropionavegador:elGoogleChrome.Hoyendíaeselnavegadormásutilizadoconmásdeun40%decuota.

Page 103: Arquitectura Web

7.16FIREFOXOS(2013)

En2013,lafundaciónMozillalanzaelsistemaoperativoFirefoxOS.

Page 104: Arquitectura Web

7.17CUOTANAVEGADORES

http://gs.statcounter.com/

Page 105: Arquitectura Web

8TECNOLOGÍASDECLIENTE

Page 106: Arquitectura Web

8.1INTRODUCCIÓNElclientewebporexcelenciaeselnavegadorweb,aunqueahoraexistenotrosclientescomopuedenserlasaplicacionesnativasdelosdispositivosmóviles,ahorabienlatendenciaesladeutilizarlosestándareswebendichasaplicaciones.Aunquelatendenciaesusarcadavezmástecnologíasestándares,aúnseusanotrastecnologíasnoestándar.

Page 107: Arquitectura Web

8.2ESTÁNDARESWEB

ElW3C(WorldWideWebConsortium)esunacomunidadinternacionalquedesarrollaestándaresabiertosqueaseguranelcrecimientodelaWebalargoplazo.HTML(HypertextMarkupLanguage)andCSS(CascadingStyleSheets)sondosdelastecnologíasprincipalesparalaconstruccióndepáginasweb.

Page 108: Arquitectura Web

8.3HTML(I)

HTMLproporcionalainformaciónestructuradaensecciones,párrafos,título,imágenes,etc.

Page 109: Arquitectura Web

8.4HTML(II)LaversiónactualesHTML5,queaunquetodavíanoestáfinalizada,lamayoríadelosnavegadoresimplementangranpartedelaespecificación.Hasupuestounarevoluciónenelclientepuesofrecemuchastecnologíasavanzadas:Multimedia:audio,vídeo,canvas,webgl,etc.Comunicaciones:websocketsConcurrencia:webworkersAlmacenamiento:storageOtros:geoposicionamiento,drag&drop,accesoalacámara,almicrófono,etc.

Page 110: Arquitectura Web

8.5CSS(I)

CSSproporcionaladistribucióndeloselementosysuestilo(colores,tiposdeletra,fondos,efectos...)

Page 111: Arquitectura Web

8.6CSS(II)CSSesunlenguajeusadoparadefinirlapresentacióndeundocumentoestructuradoescritoenHTML,XML,SVGoinclusointerfacesdeusuariodeotrastecnologías(JavaFX)SuversiónactualesCSS3,queaunquetodavíanoestáfinalizada,lamayoríadelosnavegadoresimplementangranpartedelaespecificación.

Page 112: Arquitectura Web

8.7PREPROCESADORES(I)Procesancódigoescritoenunlenguaje“A+”(HAML,Coffeescritp,SCSSoLESS)ygeneranarchivosescritosenotrolenguaje“A”(HTML,JavascriptyCSS,respectivamente).Loslenguajesfuentesonsimilaresalosqueproducen,peromássencillosdeescribir(ydeleerymantener).EnelcasodeCSSlospreprocesadoressuplenciertascarenciasquetieneelpropiolenguajecomopuedeser:variables,herencias,funciones,imports,...

Page 113: Arquitectura Web

8.8PREPROCESADORES(II)LospreprocesadoresCSSmásimportantesson:Sassyless.

Page 114: Arquitectura Web

8.9FRAMEWORKSCSS(I)FacilitanlatareadecrearsitiosResponsiveWebDesign(diseñoqueseadaptaalosdistintosclientes:móvil,tablet,ordenador)medianteelusodediseñoconrejillas,usodeclases,componentes,etc.

Page 115: Arquitectura Web

8.10FRAMEWORKSCSS(II)LosframeworksCSSmasimportantesson:ZurbFoundationyTwitterBootstrap.

Page 116: Arquitectura Web

8.11JAVASCRIPT(I)

ConJavaScriptsepuedemodificarlapáginayejecutarcódigocuandoseinteractúaconella(atravésdelmodelodeobjetosdeldocumentoDOM)

Page 117: Arquitectura Web

8.12JAVASCRIPT(II)AunquealgunoselementosdelasintaxisrecuerdenaJava,notienenadaqueverconJava,seeligióesenombreporrazonesdemarketing,puescuandosepublicóJavaestabaenauge.EsunlenguajedeprogramaciónbasadoenelestándarECMAScriptdeECMA(otraorganizacióndiferentealW3C)HayligerasdiferenciasenlaimplementacióndeJSdelosnavegadores,aunqueactualmentetodossonbastantecompatiblesentresí(enelpasadonofueasí)

Page 118: Arquitectura Web

8.13JAVASCRIPT(III)Inicialmenteeraunlenguajeinterpretado,peroactualmenteseejecutaconmáquinasvirtualesenlosnavegadores(velocidaddeejecuciónyeficienciadememoria)Características:Tipadodinámico(habitualenloslenguajesdescript)Funcionalyorientadoaobjetos(basadoenprototipos)

Page 119: Arquitectura Web

8.14LIBRERÍASJAVASCRIPT

ExistenmultituddelibreríasJavaScript,aunquelasmásutilizadasson:jQuery:aportafacilidaddeusoycompatibilidadentrenavegadores.Seusaparagestionarelinterfazypeticionesajax.underscore.js:permitetrabajarconunenfoquemásfuncionalypermitegestionarplantillasparagenerarHTML.

Page 120: Arquitectura Web

8.15FRAMEWORKSJAVASCRIPT

Ademásdelibrerías,tambiénexistenframeworksdealtonivelqueestructuranunaaplicacióndeformacompleta,siendolosmáspopulares:Angular.js,Backbone.jsyEmber.

Page 121: Arquitectura Web

8.16TECNOLOGÍASNOESTÁNDARENLAWEBLawebhaavanzadoyevolucionadograciasatecnologíasnoestándarincluidasenlosnavegadoresmedianteplugins.Algunasllegaronaconvertirseenestándares“defacto”,comoeselcasodeAdobeFlash.Lallegadadelosdispositivosmóviles,consolasytelevisionesconectadas(SmartTVs)ylaestandarizacióndeHTML5hanhechoqueestastecnologíasnoestándaresténendesuso.

Page 122: Arquitectura Web

8.17ADOBEFLASH(I)

Esunatecnologíausadaprincipalmenteparaincrustarcontenidomultimediainteractivoenpáginasweb.Durantemuchosañosfuelaúnicaformadetenerinteractividad,animaciones,vídeos,juegos...enlaweb.

Page 123: Arquitectura Web

8.18ADOBEFLASH(II)Esunatecnologíapropietariaycerrada,yaunqueesgratuitaparalosusuarios,noloesparalosdesarrolladoresyservidores.Hasidoacusadadedequenoeseficiente,noesabiertayportanto,noeselfuturodelaweb(Abril2010-SteveJobsporeliPhoneyiPad)AdobelohaacabadoreconociendoynoseguiráapostandoporFlashcomolaherramientabásicadelawebinteractiva(Nov2011)

Page 124: Arquitectura Web

8.19JAVAAPPLETS

LosappletsdeJavafueronlosprecursoresdeFlash,aunquehoyestánendesuso.

Page 125: Arquitectura Web

8.20MICROSOFTSILVERLIGHT

LaapuestadeMicrosoftparacompetirconFlash,aunquehoyestánendesuso.