 Entonces, a la vez pasada estuvimos hablando sobre Hyperledger, hoy vamos a continuar sobre lo mismo y bueno, en general lo que sucede alrededor de Hyperledger es que tenemos otros, una red de negocios blockchain, voy a apagar mi video para que todo quede bien. Lo que sucede con este tipo de redes es que por lo general este es un ejemplo de una red de Hyperledger, para ir identificando un poco los componentes que hacen cargo de una red montada sobre Hyperledger Fabric y lo que nosotros debemos identificar es que por lo general tenemos diferentes tipos de componentes de los cuales me quiero destacar los PIRs. PIRs, pares o nodos en la práctica son lo mismo, de alguna manera yo durante el curso voy a hacer, tal vez mencione más la palabra nodo o par que PIR, pero en todo caso cuando haga referencia PIR para o nodo estoy hablando prácticamente de lo mismo, vale. En este caso también como tenemos acá también en una red de Hyperledger Fabric, esto se ve mal con esta, déjame arreglar esta pared de queda, porque ahí se ve mejor. Tenemos otros también en una red de Hyperledger Fabric aquellos que actúan como miembros de la red, vale, como miembros de la red y también tenemos un servicio, un servicio que sirve de manera cross a toda la red, que este servicio de mejor referencia se llama el servicio de ordenamiento o cluster de ordenamiento, que es responsable de mantener la integridad y el orden de las transacciones que llegan a la blockchain y es el encargado de asegurar la ejecución del protocolo de consenso. Entonces como pueden ver en esta red que estoy montando aquí nosotros tenemos cuatro miembros, no es una red por así decir bancaria, tenemos cuatro miembros de la red que en la práctica han decidido crearse dos canales, por ejemplo en este caso cada miembro tiene desplegado en su infraestructura dos PIRs, eso quiere decir que básicamente tenemos ocho PIRs en toda la red. Estos PIRs que nosotros estamos mencionando pues a cada miembro nosotros en Hyperledger Fabric tenemos un tema que se llaman los canales para el tema de la privacidad, ya les comenté la clase pasada, en este caso tenemos otros un canal de color azul que se ven aquí, este canal de color azul me muestra gráficamente que en la práctica los cuatro miembros, banco A, B y C y D, son capaces de comunicarse y transaccionar sobre un canal de comunicación y de información seguro, pero en cambio por ejemplo en el canal número dos de color amarillo el banco A es excluido de este canal y por lo tanto las transacciones e información que se generan en este canal número dos no van a ser no van a ser visibles para el banco A, de esa manera se genera la privacidad y algo importante, independientemente de cuantos canales tengamos, independientemente de la cantidad de nodos que pueden tener cada miembro, siempre nosotros en producción tenemos un cluster de ordenamiento que sirve para toda la red. Normalmente quien aloja la infraestructura y estos componentes es el miembro fundador de la red. En Hyperledger Fabric se suele tener dos tipos de miembros, el miembro fundador y el miembro que se une en la red. Por lo tanto el miembro fundador de alguna manera tiene una responsabilidad adicional y tiene que hacer una inversión adicional para mantener estos tipos de componentes, pero también yo creo personalmente que también tiene una ventaja competitiva sobre el resto de miembros de la red. Dicho de otra manera, de alguna manera el que aloja este servicio de ordenamiento tiene la capacidad para poder de alguna manera gestionar o estar al frente del gobierno de la red. Bueno, aménsemos un poco más respecto a la privacidad y confidencialidad, ya hablamos en general en un contexto de privacidad y confidencialidad. En general tenemos por ejemplo en un contexto sin permiso de redes públicas o abiertas, nosotros tenemos dos, puede que haya más variables, pero por lo general tenemos dos formas en las blockchain públicas de un entorno de red descentralizada sin permiso, tenemos dos formas de asegurar la privacidad y confidencialidad. La una es lo normal que es básicamente ok, voy e encrypto la data y la dejo en una red como Bitcoin, Ethereum o cualquier otra. Sin embargo lo que sucede con esto es que la mayoría de veces para un entorno empresarial incluso en critar la data suele verse como un riesgo para la información, de manera que en general eso ni siquiera es aceptable. Por lo tanto compromete la data de manera pública, aunque esté encryptada suele ser poco viable dependiendo de la industria en la que tú estés haciendo ese tipo de cosas. Especialmente en las industrias financieras donde hay un compliance que respecto a la privacidad y información y todo eso puede verse comprometido así que mejor, incluso hacer en critar la data no es un camino fácil de decidir. Pero la otra opción es usar otro tipo de protocolos, hasta ese pasado ya mencionó acerca de zero knowledge props, me parece que aquí la diferencia es que naturalmente tú eres capaz de demostrar la existencia de un evento sin revelar la información, sin embargo pues estos implementan solamente algunas blockchain no todas, en realidad el diseño de esto requiere prácticamente partir de una blockchain que sea capaz de hacerlo. En el caso de Hyperledger no tenemos nosotros esta capacidad. Que sucede con las transacciones que por ejemplo en la blockchain o lo general, en las blockchain compromisos nosotros tenemos por ejemplo esto que viene en pantalla que lo que hace es tener un grupo de participantes o miembros de la red que son conocidos y que van a participar en un entorno permisionado. Entonces respecto a Hyperledger Fabric, nosotros incluso dentro de este entorno donde participan todo este conjunto de participantes tenemos dos formas de implementar la privacidad. La primera la que ya vengo mencionando es crear canales que permita agrupar a estos participantes para que estos creen un libro mayor separado del libro principal, así que en general por ejemplo en un canal normalmente tú tienes un ledger que tiene solamente las transacciones de ese canal y esas transacciones no se comparten con todo el resto de participantes. Y la otra opción que es mucho mejor, es diría que es mucho más flexible, es las colecciones de datos privados que están disponibles desde la versión 1.2 de Hyperledger Fabric. Orita ya estamos en versión 2.2 así que en realidad como se darán cuenta tenemos un buen recorrido respecto a la maduración de este tipo de características. Considerando que Hyperledger Fabric apenas nació en el final de 2015 y inició la operación de 2016. En cuatro años sus básicamente se ha logrado avanzar de manera sostenida y se ha madurado muy bien este tipo de características aunque hay muchas cosas por hacer. Entonces respecto a los canales como les mencionaba uno puede crear un conjunto de canales donde solamente por ejemplo estos cuatro participantes tengan una especie de mini blockchain o un libro o un libro o un libro descentralizado separado del libro principal y así logra mantener la privacidad. Tú puedes crear un conjunto de canales que tú necesites crear para poder desplegar este tipo de soluciones. Algo súper importante de mencionar acá es que por ejemplo yo si tú encuentras con un caso de negocio o un caso de uso implementar donde involucra solamente estos cuatro participantes lo implementas aquí y eso y aquí puedes aprovechar la infraestructura y la operación de la red actual para otro caso de uso donde por ejemplo puedes necesitar tener una implementación donde solamente involucre estos otros tres participantes. Entonces bueno veamos un poquito cómo funciona esto para poder entrar en detalle. Imagínense en el siguiente escenario donde tenemos por ejemplo una red comercial global donde tenemos un fabricante que está vendiendo productos en el extranjero. Aquí está como lo pueden ver. Tenemos un distribuidor de bienes de movimiento en el extranjero. Tenemos un remitente que mueve la mercadería entre las partes. Tenemos un mayorista comprando productos de distribuidores y tenemos un recailer que compra los productos a los transportistas y a los mayoristas. Entonces ¿qué sucede? Tenemos el siguiente desafío respecto a lo que es privacidad y cofinancialidad. Primero el distribuidor necesita realizar transacciones con el fabricante y remitente pero necesita asegurar que estas transacciones se mantengan privadas, si se mantengan confidenciales del mayorista y el retailer. Esto normalmente se hace para no exponer el margen de beneficio que está cobrando. Por lo tanto él no puede exponer esas transacciones a todos los participantes de la red. Lo que nosotros partimos es un hecho de que todos están conectados dentro de una red global basada en el fabricante. Sin embargo, no todas las transacciones van a ser visibles, como el caso en el que el distribuidor necesita esas transacciones privadas con el fabricante y remitente. Y la otra opción, el otro caso es que bueno, el distribuidor además necesita una relación de datos privados separada con el mayorista porque les cobra un precio más bajo que el remitente. Y el mayorista tiene una relación de datos privados como el remitente. Entonces tenemos aquí un desafío que se puede implementar fácilmente con el fabricante y implementando canales separados que nos permiten a nosotros mantener privada la información pero aprovechar básicamente la infraestructura de red descentralizada que tenemos montada con cada uno de estos participantes. Entonces eso es la siguiente manera. Como les mencionaba nosotros tenemos una red blockchain global donde cada participante puede estar dentro de un canal o de varios canales asociado a un caso de uso, a un requerimiento de privacidad concreto. Por ejemplo, tenemos un canal seguro donde tenemos el distribuidor, el fabricante y el transportista. Tenemos otro caso de otro canal donde tenemos agrupado el mayorista, el teletransportista y tenemos otro canal agrupado al distribuidor y mayorista. Entonces sucede, las transacciones que se generan acá dentro de este canal entre el distribuidor y mayorista no van a poder ser visibles por el distribuidor, fabricante o transportista a menos que por ejemplo el fabricante se usa este canal y así sucesivamente. Entonces así es como funcionan los canales. Ahora bien, nosotros tenemos un desafío que normalmente suele ser bastante común, esto suena bien, pero además hay otros temas de complejidad con los sistemas empresariales. Por ejemplo, para datos que suelen ser muy muy confidenciales, incluso las partes que comparten los datos privados pueden querer, ya sea por algún tipo de regulación gubernamental o por cualquier tipo de requerimiento de negocio, es poder creer que esos datos que tú compartiste necesitan empurgarse una vez después de un periodo de tiempo. Entonces aquí tenemos otro desafío súper interesante porque pues estamos hablando que la blockchain pues tú no puedes eliminar la información, lo que se deja en la blockchain se deja y se va a quedar para siempre, pero usar la blockchain para esto resulta ser un poco inquietante, ¿no? ¿Cómo aseguramos que estas instituciones han decidido usar blockchain cumpla con esta regulación que les obliga a apurgar los datos por un periodo de tiempo? Entonces ¿qué sucede? Esto puede ser resuelto fácilmente con el Proyege Fabric porque en Proyege Fabric en este caso lo que puede hacer es dejar una evidencia irreputable como provea inmutable de la transacción, es decir, esto se resuelve con los colecciones de datos privados, donde por lo general lo que uno deja es de manera pública un hash como evidencia del evento, pero los datos privados los puedo apurgar de manera que general yo aún a los datos que me obligan a mi eliminar puedo eliminarlo sin ningún problema, pero la evidencia del evento se va a mantener en el tiempo. Entonces otros escenarios que suelen ser soportados como el Proyege Fabric son por ejemplo si los datos privados solo deben existir en la base de datos privadas del nodo hasta que se pueda replicar una base de datos externa a la red blockchain, o si los datos solo deben existir solo en los nodos hasta que se realice un proceso de negocio en la blockchain. Entonces básicamente la purga de datos puede ser un requerimiento que te soliciten a ti una vez que tengas tu desplegado, tu resurcura, pero afortunadamente con el Proyege Fabric podemos nosotros resolver esto usando los datos privados. Entonces dicho la anterior, yo quiero entrar a detallar un poco sobre la arquitectura de Proyege Fabric, me parece que se pone un poquito más interesante. Entonces vamos acá. Miren, a mí me gusta explicar la arquitectura de Proyege Fabric, haciendo un poco la analogía de cómo funciona la arquitectura de redes como Ethereum, TenerMid, China, etc. Y aunque parezca la arquitectura de Proyege Fabric un poco más compleja y un poquito además es un poco más difícil de explicar, suele ser más eficiente por las siguientes razones. Yo sé que hay programadores de Ethereum, cualquier programa de Ethereum si considera que yo me estoy equivocando lo puede hacer por favor, lo puede hacer esa notación, me gustaría que también hagan su anotación respecto a lo que voy a decir. Tampoco soy experto en Ethereum, conozco el trabajo con eso, pues seguro que hay cosas que se me pueden pasar. Pero en todo caso, de manera muy simple, en este tipo de redes nosotros tenemos normalmente una arquitectura que se llama ejecutario ordenario. Y en cambio en el Proyege Fabric tenemos algo que nosotros llamamos como ejecutario ordenario y validar. O sea, tenemos un tercer paso. ¿Por qué? Por lo siguiente, Ethereum funciona de la siguiente manera. Cuando llega una transacción a uno de Ethereum, este lo que hace es validar y ordenar transacciones. Y luego las propaga al resto a todos los nodos de la red. Y luego de manera secuencial, cada nodo se va ejecutando, cada nodo va ejecutando las transacciones de manera secuencial. Entonces, es por eso es que en general el tiempo de latencia en este tipo de redes suele ser alto por decirlo de esa manera. O incluso en redes que son globales puede llegar a ser indeterminado. En cambio, hay Proyege Fabric, lo que hace es lo siguiente. Hay Proyege Fabric tiene una arquitectura en la que primero lo que se hace es ejecutar y validar si es que son correctas. Se ejecutan, se chequean, que sean correctas y se firman o endorzan. Y luego, a través de un protocolo de consenso conectable o pluggable, se ordenan estas transacciones. Si estas transacciones, es decir, se ordena lo que ya se endorzó en un primer paso. Y en el tercer paso lo que se hace es nuevamente es validar las transacciones asegurando que se cumplan las políticas de endorzamiento. Y una vez hecho esto, se confirma esto en la red de Hyperlegio Fabric. Simple. Tal vez Ethereum es más simple de entender, pero la magia de la arquitectura de Hyperlegio Fabric hace que en general el tiempo de latencia sea muchísimo menor, porque en general lo que nosotros hacemos en Hyperlegio Fabric es primero ejecutar las transacciones y endorzarlas solamente por miembros que tienen vigría, que son parte de una política o son miembros que han sido configurados para esa tarea. Y luego pues se ordenan esas transacciones para asegurar la consistencia. Ahí es que toma el papel, el servicio de ordenamiento, el cluster este que les mencioné hace un rato en ese gráfico. Y claro, nuevamente, cuando ya se propaga eso, cada uno de los peers va nuevamente a asegurar que las políticas se hayan cumplido y se confirma eso dentro de Lecher. Entonces, bueno, eso es la razón por la cual son bastante distintos, como pueden ver aquí. En general, acá se ejecutan de manera muy muy muy distinta aquí. Bueno, aquí me dice en Oscar Calderón, dice corrección en la arquitectura de Ethereum, en realidad es order execute. Gracias por la cotación, el orden es muy importante. Bueno, vamos a entrar en materia y entendamos un poco qué tipo de nodos de red y cuáles son los roles que involucra una red Hyperledia Fabric. Primero, nosotros tenemos tres tipos de nodos, por así decirlo. Segundo, tenemos nosotros, cada nodo tiene algunos roles importantes. Por ejemplo, miren, destacar lo siguiente. En la práctica nosotros tenemos el día dos tipos de nodos, el nodo peer y el nodo de ordenamiento. El nodo peer y el nodo de ordenamiento. Pero el nodo peer puede tomar dos roles, le explico. El nodo peer puede ser, puede no tener un rol llamado cometim peer, donde por lo general este va a tener siempre, mantiene el libro mayor y el estado de la blockchain. Este confirma transacciones y puede contener el contrato inteligente. Mientras que el endorseim peer lo que hace es igual tipo peer, pero es un nodo que se le ha encargado el rol para la responsabilidad para recibir una propuesta de una transacción que envía una aplicación y luego este lo que hace es responder, otorgando, denegando el respaldo o la firma o el, o en, o en, o o en dorsado la transacción. Entonces, obviamente este peer debe tener el contrato inteligente, porque es el contrato inteligente que finalmente ejecuta la lógica, vale. Y luego lo que hace es este peer es verificar que su contenido obedezca un contrato inteligente determinado y luego pues finalmente lo que hace es firmar el, firmar la transacción. Mientras que un servicio, un nodo de tipo orderer, lo único que hace es aprobar la inclusión de las transacciones en bloques para enviarlas al libro mayor, se comunica con todos los nodos pares para que estos puedan comprometer y respaldar el libro mayor. Controla además que el libro mayor se mantenga consistente. Este servicio de ordenamiento no tiene el contrato inteligente. El servicio de ordenamiento jamás se instala un servicio o un contrato inteligente ni tampoco tiene la información del libro mayor. Este es un, este es un componente que sirve para ejecutar y servir el protocolo de consenso, vale. Entonces, luego vamos a relacionar un poquito más sobre esto. Y hay algo importante que quería yo comentarles, además de estos nodos y sus droles en IPLG Fabry tenemos un servicio que provee membresías. Los miembros de una red de IPLG Fabry suelen rolarse a través de un proveedor de confianza, como es el MSP. Es decir, si yo sigo hablando de que en general este es una red permisionada, pues es justamente el membership service provider el que te otorga esta capacidad para enrolarte. Ahora, ¿qué tipos de servicio de ordenamiento nosotros tenemos? En IPLG Fabry tenemos básicamente 3, ahí es Brand, si es que si es que quieres puedes hablar un poco más sobre rap, pero en la en la práctica a nosotros al inicio de una red solemos probar con un protocolo de testing llamado solo, que no tiene nada más que una función para ordenar transacciones, pero no tiene tolerancia a prueba de fallos, a escenarios de Bicentino, es para testing, no es nada más para eso. Me he encontrado con redes que están en producción que suelen usar solo, eso es derriblemente mal, eso no puede suceder. Nosotros antes de la versión 1.4 usábamos CAPCA que era la recomendada para producción, pero a partir CAPCA en realidad es un servicio de ordenamiento recomendado para redes permisionadas, porque se supone que en las redes permisionadas estás operando en un ambiente descentralizado donde conoces a quienes participan y no estás en un escenario, diría por decir de manera no estás en un escenario altamente o estás en un escenario medianamente confiable, por decirlo de esa manera. El servicio de ordenamiento CAPCA tiene tolerancia a crashing, eso es importante. Y cuando usted es simplemente CAPCA, en realidad está usando estos componentes de Apache CAPCA, que está muy bueno la verdad, hecho Apache CAPCA como tal, es un proyecto muy potente para lo que es mensajería y el hábito de transacciones y mensajes a propósito, pero de la versión 1.4.2 nosotros ya tenemos disponible este servicio de ordenamiento que se llama RAP, que lo que hace es soportar, tiene tolerancia a fallas bizantinas. Dicho de una manera, en español diría así como que resuelve el problema de los generales bizantinos, que es un servicio de ordenamiento recomendado o altamente recomendado para escenarios donde por ejemplo tú puedes llegar a tener una red descentralizada en entornos poco confiables. No sé si Brank hieres a cotar algo respecto, pero entiendo que tú hubieras implementado este protocolo. Gracias Ricardo. El beneficio del RAP contra CAPCA, por ejemplo, es que con el RAP puede ser constituido pues de diferentes organizaciones, mientras que en CAPCA ahí sí es una organización que puede correr un cluster de CAPCA, entonces eso es más centralizada con RAFT, entonces cada organización puede tener su orden de RAFT y ser parte del cluster del ordering. Entonces un nodo en RAFT puede proponer el nuevo blog, pero tiene que recibir apruebas de cierto presentaje para que el cluster llegue a un consenso. Y eso es como el beneficio de RAFT que podemos descentralizar más la red y que cada organización podría ser parte de la red, pero aunque tengo que hacer el comentario que RAFT todavía no es bizantín full tolerance, porque RAFT realmente es un mecanismo de consenso de sistemas distribuidos pues tradicionales, producirlo así. Entonces sigue un mecanismo de leader follower, leader follower, leader seguidor, y entonces siempre el leader pues siempre tiene algo, pues podría ser algo bizantino, podría ser algo mal, pero ese leader va cambiando y es muy importante y entonces la única cosa que podría hacer es por ejemplo si alguien cambia pues el código del ordering service podría dejar ciertas transacciones por fuera, pero lo que no podría hacer es incluir transacciones pues falsas, por ejemplo que tú no has firmado, porque para eso en fábric sirven las políticas de endorsement, entonces tienes que pensar muy bien en cómo diseñas las políticas de endorsements para que eso no es para que tu sistema en general, las políticas de endorsements con un consenso de RAFT, que eso en su totalidad es más protegido pues contra este tipo de ataques, pero la idea es pues en Hyperledger Faray que están desarrollando un ordering service que es completamente descentralizada y BFT, entonces por ahora es muy importante todavía las políticas de endorsement en combinación con RAFT y el beneficio es que al menos el RAFT ya es descentralizado al nivel de que cada organización puede ser parte del cluster y podría ser líder en el momento que desea, pero RAFT por sí mismo es solamente crash fault tolerance y eso significa que cierta cantidad de nodos puede estar bajo, puede estar fallando, pero el cluster en su totalidad cuando la mayoría está funcionando bien todavía, entonces el cluster puede seguir creando nuevos bloques, entonces es crash fault tolerance en ese momento. Gran, te agradezco mucho el gran aporte que hiciste y en general pues en las primeras clases nosotros vamos a estar usando un solo, luego en las últimas clases vamos a estar usando RAFT y en general explicación de arquitectura está basada más en CAPCA, así que de esta manera un poco ustedes van y a poco ir entendiendo las bases a medida que vamos a madurando los warships y las explicaciones que vamos a ir tomando. Entonces bueno, ¿qué decir al aspecto de despliegue de Hypergeofabri? Pues básicamente mira esto se puede desplegar en la nube o en premise donde tú quieras, es decir esto es simplemente software que viene que normalmente se está liberando a través de imágenes Docker, así que en general pues tú puedes desplegarla en cualquier nube, o sea normalmente hay Hypergeofabri que está disponible para la mayoría de nubes desde Amazon a Tencent pasando por la nube incluso de Google Cloud, Alibaba, etcétera, así simplemente necesitas tú cumplir con los requerimientos para alojar por lo general contadores Docker y ya estaría, ya dependería un poco de cuál es la forma en la que vas a desplegar. Respecto a la escalividad y el performance, lo que sí quiero mencionar es que por lo general suele ser el tamaño de transacción, el tamaño de blog, el tamaño de la red, quienes suelen impactar en respecto al performance además de ciertas limitaciones de hardware. En general habría que hay varios capítulos, varias documentaciones y ahora está hay una herramienta en Hyperledger para hacer un benchmark de lo que es Hyperledger Fabri en especial, pero pues ahora ya ahora se está usando en varios herramientas productivos. ¿Qué pasó con la versión 1.4? Cuando vino a la versión 1.4 la verdad vino, vino diría yo la primera versión madura que permitió generar soluciones ya en producción, ahí en ese caso decir solamente que te introdujo algunos servicios para ir chequeando temas operacionales críticos y general en ese entonces fue diría la versión recomendada para operaciones de producción y con la versión 1.4 lo que trajo fue básicamente un nuevo conjunto de tutoriales bastante completos. Antes de la versión 1.4 pues la documentación era bastante floja, pero ya con esto ya muestra un nuevo tipo de documentación a propósito de la documentación, luego actualmente nosotros estamos trabajando para poder traducir la documentación más acolizada, pero en general ya con la llegada de la versión 2 la verdad esto se puso mucho más maduro, mucho más caliente y solamente destacar con la de la versión 2 que en general lo que trajo fue ya una gobernanza descentralizada de los contratos inteligentes y en general con la versión 2 en adelante se comenzó a usar imágenes de docker más divianas basadas en alpain, así que por lo general a diferencia por ejemplo de lo que cuando yo he estado explicado con 1.4 y luego en 2 suele ser cuando usas una imagen de docker tipo alpain que prácticamente trae lo estrictamente esencial suele ser necesario para menos para desplegar los contratos inteligentes, descargar las dependencias que usa tu tu contrato inteligente por ejemplo y vamos a ver más adelante cómo se resuelve eso. ¿Qué hay que decir respecto a la gobernanza descentralizada de los contratos inteligentes? Pues la verdad es que en términos generales lo que sucedía antes es que una organización podría tener la capacidad de instalar e instanciar un contrato inteligente incluso sin aprobación del resto de participantes de la red eso era un tanto crítico porque como viste el rol de una de un participante en la red suele ser no está muy balanceado suele suele darle una ventaja competitiva incluso lo que decía Braum hace un rato fue muy elemental no o sea a medida que va avanzando el pelaje fabric va avanzando a generar un balance real en términos de descentralización para que en general exista una descentralización real pero pues anteriormente pues como que el miembro fundador tenía una ventaja importante especialmente cuando usas por ejemplo CAPCA ahora con RAP pues básicamente como puedes ver el servicio de ordenamiento está disponible ya no hay este cluster de ordenamiento 100% en el servicio en el miembro fundador sino que está distribuido pero en relación a los contratos elegentes pues es el nuevo y se introdujo un nuevo ciclo de vida de chenco de contrato inteligente donde básicamente es necesario que varias organizaciones acepten los parámetros de chenco y hay un proceso de precisión del código de cadena más deliberado es decir más acordado las políticas de respal y de la consideración de datos privados son muchísimo más simples los paquetes de chenco son inspeccionables e iniciar también se puede iniciar múltiples en cot usando un mismo paquete los paquetes de chenco no necesitan ser idénticos de todos los miembros del canal así que general es lo que trajo para muestras un ejemplo vale en relación al generador y el lanzador de chenco hay incluso ese trajo con la versión 2 se trajo algo que nosotros conocemos como estos generadores y lanzadores de externos de chenco que sucedía porque en la versión 1 en la versión 1 tenemos otros escenarios porque imagínense lo siguiente nosotros cuando creamos una red en el paralel de fábric lo que tenemos es que por lo general tenemos configurado un archivo docker compose punto yml esto ya lo vamos a ver en más de git en esta misma clase acerca de los docker compose y eso pero por general tenemos un archivo yml la configuración de la red así que con lo que hacemos es iniciar la red levantando la red usando este comando que se llama docker compose vale esto lo que hace es que se levanta un conjunto de imágenes como pueden ver aquí se levanta la imagen del nodo cero de la organización por uno el nodo cero de la organización por dos y además se levanta el servicio de ordenamiento entonces tenemos aquí y a la red ejecutándose vale entonces ya una vez que tienes una red de ejecutándose pues el siguiente paso es instalar el chenco y por lo tanto por lo tanto lo que se hacía con la versión de fábric 1 sinc 1 1 1 punto x era primero habría había que construir y lanzar el chenco en cada uno de los de los nodos de esta manera lo que hacíamos nosotros era un proceso de lo que se llama la instalación y luego el instanciamiento la instalación en la versión 1 en la versión 1 1 4 la versión 1 en realidad lo que hacía es simplemente tomar el código fuente de tu chenco y e instalarlo en realidad no es instalación sino copiarlo dentro de el píl cero y píl de cada uno de los participantes de la red una vez que sería esto hacíamos una instanciamiento que era en realidad un proceso en el cual tomaba ese chenco ese código se lo compilaba y se generaba una imagen docker específica de ese chenco que se ejecutaba fuera del cotedor del fuera del contenedor de el nodo como pueden ver acá es decir para para cada nodo el píl cero de aquí se crea un nuevo contedor de un contedor aislado para poder ejecutar el chenco esto que significa que básicamente la idea de esto era que si por ejemplo hay un hay un error de programación un back en el chenco si se cae el código pues que se caiga el contedor que está acá no y no termine haciendo no termina afectando la operación del nodo de la de la red en todo caso actualmente la versión de fabric 2 pues básicamente ya no necesitamos opcionalmente nosotros lo que hacemos es usar estos generadores y lanzadores que viene la versión 2 en los cuales podemos ejecutar el chenco dentro del contenedor del participante de esta manera no necesitamos nosotros lanzar un nuevo contenedor pero esos son algunas características que que suele que ya trae fabric 2 la decisión de hacerlo dentro fuera la verdad pues ya depende realidad en mi caso yo sigo compartiendo la idea de que es mucho mejor creo hacerlo fuera o por mantener contenedores docker aislados cada uno cumple un rol pero ya depende de ustedes ahora quiero explicar un poquito sobre el flujo transaccional de ahí por la de fabric este flujo transaccional sucede de la siguiente manera y bueno pues es un poco de poco difícil entender así que en realidad pues yo tengo unos gráficos más adelante que me sirve mucho para explicar solamente quiero recertar es de este diagrama que general tenemos nosotros naturalmente en este día en ese diagrama de flujo tenemos un cliente tenemos un conjunto de nodos como pueden ver aquí normalmente los hay estos nodos o piores que tienen un rol en particular llamados los endorsements piores tenemos tres en este caso tenemos un cluster de servicio de ordenamiento y tenemos un committee impure que es básicamente un peer que no está dentro de de las políticas de enloujamiento entonces básicamente lo que tengo que decirte es que en general una aplicación cliente suele enviar via brocats una transacción que es simulada y ejecutada por cada uno de los endorsements piores y luego esa respuesta se devuelve a se devuelve endorzada y firmada a la aplicación cliente y luego la aplicación cliente le envía su servicio de ordenamiento para que este ordene la transacción y la agregue un bloque que luego finalmente es enviada via brocats a todos los nodos así incluido el committee impure y una vez que estos nodos confirman se envía una respuesta sin cron a la aplicación cliente para que este pueda recibir si efectivamente esto se confirmó en la red o no ahora entender esto yo sé que es difícil por todavía todavía nosotros estamos aprendiendo acerca de la arquitectura de hipergenfabric pero es importante resaltar esto me parece que ya lo vimos desde que hace pasada así que lo voy a saltar así que en general yo tengo aquí un ejemplo vale es un ejemplo de cómo funciona el proceso de un flujo transaccionado de hipergenfabric entonces tenemos aquí nosotros un escenario donde tenemos acá tenemos un escenario donde tenemos una aplicación cliente si aquí como pueden ver la aplicación cliente tenemos un escenario tenemos cinco en esta red que aquí tenemos cinco pills pero solamente estos tres de aquí son parte de una política de endorzamiento como pueden ver aquí es 0 e1 y 2 pueden firmar mientras que p3 y p4 no son parte de esa política que sucede resulta que tenemos también aquí el servicio de ordenamiento que está que está aquí graficado como no solamente como un servicio como un conjunto de servicios pero en general en el primer paso de una transacción lo que hace una lo que hace es la aplicación cliente es usar el sdk de hipergenfabric para poder enviar una transacción a la red esto es muy importante de resaltar este primer paso que parece simple que simplemente se enviar una transacción involucra un conjunto de pasos súper relevantes que abstrae el sdk que está disponible para diferentes lenguajes de programación incluido incluso python java no yes nos permitan nosotros abstraernos de la complejidad de tener que firmar las transacciones de tener que tener que armar correctamente el buffer que va a salir y en general pues el sdk nos abstrae todo eso y solamente nos provee una API de programación para poder dedicarnos al investidor vigor a programar la aplicación cliente la tras la transacción todo lo que sucede en este proceso transaccional se realiza a través de gdpc no puedes levantar una red a hipergenfabric incluso sin habilitar la seguridad sin habilitar telés por lo tanto todo va a poder transaccionar via gdpc esto se puede hacer para fines de pruebas o de desarrollo no sé para lo que tú veas pertinente pero para un ambiente más real de productivo de cua ya debería estar habilitado el gdpc ese para que todo lo mejor dicho también debería haber invitado telés para que todo se trans se transacciona a través de un protocolo seguro gdpc ese es básicamente el protocolo seguro de gdpc gdpc le repito es un protocolo que sobre que se recuese transacciona es parte de la suidad de viene con la suidad de golan es el protocolo que usa google así que no está más que probado esto en fin cuando un cliente usa el sdk lo que envíe es una transacción usando protoboffers esta transacción se envía de manera sincrona y la aplicación cliente ya conoce con anticipación cuáles son los nodos que van que pueden firmar por lo tanto les envía a ellos les envía esa transacción y ellos lo que hacen es básicamente lo siguiente ellos el nodo cero e1 y 2 ejecutan la transacción es importante mencionar que en este punto ninguna de estas ejecución es va a actualizar el libro mayor cada ejecución lo que hace es capturar un conjunto de datos o de transacciones de lectura y escritura o dicho de otra manera los rwb o dicho de otra manera captura las simulaciones o el resultado de haber ejecutado el el contrato inteligente esto son firmadas y encryptadas vale y luego son de vueltas de la aplicación cliente cada uno de estos endorser es lo que hace es enviarle esto a la aplicación cliente de manera asincrona luego lo que sucede es que esto es chequeado por la aplicación cliente y una vez que la presión cliente chequea si esto es una respuesta correcta o sea lo que hace es la presión cliente es validar si es que las respuestas de los tres son iguales son correctas fueron endorzadas y solamente en ese paso lo que hace la aplicación cliente es enviarlo a el servicio de rendamiento el servicio de rendamiento lo que hace es un servicio pues que está funcionando de manera cross para toda la red y lo que sucede en ese punto es que está recibido transacciones de muchas aplicaciones vale o sea en un amite descentralizado como puedes ver no solamente hay una aplicación que es la que está transaccionando sino que puede haber múltiples aplicaciones que están transaccionando que están ejecutando diferentes contratos inteligentes aplicaciones que pueden parecer al participante número uno de los participantes número dos es decir vemos un entorno en el cual llega a un conjunto de transacciones enviados por diferentes aplicaciones clientes de diferentes participantes y lo que tenemos que hacer aquí es asegurar de ordenar esas transacciones las aplicaciones envían esas respuestas al ser para que sean ordenadas y lo que sea lo que sucede a continuación es que el servicio de rendamiento de ahí para el fabric va a recibir estas transacciones de manera paralela y lo que hace es naturalmente es ordenar ordenar es ordenarlas estas colecciones transacciones proponerlas en un bloque que luego es distribuido a todos los peers para que sean confirmadas asegurando la integridad y el orden de las transacciones y luego pues cada uno de los nodos como pueden ver ahí a cada uno incluso los commit impuls que se unen el p3 y p4 van a verificar nuevamente las políticas de endorseamiento se chequean que los respuestas los sets rw sean válidos y que representen realmente en realidad el estado de la blockchain y una vez que sucede esto que sean validado lo que sucede es que ese estado de la blockchain que se propone en estas en este conjunto rw se retiene y se actualiza en el edger o en el libro mayor y si es que no si no si no es así lo que se hace es notificar no se actualiza el el edger y se notifica la aplicación cliente y o sea ok o no ok la aplicación cliente por lo que haces de recibir esto de manera asincrona y si es que todos tuvo bien recién ahí la aplicación cliente dice ok estamos listos entonces son siete pasos que suele que parecen poco más complejos pero realidad lo que sucede es que si tú eres un programador de contratos inteligentes o eres un programador de aplicaciones clientes estos pasitos prácticamente son invisibles para ti ya es parte del del protocolo y es parte de la infraestructura y hay pelea fabric trabaja de esa manera y es importante que tú entiendas cómo trabaja para poder determinar correctamente tu arquitectura de despliegue y en su defecto también ejecutar un prover shooting efectivo si no sé si quieres agregar algo gran o juan cualquiera de los dos no por mi lado está está bien está respondiendo aquí en el qn entonces esto hasta y nosotros tenemos la parte teórico explicativa de ahí para llevar lo que viene a continuación ya es warships entonces si es que te puedo contar algo si aquí está lo que viene a continuación es un conjunto de warships donde vas a mover meten las manos y comenzar a practicar el uno el workshop de hoy no es éste pero si le quiero adelantar lo que vamos a hacer nosotros vamos a levantar una red de hyperlaya fabric donde vamos a a crear vamos a partir de definir primero correctamente un consorcio que agrupe que está agrupado bajo un dominio al que le hemos dominado a mi punto con donde vamos a crear un canal en el que van a participar tres miembros o tres organizaciones en cada organización vamos a levantar un nodo si un nodo y también vamos a levantar un servicio de ordenamiento servicio de ordenamiento que me permita ordenar las transacciones que van a proponer estos miembros a través de sus aplicaciones cliente vamos a crear inicialmente también un control inteligente que me con dos funciones muy básicas una que me permita guardar y otra que me permita consultar para y vamos a incluir ahí una política de endorseamiento no solamente los miembros del miembro o reacción número 1 y 3 pueden firmar transacciones entonces esto vamos a hacer vamos a hacer desde cero vamos a partir desde definir la primer línea hasta tener esto funcionando pero para poder llegar allá nosotros debemos que conocer algunas cosas muy elementales y una cosa elemental acá es docker así que el día de hoy de lo que resta de la siguiente del de la clase vamos a repasar un poco de docker para que quede claro y estemos listos de la siguiente clase para poder hacer todo esto respecto a la capacitación de docker no hay mucho que decir al respecto ya me conocen ustedes cualquier cosa me encuentran en linkering o por el canal de la comunidad y bueno las personas que ya saben docker posiblemente puedan aportarnos aportar muchísimo más de lo que yo pueda hacer en esta clase así que también les invito a que pueda interactuar y responder las preguntas también que hay otros compañeros clavio también que está acá es un tipo muy potente en temas de docker así que también le voy a estar pidiendo que me ayude en algunas explicaciones pero en general pues esto hacer un una una capacitación más de todo de play of fabric lo que me interesa a mí es que ustedes puedan coquetear un poco con un docker y que la próxima clase ya estén con un conocimiento básico de este mismo entonces el gran dilema respecto de el despliegue de displiegue de aplicaciones de un infalso cura tiene que ver respecto a lo que es el uso de contenedores versus máquinas virtuales entonces qué sucede pues con máquinas virtuales como pueden darse cuenta algo que de pronto es muy muy común para la mayoría que estamos acá es que tradicionalmente nosotros venimos usando un servidor muy potente un fierro una gran servidor que tiene un aspecto incluso de pricer que está ubicado que las grandes empresas suelen comprar y donde normalmente lo que tenemos de ahí es un gran hardware con un sistema operativo host y donde instalamos un autorvisor tipo 2 que nos permite nosotros virtualizar virtualizar máquinas donde finalmente lo que hacemos acá es ir montar ir montando diferentes máquinas virtuales con un sistema operativo invitado como pueden ver aquí en este caso yo estoy levantando tres en este gráfico estamos están levantando tres máquinas virtuales invitadas sobre un sistema operativo host de un servidor en concreto y lo que se hace normalmente acá es ok en este requerimiento lo que se hace es tratar de cumplir un poco el tema de alta disponibilidad en ambientes productivos no se puede permitir tener solamente un servicio de una aplicación si se te cae pues necesitas tener mínimamente un respaldo así que en realidad lo que haces tú tener es una una máquina virtual donde tú instalaste un conjunto de binarios y teorías que puedes hacer por ejemplo la instalas tu el programa python instalas tu yaba o todos los binarios necesarios para levantar la aplicación en este caso puede ser la aplicación puede ser por ejemplo no sé una aplicación web que esté jugando sobre toncat pero en todo caso esta aplicación acá la aplicación y la aplicación aprima van a están destinadas para poder cumplir y la demanda de un sistema de una aplicación en particular de un ambiente de negocio en particular y lo mismo sucede en este caso de acá en la aplicación b como pueden ver no tiene una réplica y por lo tanto posiblemente si se cae esto tengamos un problema respecto a que nos ponemos a ver qué sucedió lo reparamos y levantamos de la aplicación entonces cuál es el desafío acá que por lo general mantener la infraestructura de este estilo suele ser más costoso y suele ser muy muy desafiante mantener la cantidad operacional y se los dijo desde mi propia experiencia a aprovisionar una máquina virtual que por ejemplo me replique una aplicación en particular que están dando puede ser un proceso que dure horas no una ni dos puede durar seis o ocho horas en lo mejor los casos o puede llegar incluso a 24 horas o más incluso en industrias críticas como la industria financiera tu puedes llegar a atravesar un problema en el cual la aplicación se decayó y puede llegar a pasar hasta 24 horas hasta que levantaste una nueva máquina virtual que permita responder al escenario en concreto por ejemplo tienes un escenario de alta concurrencia no por ejemplo y de pronto hiciste una el 15 o el 30 donde todo el mundo fue a hacer transparencias o sacar la plata de su banco pues tienes una carga transaccional impresionante que hace que las dos instancias que pudo provisionar este o las cinco instancias que provisiona este no sean suficientes y por lo tanto necesitas escalar horizontalmente es decir meterle más poder para poder responder a las peticiones entonces escenarios son muy comunes en este tipo de arquitecturas de despliegue es muy común pero además tenemos otros una desventaja sustancial porque por ejemplo tener aprovisionado máquinas virtuales infraestructura ociosa durante al menos del 80 90 por ciento de el mes suele ser muy costoso a pesar de que tú dentro de tu organización puedas tener eso proyectado no es muy eficiente en la práctica y más que todo el principal problema más que todo más más que el costo de tener alojada una aplicación sos una infraestructura ociosa tiene que ver con el impacto que puede llegar a tener tener un sistema que esté caído varias horas y se los digo de los sistemas los sistemas más críticos tanto donde yo he trabajado con el telcom teleconicaciones como financiero por sus propias políticas por sus propios compliance del todo la estructura que hay gente que se le quiere para mover y crear una máquina virtual o una copia es hace que general el tiempo de respuesta tranquilamente puede llegar a superar muchas horas entonces en la actualidad nosotros podemos permitir hacer eso así para eso es que general tenemos un ramas ya varios años atrás una alternativa y ya no es y en siquiera esa alternativa en varias varias industrias dependiendo del país donde estés seguramente he visto que yo en varios países esto sigue siendo algo que todavía está iniciando otros otros países de otras industrias suele ser ya un estándar de facto o un deciable o una política imprescindible pero lo cierto es que los contadores no quer llegaron para quedarse y sobre eso hay un conjunto de infraestructura que ayuda incluso a hacer muchísimo más robuste pero bueno en todo caso lo que sucede es que con contadores lo que tenemos otros es que podemos lograr ser mucho más eficientes en términos de costes en y ser mucho más rápidos y y y seguros y espero una arquitectura muy segura para poder responder tipo de señales que acabo de escribir lo que sucede con docker en la práctica es que tienes tu un servidor un servidor una máquina siempre va a tener un hardware con este operativo pero acá ya no necesitamos tener un ypervisor tipo dos es decir ya nosotros no necesitamos tener ningún tipo de ypervisor una ypervisor es básicamente un componente que te permite virtualizar ejemplo de eso pueden ser bingware virtual box eso es un ypervisor naturalmente en emitidos productivos no se usa el mismo virtual box que yo tengo instalada en este one por ejemplo sino que se usa un tipo dos algo algo más empresarial pero en todo caso acá nos saltamos eso y eso hace mucho más suficiente porque en realidad las aplicaciones se van van a estar usando directamente los recursos de sistema operativo y del servidor sin pasar por un sistema invitado ni por un ypervisor y en este caso lo que hacemos nosotros es lograr esto estas aplicaciones empaquetarlas en imágenes que levantan contenedores contenedores una palabra muy común acá que permite a ti empaquetar la aplicación con todos sus binarios y deberías decir lo que se explue es ok yo tener una especie de versión de aplicación y para demás de eso agregó los binarios de librería las configuraciones los bicheros todo lo que sea necesario para que eso lo empaquetó en algo que nosotros llamamos como imagen que puede ser equivalente por ejemplo algo como en el caso de yabao ya por poner una simple pero que es capaz de levantarse de levantarse en cuestión de segundos es decir si lo que sucede es que tú estás operando aquí en la aplicación a sin ningún problema pero la aplicación que tenías acá le llegó un big bang una gran cantidad de concurrencia lo que necesitas es reaccionar y por lo tanto tú puedes lograr escalar de manera horizontal y crecer la cantidad de distancias como sean necesarias de manera que en realidad tú nunca vas a tener la posibilidad de que esto se caiga pero así esto se logra a través de docker que es un que es lo que estamos hablando dicho la anterior pues como podrán darse cuenta provecho que le puedan sacar al curso de hyperlegger por la que sea a final de cuentas un poco más completo de lo que esperabas posiblemente si estás pensando en adoptar lo que te puedo recomendar que lo hagas que avances que prenden el sentido de que incluyes en las nuevas aplicaciones que estás tú desarrollando en tu empresa entonces bueno que sucede con docker simple pues diría que en realidad el docker es una tecnología que en comparación a otras ya es un tanto reciente pero tampoco es una tecnología nueva en el aspecto de méxico hablar de cinco o siete años ya es hablar de de mucho recorrido así que en realidad esto salió en marzo 2013 y en general pues quien creo esto ha sido la compañía dotclub que ahora conocemos como docker ink avancemos un poquito más ya hablé sobre los beneficios así que no me voy a detener demasiado por acá y lo que si quiero mostrarte aquí es como funciona docker no básicamente mira en este operativo host en lo que tú tienes desestalado un servidor o demonio de docker donde este señor de mi o de mi docker provee una interfaz un api res un api res bien completo y también te provee también una herramienta de cliente un docker que está disponible en la consola de comandos entonces creo que tenemos nosotros acá por lo general con lo que tú puedes gestionar con un conjunto de redes un conjunto de imágenes un conjunto de contadores que se crean a partir de estas imágenes y un conjunto de volúmenes de datos que sirven para para poder alojar la data que va a usar en la imagen el incontedor o la red entonces cuál es la arquitectura de docker la que ven en pantalla y por lo general nosotros lo tenemos de su cliente si es el cliente de docker que me ofrece un conjunto de eso me parece una interfaz no interfaz con un conjunto de comandos como las que puedes ver ahí y muchísimo más pero lo que nosotros hacemos es en el host en la máquina host donde tenemos instalado docker con el cliente nosotros nos comunicamos con el demonio de docker este demonio de docker nos permitan nosotros hacer varias acciones por ejemplo en este caso hay un conjunto de archivos de docker que te permiten a ti construir estas imágenes o estas en este conjunto de archivos en estos archivos llamado docker tú coloca las instrucciones para que para para crear la imagen en lo suerte de esto es que es muy parecido al bash así que si tú si tú sabes programar en bash con el lenguaje bash no se va a ser difícil para ti crear imágenes de docker en el curso de play de fabric nosotros no vamos a construir ninguna imagen o sea vamos a usar imágenes que están hechas así que les preocupen de eso segundo porque en este caso como funciona la arquitectura simplemente tú por ejemplo construyes una imagen con docker build esto se comunica al demonio de docker y el demonio de docker una vez que tú construyes una imagen que estas imágenes se quedan por ejemplo alojadas principalmente inicialmente se quedan alojadas en tu repository de imágenes local pero también nos puedes publicar un registro de docker público o privado da igual el registro público de docker es el se llama docker hop hay algunas compañías que prefieren crear su registro privado donde tú puedes hacer una publicación para hacer una publicación usas el comando pul que envía a esa imagen a este registro esto sirve mucho porque por ejemplo tú construyes una imagen que quiere que se use por tu comunidad o tu equipo de desarrollo entonces ahí lo que sucede es que pues vas entre entregando o liberando aplicas soluciones ya empaquetadas y listas para ejecutarse ni se hable esto si lo logras integrar con 6d e con interacción continua y y despliegue continuo es muchísimo más potente eso es un área muy muy potente que si tú estás pensando por ejemplo darle un un tremendo saldo tu carrera profesional pero en comiendo que comices a trabajar mucho sobre esto y especialmente con lo que se hice de eso es muy muy potente muy bien pagado te lo recomiendo en mi experiencia eso es una varía que está siendo muy muy muy demandada y que requiere profesionales como tú pero bueno volviendo al tema el punto es que pues tú puedes publicar las imágenes y luego simplemente usarlas no simplemente luego ya tienes la imagen ya sea en tu repositorio local o en tu servidor registro siempre vas a necesitar la imagen que sea local aunque aunque estés publicado en el servidor en el servidor de registro tú siempre vas a tener que publicarla y luego pues a partir de esa imagen tú levantes un contador que básicamente ya tiene todo una aplicación que está funcionar con un vocabroom ejecutas eso entonces no hay mucho que decir el pilas con lo que te acabo de mencionar es decir si vas a necesitar interactuar con el cliente de docker hay un de muy de docker que está ejecutándose en la máquina host y más de cuento hay otras cosas importante del aspecto a docker por ejemplo como docker matching no vamos a usar no que matching en este curso ni en el y en fabric pero te recomiendo que lo usas está muy bueno para poder levantar máquinas también lo que compone es elemental es decir si bien es cierto por ejemplo tú puedes levantar una aplicación que está empaquetado en imagen la cosa funciona mejor cuando se pega la realidad y lo que nosotros sabemos es que una aplicación por su propia cuenta no va a hacer nada en la vida real lo que tenemos es un conjunto de aplicaciones que interagó entre sí por lo tanto lo que compone lo que permite a mí es definir una aplicación compuesta o compleja o un único archivo que me permite a mí e configurar una aplicación multicontenedor para poder levantar que es justamente lo que nosotros hacemos por ejemplo para levantar la red ya te diste cuenta que no hay pereña fabric te diste cuenta que nosotros usamos diferentes componentes el orden el peer el peer y otros componentes más y todo eso tiene que tener algún tipo de algún tipo de van a tener que interactuar y por lo tanto nosotros estamos nosotros definir esto en un solo archivo para que se levante la red siguiente también nosotros hay hay algo súper importante que nosotros tenemos acá es que en general pues el tema es que levantar contadores de una sola máquina no es muy realista si es decir si la máquina se te cae se te cae todo por lo tanto pues con docker viene también docker su arm que es básicamente una herramienta que te permite a ti clusterizar los dockeres es decir te permite a ti desplegar una arquitectura de una infraestructura de de varias de varias máquinas host donde tú puedes estar alojando un conjunto de conteneres docker todo esto como si se tratase de un solo host decir por ejemplo la imagen de las rellenitas y el poderes dice mucho de respecto en tu lugar de tener una máquina host tremendamente fuerte puedes llegar a tener una infraestructura distribuida en diferentes máquinas que actúan como un solo host docker para levantar tus contenedores para levantar tus aplicaciones tus aplicaciones de docker básicamente para eso sirve y está muy bueno está muy bueno porque eso te permite tener y cumplir pues la característica de la disponibilidad de file over y muchas otras cosas más que necesitan cumplir en ambitos productivos siguiente tenemos aquí también la mitad de distribución de docker pues ahí todo esto me sirve para el para interactuar con el api de registro mucho que decir al respecto me voy a concentrar más que todo en lo que nosotros estamos trabajando entonces pues nada pues que te voy a decir vamos a intentar avanzar la instalación de docker ya la superamos si es que tú todavía no instalas docker pues te recomiendo que por favor te vayas a acá aquí tengo yo el el proyecto este que de la comunidad del curso que estamos tratando aquí está la instalación de docker este está aquí está como pueden ver aquí y aquí hay un fixing de docker los que todo este fixing de docker está hecho para que tú puedas usar docker sin sudo no porque por lo general como te diré para que para para para interactuar con el demonio de docker tú tú necesitas tener permisos y por lo tanto por efecto siempre esto va a funcionar con un súper con sudo pero como este es un curso pues yo he visto que la mayoría de veces entre poner sudo y no sudo pues las cosas se se compliquen así que lo preferido es colocar aquí un fix de docker para que todos los usuarios puedan interactuar con el demonio de docker vale entonces no vaya a ser que simplemente es de eso ahora si tú tienes instalado docker hiciste el trabajo de de trabajar con nosotros vamos a hacer vamos a levantar nuestro primer contenedor y veamos si nos funciona y aquí está entonces te invito a que tú puedas chequear yo tengo varias cosas de acá pero déjame chequear cuántos y cuántos procesos de lo que tengo aquí tengo muchos voy a voy a eliminar todo todos todos mis contenedores los voy a los voy a eliminar con el visto como se dan cuenta yo acabo de interactuar con el demonio de docker y con el click y estoy usando el 20 docker bueno te invito a que ahora es una consola de comandos como es el caso esto que tengo que presentar pantalla y pues recién es docker si te parece si te parece esto básicamente quiere decir que tienes de lado docker vale entonces este este cliente te permite acceder a un conjunto de comandos que son los propios de docker que vamos a estar probando vale para probar si te funciona correctamente docker te invito a que vengas aquí docker run hello world y levantes esto si te da esto si tienes un mensaje como el que está en pantalla que es decir que tienes instalado correctamente docker y que te está funcionando y además vas a poder trabajar en este warship que estamos en este momento que sucede que sucedió tras estas tras este comando tan simple pues lo primero que se uso se sucedió es que efectivamente se pudo validar que el cliente de docker que es esta está este cliente que estoy usando aquí en la cosa de comandos de mi segundo se logró contactar con el dominio segundo lo que sucedió es que el demonio de docker logro descargar la imagen de hello world desde docker ha yo ya lo tenía a propósito tenía descargado y tercero lo que sucedió es que el dominio logró crear un nuevo condado a partir de la imagen de que se descargó y cuarto lo que sucedió es que además el dominio logró enviar una salida de texto al cliente de docker para que esto se presenta en la terminal que estamos viendo en pantalla es verdad yo tenía aquí yo tenía mi imagen de hecho aquí como pueden ver si pongo la imagen me parece todas las imágenes que tengo mi mi host tengo un montón de cosas aquí aquí tengo algunos contras que he creado lo voy a eliminar más lago pero con otra imágenes yo aquí tengo aquí puedo ver que efectivamente ya me descargué la imagen de lo bueno esto de hecho esta imagen por lo que veo se bajó la última versión que fue de hace 7 meses es una imagen súper liviana de a veces apenas 13,3 kb si yo para eliminar esta imagen y demostrar que efectivamente me puedo comunicar con otro jab puedo venir acá local rmi rmi rmi es el comando que me permite a mí eliminar y como no sé si le confirmo el logo y ahí se eliminó la imagen vale entonces voy a y voy a chequear si tengo aquí con docker p docker ps menos a yo puedo ver las contenedores que es el que que están en mi máquina host y con locio menos a yo veo aquellos que ya no están ejecutando por ejemplo en este caso yo voy a eliminarse contenedor lo que rmi rm nada más y como no se fue confirmo el id del contenedor y bueno entonces ahí más o menos estoy en el mismo estado que están ustedes no es nuevamente voy a juntar docker rm hello world y ahí se está miren ahí dice intentó buscar la imagen de manera local y pues no la encontró lo que hizo fue comunicarse con docker hub se bajó la imagen ahí es un pul completo la imagen tiene un identificador y luego pues elevate el contenedor y muestros en el pantalla si yo voy a ver veamos la imagen de el lugar con imagen de espacio o lógico o si un greve que no así yo voy filtrando y si es la misma imagen de 17 meses con 13.3 kb con docker ps yo puedo ver los contenedor que están activos pero pues o menos a veo los que ya ya están ya se salieron allá y se pararon como pueden ver aquí cuál es el chiste no aquí me bajé de de ese registro una imagen y luego a partir de esta imagen aquí se creó un contenedor nuevo se levantó hizo su su acción y luego simplemente se cayó nada más entonces esto es la esto es el ejemplo más simple que puede haber en la vida ahora tratamos de avanzar algo un poquito más completo que puedo decir respecto para descargar la imagen ya se dieron cuenta no simplemente yo puedo usar ir descargando diferentes tipos de imágenes por ejemplo ya hables sobre ejemplo al pine al pine inox es una distribución de una imagen muy muy liviana es que trae un inox muy muy liviano voy a asegurarme de no tener esa imagen voy a voy a chequear el docker espacio imágenes rep al pine así le filtro ahí lo tengo lo voy a eliminar docker rmi menos de fe al pine hay que tener cuidado con el rmi vale si por eso la imagen posiblemente se crea un problema si tienes ahora que tienes ejecutando un ejecutando un contenedor entonces bueno para descargar una imagen es simplemente docker pul al pine con el comando pul te permite ir a descargar y con al pine das el nombre de la imagen listo y ahí está buscando la última versión y la acaba de descargar como pueden ver se está bajando la última versión tú puedes poner el mismo comando con dos puntos el tag o versión y ya puedes bajar una versión en particular si siguiente que más podemos ahí viendo ok ahora la cuestión eso ya bajaste tu al pine y ahora y te decía este es como bajarse se baja un inox muy muy liviano ahora nosotros podemos lanzar contenedores a partir de la imagen al pine que hemos descargado esto es muy simple simplemente puedes lanzando el comando room lo puedes hacer esto y lo vimos en el hilo world pero en particular lo que voy a hacer yo es levantar un contenedor al pine si levantar y una vez que se levantado le pido que ejecute un comando no que eso lo voy a hacer así con docker room al pine el s-l lo vas a lograr si ahí como puedes ver es simplemente simple me acaba de listar un conjunto directorio estos directorios no son los de mi máquina si yo porque si yo hago el s-l de lo mío tengo esto esto es mi máquina esto es el conjunto directorios de del al pine si voy a verificó verificó qué pasó aquí como pueden ver el país se levantó y si se cubre este comando el s-l y ya hizo lo propio entonces eso es respecto a los contenedores vamos a avanzar algo un poquito más más completo me parece que podemos otros apoyarnos en en situ te interesa aprender un poquito más de docker simplemente conocí un menos aquí parece las opciones y los comandos que están disponibles vale siguiente vamos a hacer o vamos a a trabajar en un workshop muy muy sencillito que me permita mí presentar una un proyecto de de docker es un proyecto oficial de docker a propósito así que pues vamos a ver qué pasa ricardo nos dicen que si puede subir un poquito el tamaño de la fuente de la terminal porque para que la gente pueda ver bien ahí será ahí creo que está perfecto gracias por no gracias a ustedes no había considerado eso ok ok vamos a avanzar con un proyecto vale un proyecto que es bastante interesante me me gusta usar este proyecto a mí porque la verdad está muy muy simple y además que te digo entonces vamos a irnos para acá y no aquí el docker trae un conjunto de de proyectos de prueba y todo demás entonces voy a pedir a ustedes que se puedan descargar este esto en su local yo voy a compartir esta url en el en la no recuerdo dónde donde tengo yo si trabajando ok que está bueno en el chat de la comunidad les voy a dejar ahí el el comando mi clon y el url vale ahí les acabo de dejar el el repositorio que vamos a estar descargando les invito a que llegan a lo mismo yo voy a hacer eso vale donde me voy a ubicar un directorio un poco más prudente aquí en mi cadir docker aquí voy a trabajar sobre este directorio de ok aquí voy a hacer un voy a clonarme el repositorio si tal como para que se baje todo el fuente ahí se está bajando así que quizás hagan lo mismo por favor ahí les deje gracias Gonzalo por comentar y aquí está descargando y este verdad la verdad es que si tú quieres aprender docker pues este repositorio está más bien completo tiene unos ejemplos de verdad muy muy buenos muy completos desde lo más elemental a lo más básico así que vamos a levantar una aplicación una aplicación que muestra unos gatitos unos gatitos de ahí randómicos para ver cómo funciona y todo más veamos qué sucede a ver sentado un poco sentado un poco el reposito ha estado pesado no lo había considerado que estaba empezado ok imaginas y no apoyémonos en nuestro bc cot que tienes desde aquí y lo vamos a importar vale aquí tienes ad folder to wallspace aquí está docker y aquí está el apps listo ahí está el apps y dentro aquí lo parece que necesito hacer lo mismo que hice hace un rato para que se pueda ver y te voy a pedir que por favor vayas a enlaps vayas a la carpeta beginner y aquí vas a encontrar otra carpetita que se llama la axa aquí está plaza ok entonces cierro esto de aquí y lo que vamos a hacer nosotros es pre crear nuestro primer contenedor antes de eso te voy a explicar lo siguen levantar una aplicación web localizada que son básicamente es una aplicación web de gatitos que están ahí y esta aplicación web está escrita en pito sí está escrito con flax y la aplicación web si no la vamos a el absoluto a tocar solamente le vamos a crear el contenedor ahí lo vamos a hacer es localizar escribiendo un docker file y luego lo vamos a ejecutar en nuestros pcs el resultado va a ser una web con gips de gatitos de aleatorio y te confieso que posiblemente las imágenes de gatos no aparezcan pero sí va sí va a levantarse la aplicación un poco porque creo que las URLs de estos gatos están rotas pero bueno entonces qué vamos a hacer lo primero es crear una aplicación python luego escribir un docker file esto no lo voy a hacer ahora porque se va a seguir el tiempo lo que sí quiero destacar aquí es el archivo de otro file entramos en detalle un poquito para ver cómo funciona esto si estoy yendo muy rápido por favor me escriben en los comentarios y voy parando vale aquí tengo la aplicación web de flax app vale y aquí tengo yo la aplicación python tengo aquí a punto pelle aquí tengo la aplicación en python que tiene una ray de imágenes con unas URLs de estos gatitos de hecho yo podría ver aquí pero si funcionan estas URLs me parece que no funcionan pues de una vez la valida no está está rota este sitio de aquí se había roto hace ratos pero bueno da igual el fin no es de realidad que los gatos aparezcan sino que la aplicación se levante en una aplicación muy muy simple y simplemente gusta usando flax usa un estado de imágenes y luego lo que hace es es el estado de imágenes les envía a las muestras en la página index html la página index html está acá está dentro de la carpeta templates como ponerse cuenta la carpeta templates simplemente tiene este index html que es muy muy básico que tiene una cabecera y tiene un body donde se presenta básicamente en la los gatos los gatos estos que estoy mencionando vale entonces en la aplicación puede ser tan compleja como como te parezca no este va a saber que que es así lo relevante y diferente es este archivo que se llama aquí docker file aquí me cuando ha escribido car file te va a pedir que que instales la extensión de docker para este tipo de archivo yo no la tengo instalada así que voy a aprovechar y lo voy a instalar quedó instalada muchas gracias y también me recomiendan instalar la extensión de python para ese cot listo muchas gracias está instaladas de vuelta para acá abro el docker file y el docker file lo que tiene es un conjunto de instrucciones que me dicen bueno cómo vas a armar tu imagen de docker vale esto quitamos para acá entonces la primera línea lo que es lo que es lo que es una un simplemente indica un comentario vale y la segunda línea es lo importante aquí lo que hacemos otros es indicar qué imagen base vamos a utilizar para armar un un un imagen docker necesitamos partidos un imagen base en este caso partimos de un alpain versión 3.5 opcionalmente si nosotros dejamos así lo que va a suceder es que automáticamente va a usar la última versión que es equivalente a esto pero pues de mi caso yo puede dejar tal cual segundo lo que hacemos otros es para ejecutar esta aplicación si yo quisiera levantarla sin docker en mi máquina esta máquina junto que están viendo ustedes en pantalla yo necesariamente tengo que tener python instalado porque es una aplicación hecho en python entonces qué sucede dado que yo lo que estoy haciendo es localizar lo que necesito aquí es asegúrame que esta imagen no esta imagen está empaquetado ya tenga instalado python de manera que esta instalación de python no sucede a cada vez que levanto yo una nueva instancia es decir que levanta un nuevo concreto lo que la imagen ya está instalado por lo tanto lo que nos conocemos del año número 5 es instalar python y pip para que todo quede listo recuerden que el chiste de usar imagen de docker es que esté todo configurado y todo esté listo los binarios de verías necesarias en este caso usamos el comando rum que lo que hace es indicar que señala el gestor de paquetes de python y lo actualice en la línea número 8 lo que nosotros hacemos es lo siguiente nuevamente instalamos pip y la línea número esto es lo de mental para que funcione la aplicación como instalando python y pip ecualizándolo y el año número 11 lo que nosotros comenzamos a hacer es algo bastante interesante mire lo primero que para que funcione una aplicación es que los ficheros de esa aplicación estén disponibles y por lo tanto nosotros lo que hacemos es aquí es una con el comando copi que estamos insertando los ficheros desde el host hasta la imagen así los ficheros que están aquí el chero requirements lo voy a abrir aquí ese fichero de aquí lo estoy copiando yo en el directorio de la imagen de cuál imagen de la imagen estoy creando la imagen es el recuerdo que está usando una imagen base llamada que es la alfa interpretación 3.5 simplemente lo que estamos haciendo aquí es es copiar el archivo requirements.txt al directorio ucr slash crc slash up y después de eso lo que hacemos nosotros es es instalar pip aquí lo que hacemos nosotros es ejecución de la instalación de los requisitos de python después nuevamente copiamos los archivos requeridos para que la aplicación funcione así copiamos la copiamos la aplicación a punto pelle en el directorio ucres source up y nos aseguramos de copiar el resto de archivos es decir el archivo index que está aquí lo copiamos en la carpeta templates pero que está en ucres source up slash templates cuando yo ya tengo conflicto tengo tengo tengo tengo hecho todo esto lo que nosotros hacemos es levantar un puerto hasta aquí les va a resultar muy familiar es decir si yo usara si yo quisiera levantar una nueva imagen virtual un servidor y quiero levantar esta aplicación prácticamente lo que nosotros hacemos es ir y tener un script o le decimos al que hizo la aplicación que instala entonces que instala básicamente va a ser exactamente lo mismo va a instar de python y va a copiar los directorios y los archivos necesarios para que la aplicación funcione así así funciona esto y luego lo que va a hacer él es levantar la aplicación usando el comando python lo que nosotros hacemos es automatizar es empaquetarlo en el año número 19 decidimos exponer el puerto 5000 para que un spot donde va a funcionar la aplicación pero ese puerto 5000 es el puerto del contenedor no del contenedor como se levante luego nosotros podemos nosotros hacer un match entre el puerto del contenedor con el puerto de la máquina host eso ya vamos a ver más adelante y luego lo que hacemos nosotros es levantar el comando levantar el comando python sin más que decir simplemente lo que vamos a hacer acá es hacer lo propio voy a abrir un terminal dentro de la carpet usando que derecho en flex up open integrate terminal y lo que hacemos acá es la siguiente y estamos poniendo docker build menos de si tú fuesez un tú dices una cuenta en la carpet deberías usar la cap yo voy a usar hyperledger latinoamérica latinoamérica slash my fears up este es el nombre que le estoy dando vale y como punto le digo que que ejecute lo que está el cuando no creo que está ahí en el visual director pero que eso es todo levantó y ahí lo que comienza a ser es simplemente llama al demón de docker y se ejecute el comando de docker file y lo que hace es exactamente paso a paso todo lo que llevemos otros indicados en este caso está ahí instalando python haciendo la visión de pi y tengo mi imagen de posiblemente dependiendo de la dependiendo de su conexión a internet y también la capacidad de procesamiento que tienen en su máquina esto se puede traer más o menos yo tengo una máquina contra los 32 gigabytes es una y 7 de última generación como 8 8 8 7 us así que pues está muy buena para crear este tipo de cosas pero si sus máquinas son un poco son distintas tal vez en con menos capacidad se va a dar más pero bueno y aquí ya me creo de manera automática mi mi la primera imagen mi primera imagen llamada hiperlegio de la pibamérica ahora yo a partir de esta puedo ir levantando un conjunto de contenedores ya no necesito tener instalado python de hecho yo creo que ni tengo instalado pa indón acá comprobemos esto simplemente ricardo nos dicen en el chat que si puedes compartir por favor el último comando que ejecutaste para levantar el la imagen de docker de acuerdo si control de ahí sí por supuesto aquí les comparto la no para para la historia aquí está asegúrese en ejecutar esto siempre que estén en el terminal dentro de la capeta flex up por favor no sirvió muchas gracias a arahuaco en el chat veo que nos está colaborando un montón miren es este está capaz esta esta powerpoint le voy a liberar para que pagamos es agregar todos los todas las instrucciones y veo que el usuario arahuaco está agregando eso y te invito mi querido amigo o amiga no sé si ese es un gracias en que lo puedas editar no sé ahí me parece que tienes tienes mucha iniciativa y el día ya les ya le pongo pública la la la la ppt gracias José José suero te agradezco mucho entonces buenísimo tengo mi primera imagen y lo que vamos a hacer nosotros es pues es hora de probar quien quien quiere quien quiere probar esto y como lo probamos simplemente simplemente debo venir para acá docker comando rum y menos p ahora quiero quiero hacer énfasis en los siguientes minutos yo voy a levantar esta aplicación para mí para mi máquina en el en el puerto 8888 pero la aplicación python está levantada en el puerto 5000 voy a asumir que yo mi puerto 5000 está ocupado y el único en mi máquina host y el único puerto que tengo disponible o el que es el decidido usar es el puerto 8888 entonces voy a hacer voy a configurar para que eso sucede y antes de eso voy a asegurarme de chequear si tengo el puerto disponible netstat en los np eslash crepe sino o crepe 8888 y yo ya tengo la posibilidad de ver si esto esto está funcionando de hecho no tengo libre ningún problema a buena hora y lo que voy a hacer ahora es ahí levantar ya mi imagen y probable no entonces levantamos ahí simplemente docker rum menos p opción puerto no mi puerto de máquina host el puerto de la y de que definí yo en imagen el nombre del contador con menos menos name con el espacio le voy a poner aquí my fears app o es el nombre del contador no o my fears container lo que tú decides y luego tú tienes que definir aquí con espacio el nombre del contador del contenedor que vas el nombre de la imagen que vas a usar para levantar ese contador llamado my first container entonces voy a levantar esto y ahí se acaba de levantar se acaba de levantar la imagen el del contador se creó un contador a partir de una imagen y lo que me dice en la salida es que mira la aplicación se está juntando en el puerto cero en el puerto cinco mil ahora si yo le creo a esto y voy directo a ajustar esto posiblemente tenga una lamentable respuesta porque es voy acá y lo que tengo aquí es que no tengo nada en el puerto cinco mil porque en realidad yo definí que se levante este en el puerto ocho ocho ocho la aplicación está funcionando ya nos dimos cuenta de inicio que los gips estaban dañados pero bueno el importante es que funcione y así simplemente se creó una imagen muy muy simple que era una imagen levantaron con la parte de imagen es muy muy simple así que como pueden ver aquí ya me salen las peticiones que yo he estado yo estoy enviando y aquí pues me ya me apareció el 404 desde el curso de fabricionfacon.ico de su respecto a lo que es docker bueno si nos está haciendo falta avanzar hasta probar esta aplicación compuesta de votos la aplicación compuesta de votos ya me permite a mí introducirte a lo que es lo que compose pero lo que ya son las dos horas no sé ahí preferiría yo ver esta siguiente parte de docker que es básicamente la parte de esta aplicación compuesta en esta aplicación compuesta de docker usando docker compose pues usamos otro conjunto de tecnologías un front-end hecho en python que recibe un voto que es un que se amasen una base de estos tipo redis y luego hay un contador que se tributa en punto net que procesa los votos y el resultado lo envía un poco de SQL y luego el resultado de eso se presenta una aplicación de resultados de Node.js entonces la aplicación es bastante interesante porque combina un montón de tecnologías todo dentro de un solo fin esto lo vamos a ver en la siguiente clase me va a tomar esto unos 20 minutos en explicarles pero pues considerando que ya estamos operando el tiempo de asignado este día vamos a seguir avanzando esto durante la siguiente clase de todos modos yo está estoy liberando de una vez y les coloco en le voy a hacer público esto que voy a compartir y se los envío en el chat de la comunidad les dejo yo el link para que lo puedan revisar la siguiente clase repasamos esto mismo y complementamos la parte de lo que no está faltando vale y las personas que quieran no estoy seguro si dejarlo esto como como editor a todos voy a dejar aquí como comentarista los que quieran tener permisos de edición pídanmelo y lo aportan y les doy permiso de edición mientras tanto dejo solamente permisos de comentarista para que puedan exceder de esas y no tengo problema y listo hay los que acabo de compartir el link de la de esta presentación de docker saquenle en el mejor provecho les prometo yo la siguiente clase de mostrarles la siguiente aplicación que es a partir del año número 40