scieee Open visual document viewer

Sistema distribuido para la ejecución controlada de código arbitrario

Sánchez Paredes, Jonathan; Velázquez Alonso, Alberto

Abstract

La motivación original de este proyecto es la mitigación de riesgos en el uso de un juez virtual, que es una aplicación que facilita el envío, ejecución y evaluación de ejercicios prácticos vía Internet. Los jueces virtuales más populares en entornos educativos son FLOP [27], DOMJudge, Mooshak y AceptaElReto. Este tipo de aplicaciones compilan y ejecutan código arbitrario, y por tanto precisan un entorno de ejecución seguro, aislado y en el que pueda limitarse el uso de recursos como memoria o tiempo de CPU. Además, dado que los alumnos pueden enviar sus prácticas en cualquier momento del día, estos sistemas necesitan alta disponibilidad. Este proyecto pretende dar respuesta a estas necesidades creando un entorno de ejecución seguro, controlado y de alta disponibilidad para la ejecución remota de código arbitrario. Para ello recogeremos los requisitos de la aplicación y analizaremos las distintas alternativas a partir de sus características y adecuación a los requisitos. Finalmente desarrollaremos una aplicación que dé solución a las necesidades indicadas basándonos en los requisitos y en los resultados de nuestra investigación.

Full text

Sis ema dis ibuido pa a la ejecución con olada de código a bi a io TRABAJO FIN DE GRADO GRADO EN INGENIERÍA INFORMÁTICA Realizado po : Jona han Sánchez Pa edes Albe o Velázquez Alonso Di ec o : Luis Llana Codi ec o : En ique Ma ín Ma ín Depa amen o de Sis emas In o má icos y Compu ación Facul ad de In o má ica Uni e sidad Complu ense de Mad id Mad id, junio 2017 1 Au o ización de di usión ie nes, 16 de junio de 2017 Los abajo i man es, alumnos y u o del T abajo Fin de G ado (TFG) en el G ado en Ingenie ía In o má ica de la Facul ad de In o má ica, au o izan a la Uni e sidad Complu ense de Mad id (UCM) a di undi y u iliza con ines académicos, no come ciales y mencionando exp esamen e a su au o el p esen e T abajo Fin de G ado (TFG): “Sis ema dis ibuido pa a la ejecución con olada de código a bi a io”, ealizado du an e el cu so académico 2016-2017 bajo la di ección de Luis Llana y la codi ección de En ique Ma ín en el Depa amen o de sis emas in o má icos y compu ación. Así mismo au o izan a la Uni e sidad Complu ense de Mad id a que sea deposi ado en acceso abie o en el eposi o io ins i ucional con el obje o de inc emen a la di usión, uso e impac o del TFG en In e ne y ga an iza su p ese ación y acceso a la go plazo. Jona han Sánchez Pa edes Albe o Velázquez Alonso 2 Ag adecimien os Que emos ag adece de una mane a especial a nues o di ec o Luis Llana y a nues o codi ec o En ique Ma ín, po habe nos elegido pa a su p oyec o, con iando en noso os y acili ándonos un Clús e [11] pa a el desa ollo del p oyec o. Po o o lado, ambién que emos ag adece a nues os amilia es su implicación y es a en odo momen o a nues o lado, escuchando y dando su opinión a los p oblemas que nos iban su giendo. Po úl imo, ag adece a nues os compañe os y anima con sus espec i os abajos de in de g ado, es amos muy o gullosos de habe compa ido es e camino con oso os aun sabiendo que no se á el úl imo camino que eco amos jun os. 3 P ólogo Todo comenzó en junio del 2016 as la inalización de los exámenes, cuando nos plan eamos la opción de coge un abajo de in de g ado pa a el 2016/2017. T as su gi nos a ias ideas y da a ias uel as a la lis a de abajos p opues os, nos opamos con la dis ibución de sis emas, el cual nos llamó mucho la a ención ya que son ecnologías con muchas salidas labo ales y en el g ado apenas enemos con ac o con ellas. Siendo ecnologías con muy poco eco ido, es deci , son ela i amen e nue as, po ejemplo, Kube ne es ue lanzado en junio del 2014. Es os ue on los p incipales alicien es pa a que nos pusié amos en con ac o con Luis pa a inicia es e abajo de in de g ado jun os. T as una p ime a eunión pa a una oma de con ac o, nos comunican que el sis ema dis ibuido es pa a eemplaza en un u u o la a qui ec u a de la aplicación Juez de la acul ad de in o má ica. 4 Resumen La mo i ación o iginal de es e p oyec o es la mi igación de iesgos en el uso de un juez i ual, que es una aplicación que acili a el en ío, ejecución y e aluación de eje cicios p ác icos ía In e ne . Los jueces i uales más popula es en en o nos educa i os son FLOP [27], DOMJudge, Mooshak y Acep aElRe o. Es e ipo de aplicaciones compilan y ejecu an código a bi a io, y po an o p ecisan un en o no de ejecución segu o, aislado y en el que pueda limi a se el uso de ecu sos como memo ia o iempo de CPU. Además, dado que los alumnos pueden en ia sus p ác icas en cualquie momen o del día, es os sis emas necesi an al a disponibilidad. Es e p oyec o p e ende da espues a a es as necesidades c eando un en o no de ejecución segu o, con olado y de al a disponibilidad pa a la ejecución emo a de código a bi a io. Pa a ello ecoge emos los equisi os de la aplicación y analiza emos las dis in as al e na i as a pa i de sus ca ac e ís icas y adecuación a los equisi os. Finalmen e desa olla emos una aplicación que dé solución a las necesidades indicadas basándonos en los equisi os y en los esul ados de nues a in es igación. Palab as cla e Docke Kube ne es Cele y Redis Rabbi MQ TaskQueue O ques ación Clús e Sis ema Dis ibuido 5 Abs ac The o iginal mo i a ion o his p ojec is isk mi iga ion o he use o a i ual judge, which is an applica ion ha acili a es sending, unning and g ading p ac ical assignmen s online. Some popula i ual judges in educa ional en i onmen s a e FLOP, DOMJudge, Mooshak and Acep aElRe o. This kind o applica ions compile and execu e a bi a y code, so hey equi e a unning en i onmen ha is secu e, isola ed and ha can limi esou ce usage such as memo y o CPU ime. Also, gi en ha s uden s can send hei assignmen s a any ime, hese sys ems need high a ailabili y. This p ojec in ends o gi e an answe o hese needs by p o iding a secu e, con olled and high a ailabili y unning en i onmen o he emo e execu ion o a bi a y code. To his end we will ga he his applica ion’s equi emen s and we will analyze he di e en al e na i es based on hei ea u es and adhe ence o equi emen s. Finally, we will de elop an applica ion ha can sol e he s a ed needs, based on he equi emen s and he esul s o ou esea ch. Keywo ds Docke Kube ne es Cele y Redis Rabbi MQ TaskQueue O ches a ion Clus e Dis ibu ed Sys em 6 Índice 1. In oducción .............................................................................................................. 8 1.1. Mo i ación ......................................................................................................... 8 1.2. Obje i os ............................................................................................................ 9 1.3. Es ado del a e ................................................................................................... 9 1.4. Plan de abajo ................................................................................................. 11 1. In oduc ion............................................................................................................. 12 1.1. Mo i a ion........................................................................................................ 12 1.2. Goals ................................................................................................................ 12 1.3. S a e o he A ................................................................................................. 13 2. Requisi os y conside aciones p e ias ...................................................................... 15 3. Tecnologías .............................................................................................................. 16 3.1. Cele y ............................................................................................................... 16 3.2. Rabbi MQ ......................................................................................................... 18 3.3. Redis ................................................................................................................. 19 3.4. Docke .............................................................................................................. 20 3.5. Kube ne es ....................................................................................................... 26 4. Decisiones a qui ec ónicas...................................................................................... 32 4.1. O ques ación .................................................................................................... 32 4.2. Tipo de clien e .................................................................................................. 37 4.2.1. Se icio Web ............................................................................................. 37 4.2.2. Websocke s .............................................................................................. 40 4.2.3. Cele y ........................................................................................................ 42 4.2.4. Rabbi MQ con Redis ................................................................................. 43 4.3. Localización del clien e .................................................................................... 44 4.3.1. Wo ke s den o de los con enedo es ...................................................... 44 4.3.2. Wo ke s ue a de los con enedo es ......................................................... 45 5. Implemen ación ...................................................................................................... 47 6. Manual de ins alación ............................................................................................. 50 7. P uebas de concep o y medidas de iempos .......................................................... 54 8. Conclusiones y abajo u u o ................................................................................. 55 7. Conclusions and u u e wo k .................................................................................. 56 7 8. Con ibución al p oyec o ......................................................................................... 58 9. Bibliog a ía .............................................................................................................. 62 10. Glosa io ................................................................................................................ 63 8 1. In oducción La compu ación desde sus p incipios ha pasado po muchos cambios, siendo pione os los g andes compu ado es que e an capaces de ealiza innume ables a eas, pe o con g an cos e an o en ecu sos como en consumo. En cambio, con el paso del iempo los o denado es pe sonales han ido cogiendo p o agonismo y a día de hoy son capaces de mejo a a los g andes compu ado es. De es a e olución su gen los denominados sis emas dis ibuidos, donde a ios compu ado es pequeños abajan concu en emen e, comunicándose pa a log a un obje i o. También, aplicando modula idad a la aplicación sepa ando el in e az de la ejecución. Es e a ance ambién lo quie e aslada la Facul ad de In o má ica de la Uni e sidad Complu ense de Mad id, asladando la aplicación del Juez, en conc e o FLOP, desde un único hos [22], a un sis ema dis ibuido. Los jueces son u ilizados p incipalmen e en la docencia, es e so wa e acili a a los p o eso es pone eje cicios a sus alumnos, los alumnos desa ollan el código del eje cicio y lo en ían pa a su co ección. El juez compila el p og ama y de uel e al alumno el esul ado de la compilación, a su ez, deja almacenado la no a del alumno. Algunos jueces au omá icos son FLOP, DOMJudge, Mooshak, Acep aElRe o. FLOP Es un so wa e que sigue la me odología Tes D i en Design, el uso de es e p og ama es á des inado a la p og amación y el ap endizaje. Es e so wa e albe ga p oblemas de p og amación, pe mi e al p o eso añadi ácilmen e o os nue os y ambién e alúa au omá icamen e las soluciones en iadas po los alumnos. 1.1. Mo i ación En los úl imos años se han p oducido a ances en cuan o a la a qui ec u a de los sis emas, asladándose hacia la dis ibución con el in de epa i la ca ga en los se ido es, o incluso pa a consumi solo los ecu sos necesa ios de un se icio y paga solo po ellos, no po oda la máquina. Como el juez au omá ico FLOP, es á ejecu ándose en un único hos , se quie e aslada a un sis ema dis ibuido. Un sis ema dis ibuido es un conjun o de compu ado es sepa ados ísicamen e, pe o conec ados po una ed. El usua io del sis ema pe cibe es a dis ibución desde el ex e io como un único sis ema. Pa a acili a la dis ibución y la ejecución de aplicaciones den o del sis ema dis ibuido se u iliza Docke , y pa a o ques a lo [15] se u iliza án dis in as al e na i as so wa e, como son Kube ne es, Docke Swa m y Mesos. 15 2. Requisi os y conside aciones p e ias Pa a pone en con ex o qué se a a desa olla amos a ealiza unas conside aciones p e ias y los equisi os pa a el buen uncionamien o de es a.  A qui ec u a p eexis en e La a qui ec u a con la que ac ualmen e se ejecu a el código es un se ido web, en es e caso Tomca , que ecibe un en ío consis en e en código uen e pa a se e aluado. Pos e io men e el se ido en ía de o ma gené ica el código a o a aplicación o se icio que ejecu a el código y de uel e el esul ado de la ejecución, sea posi i o o nega i o el se ido almacena es e esul ado y se lo mues a al usua io que en ió el código.  Requisi os Pa a el co ec o uncionamien o de la aplicación enemos que cumpli di e sos equisi os ales como: o Se lanza una a ea consis en e en código uen e (Py hon en es e caso, ex ensible a o os lenguajes). o Se ejecu a en una máquina de un clús e . o Se ecupe a el esul ado pa a se mos ado o almacenado (el almacenamien o es á ue a del alcance del p oyec o). o La ejecución del código debe ealiza se den o de un con enedo Docke . El con enedo debe einicia se o ce a se después de la ejecución del código, de al mane a que no haya as o de la ejecución an e io . Debe con ola se el uso de ecu sos po pa e del con enedo .  Conside aciones sob e la a qui ec u a Nomencla u a: “dispa che ” es el se ido Tomca que acaba de ecibi el código de un alumno pa a se e aluado; “ejecu o ” es cada ins ancia que espe a a ecibi código uen e pa a ejecu a lo y de ol e el esul ado. Esquema de cola de a eas [5]. Pa a el inicio del sis ema se ealiza on unas p ime as p uebas que consis ie on en la ecepción de la a ea, c eación de nue o con enedo con olumen compa ido, ejecución y cie e, odo ello secuencial. T as la p ime a p ueba su gió un p oblema p incipal: penalización po cada una de las acciones, mucho iempo en e el en ío de la a ea y la ecepción del esul ado. 16 3. Tecnologías En es e capí ulo se de allan las ecnologías empleadas pa a el desa ollo del sis ema dis ibuido. 3.1. Cele y Cele y es una biblio eca de Py hon y un se icio asociado que implemen an una cola de a eas. Una cola de a eas es un ipo especial de cola que se u iliza pa a dis ibui a eas en e di e en es p ocesos o hilos que se denominan “wo ke s”. Es e ipo de cola p esen a dos ca ac e ís icas ele an es que la di e encian de una cola gené ica: la p ime a es que las a eas equie en con i mación po pa e del sis ema que ges iona la cola, de al o ma que si una a ea no se con i ma se in e p e a que el “wo ke ” asociado ha su ido un allo y dicha a ea uel e a la cola, quedando disponible pa a que o o “wo ke ” la p ocese. La segunda ca ac e ís ica es que se suelen u iliza como un ipo especí ico de sis ema dis ibuido pa a en ia a eas a di e en es p ocesos o hilos que suelen ejecu a se en di e en es máquinas. Cele y es á ideado desde un p incipio pa a se ejecu ado en di e en es nodos. Su modo de uncionamien o es bas an e sencillo, al menos pa a el p og amado : sólo debe esc ibi una se ie de unciones, que son las a eas que se ejecu a án en las di e en es máquinas, y lanza el wo ke de Cele y en cada uno de los nodos que ayan a ejecu a dichas a eas median e el comando “cele y wo ke ”. El p og amado , en onces, sólo necesi a á llama a dichas unciones con los pa áme os ele an es pa a la a ea en cues ión; Cele y dis ibui á el abajo en e odos los nodos disponibles y de ol e á el esul ado al p og amado . 17 A qui ec u a gene al de Cele y. Fuen e: h ps://www.pack pub.com/map /book/applica ion_de elopmen /9781783288397/7/ ch07l l1sec45/Unde s anding+Cele y%27s+a chi ec u e Caben dis ingui se dos lujos den o de cualquie cola de a eas y especialmen e de Cele y. El p ime o es el mecanismo de dis ibución de las a eas y de los pa áme os con que se ejecu a án és as, y el segundo es la ecogida de los esul ados. Cele y no es una he amien a independien e, sino que pa a la implemen ación de es os lujos u iliza so wa e ajeno, y de hecho pe mi e u iliza di e en es ecnologías pa a cada uno de los dos mecanismos. La ins alación ecomendada u iliza Rabbi MQ y Redis, si bien Cele y sopo a o as ecnologías como MongoDB, CouchDB en incluso bases de da os elacionales. Pa a la dis ibución de mensajes a los “wo ke s” se u iliza Rabbi MQ. Más adelan e se desc ibe con más de alle es a ecnología, pe o en esencia es una cola de mensajes [4], que pe mi e la dis ibución de dichos mensajes desde a ios p oduc o es hacia a ios consumido es, y que pe mi e implemen a complejos modelos de dis ibución. En cuan o a los esul ados, és os se almacenan en Redis, que es un almacén de cla es y alo es. La ecomendación de es as ecnologías se basa en el hecho de que Rabbi MQ es un so wa e muy p obado y es able, idóneo pa a la dis ibución de mensajes olá iles, mien as que Redis pe mi e el almacenamien o y pe sis encia de las espues as du an e odo el iempo que el clien e necesi e has a ecupe a las, y que además pe mi e lee a ias eces el mismo da o. 18 A ni el in e no, el p og amado solici a la ejecución emo a de una a ea, Cele y le de uel e un obje o, que puede en ende se como un “ u u o” o una “p omesa”. Una ep esen ación de una compu ación que puede o no habe e minado, y pe mi e al clien e ealiza o as a eas has a que necesi e el esul ado de la ejecución de la a ea, ya que es e modelo no bloquea el clien e. Una ez que el código clien e necesi e el esul ado puede solici a lo explíci amen e median e una llamada bloquean e, que en es e caso sí congela el hilo del clien e has a que el esul ado es á disponible. Es e modelo de p og amación pe mi e po ejemplo lanza a ias a eas simul áneas pa a que sean ejecu adas en nodos di e en es y, una ez es én lanzadas odas, ealiza o as ope aciones independien es y después ecupe a los esul ados po o den. 3.2. Rabbi MQ Rabbi MQ es una cola de mensajes. Una cola de mensajes es un mecanismo pa a el en ío de da os en e hilos o p ocesos, a eces incluso en e p ocesos que se ejecu an en di e en es máquinas. Todas las colas de mensajes implemen an alguna a ian e del pa ón publishe /subsc ibe que pod íamos aduci como publicado /susc ip o en el que uno o a ios hilos p oduc o es gene an da os que son en iados a uno o a ios hilos consumido es. PUBLISHER / SUBSCRIBER El pa ón publishe / subsc ibe , ambién denominado pub/sub, de ine un escena io con p oduc o es y consumido es en el que los consumido es pueden especi ica que no desean ecibi odos los da os disponibles sino sólo aquellos que concue dan con un pa ón de e minado. Cola de mensajes pub/sub única. Fuen e: h ps://www. abbi mq.com/ge s a ed.h ml Rabbi MQ pe mi e además implemen a algunos pa ones más a anzados de dis ibución de mensajes, como en u amien o de mensajes, susc ipción selec i a sólo a algunos emas o ipos de mensaje o RPC (pe ición/ espues a). Rabbi MQ pe mi e ambién algunas opciones a anzadas como la pe sis encia de mensajes, polí icas de segu idad, no i icación de ecepción y la con igu ación explíci a de di e en es pa áme os como po ejemplo la polí ica de en ega. 19 Pa ón pub/sub de allado. Fuen e: h p://zguide.ze omq.o g/page:all Es a ecnología implemen a un p o ocolo abie o denominado AMQP pa a la dis ibución de mensajes, lo que pe mi e en e o as cosas que exis an clien es pa a casi odos los lenguajes y pla a o mas en uso. 3.3. Redis Redis es un se icio que almacena en ablas de hashes, conjun os de cla e y alo (key- alue s o e) [9] en memo ia RAM, el endimien o puede se muy ele ado debido al almacenamien o en memo ia RAM, compa ándola con los mo o es de búsqueda de o as bases de da os. IN-MEMORY DATABASE [8] Una in-memo y da abase almacena odos sus da os en memo ia. Es o implica que las consul as son mucho más ápidas al no ene que lee ni esc ibi en un disco, pe o como con apa ida el iesgo de pé dida de da os es mucho más ele ado al no exis i pe sis encia de da os. Algunas bases de da os en memo ia pe mi en el olcado pe iódico de los da os al disco, lo que educe el impac o de un allo inespe ado a la pé dida de la nue a in o mación gene ada desde el úl imo olcado. 20 KEY-VALUE STORE Al con a io que una base de da os elacional, una key- alue s o e almacena pa es cla e- alo y no pe mi e ealiza búsquedas complejas, o al menos no an complejas como SQL. Es e ipo de bases de da os son idóneas pa a gua da da os sob e los que se sabe de an emano que no a a se necesa io ealiza búsquedas complejas, ya que la elocidad de acceso e inse ción es mucho mayo en compa ación con las bases de da os adicionales. Especí icamen e, las consul as de ipo JOIN o simila es son imposibles en es e ipo de base de da os y suelen implica consul a odos los da os y ealiza la búsqueda p og amá icamen e, lo que implica un mayo cos o en memo ia, e iciencia y es ue zo del p og amado . Es a ecnología no es una base de da os elacional po que no pe mi e ope aciones en e da os como JOINs ni consul as elabo adas median e SQL. Sin emba go, o ece el almacenamien o no sólo de cadenas de ex o sino de di e en es ipos de da os abs ac os como lis as, conjun os, ablas y o os ipos más especializados. Redis se ciñe es ic amen e en es ablece y ecupe a da os sob e sus es uc u as dejando de lado la búsqueda de elaciones o es icciones. Redis pe mi e una o ma especializada de pe sis i los da os, así como eplicación maes o-escla o e incluso clus e ing con ole ancia a allos de los nodos. 3.4. Docke Docke es un so wa e de i ualización y aislamien o de p ocesos a ni el de sis ema ope a i o. Al con a io que las máquinas i uales adicionales, Docke no emula comple amen e las llamadas al sis ema y po an o no necesi a de ins ucciones especiales pa a man ene un endimien o acep able. Los p ocesos que se ejecu an bajo Docke co en di ec amen e en el sis ema ope a i o hos sin so wa e in e medio, si bien el ke nel se enca ga de aisla dichos p ocesos pa a que no in e ie an con el es o del sis ema. 21 Di e encia en e máquinas i uales adicionales y Docke , como podemos e docke unciona con el sis ema ope a i o de la p opia máquina y compa e los bins y lib e ías en e las aplicaciones del mismo ipo. Fuen e: h p://www.zdne .com/a icle/wha -is-docke -and-why-is-i -so-da n-popula / Di e encia en e máquinas i uales adicionales y Docke . En es a imagen al se aplicaciones di e en es, la única di e encia exis en e es que Docke unciona con el sis ema ope a i o de la máquina, que lo lanza. Fuen e: h ps://www.docke .com/wha -docke 22 Uso conjun o de Docke y máquinas i uales. En es a imagen se e cla amen e la en aja de que Docke se lance con el sis ema ope a i o de la máquina. Fuen e: h ps://blog.docke .com/2016/04/con aine s-and- ms- oge he / De momen o Docke sólo unciona con el ke nel de Linux, ya que és e p opo ciona es ca ac e ís icas idóneas pa a aisla los p ocesos que co en den o de los con enedo es de Docke . Es as ca ac e ís icas son: Los g upos de con ol (“cg oups”) que limi an el acceso a ecu sos ales como memo ia y CPU. Los espacios de nomb es (“namespaces”), que aíslan los p ocesos que co en den o de los con enedo es en e sí y de los p ocesos del hos . Un sis ema de a chi os como O e layFS que no solo aísla los a chi os que se encuen an den o de un con enedo , sino que pe mi e supe pone los con enidos de múl iples sis emas de a chi os, p esen ando un sólo sis ema que esul a de la combinación de los con enidos de odos ellos. Docke se ges iona a a és de una API que puede se llamada desde las he amien as de Docke en línea de comandos, desde biblio ecas c eadas exp esamen e pa a di e en es lenguajes de p og amación, o bien ealizando pe iciones di ec amen e al endpoin [2] del se icio web que p opo ciona dicha API. 23 A qui ec u a de Docke . Fuen e: h ps://docs.docke .com/engine/docke -o e iew/ Docke sólo puede lanza imágenes c eadas p e iamen e. Exis e un eposi o io de imágenes c eadas po la comunidad (Docke Hub) y o os eposi o ios man enidos po di e en es en idades, po ejemplo, Google. Cualquie usua io puede gene a sus p opias imágenes y subi las a Docke Hub simplemen e c eando un a chi o llamado Docke ile y ejecu ando unos sencillos comandos que gene an a pa i de es e a chi o la imagen en la máquina local, que luego puede subi se a un eposi o io. Pa a c ea una imagen se necesi a un a chi o Docke File. Es e a chi o con iene el sis ema ope a i o y las he amien as que se indiquen. Pa a cons ui la imagen debemos hace docke build. Una ez c eado la imagen podemos subi la al eposi o io haciendo docke push. Si la imagen es á subida podemos desca ga la con docke pull. Una ez enemos la imagen se puede lanza con docke un y ealiza commi pa a gua da los cambios. La imagen siguien e explica es os pasos más g á icamen e. Fuen e: h ps://dzone.com/ e ca dz/ge ing-s a ed-wi h-docke -1 Hay que indica Docke mues a un compo amien o que in e esa des aca a la ho a de lanza o pa a a ios con enedo es simul áneamen e, como e emos en es e 24 es de iempos de a anque y pa ada de un con enedo en dana, el clús e de p uebas. Comando de lanzamien o: o i in $(seq 20); do /us /bin/ ime - '%e' docke un -d i -- m --name c$i debian > /de /null & Done Comando de pa ada: o i in $(seq 20); do /us /bin/ ime - '%e' docke s op c$i > /de /null & done un 1 un 2 un 3 un 4 un 5 s op 1 s op 2 s op 3 s op 4 s op 5 3.84 4.02 6.68 6.83 9.37 9.51 9.88 9.91 10.44 12.19 12.25 12.35 12.44 12.49 12.65 12.69 13.00 13.15 5.31 6.74 8.10 8.25 8.72 8.83 11.72 11.85 11.97 12.08 12.26 12.36 12.44 13.06 13.35 13.44 13.57 13.60 4.34 4.92 5.39 7.88 8.73 8.88 9.21 9.54 11.61 11.77 12.01 12.12 12.22 12.30 12.43 12.48 12.52 12.59 4.38 4.88 6.91 8.20 8.37 8.48 8.96 11.87 11.91 12.15 12.25 12.36 12.49 12.55 12.81 12.96 13.14 13.13 5.38 7.25 8.20 8.48 9.10 9.59 9.76 11.64 11.82 11.86 12.73 12.80 12.86 12.94 13.04 13.11 13.23 13.30 1.92 3.21 5.20 5.60 6.08 6.60 6.79 6.99 7.27 7.43 7.60 7.80 7.95 8.12 8.30 8.52 8.63 8.74 3.58 4.26 4.50 4.96 5.08 6.13 6.98 7.28 7.44 7.60 7.83 7.92 8.21 8.38 8.45 8.57 8.63 8.66 3.83 4.81 4.98 5.43 6.15 6.33 6.44 7.11 7.68 7.84 8.02 8.15 8.29 8.44 8.54 8.62 8.66 8.73 3.43 3.60 3.75 3.92 6.15 6.32 6.86 7.02 7.19 7.27 7.43 7.57 7.69 7.84 7.96 8.06 8.13 8.23 3.70 4.02 4.23 4.47 6.04 6.74 6.91 7.30 7.49 7.60 7.78 7.99 8.10 8.19 8.38 8.54 8.69 8.82 31 Fuen e: h ps://kube ne es.io/docs/ asks/access-applica ion-clus e /web-ui-dashboa d/ 32 4. Decisiones a qui ec ónicas En es e apa ado se ealiza á una in es igación en e las ecnologías más pun e as que exis en en la ac ualidad, con el in de con es a las siguien es p egun as:  Que o ques ación end á el sis ema dis ibuido.  Tipo de clien e.  Localización del clien e. 4.1. O ques ación ORQUESTACIÓN En el ámbi o de los con enedo es so wa e, se en iende como o ques ación a la ges ión uni icada y au oma izada de dichos con enedo es. El so wa e de o ques ación ecibe una con igu ación deseada y se enca ga de lle a la a cabo en los nodos que ges iona, le an ando con enedo es de imágenes especí icas cuando es necesa io y einiciándolos si es p eciso. Los sis emas de o ques ación p opo cionan uncionalidades adicionales a la me a ges ión de con enedo es; po ejemplo, pe mi en expone g upos de con enedo es como un único se icio, así como balancea la ca ga en e ellos. Pa a la elección de qué ecnología se u iliza á pa a o ques a el sis ema dis ibuido se ealiza á una in es igación exhaus i a de las ecnologías del me cado ac ual. Pa a una p ime a oma de con ac o se ealiza á una b e e desc ipción, basada en las uncionalidades de las ecnologías más pun e as. Las siguien es imágenes han sido omadas de las diaposi i as de la página: h ps://es.slidesha e.ne /Ka lIsenbe g/con aine -o ches a ion-wa s El p ime pun o que se a a analiza es la p og amación, la capacidad de cada ecnología en la escalabilidad, esu ección, despliegue con inuo y colocación de los nodos. 33 Como se puede obse a en es e aspec o la ecnología más comple a es Kube ne es, ya que iene odos los pun os incluyendo la esu ección de nodos que es uno de los equisi os del sis ema, o as dos ecnologías con bas an es pun os a a o , son Swa m y Mesos/Ma a hon. El siguien e pun o a analiza es la adminis ación de se icios, la cual pa a nues o sis ema dis ibuido es muy impo an e, ya que en los equisi os se pidió que se con ola án ecu sos como el consumo de CPU, limi a el espacio de disco o el iempo de ejecución de una máquina. 34 En es a imagen podemos e cómo la ecnología que más se amolda a nues as pe iciones es Mesos con Ma a hon y jus o de ás de ella Kube ne es y Swa m de nue o, po lo an o, es as es ecnologías cogen muchos pun os pa a se elegidas. Po úl imo, amos a analiza la adminis ación de se icios, como, po ejemplo, la ca ga balanceada y las e ique as. De nue o las ecnologías que más pun os a su a o ienen son Kube ne es y Mesos con Ma a hon. Pa a comple a la in es igación e emos dos g á icas más sob e las ecnologías más usadas en el me cado ac ualmen e y a con inuación desc ibi emos una a una cada ecnología. La p ime a de ellas son las ecnologías que o ques an, en p ime luga , si nos ijamos en la línea de azul cla o, se obse a que las más u ilizadas en p oducción son Kube ne es y Mesos. En cambio, si nos ijamos en la línea de azul oscu a, se obse a que los po cen ajes son mayo es en no p oducción, dando a en ende que es una ecnología en c ecimien o, oda ía es á en p uebas. 35 Fuen e: h ps:// henews ack.io/ ns- esea ch-p esen -s a e-con aine -o ches a ion/ En es a segunda imagen podemos obse a las he amien as de p og amación, compañe as de las de o ques ación, en p ime luga , se encuen a Kube ne es y el compañe o de Mesos, Ma a hon. También, des aca Swa m que es dis ibuido po Docke . 36 Fuen e: h ps:// henews ack.io/ ns- esea ch-p esen -s a e-con aine -o ches a ion/  Docke Swa m Es la solución más simple, iene ins alada con Docke Engine, ya que es una dis ibución o icial de docke , a pa i de la e sión 1.12. Es compa ible con la API de Docke , pe o se a a de una ecnología muy poco madu a pa a en o nos de p oducción.  Mesos con Ma a hon Se a a de una mezcla de ecnologías donde Ma a hon es el enca gado de la o ques ación del sis ema y Mesos, en cambio, lanza los con enedo es de imágenes de Docke , ambién podemos in e cambia Mesos po Kube ne es, c eando una ecnología po en e pe o pesada. Se a a de una ecnología muy madu a, al espec o de las demás. Pe o iene un consumo muy ele ado de ecu sos.  Ya n Ya n es o o ges o de sis emas dis ibuidos, pe o ue c eado con la idea de u iliza se pa a Hadoop. 37  Nomad Nomad es la ecnología más ecien e de odas, con menos de un año. Es la más simple iene un bina io que puede ac ua como clien e y se ido , pe o al se an jo en apenas hay documen ación, muy poca di usión y asume que se a a u iliza con Vag an . 4.2. Tipo de clien e En es e apa ado se oma la decisión del ipo de clien e que se a a emplea pa a el desa ollo del sis ema dis ibuido y las di e en es posibilidades exis en es. 4.2.1. Se icio Web Una al e na i a pa a en ia p og amas a los nodos que los an a ejecu a y pos e io men e ecupe a los esul ados es median e mic o-se icios [1], u ilizando la a qui ec u a REST. Es e sis ema es ela i amen e sencillo de implemen a ya que en casi cualquie lenguaje exis en biblio ecas que pe mi en la c eación de un se icio web y la conexión al mismo, y además el p o ocolo u ilizado, HTTP o HTTPS, es público, abie o y ex emadamen e es able, lo que pe mi i ía la in e ope abilidad de o ma muy sencilla en caso de que se quisie a ex ende o modi ica el p og ama en un u u o. MICROSERVICIOS Y REST La a qui ec u a de mic ose icios es un pa ón po el cual una aplicación se di ide en módulos o agmen os que se comunican en e sí median e pe iciones HTTP. La en aja p incipal es que obliga a desa olla sis emas con bajo acoplamien o, a cos a de añadi un cie o e aso po las pe iciones HTTP y la se ialización de los mensajes. El p o ocolo HTTP se desa olló pa a la en ega de hipe ex o y no pa a la comunicación en e módulos o p ocesos, po lo que se desa olló un ma co concep ual pa a la adap ación de HTTP a la comunicación en e módulos. Es e ma co se llamó REST, ep esen a ional s a e ans e , y es ablece una co elación en e comandos HTTP y ope aciones en e módulos. En REST, las pe iciones GET, POST, PUT y DELETE equi alen a los concep os c ea , lee , ac ualiza y bo a . En es e pun o se nos plan ean dos al e na i as: podemos ene un se ido en el nodo maes o y clien es en los nodos ejecu o es, o al e és. Es as al e na i as ienen cada una sus p os y con as, que pasa emos a explo a . 38 Tal ez la al e na i a más inmedia a sea ene un mic o-se icio en el nodo que ecibe las pe iciones de los usua ios y que los nodos que ejecu an las a eas solici en los da os a dicho se icio (GET) y pos e io men e de uel an los esul ados al mismo (POST). El p oblema p incipal de es a a qui ec u a es que, aunque el se ido no enga a eas que en ia los clien es deben consul a pe iódicamen e si hay nue as a eas que ejecu a , c eando una mínima ca ga esidual en el sis ema. O o p oblema de i ado del an e io es el hecho de que lleguen múl iples a eas mien as odos los clien es es án do midos, en cuyo caso dichas a eas no comenza án a ejecu a se has a que llegue el momen o de que los clien es uel an a solici a a eas al se ido , po lo que dependiendo la con igu ación de los delays puede a da se un iempo conside able en se i una pe ición de un usua io. C eemos que es e enómeno se da ía con cie a ecuencia según los pa ones ípicos de uso de es a aplicación: los alumnos ienden a en ia en masa las a eas pa a se e aluadas el úl imo día e incluso la úl ima ho a. Hay que deci que es e p oblema no se p esen a ía con nume osas solici udes de usua ios en espe a, sino sólo con un lujo bajo pe o cons an e de a eas pendien es. ESPERA ACTIVA Y PUSH / PULL [6] En un escena io en el que hay p oduc o es y consumido es, el e en o en el que un consumido solici a da os a un p oduc o se denomina pull, mien as que, si es el p oduc o el que inicia la comunicación de los da os disponibles a los consumido es o les señaliza dicho e en o de alguna o ma, se denomina push. Cada una de las dos a ian es iene di e en es ca ac e ís icas de endimien o. Cuando ningún p oduc o iene da os disponibles y ampoco dispone de ningún mé odo de señaliza a los consumido es la p esencia de nue os da os, los clien es suelen ene que ealiza espe a ac i a, ambién denominada polling [21]. És a consis e en que los consumido es solici an da os a los p oduc o es en bucle, lanzando an as pe iciones como el sis ema pe mi e po lo que el endimien o del sis ema se deg ada. Una al e na i a es espe a un iempo de e minado has a lanza la siguien e pe ición, lo que hace que el endimien o del sis ema disminuya. En con as e, si exis e algún mé odo pa a señaliza la p esencia de da os, los consumido es pueden bloquea y mien as se encuen an bloqueados no consumen ecu sos. Los mé odos de espe a más comunes son a iables de condición si sólo se necesi a espe a en e hilos, o bien las llamadas del sis ema selec o epoll si se necesi a sinc onización en e p ocesos, e incluso en e di e en es hos s. 39 En la imagen podemos e el modelo g á ico de un mic o-se icio, donde el se ido es á en el nodo hos y los nodos ejecu o es son los clien es. La o a al e na i a u ilizando una a qui ec u a REST [3] se ía a la in e sa: el nodo que ecibe las solici udes de los usua ios se ía el clien e, y los nodos que ejecu an las a eas se ían los se ido es. Es a a qui ec u a apa en emen e ex aña end ía la eno me en aja de no depende del delay del clien e, ya que las a eas se ían en iadas a los clien es disponibles a medida que ue an llegando sin depende de e asos a i iciales, pe o end ía a ias des en ajas. La p ime a, el nodo “dispa che ” debe ía man ene una lis a de nodos ejecu o es disponibles, po ejemplo, con ando con un mic o-se icio en el que se egis a a cada nodo al a anca y/o al queda disponible después de habe ejecu ado una a ea. Es o complica ía la implemen ación y obliga ía al p og amado a implemen a un mecanismo pa a lle a el egis o de nodos disponibles y a eas pendien es, así como con ola aquellas a eas en iadas, pe o no inalizadas. 40 En la imagen podemos e el modelo g á ico de un mic o-se icio, donde el se ido es á en los nodos ejecu o es y el nodo hos es el clien e. 4.2.2. Websocke s WEBSOCKET [23] Websocke es una ecnología de comunicación bidi eccional desa ollada p ime amen e pa a na egado es web, pe o que en ealidad es independien e de HTTP. El p o ocolo de Websocke es ablece una conexión pe manen e en e clien e y se ido que pe manece abie a du an e oda la sesión, lo que implica un mejo endimien o, pe o ambién un mayo consumo de ecu sos en el lado del se ido . Los mo i os pa a el desa ollo de es e p o ocolo son p incipalmen e dos: po un lado, pe mi i al se ido en ia da os al clien e sin pe ición p e ia, y po el o o lado e i a que el clien e enga que es ablece una nue a conexión cada ez que desee ealiza una pe ición al se ido . Una modi icación de la implemen ación median e mic o-se icios es la u ilización de websocke s. Aunque no es un p o ocolo an p obado como HTTP 47 5. Implemen ación Llegado al pun o de la implemen ación hay que decidi qué ecnologías an a se u ilizadas. Pa e común La comunicación en e el dispa che y los ejecu o es es la p ime a decisión que debe oma se, y en es e caso la al e na i a en e se icios web y una cola de mensajes es sencilla de di imi en nues o caso. La cola de mensajes iene una en aja de e minan e: pe mi e que los clien es se bloqueen en espe a en luga de ene que ealiza espe a ac i a de o ma mucho más sencilla pa a el desa ollado , lo que conlle a menos espacio pa a come e e o es. Elegida la opción de la cola de mensajes, se plan ea la u ilización de una opción que acili a su u ilización aún más si cabe: Cele y. Es a biblio eca es ele an e ya que nos o ece ein en os au omá icos si el mensaje no se con i ma, iene la opción de con i ma an es y después de la ejecución, además p opo ciona una cola de a eas, Rabbi MQ, pa a que los wo ke ecojan las pe iciones que el mas e ha dejado y una base de da os NoSQL, Redis, pa a que los wo ke s almacenen sus espues as una ez acabada la compilación del código. Además, Cele y nos o ece un balanceo de ca ga basado en una a qui ec u a in e na de “p e e ch”, que consis e en cada wo ke se queda con más a eas de la que es á ejecu ando, siendo ú il pa a e i a un á ico cons an e, no ienen que pedi una nue a a ea cada ez que e mina una. Cele y se a a de una lib e ía de Py hon po lo que es amos limi ando el sis ema a la u ilización de un solo lenguaje. También en es e caso las en ajas son cla as, si bien hay que ene muy en cuen a el mayo incon enien e: el código debe á cambia se pa a exclui Cele y si se decide no u iliza Py hon o no llama lo desde o o lenguaje. PREFETCH Cuando un clien e ob iene a eas de una cola puede hace lo de una en una o omando a ias a la ez, lo que se denomina p e e ching. La p incipal en aja de es a écnica es que, sob e odo con mensajes de g an amaño o que necesi an ela i amen e mucho iempo pa a se leídos y/o decodi icados, se educe la la encia de lec u a al solapa la ejecución de una a ea con la lec u a de o as de la cola. El p e e ch si e además como un mé odo udimen a io de balanceo, e i ando que un sólo nodo acapa e odas las a eas. La siguien e decisión es la localización del clien e. Como ya hemos is o, podemos lanza un núme o de con enedo es den o de los cuales se ejecu a un clien e en cada uno, o bien podemos lanza un solo clien e que se enca gue de lanza y ce a 48 con enedo es, así como de inse a el código en cada uno de ellos, ejecu a lo y oma el esul ado cada ez que llegue una pe ición. La decisión en es e caso es más complicada, y pa a oma la nos hemos basado en benchma ks del iempo necesa io pa a lanza un wo ke de Cele y así como pa a c ea un nue o con enedo y ce a lo. Un wo ke de Cele y sin opciones especiales a da un segundo en a anca , núme o que pe manece es able, aunque se lancen 20 wo ke s a la ez, aunque se puede educi has a unos 0.2 segundos con las opciones “--wi hou -gossip -- wi hou -mingle”. Sin emba go, el lanzamien o de un con enedo a ía dependiendo del núme o de lanzamien os concu en es que se in en en hace . Un único lanzamien o a da de 0.5 a 0.8 segundos, pe o si se u ilizan es hilos independien es que lanzan con endo es a la ez, el iempo máximo de lanzamien o sube has a los 5 segundos. Se p oduce un enómeno simila en el cie e de los con enedo es: el cie e de un sólo con enedo es casi ins an áneo pe o el cie e en pa alelo de a ios implica un e aso de un segundo. Es as ci as nos lle an a diseña un mecanismo que nos pe mi a ene múl iples con enedo es abie os y u iliza los cuando lleguen pe iciones; lo que se suele denomina “p e o k”. Es e sis ema lanza y cie a los con enedo es en un hilo independien e y no obs aculiza ni bloquea el hilo p incipal, po lo que los iempos de lanzamien o y cie e quedan enmasca ados, siemp e que en el caso del lanzamien o haya con enedo es disponibles en el pool cuando llega una pe ición. La cons ucción de es e pool de con enedo es conlle a la exis encia de un único clien e po hos , no un clien e po con enedo . La úl ima decisión es el uso de he amien as de o ques ación pa a ges iona las imágenes que con ienen los clien es. En es e pun o indicamos dos a ian es, debido a que el código ha sido desa ollado pa a sopo a ambas. La decisión sob e cuál a ian e escoge depende de las ca ac e ís icas de las máquinas en las que se a a ejecu a es e sis ema, así como de las necesidades de uso. Va ian e A: con o ques ación En p ime luga , decidi cuál a a se la ecnología que se enca gue de o ques a el clús e , debido a la can idad de documen ación y es a en el anking de ecnologías más usadas an o en el sec o emp esa ial, como en el sec o pa icula . Kube ne es es la elegida pa a o ques a el sis ema, dicho clús e iene un nodo mas e y 5 nodos wo ke , en los que se debe ins ala Docke y ejecu a el código que nos p opo ciona el gi de Kube ne es pa a pode lanza lo, dependiendo si el nodo es wo ke o mas e . En es e paso se descub ió un p oblema, el nodo mas e enía ocupado el pue o 8080, y kube ne es, po de ec o, se le an a en el pue o 8080, gene ando con lic os y no dejando que se inicie co ec amen e. Como solución se desca gó el código de Kube ne es, se modi icó y se ol ió a subi pa a que se lanza á en el pue o 28080.Una ez ins alado Kube ne es u iliza Flannel [24] pa a la conexión en e nodos. A la ho a de lanza un con enedo Kube ne es y Docke ienen una polí ica de cie e p ema u o, 49 que es á elacionada con la “Docke es a policy”, que con iene cua o polí icas de einicio, “no” (po de ec o), “on- ailu e”, “unless-s opped” y “always”. Si el cie e del con enedo se p oduce an es de 10 segundos desde el a anque, se conside a como un allo y se aplica un “exponen ial backo ” [12], que uel e a in en a lanza el con enedo . EXPONENTIAL BACKOFF En gene al, exponen ial backo es un algo i mo que disminuye la ecuencia de cie a ope ación has a encon a un pun o acep able. Kube ne es implemen a exponen ial backo en el einicio de un con enedo . Si un con enedo ecién lanzado se cie a an es de 10 segundos, K8s in e p e a que ha habido algún ipo de e o y e asa su einicialización en luga de e ec ua la inmedia amen e, espe ando más iempo cada ez pa a el einicio de dicha máquina has a llega al núme o máximo de ein en os. Una ez mon ado el sis ema dis ibuido hay que ajus a el sis ema a los equisi os, con la con igu ación ulimi de docke a la ho a de lanza las imágenes, añadiendo a la ho a de lanza las imágenes con algunas ea u es, “--cpus” pa a con ola el núme o de CPUs que que emos usa pa a lanza la imagen, “--s op- imeou ” iempo en segundos que end á de ida el con enedo . Uno de los equisi os consis e en que cada con enedo sólo puede ejecu a un código pa a e i a p og amas malin encionados, la pa ada y ea anque implican man ene da os en el sis ema de a chi os, po lo que la única solución es el cie e de cada con enedo después de ejecu a un código y lanza uno nue o pa a cada pe ición. Va ian e B: sin o ques ación O a opción es ene el mismo sis ema, pe o sin un o ques ado , ya que Cele y unciona como Kube ne es: en el nodo mas e se ejecu a Cele y y dis ibuye sus a eas en e los nodos wo ke s en los que se ha ejecu ado el código de Cele y Wo ke . 50 6. Manual de ins alación En es e capí ulo se a a de alla una guía pa a la ins alación de un sis ema dis ibuido pa a la ejecución segu a de código. La ins alación de Kube ne es es opcional, se puede desplega Cele y igualmen e. LINUX CGROUPS Cg oups es una ca ac e ís ica del ke nel de Linux cuyo in es con ola y limi a los ecu sos asignados a g upos de a eas. En casi odos los sis emas ope a i os ipo Unix exis e un mecanismo, ulimi , usado pa a limi a ecu sos po cada p oceso. En con as e, Cg oups pe mi e aplica es os lími es a un g upo de p ocesos, que en el caso de Docke es á compues o po los p ocesos que se ejecu an cen o de cada con enedo . Además, hay un mayo núme o de lími es que se pueden impone a es os p ocesos. Cg oups es á di idido en módulos que pueden eni po de ec o ac i os o no ac i os dependiendo de la dis ibución de Linux que es emos u ilizando. En el caso conc e o de es as ins ucciones nos hemos basado en Debian, po lo que pa a pode u iliza algunas de las ca ac e ís icas de Cg oups y que Docke uncione co ec amen e, hay que pasa cie os pa áme os al ke nel a a és del ca gado de a anque. Kube ne es  P e io a la ins alación debemos ene un nodo mas e y an os nodos wo ke s como que amos.  Ins alación de Kube ne es, pa a es e paso necesi a emos se oo . 1. P ime o en odas las máquinas modi icamos el g ub. Edi a : nano /e c/de aul /g ub Pone : GRUB_CMDLINE_LINUX="cg oup_enable=memo y" Ejecu a : upda e-g ub2 Reinicia : eboo 2. En odas las máquinas (Sólo si se u ie a que epe i los pasos, la p ime a ez no es necesa io). docke s op $(docke ps -a -q) # Pa a odas las ins ancias docke m $(docke ps -a -q) # Elimina ins ancias docke mi $(docke images -q) # Elimina imagenes 51 3. En la máquina Mas e . gi clone h ps://gi hub.com/kube ne es/kube-deploy cd kube-deploy/docke -mul inode expo K8S_VERSION= 1.5.6 expo IP_ADDRESS=192.168.134.1 # La IP de es e equipo en la ed ./mas e .sh 4. En odas las máquinas Wo ke . gi clone h ps://gi hub.com/kube ne es/kube-deploy cd kube-deploy/docke -mul inode expo K8S_VERSION= 1.5.6 expo MASTER_IP=192.168.134.1 # La IP del mas e expo IP_ADDRESS=192.168.134.1 # La IP de es e equipo en la ed ./mas e .sh 5. Kubec l, Sólo en el nodo Mas e . cu l -LO h ps://s o age.googleapis.com/kube ne es- elease/ elease/$(cu l -s h ps://s o age.googleapis.com/kube ne es- elease/ elease/s able. x )/bin/linux/amd64/kubec l chmod +x ./kubec l m ./kubec l /us /local/bin/kubec l 6. Comp obación, en el nodo Mas e que es el único que iene ins alado Kubec l. kubec l clus e -in o #En mas e nos debe ía da oda la in o mación del Clús e kubec l ge nodes #En mas e pa a consul a los nodos 52 7. Lanza un eplica ion con olle desde un yaml. C eamos un iche o, po ejemplo, en la u a: /op /kube ne es/examples/nginx-pod.yaml Con enido del a chi o: apiVe sion: 1 kind: Replica ionCon olle me ada a: # Nomb e del Replica ion Con olle name: my-nginx spec: eplicas: 1 selec o : app: nginx empla e: me ada a: name: nginx labels: app: nginx spec: con aine s: - name: nginx image: nginx po s: - con aine Po : 80 es a Policy: Always Pa a lanza el pod: kubec l c ea e – /op /kube ne es/examples/nginx-pod.yaml 53 Clien e Es p e equisi o ene Docke ins alado an o en el se ido como en los clien es. En los clien es, además, debe á ins ala se la biblio eca Cele y con sopo e pa a Redis: pip3 ins all cele y[ edis] El lanzamien o del clien e es muy sencillo. Sólo es necesa io ob ene el código en el se ido y en los clien es, po ejemplo, clonando el eposi o io que lo con iene: gi clone h ps://gi hub.com/ elazq/execu o -se ice.gi Deben lanza se los se icios auxilia es (Rabbi MQ y Redis) en el se ido : cd execu o -se ice ./s a -se ices.sh En los clien es, en cambio, ha de ejecu a se el wo ke : cd execu o -se ice cele y wo ke -A cele y_wo ke 54 7. P uebas de concep o y medidas de iempos Hemos c eado un p og ama de p ueba en Py hon que gene a el alo N de la sucesión de Fibonacci usando el algo i mo ecu si o, sin ningún ipo de op imización. Pa a es a p ueba calcula emos la posición 48, que en un po á il a da es o: $ ime py hon3 ib.py 63245986 eal 0m23.552s use 0m23.442s sys 0m0.040s Hemos gene ado 200 ca pe as simulando el en ío de p ác icas al se ido . Todas ellas se encuen an bajo la ca pe a “code es ”. Lanzamos el comando: ime py hon3 execu o -se ice/cele y_clien _mul i.py code es ib.py y ob enemos como esul ado: eal 3m22.149s use 0m0.704s sys 0m0.084s 55 8. Conclusiones y abajo u u o Es e p oyec o in oluc a muchas ecnologías di e en es ales como con aine ización, o ques ación, comunicación en e p ocesos (IPC), p o ocolos de se ialización, colas de mensajes o almacenes de alo es cla e. La ecnología cen al de es e p oyec o, la con aine ización con Docke , se es á ace cando ápidamen e a la madu ez, aunque algunas peculia idades oda ía se man ienen. Su supues a c eación ins an ánea no es así en nues as p uebas, p obablemen e debido a algún cuello de bo ella en el daemon Docke . Hay p eocupaciones sob e el ni el de aislamien o que p opo ciona y si es su icien e pa a de ene a un a acan e de e minado. Pe o, po o o lado, su uncionalidad y endimien o es inigualable. La i ualización eal impone una sob eca ga pesada que Docke elimina casi po comple o. La o ques ación, po el con a io, sigue siendo inmadu a. Incluso la ecnología más p ome edo a, Kube ne es, que es desa ollada po Google y iene el mayo núme o de usua ios, ca ece de documen ación y acilidad de uso. El concep o subyacen e es sólido y sin duda se con e i á en un luga común en unos años, pe o en es e momen o es á implemen ación oda ía es á limi ada a de o os equipos con su icien es ecu sos pa a man ene y depu a es a nue a ecnología. IPC es una ecnología muy madu a. Hay a ias implemen aciones con di e en es conjun os de ca ac e ís icas y ca ac e ís icas de endimien o, y la documen ación es, en la mayo ía de las al e na i as, abundan e. Nues a elección, Cele y, es á bien documen ada y iene muchas opciones de con igu ación pa a ajus a su endimien o, e incluso puede abaja con muchas colas de mensajes y bases de da os di e en es, pa a la dis ibución y almacenamien o de a eas. Es e abajo puede se ampliado o u ilizado como base pa a a ias o as ideas. El más di ec o se ía una pla a o ma de p ueba pa a nue os lenguajes de p og amación o DSL (lenguajes especí icos de dominio), pa a que los usua ios pudie an se p esen ados con una in e az web donde pudie an esc ibi o ca ga sus p uebas y hace las e alua po el sis ema. Es e p oyec o ambién pod ía se u ilizado pa a implemen a una de las úl imas endencias en compu ación: un p o eedo sin se ido . Al igual que PaaS (pla a o ma como se icio) e IaaS (in aes uc u a como se icio), algunos p o eedo es como Amazon y Google es án comenzando a o ece un se icio basado en e en os donde los desa ollado es suben su código y se ejecu a en espues a a una llamada ex e na al como un usua io que hace una solici ud a una página web o una base de da os que es á siendo modi icada. Es os se icios sólo se ac u an po el uso de la CPU y po lo an o no equie en ene una máquina i ual uncionando en odo momen o, po lo que es más en able pa a cie os ipos de ca gas. O a en aja es que es os se icios se 56 escalan au omá icamen e pa a el desa ollado , po que el código se puede ejecu a en cualquie núme o de máquinas en pa alelo. 7. Conclusions and u u e wo k This p ojec in ol es many di e en echnologies such con aine iza ion, o ches a ion, in e -p ocess communica ion (IPC), se ializa ion p o ocols, message queues o key- alue s o es. The cen al echnology o his p ojec , con aine iza ion wi h Docke , is quickly app oaching ma u i y, albei some qui ks s ill emain. I s pu po ed ins an c ea ion is, in ou es s, no so, p obably due o some bo leneck in he Docke daemon. The e a e conce ns abou he le el o isola ion i p o ides and whe he i is enough o s op a de e mined a acke . Bu , on he o he hand, i s unc ionali y and pe o mance is unpa allelled. Real i ualiza ion imposes a hea y o e head ha Docke elimina es almos comple ely. O ches a ion, in con as , is s ill imma u e. E en he mos p omising echnology, Kube ne es, ha is de eloped by Google and has he la ges numbe o use s, is se e ely lacking in documen a ion and ease o use. The unde lying concep is sound and will no doub become commonplace in a ew yea s’ ime, bu igh now his implemen a ion is s ill cons ained o de ops eams wi h enough esou ces o main ain and debug such a new echnology. IPC is a e y ma u e echnology. The e a e se e al implemen a ions wi h di e en ea u e se s and pe o mance cha ac e is ics, and documen a ion is, in mos al e na i es, plen y. Ou choice, Cele y, is well-documen ed and has many con igu a ion op ions o adjus i s pe o mance and i can e en wo k wi h many di e en message queues and da abases, o ask dis ibu ion and s o age. This wo k can be ex ended o used as he basis o se e al o he ideas. The mos s aigh o wa d one would be a es ing pla o m o new p og amming languages o DSLs (domain-speci ic languages), so ha use s could be p esen ed wi h a web in e ace whe e hey could w i e o upload hei es s and ha e hem e alua ed by he sys em. This p ojec could also be used o implemen one o he newes ends in compu ing: a se e less p o ide . In he same ashion as PaaS (pla o m as a se ice) and IaaS (in as uc u e as a se ice) some p o ide s such as Amazon and Google a e beginning o o e an e en -d i en se ice whe e de elope s upload hei code and i ge s execu ed in esponse o an ex e nal e en such as a use making a eques o a web page o a da abase being modi ied. These se ices a e only billed o CPU usage and he e o e do no equi e ha ing a i ual machine unning a all imes, hus making hem mo e cos -e ec i e o ce ain ypes o loads. Ano he ad an age is ha hese 63 h ps://www.you ube.com/wa ch? =C_u4_l84ED8 Kube ne es s Docke Swa n h ps://pla o m9.com/blog/compa e-kube ne es- s-docke -swa m/ Guide Kube ne es h ps://deis.com/blog/2016/kube ne es-illus a ed-guide/ Kube ne es a chi ec u e and use h ps://medium.com/@i ma ke place.ne /kube ne es-101-12ad2424d2 1#. 65x0chdm h p://blog.kube ne es.io/2016/09/kube ne es-1.4-making-i -easy- o- un-on- kube en es-anywhe e.h ml h ps://deis.com/blog/2016/kube ne es- he-ha d-way/ Kube ne es pods h p://kube ne es.io/docs/use -guide/p oduc ion-pods/ Kube ne es con aine h p://kube ne es.io/docs/use -guide/pods/single-con aine / FLOP h p://dl.acm.o g/ci a ion.c m?id=2401807 10. Glosa io  [1] Mic o-se icio: La a qui ec u a de mic ose icios es un pa ón po el cual una aplicación se di ide en módulos o agmen os que se comunican en e sí median e pe iciones HTTP.  [2] Endpoin : Es el des ino inal de una conexión o aplicación.  [3] REST: Es un es ilo de a qui ec u a so wa e pa a sis emas hipe media dis ibuidos como la Wo ld Wide Web.  [4] Cola de mensajes: Una cola de mensajes iene ca ac e ís icas adicionales a una cola no mal. Su unción es la dis ibución de mensajes en e p ocesos, y pe mi e que los clien es bloqueen cuando la cola es á acía. Tiene o as ca ac e ís icas in e esan es como pe mi i que los clien es se susc iban sólo a cie os mensajes y no a odos ( e publishe / subsc ibe ). 64  [5] Cola de a eas: Una cola de a eas es, al menos concep ualmen e, una ex ensión de la cola de mensajes que además equie e que, al ecibi se una a ea, los clien es lo no i iquen.  [6] Push / Pull: En un escena io en el que hay p oduc o es y consumido es, el e en o en el que un consumido solici a da os a un p oduc o se denomina pull, mien as que, si es el p oduc o el que inicia la comunicación de los da os disponibles a los consumido es o les señaliza dicho e en o de alguna o ma, se denomina push. Cada una de las dos a ian es iene di e en es ca ac e ís icas de endimien o.  [7] Fi s come, i s se e: El p ime o en llega es el p ime o en sali , como en una ila.  [8] In memo y da abase: Almacena odos sus da os en memo ia. Es o implica que las consul as son mucho más ápidas al no ene que lee ni esc ibi en un disco, pe o como con apa ida el iesgo de pé dida de da os es mucho más ele ado al no exis i pe sis encia de da os.  [9] Key- alue s o e: Al con a io que una base de da os elacional, una key- alue s o e almacena pa es cla e- alo y no pe mi e ealiza búsquedas complejas, o al menos no an complejas como SQL  [10] Polí ica (de einicio): “Docke es a policy”, que con iene cua o polí icas de einicio, “no” (po de ec o), “on- ailu e”, “unless-s opped” y “always”.  [11] Clús e : Es un g upo de máquina que es án elacionadas y se comunican en busca de un obje i o.  [12] Exponen ial backo : Si el cie e del con enedo se p oduce an es de 10 segundos desde el a anque, se conside a como un allo y se aplica un “exponen ial back-o ”, que uel e a in en a lanza el con enedo .  [13] P e o k: Cuando los ecu sos ins anciados son p ocesos, a la acción de c ea a ios p ocesos y deja los en espe a se suele llama p e-lanzamien o o p e o k. 65  [14] Balanceo: Es un concep o usado en in o má ica que se e ie e a la écnica usada pa a compa i el abajo a ealiza en e a ios p ocesos, o denado es, discos u o os ecu sos.  [15] O ques ación: En el ámbi o de los con enedo es so wa e, se en iende como o ques ación a la ges ión uni icada y au oma izada de dichos con enedo es.  [16] Con aine : Los con enedo es no son más que “cajas” aisladas con lo esencial pa a pode ejecu a un de e minado p og ama o aplicación. Eso se puede en ende como una máquina i ual lige a, en ez de las comple as y pesadas con las que se abaja en la i ualización comple a.  [17] Demonio: se icio o p og ama esiden e es un ipo especial de p oceso in o má ico no in e ac i o, es deci , que se ejecu a en segundo plano en ez de se con olado di ec amen e po el usua io.  [18] Pool: Un conjun o de ecu sos disponibles pa a el sis ema que es án espe ando a se u ilizados se denomina pool.  [19] TAR: Se e ie e en In o má ica a un o ma o de a chi os ampliamen e usado en en o nos UNIX, iden i icados po el su ijo de a chi o . a  [20] Dispa che , execu o , ask: El nodo Dispa che es el nodo que ecibe la a ea “ ask”, y la manda a un nodo execu o pa a que la ejecu e.  [21] Espe a ac i a, poll: Queda se en espe a cons an emen e has a ecibi la pe ición.  [22] Nodo, hos : Un hos o an i ión es un o denado que unciona como el pun o de inicio y inal de las ans e encias de da os. Comúnmen e desc i o como el luga donde eside un si io web. Un an i ión de In e ne iene una di ección de In e ne única (di ección IP) y un nomb e de dominio único o nomb e de an i ión (hos name). 66  [23] Websocke : Es una ecnología de comunicación bidi eccional desa ollada p ime amen e pa a na egado es web, pe o que en ealidad es independien e de HTTP.  [24] Flannel: Es una ed i ual que p opo ciona una sub ed a cada hos . Kube ne es asume que cada pod iene una IP única y en u able den o del clús e . Reduce la complejidad de ealiza asignaciones de pue o.  [25] K8s: Es una ab e iación de Kube ne es de i ada de las 8 le as de “ube ne es” en 8.  [26] RKT: Fue c eado as encon a di e sos allos de segu idad en Docke , es e nue o sis ema o ece segu idad en las imágenes del con enedo , p e iene a aques de escalado de p i ilegios, más lexibilidad en la publicación de imágenes y po abilidad a o os sis emas de “con aine ización”.  [27] FLOP: Es un so wa e que sigue la me odología Tes D i en Design, el uso de es e p og ama es á des inado a la p og amación y el ap endizaje. Es e so wa e albe ga p oblemas de p og amación, pe mi e al p o eso añadi ácilmen e o os nue os y ambién e alúa au omá icamen e las soluciones en iadas po los alumnos.