 Buenísimo. Bueno, hola a todos. Bienvenidos a nuestra charla del día de hoy. Hoy lo que queríamos hacer era cubrir un poquito sobre los nuevos productos que tenemos para Red Hat Cloud Services y vamos a pasar bastante tiempo hablando sobre Kafka, así como también de un nuevo servicio llamado Service Registry, como Karina y Elder nos presentaron hace unos minutos, Jennifer Vargas. Voy a hacer un poco la presentación, overview de los servicios y Bernard Tisson nos va a ayudar con el demo. Entonces, bueno, para la agenda del día de hoy, lo primero que tenía, lo que yo quería hacer es un pequeño intro de Cloud Services, hablarles un poco de nuestro servicio de Apache Kafka y luego seguido por el servicio de Service Registry. Y yo voy a tratar de cubrir todo esto lo más rápido posible, así Bernard les puede hacer gran parte del demo. Tenemos bastante, bastante que cubrir. Así que vamos a empezar de una vez. Lo primero es que Red Hat Cloud Services, una de las cosas importantes que está pasando en nuestra compañía en estos momentos es que Red Hat está expandiendo su portafolio de tecnología en Open Hybrid Cloud con un nuevo set de Cloud Services que incluyen servicios de plataforma, servicios de aplicaciones y servicios de data. Y el objetivo principal es ofrecer un stack que está completamente gerenciado, una experiencia unificada y soporte para hambrientes íbrings. Hoy en principal nos vamos a enfocar en la capa de aplicaciones y data donde tenemos un nuevo set de Cloud Services que están integrados nativamente con la plataforma de OpenShift y se enfocan en proveer una experiencia simplificada para los desarrolladores para que ellos puedan concentrarse en lo que es importante, que es el desarrollo de las aplicaciones nativas en el Cloud y no ocuparse de lo que es la administración de la infraestructura y de la plataforma. Todo lo que es la infraestructura, plataforma, configuración, updates, upgrades, todo eso es manejado y gerenciado por el grupo de Red Hat. ¿Qué tenemos por los momentos? Eso es como un high level de los servicios que tenemos. Hasta los momentos tenemos API Management que fue lanzado a principios de este año. Tenemos OpenShift Strings for Apache Kafka, que es nuestro servicio de Kafka, que básicamente es nuevo ahorita en este último cuáter del 2021. Lo estamos empezando a comercializar, así que nuestros clientes pueden ya empezar a comprar la solución y empezar a usarla en production. OpenShift Registry está en Development Preview y Bernard lo va a usar en nuestro demo, así que lo van a poder ver. Y luego tenemos otro par de servicios que ya están diciendo lanzados en beta y en Development Preview o que van a venir este full GA en al principio del 2022. Vamos a hablar primero de Red Hat OpenShift Strings for Apache Kafka, es una alerta de un nuevo producto. Básicamente, Red Hat OpenShift Strings for Apache Kafka es nuestro servicio en donde ofrecemos la plataforma Apache Kafka completamente gestionada y alojada este por Red Hat. Y el objetivo de la solución es permitir a los desarrolladores crear aplicaciones que les permitan transmitir data, pero que al mismo tiempo puedan ahorrar un poco de dinero cuando están implementando estas soluciones y además bajar un poco también la complejidad cuando se tratan de crear y desarrollar aplicaciones que de repente están un poquito más cerca de lo que sería real time, ¿verdad? En esos escenarios en donde estamos tratando de recolectar data de muchísimas fuentes en procesos que ocurren muy rápidamente y tenemos, como se dice en inglés, Streams of Data o básicamente un flujo de data que no para y necesitamos procesarlo, pues esta solución es perfecta para eso. Nosotros nos encargamos, como ya dije, de manejar toda la infraestructura. Los primeros tres beneficios que nosotros identificamos, uno, mayor velocidad de la aplicación, porque ya que este servicio está completamente manejado por nosotros y es básicamente un self-service service, un self-service product, ¿verdad? Porque básicamente cuando tú tratas de usar la solución, tú puedes empezar a trabajar inmediatamente con la información, con la solución, sin necesidad de configurar nada. El segundo es que apoya o permite conectar a aplicaciones independientemente de dónde estén en las nubes híbridas. Si tú tienes ambientes híbridos en los cuales necesitas conectar diferentes aplicaciones, esta solución de Kafka lo hace bastante sencillo, bastante streamlined, porque básicamente la manera que la hemos creado es que lo hace muy fácil para nosotros conectar independientemente de dónde estén alojadas las aplicaciones. Y por último, una de las cosas que nosotros vamos entendido a través de desarrollar Kafka y apoyar el Community Project de Apache Kafka, es que la tecnología de Kafka es muy cool, es muy avanzada, pero no es solamente sobre Kafka. O sea, todo el ecosistema de Kafka también es importante, todos los servicios que complementan la solución. Y nosotros estamos trabajando en entregar no solo Kafka, sino todos estos servicios alrededor que lo van a hacer muchísimo más sencillo para la creación de estas stream-based applications o near real-time applications en las clouds privadas y públicas. Este, un pequeño diagrama arquitecto, así como medio marketing, de lo que tenemos en la solución para que más o menos tengan una idea de lo que está incluido en esta solución. Primero, en el core de la solución tenemos lo que es el cluster de Kafka, ¿verdad? Que es una instancia dedicada para los clientes. Pero una de las cosas que nosotros hemos hecho con esta solución en particular es añadir otros servicios para mí hacer un nivel de enterprise que es deseado por todas las compañías que lo usarían. Entonces, para eso hemos incluido todo lo que es monitoreo, métricas, la configuración y administración de las herramientas. Además de eso, hemos incluido lo que es una capa para el usuario que básicamente expone una interfaz de usuario o un UI donde es muy sencillo la creación de las instancias de Kafka y la creación de los tópicos. Así como también hemos expuesto CLIs y un API para que tú o uses nuestros flujos de desarrollo o traigas tus propias herramientas de desarrollo que quieras conectar. Y finalmente, todo esto es gerencia de manejado por Red Hat. Nosotros ofrecemos 24-7, o sea, 24-7, soporte global. Y ofrecemos un service level agreement o un servicio de 99.95%. Como decía antes, una de las cosas importantes que estamos ofreciendo es que cuando tú adquieres nuestro servicio de Kafka, lo que tú adquieres es una instancia dedicada a ti como cliente. Y esa instancia dedicada, o sea, nuestra implementación de Apache Kafka en este servicio está basada en StreamC. Y StreamC, como muchos de ustedes puede que sepan, es el enfoque que el grupo de Red Hat le ha dado a Apache Kafka en tope de Kubernetes. Básicamente es una implementación optimizada de Kafka para OpenShift. Y en el core de nuestro servicio, eso es lo que tú bajas lo que nosotros estamos usando. Y al rededor, todas las otras funcionalidad que hemos añadido, que expliqué en el slide anterior. Básicamente, nosotros hemos tomado algunas opiniones, algunas decisiones en cómo las instancias de Kafka han sido configuradas. Y todo esto es para estar seguro que les estamos ofreciendo el mejor performance, sobre todo porque nosotros estamos gestionando y manejando esas instancias por ustedes. Y ya, creo que he cubierto bastante este slide. Como dice anteriormente, también hemos desarrollado ciertos flujos para los desarrolladores que incluyen herramientas que al final de cuenta el objetivo es simplificar la manera en la cual los desarrolladores interactúan con nuestra solución de Kafka. Tenemos un command line interface que está dedicado a esta solución. Y básicamente, lo que eso hace es que ya los comandos están escritos para lo que sería la creación de instancias de Kafka o crear tópicos o manejar todo lo que sería la permisología a esos tópicos o a esas aplicaciones de Kafka. Incluso aplica para lo que sería el servicio de registro, o el schema registry, que también ayuda a lo que sería si tú quieres crear un esquema en la librería lo puedes hacer, o incluso asignar toda esta permisología a algún consumer o producer lo puedes hacer a través del CLI también. Tenemos el service mining operator, que básicamente es un operador creado para OpenShift, que lo que hace es que si tú tienes aplicaciones en OpenShift y quieres conectar esas aplicaciones con los tópicos de Kafka, si tú instalas este service mining operator, se hace sumamente sencillo porque es mucho más fácil para intercambiar las credenciales que se necesitan y de esa manera se hace muy fácil la conexión entre la instancia de Kafka y las aplicaciones que de repente tengas en OpenShift. Eso es lo que tenemos por Kafka. Por el otro lado, otro de los productos que estamos introduciendo en el mercado es Red Hat OpenShift Service Registry. Este producto está basado en el Community Project called Apicurio. Y lo que hemos hecho es traer esa librería de service registry para ofrecer, ya lo vamos a ver, es la capacidad de guardar tus esquemas y tus APIs. Entonces, ¿qué es Red Hat OpenShift Service Registry? Es nuestro servicio de registro que está completamente manejado y gerenciado por Red Hat y funciona, o básicamente lo que hace es ayudar o complementar, suplementar a otros servicios en nuestro set de cloud services. Entonces, básicamente complementa Red Hat OpenShift API Management y Red Hat OpenShift Strings for Apache Kafka. Y lo que hace es que básicamente provee un registro para esquemas de eventos y definiciones de APIs. Entre los beneficios que nosotros vemos, el primero es que ayuda a la reutilización de servicios, porque ya una vez que los equipos de desarrollo básicamente cargan o suben sus esquemas y sus APIs o sus estándares de APIs en la librería, muchos otros desarrolladores podrán de repente consumir esos mismos artefactos, sin necesidad de recrear otra vez cosas que ya otros desarrolladores ha puesto el trabajo. El segundo es que permite una mayor velocidad de la aplicación, ya que es una vez que los equipos de desarrollo empiezan a trabajar con estándares de APIs y esquemas que son reutilizados. Estás salvando o guardando o ahorrándole muchísimo tiempo a los grupos de desarrollo, porque ya básicamente se pueden dedicar a desarrollar la aplicación y simplemente usar estos esquemas o estas definiciones ya definidos para hacer la integración entre otras aplicaciones o incluso entre un tópico con un consumer o independientemente como hayas decidido que va a ser la integración. Y por último, la manera en que hemos desarrollado este Service Registry es que reduce los errores en compatibilidad. Básicamente, nuestra librería, nuestro servicio de registro, tú puedes crear reglas y validaciones que buscará la manera o hará como decir, validation, como que validará que cuando los usuarios o las aplicaciones estén tratando de usar esas definiciones de esquema o de APIs, no hayan problemas de compatibilidad. Incluso si algún desarrollador decidió hacer un cambio al esquema, pues se trata de asegurarse de que no va a interrumpir la comunicación entre otra aplicación que de repente está usando el mismo esquema. ¿Qué tenemos en general para Service Registry? Básicamente, facilita a los equipos de desarrollo, el descubrimiento y la reutilización de artefactos. Este se ofrece un repositorio central para los APIs y los registros de esquema. Se entrega esta solución, es una solución multitenant, o sea que tú simplemente está de deliver a una solución como servicio, la cual reside en el console de .redhat.com y tú simplemente te conectas a ese servicio de registro. Es compatible con todos los estándares de la industria. Y hasta el momento la manera en que se ha decidido es que este servicio de suspición es de valor incluido con otro servicio, es decir, que si tú adquieres Red Hat OpenShift API Management o adquieres Red Hat OpenShift Strings for Apache Kafka, vas a tener acceso al servicio de Service Registry. O sea, básicamente está incluido por The Gratis. Estos son algunos de los servís de los funcionalidades que tenemos en Service Registry. Yo no los voy a cubrir todos porque yo prefiero que ustedes vean un poco, tengan un poco más de interacción con el demo. Vean lo que Bernard representar para que ustedes puedan ver lo fácil que es usar esta herramienta. Sobre todo porque toma segundos la creación de un registro de servicio, toma segundos la creación de una instancia de Kafka y es súper intuitivo y sencillo de usar. Entonces, entre los principales features que se tienen para Service Registry, tenemos gestión de artefactos, control de versiones con validación de compatibilidad, validación de esquemas, soporte en múltiples formatos de esquema, compatibilidad con el API de registro y con CNF-C-CF. Y finalmente, todo esto es manejado por el equipo de Red Hat SRE que están disponibles 24x7, ofreciendo full premium support y tomando, siendo lo seguro de que la solución está disponible en High Availability. Finalmente, tu servicio de registro puede ser usado en conjunto con nuestro servicio Apache Kafka, ayudando a todo lo que sería la centralización y el gobierno o la administración de todos los esquemas y los APIs. Básicamente, este Service Registry puede funcionar como la librería oficial donde se van a guardar todos los registros de esquemas cuando la gente está tratando de usar Apache Kafka. También ofrece desacoplamiento. Y esto, básicamente, lo que hace es que tú puedas desarrollar aplicaciones de una manera mucho más eficiente, porque ya ahora cuando tú tienes la aplicación, pues estás separando el esquema de las aplicaciones de cliente. Y luego esos esquemas pueden ser reutilizados un montón de veces y tu aplicación de cliente es tu aplicación de cliente y cada vez que cambies la aplicación no necesariamente tienes que ir constantemente cambiando tu esquema. Y finalmente es la capacidad de descubrir que hay. ¿Cuáles son esos esquemas que ya están en el catálogo para entonces poder hacer todo lo que sería Serialization y Decerialization cuando estás haciendo el flujo de data entre las diferentes aplicaciones y el registro de servicios? Y con eso yo concluyo todo lo que es la introducción de ambos productos. No sé si tenemos preguntas antes de avanzar. Jennifer, Jennifer, puedes tomar dos siguientes slides, por favor. Ah, verdad. Les había olvidado, sorry. Voy. OK. El demo. OK, tenemos uno. La manera en que puedes utilizar hoy Red Hat Open Shift Strings for Apache Kafka es de la siguiente manera. Puedes irte a console.redhat.com. Y ahí mismo puedes crear una cuenta de Red Hat. Y la navegación te va a llevar súper intuitivo. Vamos a ver que hay un grupo, hay un menú para Application Services. Y ahí te puedes navegar hasta Kafka y llegar a la interfaz de Open Shift Strings for Apache Kafka. Y ahí vas a poder recrear, pedir una instancia de Kafka. Normalmente te toma de 3 a 5 minutos crear esa instancia. Y nosotros tenemos un free trial que básicamente puedes usarla por 48 horas. Y una vez que se vencen las 48 horas, puedes pedir otra. Por supuesto, esto es para el trial como developer. Si eres un cliente, pues tendrás acceso forever. El segundo es lo que pasa en el caso de Service Registry. Es bastante sencillo, es similar. Una vez que tú tengas las cuentas, las credenciales para console.redhat.com, que básicamente es una cuenta en Red Hat, OK? Super sencilla de crear. En verdad nosotros, la razón para crear esa cuenta es simplemente para mantener seguridad dentro de todos los servicios. Es la manera en que hemos escogido de cómo los clientes van a hacer login a la solución. Pero no requiere de nada. No necesitas poner tu trajeta de crédito. Esto no tiene ningún costo. Tú vas inmediatamente a la solución. Tienes acceso al registro Service Registry UI y puedes crear tu distancia. Finalmente, en el demo que Bernard va a cubrir el día de hoy. Jennifer, tú puedes. Tú puedes. ¿Quieres hacer esta o? No, no. Tiene que compartir mi pantalla. OK. Creo que tú tienes que, sí, lo puedes compartir. OK. Es este. ¿Puede ver mi pantalla? Sí. OK, muy bien. So, buenas tardes. So, antes de comenzar, tengo que decir que mi español es muy básico, pero tengo a Jennifer aquí, conmigo, para ayudarme si es necesario. OK. So, voy a demostrar cómo puede utilizar nuestro servicio Kafka junto con el Service Registry. So, Kafka en sí mismo no exige un formato de carga particular por lo que puede usar lo que quiera. OK. Los formatos populares utilizados con Kafka son JSON, Protobuf y Avro. So, Avro y Protobuf son formatos binarios que son mucho más compactos que, por ejemplo, JSON. So, necesito menos de ancho de red y menos de espacio de almacenamiento. Por otro lado, Avro y Protobuf también requieren un esquema para serializar y deshabilizar las cargas. So, el esquema se puede incorporar a todos los mensajes, pero, por supuesto, eso no es muy eficaz. So, una mejor idea es almacenar y mantener esquemas en un registro y hacer que las aplicaciones clientes de Kafka obtengan el esquema de registro cada vez que sea necesario. So, en esta demostración tenemos dos aplicaciones que intercambian mensajes, son dos aplicaciones aquí y aquí, que intercambian mensajes entre sí mismo sobre un par de tópicos de Kafka utilizando una administración, administrar el servicio, nuestro servicio Kafka. So, los mensajes representan solicitudes de cotidación y utilizan el formato Avro y el esquema de la carga del mensaje se almacena en el service registry. So, cuando la aplicación del productor a la izquierda de diagrama aquí envía un mensaje al tópico quote requests, recupera el esquema del service registry para codificar la carga y el ID del esquema, cada artefacto en el service registry tiene un ID global. So, este ID se agrega el mensaje de Kafka y por otro lado, tenemos la aplicación del consumidor que recupera el esquema a un función de este ID del same registry. Y a continuación, esta aplicación genera un mensaje de respuesta que utiliza el mismo esquema. Tenemos aquí una vista de alto nivel de la demostración, tenemos service registry, administrado por edad, una instancia también administrada de Kafka, y dos aplicaciones Java que se envían mensajes de Kafka entre sí mismo en formato Avro. Ok, no necesito, ok. So, aquí estamos en la consola del Hybrid Cloud de Reddit, donde puede administrar sus instancias del service registry de Kafka y en el futuro otros servicios Cloud. So, puede ir aquí, strings for Apache Kafka y instancias de Kafka y pueden ver que hay creado una instancia de Kafka que puede ver aquí, que se llama definition, para hablar algo de tiempo, ya que normalmente se tarda un par de minutos a previsionar una instancia. Puedes hacer click aquí en la derecha y podemos ver detalles de la instancia. So, se ejecuta en AWS, en Irlanda, y en la pestaña de conexión, podemos ver detalles de la conexión, so el bootstrap server, para conectarse a la instancia y detalles de la seguridad. So, cada instancia de Kafka es protegida por cuentas de servicio y utiliza OAuth o Plane como protocol de autenticación. Puedes hacer click aquí en el nombre de la instancia y podemos ver algunas pestañas. Voy a ver los tópicos, pueden ver que ya hay creado los dos tópicos que están utilizados por mi aplicaciones y también he configurado reglas de acceso de permiso aquí, se pueden ver que el cuentas de servicio con este ID puede leer y escribir a todos los tópicos que empiezan con quote y pueden utilizar cada grupo de consul. Puedes hacer click aquí en service accounts y puede ver que ya he creado este cuentas de servicio que voy a utilizar. Ahora puedo decir al service registry, aquí también ya he creado una instancia y si hace click a la derecha, pueden ver también los detalles de conexión, pueden ver los diferentes URL de diferentes APIs que soportamos y también detalles sobre la seguridad, al igual que con Kafka, también necesitamos cuentas de servicio para acceder al registro. Puedes hacer click en el nombre de la instancia y podemos ver el interfaz de usuario y aquí podemos ver que por el momento no tiene ningún artefacto en el service registry. Ahora podemos lanzar nuestras aplicaciones para simplificar las cosas, ejecutar las aplicaciones desde mi máquina local directamente desde el código. Podemos comenzar con la aplicación de productor. La aplicación que se puede ver el código aquí es escrita en Quarkus y utiliza las abstractiones de Quarkus para producir y consumir mensajes. Tenemos la abstractión de canales, tenemos un canal saliente, el canal representa un tópico de Kafka, tengo el canal por 4 requests y otro por quotes. El canal saliente y el entrante por las respuestas y además tiene dos puntos finales rest por la aplicación. El código es muy simple pero todo está configurado en un fichero de configuración que se llama Application Properties y podemos ver aquí. Aquí podemos ver que mi canal de 4 requests, por ejemplo, utiliza Kafka y un detalle muy importante es el serializador de Kafka de utilidad. Necesitamos un serializador que sepa cómo obtener el esquema de registro y serializar el mensaje al formato binario. Aquí usamos un serializador del proyecto Apicurio. Apicurio es el proyecto Open Source Upstream que forma la base del registro de servicio. Este serializador contiene la lógica para conectarse al registro y descargar esquemas. Aquí tenemos los detalles de seguridad, la configuración del otro canal, el URL para el registro y la configuración para la instancia de Kafka con el Bootstrap Server y los detalles también de seguridad. Pueden ver que estoy utilizando variables de entorno lo que me permite desabecer los valores en tiempo de ejecución. El esquema Abro está aquí. Es un esquema muy simple, un formato JSON que tiene un espacio de nombres, un nombre y dos campos que se llaman ID que es de tipo string y otro que es un precio de tipo número entero. Para facilitar el desarrollo con Abro podemos generar automáticamente una clasa Java que representa el esquema. Esto puede hacerlo con, por ejemplo, un plugin Maven. Esta clasa es aquí Generated Sources. La clasa contiene la lógica para ir de una instancia de esta clasa hacia un mensaje en formato Abro y viceversa. Podemos ir a mi terminal ahora. Ya he creado los variables de entorno. Por ejemplo, puede ver el Bootstrap Server y el URL del registro que voy a utilizar. Puedo lanzar la aplicación y por esto voy a usar el modo de desarrollo de Quarkus y lanzar la aplicación con un objetivo Neve. La aplicación se lanza. Va a conectarse con la instancia de Kafka y la instancia del registro. Es un poco lento. No, no, ok, es ansada. Perdón. Ahora puede ir al interfaz utilizado de la aplicación en localhost 8080 y a la página Quotes HTML. Si presione el botón aquí se enviará un mensaje de Kafka al tópico Quote Request. Para hacerlo, puede ver que ha enviado una acotación y estoy esperando una respuesta con un precio. Si vamos ahora a la interfaz del registro y voy a refrescar la página podemos ver que se ha creado un nuevo artefacto. Esto sucede porque se ha creado un nuevo artefacto. Esto sucede porque la configuración de la aplicación tiene conversión que dice que el seriador tiene que registrar automáticamente el schema si no pueda encontrarlo en el registro. Esta configuración puede ver aquí esta línea que dice otro registro es true. Si el productor no puede encontrar un esquema adecuado el seriador cargará la esquema desde la clasa Java generada. Por supuesto, una alternativa mejor es hacer todo esto como parte de un pipeline CICD. Podemos abrir aquí el artefacto y podemos ver los metadatos el nombre y el grupo que corresponde al nombre en el esquema y en el espacio de nombres y también el ID global que se transmite con cada mensaje Kafka. Podemos ver el contenido y formatarlo y pueden ver que es lo mismo es lo mismo esquema que en el código de la aplicación. Ahora pasemos a la aplicación del procesador es la otra aplicación es la aplicación escrita en Quarkus utiliza las mismas atracciones y la misma configuración no voy a mostrar todo esto pero voy a lanzar la aplicación aquí también tiene mis variables de entorno y puede lanzar la aplicación también con el mismo objetivo. La aplicación se conecta a la instancia de Kafka que es conectado y una vez lanzada podemos ver que está consignando mensajes del tópico Cuot request y envía una respuesta al tópico Cuot. Si vuelvo a mi interfaz de mi aplicación productor podemos ver que tengo un precio aquí y pude repetir cada vez que presione el botón un mensaje sin viaje una respuesta recibido. Entonces tenemos dos aplicaciones que intercambian mensajes en una instancia de Kafka los aplicaciones utilizan un esquema común que se mantiene en el registro de servicio. Los esquemas pueden evolucionar con el tiempo en el registro de servicio pueden definir reglas para los artefactos por administrar esta evolución por ejemplo puede definir una regla que dice que cada nueva versión tiene que ser válido el contenido debe ser válido y también puede definir una nivel de compatibilidad con versiones anteriores hay algunas posibilidades aquí pero aquí voy a definir que nuevas versiones de mi esquema tienen que ser compatibles con versiones anteriores y ahora puede cargar una nueva versión que he preparado aquí voy a pegarlo un momento lo puede colocar mi esquema el esquema es lo mismo que el original la única diferencia es que hay un campo adicional que se llama note este esquema no es compatible con la versión anterior porque este nuevo campo es obligatorio si intento cargar este artefacto debería aparecer un error y este es el error la regla de competitividad para solucionar este problema podemos hacer el campo configurando el nuevo campo como un campo opcional puedo rápidamente hacer esto una nueva versión lo que podemos ver aquí es que he cambiado la definición del campo note puede hacer un tipo de string o null es así que puede definir un campo opcional con avro ahora debería el registro debería aceptarse mi nueva versión tratar esto y ya he aceptado tenemos dos versiones la versión original y la segunda versión y el nombre del grupo son los mismos pero el ID de la nueva versión es diferente que la primera y esta concluye la demostración gracias Bernard estuvo muy buena la presentación la segunda vez que lo veo y esta vez estuvo un poco más corto y sin errores en el pasado estuvo muy bueno el demo gracias pero ahora creo que esto concluye nuestra presentación no sé si hay otras si hay preguntas que repete elder no sé si estamos recibiendo preguntas en algún chat no tenemos preguntas en el chat pero la presentación fue muy buena gracias