Spring Cloud
language: ES
WEBVTT ver, verlos a todos. Perfecto, sale y vale. Entonces, yo aquí en esta, en esta máquina, les dejé una carpeta que se llama Spring Cloud, va, y además ya les aprovisioné todo lo necesario para que nosotros podamos trabajar con esta arquitectura que vamos a proponer, que vamos a ir descubriendo poco a poco, va. Ahorita en la presentación vamos a ir viendo de qué consiste o qué conlleva esa arquitectura, esa infraestructura, perdón, qué componentes se necesitaron haber instalado, en dónde se encuentra cada cosa y bueno, así es como vamos a estar trabajando. Va. Entonces, revisando la presentación, nos está diciendo que nosotros necesitamos en primera instancia para trabajar la parte de Docker Desktop, sale. Entonces, y básicamente ya, abriendo eso, vamos a ver el IDE, ¿no? ¿Cómo se abre? ¿Cómo se ve? Aquí obviamente pues ya me están abriendo a mí los microservicios porque yo ya los había abierto, pero basta con que tú veas que tienes el IDE abierto y este, y lo abras, ¿no? Este primer microservicio vamos a ir viendo entre todos cómo se va a desarrollar. Sí, aquí la lámina nos está diciendo cómo lo vamos a hacer desde IntelliJ, va y bueno, lo vamos a ir haciendo paso a paso. Este, la sesión como siempre también está, aclaramos, está grabándose, entonces podemos revisarla una y otra vez, ¿no? Las veces que sea necesario. Entonces, bueno, entrando ya en materia, nos pide crear un proyecto desde cero con Spring Initializer, va, para que nosotros podamos crear una estructura inicial de un primer proyecto, un microservicio. Entonces, vamos a crear el microservicio y lo vamos a hacer. Entonces, lo que carga, que es un poco lento, ahí está, pero bueno, en lo que esto está cargando, aquí nada más otra nota, decirles que en la parte del escritorio, en esta carpeta que se llama Spring Cloud, si la abren, yo les dije a otra carpeta que se llama Recursos. Dentro de esta carpeta de recursos hay una imagen, ¿sí? Que si la abren ustedes les va a dar una instantánea de cómo se ve esta configuración que hicimos, va justamente para el microservicio de producto que les puede servir. Entonces, esta ustedes la pueden tener como para que cuando puedan, vayan a crear otros microservicios, pues se basen en esta configuración y sepan que va en cada cosa. Va, entonces ahí está, si quieren validarlo en la carpeta de escritorios, ahí tienen en recursos esa imagen. Sale. Y bueno, una vez que ya tenemos Intel IE abierto, aquí yo le voy a decir que cierres el proyecto. Vamos para que no choque porque el proyecto es el mismo. Y le voy a decir, voy a quitar
on 2023-08-17
language: ES
WEBVTT bien, usuario y orden, va, bien, perfecto, no veas el tipo de vía, vale, entonces, alguien más que tenga inconvenientes o algo así, es correcto, si ya que tengas esa parte, bueno ahorita me estaba dando cuenta que no se tiene la carpeta de repositorios, entonces si quieres
on 2023-08-17
language: ES
WEBVTT de las conexiones, ya hicimos los queries, ya vimos ahí las tablas, ¿no? Perfecto. Entonces, sale y vale. Entonces, voy a explicar así de forma ya rápida lo que es este el microservicio y ya probablemente en los últimos 40 minutos hacemos la práctica que no es más que copiar y pegar y pues reemplazarlo en cada uno de los modelos que aplica, ¿va? Entonces, vale más que tengamos ahorita el entendimiento, como lo dijo el compañero ahorita de hace ratito, este el entendimiento teórico de qué es lo que estamos haciendo y ya este en un ratito, incluso si no hay tiempo ahorita, mañana podemos dar otros minutitos y ya terminamos la práctica. Sale, entonces ahorita lo que me interesa es que entendamos el contenido de cada uno de estos archivos para que ya podamos este manipular la estructura del proyecto y le entendamos a todo, ¿sale? Entonces, este ya explicamos la parte de la base de datos, ya sabemos de dónde si vemos aquí en la clase modelos, DTOs, ay, qué está pasando. Se me está haciendo medio pixeleado eso. Sí, déjame la cierre.
on 2023-08-17
language: ES
WEBVTT Y ahí digamos que ya tienes el producto, el microservicio, conectado con eureka, con el gateway, con todos los otros componentes de Spring Cloud. Y esos no los hemos instalado. Entonces, por eso es que no te va a levantar. La forma que la tendrías que levantar, si quisieras hacer la prueba, es desde la rama que se llama First Day. Creo que si le picas
on 2023-08-17
language: ES
WEBVTT Entonces ahora, entonces, me imagino que es este. Perfecto. A ver, entonces, tu proyecto no levanta. ¿Por qué? Sí, porque mira, estás en Main. Hay que levantarnos. Hay que conectarnos a la rama, ¿cómo se llama? First Day en Product Service. De hecho, ahí creo que desde donde se ve el selector, ahí en Main, hasta arriba, ahí hay una como tirita. Al lado, al lado dice Main. A lo mejor ahí le puedes pegar a en Remote, hasta bajito donde dice Remote. Puedes seleccionar la rama Feature First Day y tal vez intentar hacer el Checkout Day. Checkout. Checkout. Y te dice tus cambios locales. Seguramente tienes este. Sí, creo que sería mejor. Sí, exacto. Creo que sería mejor. ¿Quién me habló para hacerlo viendo? Juan, Juan, Juan. Juan, Juan Salvador. Ah, me conecto a tu comp. Listo, amigo. A ver, ¿me decías que qué? Tú ya bajaste los repos, ¿no? Sí, no, no, no. Más bien, lo que tendrías que hacer, sí, sí, lo puedes, o sea, lo puedes dejar ahí tus repos. Lo que vamos a hacer es hacer el Checkout en las nuevas ramas. Entonces, mira, ahí en la interfaz que tienes, porfa, estamos hablando. Vamos al micro de clientes, ¿no? Que es el que hay que completar porque el de producto ya está. Vámonos al de usuario, por ejemplo. Entonces, vamos al de User Service. Y ahí tienes que ponerle donde dice 19 branch. Pícale al ladito, al ladito. Justamente, ahí. Pícale en new branch, ¿vale? Y ahí vas a poner, porfa, tu inicial. Y en el source, donde dice source, pícale. Y ahí es donde escribes first day, porque está abajo y como que no se ve. O si no, escribela en el buscador first y creo que con eso en minúscula y creo que ya te la pone. Ahí donde dice source main, dale al selector. Y te va a aparecer un cuadrito. Ándale, ándale. Exactamente. Y dale create new branch. Ya, si te fijas, ahí ya se creó. ¿Cuál es tu inicial? Ahí lo puedes identificar. Bueno, a lo mejor ahí no se ve, pero ya está creada. Fíjate, ahora, en tu terminal, en tu terminal, ahí está, mira, JSCA. En tu terminal, lo que tienes que hacer es conectarte a CD, el de usuarios, al repositorio de usuarios. Entonces, ponle CD, user service. Y ahí dale un fetch. Dale git, git espacio fetch, f-e-t-c-h, correcto. Con eso estás haciendo que, dale enter. Estamos bajando las nuevas ramas que se crearon. Incluso ahí se debe de ver la tuya. Correcto. Entonces, ahora lo que vamos a hacer es un git checkout, git checkout a tu rama que acabas de crear, que es la de tu inicial, JSCA. Perfecto. Correcto. Y al hacerlo, tú ya te cambiaste a esa rama. Entonces, si tú la abres desde IntelliJ, ya te va a apuntar esa nueva rama y va a estar vacía para que tú la tengas de completar. En el menú hamburguesa, de hasta arriba, dile open, open. Y le das este, ahí selecciona al de usuarios. Está bajito. Ahí bájale. Y es que creo que lo pusiste en repositorios, ¿no? Ahí busca a ver de user. Exacto. Exacto. Y dile confiar en los proyectos, seleccionalo. Y dale, dale core. Y dale new window. New window. Perfecto. Y ahí ya te abre los 2. Entonces, fíjate, ahorita en el de service, hasta arriba, en donde dice version control, te debe de apuntar a tu rama. Ahí estás. Y ya está vacío. Entonces, ahí ya lo puedes ir completando y tienes al lado el de producto para que veas cómo completarlo. Va, sí, sin problema. Yo todo lo mismo te digo, mañana vamos a continuar con esta práctica. Alguien más que necesita apoyo o algo así. Listo. Sí, dime. Dime. Claro. ¿Quién me habló? Suriel. Ah, ya te vi. Sí, exacto. Suriel, cuando levanta, ya lo podrías contener. Exacto. Exactamente. Sí, sí, dime. Continúa. Exactamente. Exacto. Mientras tú lo tengas y probablemente el día de mañana pienses migrarte a una arquitectura basada en microservicios, tú lo metes con algún proveedor de nube y ellos son los que se van a encargar de aprovisionar esa infraestructura en lo que es el escalamiento. Te van a proveer escalamiento ya sea horizontal, vertical, dependiendo de cómo tu aplicación necesite ir a la arquitectura. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro. Sí, claro.
on 2023-08-17
language: ES
WEBVTT más tiene problemas. Bueno, yo veo pocas compus. Alguien más tiene problemas para conectarse? Porfa si, si levanten la mano para avisarle a Erika, porque a lo mejor ya es un problema más grande. Perdóname, ¿Quién me habló? Hola Juan. Ah, ¿Qué onda? Sí. Ah, no, es git checkout y el nombre de la rama que tú creaste. En este caso la de tu inicial. Git checkout y tu rama. Ah, pero fíjate que ahí estás en el folder repositorio. Tú tienes que meter a. Exacto. Por ejemplo. Era el de usuarios, no? Creo que estabas. No, ah, el de orders. Ah, bien, perfecto. Entonces vamos al de orden. Perfecto. Y ahí le damos este git checkout. Y el nombre de tu rama. Ok, cuando esto sale es porque la rama se creó y tú ya tenías el repositorio, entonces nada le ha avisado que se crearon nuevas ramas. Entonces hay que hacerle un fetch. Hay que poner un git fetch fetch con T. F, T, C, H. Ah, eso nos va a bajar. Lo último en el repositorio remoto te va a bajar seguramente varias ramas y de seguro ahí está la tuya, mira, J, S, S, A. Ahora sí, ya puedes volver a hacer el checkout y ya no debe haber. Perfecto. Ahí estás en tu rama y ya con Intel y ahí puedes este empezar a continuar. Y entonces este. Sí, si te fijas ahí en Intel y ahí donde le estás pegando, ahí está tu rama. Exactamente. Entonces alguien más tiene que un poco de ayuda o algo así. Perfecto. Entonces, mientras.
on 2023-08-17
language: ES
WEBVTT a darle new window para que puedas tenerlos en paralelo y este eso te puede ayudar incluso de lo que ya hiciste. Exacto, perfecto. Bien, aunque sabes que el de producto ya está porque es el que yo ayer les expliqué, entonces el de producto igual de tu práctica sería bueno que nada más te listo. Sale, entonces. ¿Quién más necesita ayuda? ¿Manu? ¿Quieres que te echen la mano? ¿Ah, pero a poco hay dos manuales? Bueno, es que aquí en la máquina veo a un Manuel Galicia. ¿Los demás no se pudieron conectar a su compu?
on 2023-08-17
language: ES
WEBVTT pedir un nombre y yo lo llamo user controller. Entonces, le puedo escribir user controller. Y al darlo de alta, me va a generar un archivo, una clase vacía, ¿no? Una clase vacía. Lo que tengo que hacer es ir poblando esa clase conforme lo que me muestra la clase de producto. Acuérdense que el producto tiene que estar en la rama feature first date. Lo que puedo hacer es copiarme todo, pegarlo y nada más reemplazar las palabras para que en vez de producto sea usuario, ¿no? Para que sea usuario. ¿Cómo lo tenemos acá? En vez de producto, todo sea usuario. Las rutas sean users. O si lo prefieren, pues lo vamos escribiendo línea por línea. Y dependiendo la habilidad de cada uno. Y pues, bueno, esa es como sería la práctica. Eso sería para cada uno de los archivos que tenemos aquí en el repositorio. Entonces, no sé si hay alguna duda. Porque, bueno, también además de estos archivos vemos el resources. Bueno, el resources tiene que estar igual que el producto en la versión de first date. Igual que este archivo, ¿no? Así. Solamente con esta configuración. Aquí no tiene nada de Spring Cloud. Simplemente esto, que son configuraciones básicas. Habilitamos los de books, habilitamos el puerto, la base de datos. Va. Y el name. Todo esto es lo que vimos. Y ya está. Y ya está. Y ya está. Y ya está. Y ya está. Y ya está. Y ya está. Y ya está. Y ya está. Y ya está. Y ya está. Y ya está. Y ya está. Y ya está. Y ya está. Y ya está. Y ya está. Y ya está. Y ya está. Y ya está. Y ya está. Y ya está. Y ya está. Y ya está. Y ya está. Y ya está. Y ya está. Y ya está. Y ya está. Perfecto. Perfecto. Me parece bien. Entonces, va. Continuamos. Y yo estoy aquí en el pendiente. Voy monitoreando y cualquier cosa me avisa. ¿Alguna duda? ¿Javiola? ¿O Tuali? ¿Todo bien? ¿Quién me habló? Perdón. Ah, hola, mi este. A ver, ¿cuál? ¿Yo me pregunté este? Perdón. Ah, sí, sí, sí. Sí, por favor. Exactamente. Sí, tengo que un tip. Bueno, a mí se me hace más sencillo es copiar, pegar los archivos y reemplazar las palabras. Pero digo, esa es mi forma. A lo mejor tú te sientes más cómoda escribiendo.
on 2023-08-17
language: ES
WEBVTT momento, parece que va fluido, ¿no? entonces bueno ya sonó la campanita del pomodoro, hay que tomarnos cinco minutos de hecho la técnica dice eso, hay que, estemos haciendo lo que estamos haciendo, paremos, porque es buena idea, darle un poco de descansa a los ojos, a la concentración, entonces, descansamos cinco minutos, nueve y seis, nos conectamos, ¿va? y retomamos esto y pues ya completamos la práctica para ya continuar con el tema de spring clog, ¿les parece? perfecto, sale entonces, nueve y seis, nos vemos. listo entonces va entonces ya estamos aquí de vuelta, ¿no? voy a ver quién quién este quién ya lleva avanzado ya está acabó va entonces yo creo que es buena idea vamos a dejar unos 20 minutos más y vemos hasta dónde avanzamos con la parte de esto en estos 20 minutos ya hasta donde lleguemos si logramos terminar, si no, ya nada más vamos siguiendo la práctica con el código ya como les comenté ya lo tengo yo todo actualizado en las ramas entonces este voy a aceptar a alguien, ahí está si más que nada para que nos dé tiempo de revisar también la parte de spring clog al menos que se graben el vídeo y ya mañana o ustedes el día que quieran con más calma pues ya pueden replicar replicarlo todo no mientras lo tengan ahí en la sesión en la grabación entonces nos dar otros 20 minutos nueve y media hacemos otro corte y revisamos este está perfecto ok una vez que ya creas tus clases y ya tienes todo arriba bueno igual al de producto hay que levantar los micros para que te acuerdas de ayer como mostré el crud de productos con postman y cómo lo probamos hay que hay que levantarlo para que tú puedas hacer también el crud de usuarios el crud de órdenes estás en esto si quieres te ayudo, perfecto, ya veo tu máquina entonces entonces ya ya levantaste docker ya tienes ahí la instancia corriendo no perfecto ahora abres postman, perfecto entonces ahí vas a agarrar la colección que se llama spring cloud 1 y tú levantaste por ejemplo el de usuario no entonces ahí tienes la colección en usuarios este puedes hacer ahí tenemos un get un get all users la idea es que vayamos agregando los demás va entonces este si quieres darle doble clic al get all users y bueno para que funcione primero tienes que levantar entonces tu microservicio vamos al proyecto de y vamos a al compilarlo pero mira fíjate que en esa clase de modelo de user yo todavía veo que no está completa entonces hay que completarla sale la completamos así mira si te vas al micro de producto ahí acuérdate que dicen los basamos ok a lo que pasa es que hay un producto tienes que ponerte cambiate la rama que se llama first day para que tengas todo lo que hicimos ayer hay que buscar la rama first day en feature en feature está exacto hay que hacer ese checkout y fíjate cómo tu proyecto se va a actualizar y te va a dar todo lo que hicimos ayer a ver fíjate ahí en la carpeta source y si te fijas ahí vas a tener el modelo que fue la que nos correcto ahí la tabla te acuerdas cómo se llama o de dónde lo revisamos ok cómo te acuerdas cómo lo revisas puede ser directamente de ahí conectándote buena idea o también te acuerdas del archivo docker compose llame el que les justamente todo eso ahí viene la definición de los modelos en el escritorio en el escritorio hay una carpeta que se llama spring cloud y si tú te metes hay una que dice postgreSQL y Kafka y ahí está el docker compose puedes abrir lo puedes abrir con este sublime text te hecho para que lo veas más bonito bueno no hay problema y este no tienes el lado solo si no como crees a ver a mí la ter a ver una forma más fácil de comprobarlo sería en el bus en la barra esa que dice buscar ahí escribe sublime y desde ahí puedes abrir ese archivo hay darle cáncer y así como más más vistoso no entonces si te fijas acuérdate en el de producto nosotros estamos en producto a no es cierto en cual estás entonces como ves la tabla hay que abrir si te acuerdas ahí están unos volúmenes que es de donde lo cachan entonces hay que abrir la otra el otro archivo el ddl y el dml también están ahí dentro de la carpeta se cuelde en ese cuelde no uno antes hay una carpeta que se llama se cuelde ahorita no ahí donde estamos no ahí donde estás dice se cuelde así por lo si ahí encuentras el ddl y el dml de usas eso pues ahorita bien con su y ese se te va diciendo este el modelo se envase a ese tú creas tu modelo bien lento te gana no entonces si te fijas ahí está la tabla se llama users y vas completando tus demás propiedades en este caso hay tu mapeaste una que dice id name y price entonces exactamente y el email entonces hay que cambiar y usted hay que poner y ser men y la de y bueno esa clase de modelo nada más se modifica aquí y si acaso ya cuando tengas el modelo el dto lo puedes este lo puedes modificar va sale vale bien entonces ya quedó exacto no así como de hecho no sé si se ve la pantalla de fabiola que es la que está presentando en el docker compose de ahí sacamos los modelos pues abrir tantito de su blind text ella abrió abrió el docker compose vio que están los ddl y el dml en la carpeta sql y en los archivos de al lado ya los abrió y ahí se ve los campos que tiene cada entidad y esos campos exactamente y esos campos son los que hay que mapear en cada modelo en el producto en el usuario y en el de órdenes no después mostrar la ruta ok en el escritorio y una carpeta que se llama spring cloud post grese que le caja y adentro una carpeta que se llama sql allá adentro están los allá adentro están los dml exactamente bueno bueno listo a ver entonces alguien con algún problema con esta parte o alguien ya lo logró levantar perfecto va si quieres con uno está bien no no hay problema este yo creo que aquí vamos a detener ya esta práctica no no hay temas y no si no se logró levantar los micros como les digo este creo que vale más ahorita que al menos veamos el proyecto funcional y se grave y ya ustedes pueden bueno por la parte de la creación de los microservicios también se grabó en la sesión anterior entonces este por lo que vi que ya estuvieron ahí moviéndole creo que creo que quedó claro al menos lo suficiente de qué es lo que hay que hacer a qué es lo a lo que hay que llegar con la parte de los microservicios entonces ahorita en cinco minutos voy a dar un bueno menos de cinco minutos voy a dar un breve resumen de la práctica de lo que se tiene que hacer que es que hace que básicamente es un club para que igual se quede aquí grabado no puedan revisar en en la grabación diferentes momentos del vídeo y ya pasados a cinco minutos empezamos ya con bueno más bien retomamos pero ya ahora es la parte enfocada a spring cloud que no es más que agregarle cierta configuración a esos tres microservicios que se crearon va entonces haciendo el resumen así rápido lo que hay que hacer en el día 1 es nuestro objetivo fue crear tres microservicios que son los que yo estoy mostrando aquí ahorita en mi pantalla el product service el user service y el order service esto con el fin de que vamos a proponer una arquitectura de microservicios basada en la propuesta que nos da spring cloud para que podamos disculpenme que bueno que me avisas muchas gracias a ver déjame ver si ahí ya se ve perfecto una disculpa entonces les repito la parte de los microservicios son estos los que se tienen que levantar estos tres que están aquí al final el de producto el de usuario y el de orden va esto por el ejercicio que planteamos ayer el objetivo final nuestro proyecto final por así decirlo es hacer un sistema que está basado en una arquitectura de microservicios que nos va a permitir a nosotros como usuarios sí solicitar órdenes de pedidos o de productos mejor dicho va entonces yo voy a poder hacer la orden de algún producto siendo un usuario ese es el ejercicio a plantear a resolver en cada uno de los microservicios ayer planteamos el tema de que con docker compose levantamos con con ayuda de docker unas instancias de postgres bases de datos que nos este nos permiten ver los modelos las tablas las vimos ahí en nuestro pg admin nos conectamos a los servidores y podemos ver cómo está la base el tema de la base de otros y finalmente vimos como ejemplo la guía de con el microservicio de producto perdón estoy voy a poner miot porque está esto entonces este vimos el ejemplo del microservicio de producto como se fue desarrollando con la estructura que nos decía en la presentación nos habla de agregar en nuestro proyecto un controlero un dto un modelo un repositorio un service junto con su implementación la clase nos habla de nuestro archivo properties y de nuestro archivo poma va teniendo esos cinco arches bueno esos varios archivos hay que hacer lo mismo en el usuario hay que hacer lo mismo en el de orden y con eso al compilarlo nosotros vamos a tener un todo un microservicio levantado en este caso hicimos la prueba con el de producto y con postman pudimos tener un cliente que se conecte directamente a este servidor a este microservicio perdón en el puerto que está establecido aquí en la configuración que es el 80 82 va y con eso ya podemos hacerle peticiones no hicimos ayer la demo de que hicimos el get y el get by id y el get all y aquí en la colección que ustedes también esa es sobre el ejercicio del día 1 crear estos microservicios y pues bueno con esa parte damos por entendido que ya podíamos tener nosotros una arquitectura de un sistema que es el que trata de resolver el problema que ya ya anunciamos por medio de tres proyectos que son este microservicios va hasta ahí alguna duda comentario de lo que fue digamos este mini repaso y muy express de lo que hicimos en el día 1 perfecto muy bien entonces ya ya tenemos entonces la visión ya retomamos de cuál es el objetivo de nuestro día 1 ahora en nuestro día 2 vamos a hablar del día 2 lo vamos a ir viendo en la práctica en la presentación perdón vamos a ir viendo pero el objetivo a final de cuentas es que estos vamos a provisionar les de las bibliotecas que nos propone es print cloud a esos tres microservicios que ya hablamos les vamos a agregar unas configuraciones para que puedan trabajar en conjunto con un ecosistema basado en la propuesta de la nube de spring entonces aquí nada más voy a hacer para que no haya tema ok entonces la forma de trabajar ahorita lo vamos a ir viendo en la presentación el temario o vamos a ir viendo que hace cada cosa pero nada más les les este les doy el anuncio de que todo se encuentra en la rama de de bebel como les decía al inicio no si ustedes no terminaron ahorita la práctica y demás no se preocupen en el repositorio en la rama de de bebel de cada uno de los microservicios que ahorita estamos hablando que en total van a ser siete los vamos a contar en esos siete servicios ustedes siempre que estén en la rama de de bebel van a poder tener el proyecto funcional y completo entonces eso lo pueden ahí descargar el código y y bueno listo eso es como el pequeño anuncio y bueno ahora sí entonces continuaríamos con la presentación al día en que nos quedamos bueno más bien a la lámina que nos quedamos ayer que fue acá pues aquí básicamente el día terminó en que hicimos el ejercicio de cómo armamos el microservicio de producto con sus clases este fíjate que aquí hay un error está este mapper no va déjamelo quito y lo dejamos así de hecho bueno aquí también hay un pequeño error con esta bueno lo actualizó después el chiste es que no va a ser este no va a ser chivo no ese mapa lo vi porque ahorita javi vi que lo lo alegó pero bueno ese no iría sale entonces aquí con continuando el digamos la lámina lo último del día 1 es pues crear crear todo esto no de hecho aquí también este esto está mal vamos es que no hay una forma de de subrayarlo como para que nos demos cuenta de que no va bueno más bien detacharlo lo dejo subrayado lo actualizo y les vuelvo a compartir la presentación para que este paso no se vaya digo no es gran cosa pero nada más tenerlo en cuenta que no va y bueno aquí en esta esta lámina del día 1 con la que tenemos digamos ya la propuesta del microservicio va levantado en este caso aquí la presentación habla de usuario nosotros hicimos la demo con producto y este al final es lo mismo perfecto entonces ya entrando aquí el tema del día 2 todo el tema de spring cloud vamos a ver este con mayor tema el texto entonces les decía la petición inicia aquí desde un cliente o un sistema externo ese cliente ahorita lo estamos ocupando y se llama posman no es nuestro herramienta que sirve como cliente pero bueno ese cliente puede ser un usuario en una app que está consumiendo nuestro back end puede ser este algún algún sistema externo que esté construyendo nuestra nuestra zapis no nuestros tres cruds eso es nuestro cliente entonces ese cliente es una petición va y lo primero que hace es llegar a la primera el primer producto a la primera familia el primer producto de la familia de este clóque que es el gateway pues toda la petición va a llegar por el gateway si y es el gateway quien va a ir al servidor de autenticación que se llama aquí clock si iba a hacer va a tener un mecanismo en el cual va a pedir que la petición que hizo el cliente sea válida si le va a preguntar si esa petición es válida por medio de un token si es la aplicación esa petición es válida entonces la el flujo va a continuar y bueno obviamente aquí de aquí clock otra vez se va al gateway sale y el gateway lo siguiente que haría lo puedes ocupar cada vez que haya algún error en tu aplicación tu aplicativo y puedes ocupar ese error esa traza para por ejemplo regresarlo en un exception al usuario y has de cuenta que ese es esa traza o ese número para nosotros como desarrolladores o como gente que damos mantenimiento a los sistemas es más rápido buscar ese id o y que estar leyendo los docs no es más rápido entonces ya que me pases esa esa traza yo la estoy yo lo estaré buscando en otro servidor en un servidor más bien que se llama si quien es el que se ve hasta acá entonces es leo se combina con si quien para que tú puedas darle ese seguimiento a las trazas si y una vez que tú veas ese error te metes al servidor de si quien y encuentres de una forma más este rápida más amigable el error va lo vas a poder ver y vas a dar en vez de estar revisando ahí los blogs como que su propuesta no muy similar a lo que hay productos ahorita como data dog por ejemplo que te permite ver así el monitoreo no de de errores ok después que la petición llega a alguno de los tres microservicios lo siguiente que hace es bueno no es tanto ya que una petición aquí nada más se ilustra que siempre en todo momento estos microservicios tienen configurado un bus con Kafka que es lo que ayer hablábamos va es decir que todo microservicio cuando inicia lo primero que hace es estar conectando con Kafka y preguntarle al config server si cuál es la configuración que tiene que cargar inicialmente a de modo a modo grosso si se acuerdan más o menos techo quiero entrar aquí a mi máquina en el de producto no sé si recuerdan que tenemos estos archivos que sí que están dentro de este resources estos archivos aplicación y amel que están dentro de cada microservicio son archivos muy importantes y son los archivos de configuración estos archivos son los que se propone manejar de forma distribuida en la parte y bueno finalmente lo que decíamos de si bien para el monitoreo de errores que nos provee es leut secando esas trazas y bueno al final de que ya todo esto se resuelve todos llegan y le mandan la respuesta fue un ricos acá es un response se convierte en un respon al getaway y el getaway da esa respuesta nuevamente al cliente no es como regresar hacia acá pero ya de un ricos hacia un response entonces esta es como el diagrama que vamos a encontrar y a lo que vamos a llegar nosotros ahorita con no sé si hay alguna duda o pregunta observación sobre este diagrama sobre la arquitectura que vamos a estar trabajando perfecto va a que va exacto en cualquier nube digamos si tú te fijas de hecho aquí la prop es correcto ahorita la el concepto del que estamos hablando estamos hablando de spring ni siquiera hablamos de que está en amazon o en ash o en google precisamente por eso porque porque esto puede estar implementado en cualquier nube como bueno se acuerdan la parte de el pas no ese concepto de platform as a services aquí habría que hacer un estudio la realidad es que aquí digamos nosotros estamos nuestro proveedor de nube va a ser spring cloud no digamos el curso habla de cómo moni cómo agregar o cómo hacer una arquitectura de microservicios basándonos en lo que es spring cloud digamos él es nuestro proveedor de servicios a qué voy a que si quisiéramos responder esa pregunta tendríamos que hacer un análisis de en el mercado cuáles son los productos que se que se relacionan o sus equivalentes mejor dicho con cada proveedor de nube por ejemplo amazon yo sé porque he trabajado con con la nube de amazon que tiene un servicio que se llama amazon a piguet wey entonces ese probablemente es nuestro equivalente con spring cloud que va nosotros para hacer por ejemplo el tema de los microservicios tú puedes aprovisionar un una una instancia que corra el proyecto que tú estás creando y así no es decir para eso entonces tendríamos que estar revisando qué familia existe en amazon y mapear el producto en específico que reemplazaría la propuesta de spring cloud como les digo pues este curso es de spring cloud entonces por eso nos casamos con estos productos y por ejemplo hay algunos que no son de una nube o que no son de spring por ejemplo Kafka Kafka es Kafka en la arquitectura que tú elijas si tú eliges google amazon o spring vas a seguir utilizando Kafka sin la siguiente diapositiva es el siguiente tema en nuestro nuestro temario y habla de ahora sí aquí ya entramos en materia de lo que es spring cloud va aquí ya vamos a ver el primero el primero de los productos de esta familia es en clou que es la parte de spring cloud config si y el título dice gestión de configuración centralizada y versionada con spring cloud config entonces leemos el la lámina en este punto se abordará el cómo configurar y utilizar el servicio spring cloud config para centralizar y versionar la configuración de los microservicios vamos aquí en la presentación nos va a ir guiando cómo ir haciendo esa ese config server va que básicamente es lo que tenemos aquí en nuestro diagrama en nuestro diagrama igual aquí se hace sentido nada más es que presentarlo y colorearlo quiero revisarlo ahí está vamos a ver esta parte con eso de con eso que nos están indicando estaríamos cubriendo la parte del config repo para cada uno config repo y el config server con lo que ahorita vamos a explicar y también se habla del bus entonces estaríamos cubriendo la parte de caja sí y obviamente cada que veamos algún producto siempre participan pues nuestros microservicios no porque es a ellos a los que les vamos a hacer la configuración entonces ahorita en esta parte que vamos a ver vamos a ver en este primer producto que es el server o esa propuesta vamos a estar viendo todos estos temas en el diagrama bueno que se muestren en el diagrama vale entonces me salgo aquí de la diapositiva y bien aquí la la la mía nos nos va guiando de cómo y cómo ir creando el nuevo micro servicio va entonces aquí en el diagrama pues incluso cuando estamos viendo aquí se ven config server config server es este literal otro microservice es un microservicio que vamos a es otro proyecto pues es otro proyecto que vamos a aprovisionar y lo necesitamos para para cubrir esta propuesta de la configuración centralizada entonces aquí en la la presentación nos va a ir guiando nuevamente creando un microservicio como que como cuando ya creamos el producto el usuario el de orden desde spring inicializer la interfaz si se acuerdan voy a hacer el repaso del inicializer aquí está entonces aquí vamos a ir generando lo que nos dice aquí creo que el concepto importante es no perder de vista que esto es un es un microservicio va es un producto entonces aquí vamos a ir siguiendo los pasos sí para irle agregando la el micro vamos haciendo todo lo que nos dice aquí la demo y al final llegamos a una a una estructura de proyecto que es esta va aquí nos habla de qué es cada archivo y de hecho otro otra cosa que vamos a corregir es esto porque este bootstrap no no se trabaja no se va a trabajar también lo vamos a quitar hago estas correcciones no se preocupen en la presentación se las voy a pasar de nuevo para que para que tengan esto actualizado ok entonces nosotros ya que tenemos esta estructura y tenemos la definición de lo que es cada clase nos dice el tema de la configuración del repositorio yo creo que antes de explicar mejor este tutorial porque nada más se ven puros texto voy a explicarlo más bien aquí en el microservicio lo que es digamos la práctica y ahorita retomamos el concepto porque porque solamente hay es pura teoría si entonces miren aquí ya se ve mi pantalla verdad están viendo mi máquina de windows entonces miren qué es lo que quiere decir todo esto del spring config nosotros tenemos los microservicios que estábamos trabajando que es el de producto el usuario y el de orden va entonces voy a agarrar el ejemplo del de producto si se fijan dentro del microservicio de producto y así también está el usuario y el de orden adentro de este microservicio nosotros tenemos por convención y buena práctica que dicta spring boot no nuestro framework él sabe que propone utilizar una carpeta dentro de cada microservicio que se llame resources y dentro de los resources te permite o te propone utilizar un archivo que se llama o se debe de llamar si en caso de que lo quieres usar application y tú lo puedes manejar de dos formas con una extensión yamen y mn o con una extensión punto properties va esos son los dos tipos de extensiones que puedes utilizar para qué sirve ese archivo bueno ese archivo es un archivo de configuración que es que si existe aquí dentro de esta carpeta es interna al microservicio y provee de propiedades que en este caso se interpreta se interpretan como se escriben como propiedades y dentro del código se interpretan como valores o variables no al final estos son variables que se ocupan aquí dentro de las clases del microservicio por ejemplo el data source esta propiedad lo que está haciendo internamente es primboot es mapearlo cuando encuentra un servicio perdón un repositorio y mapeado con el con el driver adecuado en nuestro pom en este caso nuestro driver es del de pos postgres que es este todo esto cuando cuando todo esto se conjuga y se configura será de alta él solito entiende que tiene que hacer una conexión y va a intentar buscar en el archivo de propiedades una conexión hacia una base de datos aquí la encontramos de eso se va a conectar y si todo existe en tu conexión de base de datos la petición hacia los repositorios va a funcionar ese es el objetivo de los archivos de configuración dar variables que se van a ocupar en el microservicio este es nuestro objetivo entonces adelante exactamente a perfecto si si de hecho te lo va a generar vamos a suponer properties no me acuerdo qué nombre le pone si es application si es aplicación properties y seguramente te lo te lo genera así de hecho así se ve y bueno obviamente este no es el formato que lo te lo pinta en blanco no tú aquí puedes aprovisionarle propiedades yo yo lo maneje en yamel porque para mí es más visual ver este este tipo de propiedades por así decirlo pero aquí de hecho tengo un ejemplo de cómo se darían de alta las propiedades aquí en un archivo con esa extensión entonces así se daría de alta en un archivo properties y en y en y en yamel lo puedes manejar ya sea de esa misma forma o de la forma en la que lo estamos poniendo por ejemplo por ejemplo cómo podría dar de alta esta variable dentro de un properties si seguimos la convención simplemente sería spring punto application punto name no y sería dos puntos pero observa entonces a ver hay quien es cuestión de gustos hay quien le gusta leerlo así exacto hay quien le gusta leerlo así yo soy de los que les gusta leerlo así y aparte ya me lo está demorando entonces por eso lo ocupo pero bueno no no hay ningún inconveniente en que tú lo leas de la forma en que quieras o properties ahí si no ahí si no ahí si tiene que tener el nombre application porque porque ese archivo es el que va a buscar espring y solito lo mapea sale es como sacan que ayer hablábamos de spring spring boot que una de sus ventajas compararla con spring framework es que espring boot sabe hacer configuración automática este framework espring boot se dedica a eso no a hacer configuraciones en automático para que él haga esas cosas nosotros tenemos que ayudarle de cierta forma sobre todo en nombrar las cosas como como se deben no eso obviamente lo vamos a encontrar en la documentación de spring cloud no es el objetivo de este curso pero nada más el tip es ese no nombrar las cosas como te las pide el framework para que las puedas mapear y te vas a evitar muchos muchos dolores de cabeza perfecto súper entonces ok entonces bueno esta es la parte del archivo este property entonces cuál es la propuesta de spring config spring cloud config spring cloud config dice a ver yo te propongo que esto que tenemos aquí dado de alta estas propiertes las man que te parece si las manejamos mejor en un archivo en un en un este en un apartado que sea exclusivo para guardar propiedades y probablemente haya propiedades que sean globales a otros microservicios o a lo mejor hay información que es muy sensible y que no la quieres poner aquí la quieres poner en otro lado en otro fuente y a lo mejor le puedes invertir hasta no sé algún equipo que le mantenimiento y seguridad exclusivamente a ese apartado no entonces eso es lo que te propone spring config te dice yo te quito estas propiedades para que no las tengas localmente dámelas a mí yo las guardo y simplemente tú conéctate a mí a mí a mi config server por qué porque hay que acordarse que el config server es otro microservicio sí entonces se levanta ese microservicio y qué hace que se conecta todo va a actuar como un servidor y todos los clientes que se conecten a ese servidor les va a provisionar sus archivos de configuración esa es la propuesta que se esté en confín cómo lo va a hacer aquí hay otro mecanismo otros dos mecanismos involucrados uno de ellos es el config repo el config repo se visualiza aquí como es un repositorio yo lo visualizo aquí en intel y lo puedo abrir pero si te fijas este no es un microservicio no tiene una clase no es un proyecto no es llama esto no es este esto siempre sencillamente es un mero repositorio si esta es la fuente que te propone de hecho aquí decían la presentación este por ahí tengo mis archivos de configuración son puros archivos de configuración si te fijas y también si te fijas y es observador los archivos se nombran conforme se llama el microservicio por ejemplo product service si te fijas se llama así nuestro microservicio se llama product service y también aquí tiene su archivo de configuración y el hecho de que se llama product service va entonces es muy importante el nombre porque a través de ese nombre es como va a ser la búsqueda tiene la iniciación de un puerto o sea es el archivo properties tal cual le estás dictando a los demás a los demás micros si aquí nada más estamos agregando una variable extra que es el con la que vamos a hacer ahorita el ejercicio para que podamos ver cómo esta variable la toma el por otro lado es el microservicio que ahí la presentación nos va diciendo cómo crearla en el spring inicializer si vamos a crear un nuevo proyecto se configura y este es el microservicio si las cosas importantes a revisar en la presentación es el pom porque porque el pom nos va a dar las estas la web del config rep si te fijas es la misma si con fin repo se está conectando al config server entonces bueno al revés el config server se está conectando al config rep a ese repositorio ahí es donde va a encontrar los archivos de configuración es decir estos y otra cosa a tener en cuenta es que esta esta etiqueta o esta propiedad nos habla de a qué rama de qué rama es de donde va a traer de ese repositorio los archivos en este caso yo le estoy poniendo como ejemplo que vaya a la rama de develo que es este entonces se va a encontrar estos estos archivos y si hay algún cliente que se conecta a ese server a ese config server que se llame igual que se llama el archivo properties le va a pasar el le va a pasar esa configuración o ese archivo de configuración va aquí tenemos otras propiedades como por ejemplo que se habilite el bus el bus es el concepto que sigue ahorita lo vamos a ver pero digamos una embarrada elegimos utilizar Kafka como mensajero el bus es un mensajero es un canal en donde va a existir una comunicación entre el server y sus clientes y el repo para que cuando haya un cambio en ese en este repositorio de haya haya algún cambio en alguno de estos archivos por medio de ese bus se notifiquen no se van a notificar el config server y el config server a Kafka o bien al bus y el bus al cliente que esté en este caso que esté cambiando la propiedad va me pueden regalar un minutito por favor voy a escribir un mensaje y continuo un momento correcto si si para hacer eso tú tendrías que dar de alta aquí un este un el nombre bueno más bien la variable que tú quieres que sea global tú la tendrías que dar de alta en los archivos en los archivos correspondientes correspondientes al microservicio hay una propiedad que también te permite mira por ejemplo lo que a mí se me ocurriría hacer es crear una rama que sea a lo mejor una rama global global sí y dentro de ella un archivo probablemente confie global no se llame y hay una propiedad también esta no se apuntó aquí pero una propiedad que nos permite mapear el hecho así como le estamos diciendo qué rama es donde está aquí en lo cierto en esta qué rama es la que estamos ocupando para el mapeo de la de el archivo de configuración le podemos configurar que no tome en cuenta el name del microservicio y más bien tome el nombre del archivo de esa propiedad la propuesta que nosotros traemos aquí en el curso es que todo se tome conforme la configuración de spring de spring cloud porque ese es un framework que trabaja en automático no y si tú quisieras hacer alguna modificación como la que estás diciendo pues tienes que investigar tienes que meterte a hacer cosas adicionales no digamos que lo más fácil es todo manejarlo por medio de las nomenclaturas por eso muy importante la propiedad del name pero digo de poder hacerlo alguien más no trae perfecto va entonces si no hay dudas vamos a en estos 7 minutos para dar continuidad al tercer pomodoro vamos a revisar entonces creo que ahora ya hará más sentido revisar la la presentación el contenido va entonces aquí te dice cómo configurar ese config server ese config server que yo ya te enseñe acá si que está acá que es este microservicio acuérdate la palabra server se aquí en la presentación nos va indicando cómo crearlo y al final es lo mismo te metes a initializer este y vas creando todo esto no le vas poniendo y eso mismo bueno ahí terminada configuración del server y luego se va a los a los clientes que aquí te lo dice muy claro configuración de los microservicios que van a obtener la configuración de ese config server no incluso aquí te dice usuario producto y orden hay que configurar la dependencia de spring cloud config para que se vaya a conectar ese config server y obtenga la configuración en tiempo de ejecución esto se puede hacer mediante las propiedades spring application name en el archivo aquí hay que hacer un cambio que es application.yab y aquí te dice qué dependencias hay que agregar en el pom va en este caso nada más es esta spring cloud starter config que es la que también ya habíamos visto por ahí en nuestro config en un cliente en el cliente por ejemplo de productos y después te dice también cómo te debes de configurar en la en el archivo de configuración las propiedades que son estos de acá y estos aquí te dice que le tengo tienes que ponerle un name a tu microservicio que no te olvides de que tenga esa propiedad y también de que existe la propiedad de spring cloud config uri entonces yo me voy a spring cloud config está por acá es esta es esta es la que nos conecta al configurar el archivo de configuración al server que en este caso está en el localhost en el 88 88 va entonces más bien esta propiedad está mal no es spring cloud config uri más bien es spring config import cuando es un cliente es spring cloud config así pero esta es para el perfil que va a agarrar no no es la la url a que se va a conectar al servidor de configuración o sea la que la que necesitamos ver es esta para que le digamos a qué servidor se va a conectar y si se acuerdan el servidor es el 88 88 entonces más bien ahí hubo un error la propiedad se llama spring config import vamos a actualizarla spring config y aquí nos uri si no es más bien import y pues bueno obviamente el import tiene que venir de esta de esta forma es lo que digo que si presiona el comand se muere la como que empieza todo raro pero bueno el import tendría dado de esta forma así como se tiene que dar de este ok sale entonces está y ahí se la notación de que eso está todo mal y entonces después utilizamos la configuración en los microservicios y aquí es lo que explicaba de cómo al final de cuentas todo eso es para que puedas utilizar los valores de esas esas este los archivos de configuración y aquí nos da hay muchos mecanismos de cómo podemos utilizar esas propiedades pero la una que es muy habitual es esta esta notación que se llama value que no está esta notación lo que hace es que si hay un archivo properties o un yamen va a encontrar la variable que tú le pases y te va a dar su valor entonces esto de esto nos hacemos uso esto es también tema de spring hacemos entonces eso es lo que es que ahorita vamos a hacer en la prueba vamos a vamos a revisar cómo trae ese value nada más dejado que sigue aquí en la presentación ok aquí te dice cómo se configura que es lo que ahorita acabamos de repetir sale este y como te dan un ejemplo de cómo se puede utilizar ese value no ese value de este server bueno aquí ocupan otra que es el server port y aquí se visualiza cómo se se manda a llamar va después de esto viene la gestión de versiones de configuración bueno esto no no es más que justo se relaciona con la pregunta que hizo este oriel que es lo que decía de cómo podemos este son propuestas de cómo tú puedes nombrar tus archivos la estructura de carpetas y demás y aquí te dice que puedes ocupar incluso hasta versionados no el nombre del microservicio en el ambiente en el que te encuentres en lo mejor la versión 1 la versión 2 a este nivel pues ya ya ya ya llegarías en caso de que ya estuvieras hablando de algo muy productivo algo muy organizado a nosotros nos basta con que se llame igual que el microservicio es esta parte y antes de empezar entonces ahora sí con el tema del bus vamos a ver cómo funciona todo esto que se explicó pero vamos a hacer la pausa del pomodoro vamos a tomarlo de 10 45 10 10 50 y 50 les parece nos conectamos y continuamos con él con el tercero les parece perfecto sale entonces este ahorita nos conectamos esto entonces avisan por si bien mi pantalla perfecto bien entonces entonces vamos a llevar a la práctica todo lo que ahorita comentamos en este ratito deje levantando los micros y bueno ya están levantando están levantados a ver entonces recapitulando yo tengo que tener abierto docker desktop y tengo que tener abierta mi instancia de Kafka subkeeper que todo esto viene en el docker compose que levantamos solito no importa ahorita el tema de las bases porque no las ah bueno no si las ocupo porque los microservicios necesitan conectarse entonces todo esto debe estar levantado este otro no le dan caso ahorita ustedes todavía no lo ven solamente el tema de posgris va posgris Kafka entonces tiene que estar levantado después obviamente los microservicios no vamos a tener los repositorios de ustedes ahorita no podrían levantarlo porque necesitarían prender todo y no tienen ustedes todo el ambiente la idea es que primero lo vayamos viendo todos en conjunto y ya al final del día este probablemente perdón las últimas dos horas estaríamos jugando con la práctica de que todos podamos configurar esto mismo ahorita la idea es más bien como que se vea y se vea la práctica de cómo se realiza entonces el config bueno los repositorios aquí ya los tengo en listados son los siete que vamos a estar ocupando ahorita exclusivamente estuvimos trabajando con estos que ya conocemos los tres producto usuario y orden y ahorita se añadieron añadió un microservicio más que es el config server que es el que ya platicamos y bueno no es un microservicio simplemente es un repositorio que yo lo abría aquí desde desde una vez que yo ya tengo esto compilo el proyecto lo levanto config server y esto sucede no empieza a levantarse obviamente por por las propiedades que metimos pues va a requerir que haya acá que esté un Kafka abierto pero levantado que haya un super este y demás sale entonces esto es lo que ocurre hay un paso que se me olvidó y que también y me acaba me acaba de ocurrir justo hace ratito cuando empecé el día levanté este microservicio no me acordaba pero cuando tú tienes un un este una imagen mejor dicho un contenedor dentro de docker digamos que todo lo levanta pero lo aísla como si fuera un contenedor pero se complica un poquito la conexión entre tu cliente en este caso es nuestro windows y la conexión con con lo que está dentro de ese contenedor no están no puedo yo entrar simplemente decirle apunta localhost de Kafka 9092 porque no está no está ahí internamente hay una pelea de puertos que hay mucho que explicar sobre eso no es el objetivo entonces hay un paso adicional que hay que hacer que es mapear esa ese puerto localhost al puerto 9092 y de esa forma ya va a poder comunicarse nuestro cliente con lo que tenemos aquí en el contenedor si ese paso no es yo me traigo esta ruta y la pego aquí y voy a buscar un archivo que se llama host para eso le digo que me lea todos los archivos y voy a encontrar este archivo host si yo al abrirlo voy a poder modificarlo y voy a agregar al final del archivo esta configuración 127 001 porque es local cost y le estoy diciendo que lo interprete con la etiqueta Kafka a la serie eso yo lo guardo ya los cierro si y de esta forma ya voy a poder interpretar Kafka y voy a poder leerlo en el puerto que me está pidiendo más que nada es porque ocurrió un problema entre cómo se escucha el cliente con lo que está dentro del contenedor de va pues ya que tengas tú eso vas a poder brincarte esa variación y Kafka va a correr sin problema que de hecho es lo que estamos viendo aquí en los docs y ahí Kafka ya está este listo para para escuchar sale entonces esta es la parte de cómo se eleva bueno cómo se configura ya le doy ejecutar se levanta y obviamente ya teniendo eso ya voy a poder levantar mi microservicio cliente que igual no tiene nada más que lo que ya hablamos de configuración demás lo que ya vimos ahí en la presentación y explicamos se levanta y pues listo nosotros ya con esto ya aquí se empiezan a ver ahí los logs esto es porque aquí habilité la salida ahorita como para tener más detalles los logs a nivel de bug si ahí va a estar actuando no es algo estaba acá y se comunicaba con con github no que visualmente se ve esto repositorio y esta es la variable que estaría pintando o la de microseguido de productos eso eso es la parte de cómo con eso yo estoy yo estoy asegurándome que estas estas variables que estamos mostrando aquí están tomándose al iniciar mi proyecto o mi producto o mi microservicio de producto se está tomando y se está utilizando de forma correcta sale hay alguna duda con respecto a esto de cómo se ocupan los values hola hola perfecto yo dije ya estoy hablando no me conecte y entonces va entonces si no hay si no hay observaciones no hay no hay nada lo siguiente que también les quiero mostrar es son otros endpoints que están dados de alta aquí en la colección del config server estos endpoints son que es un son tres que son los de cada microservicio que estamos trabajando producto usuario y orden ahorita vamos a ver qué trae esos que es lo que traen son las profesor es el contenido del archivo de properties de cada uno es decir yo directamente pegándole al config server no sé si se acuerdan que hablábamos de que aquí en la configuración le metimos esto esto esta configuración de los actuators y de los endpoints esto quiere decir que yo a través de estos endpoints puedo entrar y ver las configuraciones a partir del config server de todos los clientes que están asociados a este a este servidor si por ahí en otro curso me hicieron la pregunta y creo que aporta valor y me dicen oye bueno primero hay que ver cómo se ejecuta el endpoint en este caso estoy hablando de product service de mi de mi de mi archivo product service en en de en ese ambiente que es que el por default y yo al ejecutarlo si me está trayendo un 200 que es un exitoso es un exitoso perdón y me está trayendo la el contenido digamos el contenido del archivo de configuración si se fijan esas variables son las que yo tengo dados de alta en el product service en este me está trayendo este valor y al 80 82 demás si ok ahora alguien me preguntaba en el otro curso oye y estos endpoints yo los puedo ver dentro del micro servicio de de config server y la respuesta es no o sea no los puedes ver porque como les comento y creo que aquí se empieza a ver mucho mucho el tema de springboard no todo es configuración esto es simplemente configuración y ya en automático el framework sabe cómo trabajar o sea eso realmente le brinda muchísima potencia a esto no te evita hacer mucho código y demás simplemente expones propiedades y listo va si todo está bien configurado tú vas a poder utilizar ese endpoint y bueno esa es la parte hasta aquí de cómo lee los archivos de configuración si no hay alguna otra duda o pregunta si nadie me hace la observación me detiene continuaríamos con la parte de cómo hacemos una actualización en el archivo se publica se hace el commit y yo porque ese es el valor que tiene config server o sea su propuesta sin reiniciar sin apagar el micro servicio sin nada ese valor va a cambiar ya este valor de hola desde el micro servicio de ok va si mire a ver ahí te va la respuesta la respuesta es se puede si habrá que buscar una forma también también es cierto una de las ventajas del micro servicio es que tú todo lo aíslas no lo que vimos en la parte 1 la teoría todo todo se va a separar todo se segrega entonces en vez de estar manejando todo en una sola aplicación tú tienes varias incluso puedes hablar de que hay muchos perfiles ya se delegan mejor las responsabilidades demás pero ahora hablemos también un poquito de las desventajas y creo que tú ahorita pintaste un escenario bastante común el tema en la documentación a medida que tú vas teniendo muchos muchos microservicios también se viene una desventaja y la desventaja es mantener a cada uno de estos lo que tú antes hacías con un solo push un solo commit una sola rama un solo documento un solo proyecto un solo lo que tú quieras ahora lo tienes que hacer en los microservicios que tienen salido y ahí yo te diría bienvenido al mundo de los microservicios eso más o menos podrías tú hacer y aprovisionar digamos rápido en una nube todo esto que estamos hablando vas a poder agregar todos estos microservicios los clientes etcétera exponer puertos aunque eso la verdad no es muy clau al día de hoy porque porque hay productos que son exclusivamente de la nube que se dedican a hacer estos microservicios por ejemplo lo que te decía de las lambdas tú puedes crear todo esto mejor en lambdas funciones y ahora sí irte a una a una estructura una arquitectura más de nube no te evitas de crear un s2 porque al final es trabajar como como lo veníamos haciendo no aprovisionar un servidor dar de alta proyectos puertos y exponerlos entonces no sé si más o menos eso complementa la duda que tú que tú traes correcto si si si estoy de acuerdo hay que profundizar más en ese tema adelante si adelante adelante claro excelente pues sí sí el aporte alguien más van con salvador adelante adelante bien bueno a lo mejor te comparto un ejemplo un poquito así real de lo que yo vivo en el día en donde en donde he llegado a trabajar en pisado que son empresas que también tienen estas estas propuestas de microservicios y mira mucho de la la gestión si tiene que ver como hay que quitarnos esa o sea tenemos que meternos al tema de que si vamos a trabajar en microservicios pues sí son es crear muchos repositorios es hacer cosas como la documentación el aprovisionamiento a pareciera que beneficia a unos y a otros no tanto pero pero bueno ya hablando de las ventajas que por ejemplo ahorita dio un muy buen escenario este este surreal muchos de las buenas prácticas o sea aquí es como hay que seguir bastantes buenas prácticas que se proponen por ejemplo el tema de los repositorios las nomenclaturas para ellos son es muy es muy importante tuvo el momento de trabajar con con esto que comentas de cómo puedes tener una mejor organización pues proponer por ejemplo tener nombres de familias de los microservicios y en los repositorios al momento de hacer las lo siguiente que yo voy a hacer es voy a hacer una modificación al config rep si te fijas todo está levantado no no hay nada que se haya caído aquí incluso busqué la palabra hablar bueno como para ver el ejemplo anterior pero bueno ahí está ahí está funcional no esto es lo que nosotros veríamos en un ambiente productivo mis microservicios ahí funcionando entonces hoy nos manda un correo en la parte de infraestructura y nos dicen que hicieron un cambio a lo mejor esta variable es la ocupamos en muchos este equipos no dentro de la empresa esta variable ya la cambiaron y nos dicen que se tiene que actualizar el valor en los microservicios que la ocupen entonces eso en un flujo normal pues a mí me haría me tendría que hacer que detener mi microservicio a decirle a un desarrollador oye hace el cambio modifica y seguramente esto ni siquiera se va a agregar acá no se va a agregar en el product en el microservicio correspondiente modifica el valor y chanana entonces eso es imagínate que fuera una tarea recurrente pues es mucho mucho esfuerzo no entonces aquí la propuesta que trae el bus es que si tú vas siguiendo toda esta configuración que hemos estado revisando aquí tú puedes agregar un bus que lo que va a hacer es permitirnos escuchar cuando haya un cambio en el archivo y que obviamente esto como lo configuramos se va al repositorio y en ese momento propagar ese cambio de forma dinámica sin tener que reiniciar nada sí entonces yo voy a hacer aquí el ajuste para hacerle no sé alguna otra este alguna otra algún otro cambio a esta propiedad estoy en el product service nada más me es el seguro de que todo esté bien hola y adiós pero sabes que lo que pasa es que este archivo está compartido con otro otro equipo entonces voy a entrar en config repo seguramente me va a mandar si no hago él el pool entonces primero me tengo que hacer el pool y ahí está seguramente me va a llenar aquí nuevos archivos a no perfecto así lo que te decía otros gentes también ocupan este este micro pero bueno eso ilustra todavía más nuestro ejemplo no de que hay otros microservicios que tienen aquí adentro sus archivos de propiedades de configuración entonces yo me enfoco en el que me toca que es este va y aquí voy a hacer un cambio hola y adiós por ejemplo no desde el microservicio de productos entonces yo le doy aquí en guardar guardar los cambios y si yo con mi terminal me fijo de cómo está el estatus de mi repositorio actualmente ella me dice que en mi rama de desarrollo se modificó algo entonces yo le voy a dar un flujo para que esto se vaya la rama voy a hacer un commit en el que yo le voy a agregar un mensaje que diga en pro men mejoras son agregadas y hago el push haciendo el push todo va bien si no me limita aquí nada el servidor perdón el repositorio yo le doy el estatus y ya me tiene que estar en la última versión y en mi repositorio yo me voy a ir acá si a mi config repo que es donde estuve trabajando aquí en de la y de hecho aquí ya me marca no se le ha hecho cambios recientes hace menos de un minuto en donde aquí con mi de hecho que yo puedo ver los cómics si yo sé que se agregó acá no en este en este microservicio entonces aquí está el cambio hola y adiós si yo consultar a él en point que ya del que ya habíamos hablado para la configuración del config server de productos en sus properties yo tengo que ver porque esto se está conectando directamente al config server al repo yo tengo que ver aquí si se acuerdan antes decía hola ahora dice hola y adiós no es que dice que la variable ya está en el servidor de hecho aquí te dice no ya está dentro de este rep ok quien me falta por traerla me falta por traerla en el proyecto en el endpoint de productos si yo ahorita lo ejecutara la variable no se va a actualizar y ese es lo que les decía al momento bueno cuando iniciamos esto el flujo el flujo real sería yo hago el commit y aquí ya llegó ahora internamente aquí tendríamos que tener un pipeline o alguna configuración para que gilco se conecte con el casca que estamos nosotros proponiendo si esa es la parte que yo les contaba por temas de tiempo y demás ese pipeline está fuera de este de este de este curso por así decirlo para eso nosotros nos vamos a ocupar más bien de un endpoint que son los actuators que son los que ahorita explicábamos en las configuraciones y si se fijan yo tengo aquí en el config server un post si un post que me ayuda a hacer un refresh al bus que es este y este es el endpoint del actuator esto lo que va a hacer es que le va a decir es como si fuera el equivalente al commit al pipeline que ahorita hablamos si yo lo ejecuto y esto responde aquí bueno con la ejecución del cliente de postman del post me va a dar un 204 que al final es un estatus exitoso y no regresa ningún contenido pero vamos a ver qué hizo dentro del config server actúe entonces si tú te fijas aquí te dice que las claves fueron refrescadas eso quiere decir que las variables fueron se atrajeron las últimas versiones vaya sí entonces con eso es como si yo hubiera hecho el pipeline del commit desde mi depositorio entonces qué pasa que si yo vuelvo a traer mi endpoint que es ahí donde yo reflejo de esa variable por ejemplo yo ahora le voy a decir que me traiga el producto 2 y ya me lo trajo y si te acuerdan la variable decía hola y adiós entonces aquí en producto yo igual la puedo buscar digamos que así buscando aquí o si no es tan sencillo pues yo le pongo que me ayude el buscador y aquí lo encuentra dos veces la primera es la primera que hicimos bueno quería minimizar eso la primera es la primera la primera petición que hicimos que es la de hola desde el microservicio de productos y la segunda vez que lo va a encontrar es la variable pero ya cambiada si te fijas yo no reinicié el servidor no y no hice nada simplemente se actualizó porque el bus de Kafka fue y lo trajo y eso lo hice con pura configuración en mis archivos de properties entonces aquí la variable ya la refresco y ya trajo el nuevo valor que trae desde la configuración que hicimos acá en la hay alguna duda de esta parte de cómo se desarrolló un comentario en este escenario que se les ocurre que quieren revisar algo perfecto entonces sí sí sí por ejemplo lo que les comentaba de las de los puertos de las bases de datos no es como muy muy común a veces que que se haga un cambio en que en el en el password o en el dominio que se migró de de un lugar a otro o que se le cambió el puerto no porque alguien de infraestructura hizo algo no nos aviso algo algo que afecte por ejemplo a la base de datos no entonces este esa esa propiedad por ejemplo aquí de hecho hay varios ejemplos que te pueden decir o simplemente el puerto del microservicio no en donde está corriendo le pueden infraestructura lo movió a otro a otra instancia a otro lugar abrió otro puerto etcétera digo es un cambio a lo mejor muy extremo no que cambien algo así pero pues eso eso puede pasar puede pasar entonces al momento de hacer eso nosotros simplemente le decimos ok para la base de datos ya no te conectes a este con este usuario a lo mejor cambio el usuario a lo mejor el puerto yo le haría el cambio acá y en automático ya se refleja y la configuración de la base de datos ya la traería a conforme el último cambio que me pidieron pues un ejemplo a lo mejor un poquito agresivo hablar de que cambian algo en la base de datos pero pero bueno puede suceder no no sé si más o menos este te haga sentido te haga más perfecto alguien más súper sale vale entonces si no hay más continuamos los últimos 12 minutos antes de tomar el siguiente pomodoro que ya es el del descanso un poquito más largo para que no nos atiburramos de conceptos y bueno sigue la parte de eureka ok este siguiente módulo la verdad es que es bastante express vamos a hacer este la revisión ahora de este de este producto que ofrece spin cloud y bueno básicamente eureka es igual otro microservicio que va a fungir como un servidor va a fungir como un servidor igual aquí en la presentación nos va diciendo nos va guiando como vas desde spin inicializer a crear ese microservicio con que nombres incluso aquí te dice con qué dependencia no que es la de netflix lo comentamos la vez pasada la decisión de ayer es así porque realmente es la empresa que conocemos de streaming ellos ellos son quienes hicieron son pioneros de hecho ellos son pioneros a proponer y trabajar con todas estas arquitectura digamos de microservicios y la verdad es que imagínate no su plataforma es bastante exitosa quiere decir que sus propuestas de diseño de arquitectura pues son son bastante confiables entonces ellos hacen en algún momento sus propuestas hacen sus librerías y spring no hace más que adoptarlas y en una de esas es el esta librería de netflix trae otros otros mecanismos que vamos a ir viendo pero bueno esta es la librería que se agrega para la parte de eureka este aquí tenemos igual ya muy común nuestro archivo de application y voy a ir creando los las configuraciones adecuadas en mi servidor de eureka en este caso pues te dice que vayas metiendo todo esto para qué es esto creo que es lo más importante de este archivo en negritas porque eureka sí mismo puede fungir como un cliente entonces si tú no configuras esto dentro de tu micro eureka se va a estar registrando a sí mismo y pues puede ocasionar problemas entonces hay que decirle tú eureka no te registres en automático registra todo lo demás pero tú no te peles por así decirlo y pues bueno esas son configuraciones al final la clase también la vamos a decorar como decimos con el config server con esta etiqueta que ya viene dado que ya importamos en meyben el paquete de netflix y podemos aplicar esta anotación que lo que hace es que le dice al proyecto que se comporte sale vamos a ver esto entonces cómo se ve en la configuración en la práctica dejando de lado esto teórico que usted te fijas son tres pasos muy muy sencillos pues una vez los vamos checando entonces eureka y eureka se encuentra acá es el microservicio aquí está se creó igual que no tiene más que lo que se dice la clase mey bueno antes del mey mejor vamos al pom entonces nos vamos a apagar también está incluso abrimos el pom y dentro del pom vamos a encontrar igual como los demás porque su proyecto de spring todo lo que lo que dice la configuración la configuración de los metadatos si le estás diciendo que versión de spring estamos ocupando la versión de yaba es básicamente todo lo que hemos venido trabajando y las dependencias de eureka no te dice cuál es y aquí te dice la de eureka service eureka server no hay más que ver aquí las demás son dependencias de spring que ocupa en un producto normal sale el tema del repositorio de cómo se manejan las versiones de spring cloud aquí también y lo de saltate los test para que no le des problemas esa es la parte del pom después del pom vamos ahora sí a nuestra clase mey a nuestra clase mey que se encuentra acá no está aquí entrar josefí se llama lo que to perfecto entonces aquí tenemos nuestro nuestra clase me sale lo que les decía de spring de perdón de intel y que nos da el botoncito para iniciarla antes de iniciarla pues yo la decoró con la etiqueta enable eureka server sí y eso y por último aquí en los resources salen voy a poder revisar configuración como el nombre siempre es bien importante está cuando hablamos de microservicios el nombre para que sepa identificarse este microservicio este eureka fíjate que también aquí ustedes ya pueden deducirlo que estaría haciendo esta notación pues estaría trayéndome la configuración también del mismo config server en caso de que hubiera algún archivo que se mapee con este nombre me lo va a traer en ese caso no hay ninguno en el repositorio no manejamos ningún archivo de configuración para eureka pero bueno ahí también se lo puedes poner y funciona sin problemas sale de hecho aquí es como se ve está trayéndome la configuración del config server en caso de que exista y luego te dice el servidor en donde van a levantar esta instancia de breques el 87 61 lo que decíamos de que no se autorregiste que no se autorregiste eureka para que no sea tonte yo con eso ya puedo levantar el en tu nube de eurek o en tu servidor si tú lo registraras hacia el inicio que es lo que prácticamente vamos a estar haciendo cuando tú lo levantas así sin nada sin clientes aquí aquí no va a haber nada a medida que vayamos le configurando clientes a eureka esto va a actuar su mecanismo de descubrimiento el discovery y lo que va a hacer es que te va a permitir en esta interfaz estar viendo los status que tienen tu micro y no sólo tu micro sino que también las instancias que puedan irse creando lo que hablamos ayer del proveedor del nube no que puede crear varias instancias de tu micro servicio y todas esas instancias también las va a conocer este y breque sí que nos de qué nos sirve pues imagínate que tú el ejemplo que decíamos ahorita uno muy muy claro el micro servicio de orden quiere hacer un insert de una orden que tiene que hacer antes tiene que consultar a pedir a productos y a usuarios para hacer nosotros eso en una llamada tradicional tendríamos que hacer una petición vía post vía ajax como la tecnología que antes manejáramos la que sea remontense a eso y recuerden que podíamos manejar con por medio de una petición una ip o un dominio no de cómo se estuviera dependiendo dónde estuviera el otro el otro servicio o proyecto al que querías apuntar eureka gracias a meterle la configuración de las propiedades de los names en cada este cada archivo de configuración es decir estos por eso les decía que es muy importante simplemente al tener estos names yo puedo hacer llamadas simplemente diciéndole cómo se llama el micro servicio mientras pertenezcan a la misma nube por así decirlo o instancia de urek entonces aquí lo que quiere decir es que todos ellos se conocen entre sí y sin problemas y de hecho aquí te dice que me imagino si son las y pes lo solo son locales no aquí te dice que puertos y te fijas está cada uno sale aquí el gateway que no lo hemos levantado no lo pelen pero incluso el gateway aquí también está dentro de ureca que es lo que veíamos en el diagrama no el gateway se comunica ureca aparte de servir como discovery y que se conozcan los micros también sirve para hacer balanceo de carga sale con con ribón entonces bueno eso es como el objetivo de eureka así se configuró el server y probablemente más adelante vamos a ver la configuración de los clientes que es esto el registro de los clientes de si te fijas la librería anterior de la server ahorita estamos hablando de la cliente entonces podemos agarrar cualquier micro servicio que tenemos aquí porque todos esos clientes podemos agarrar el gateway pero no vamos a ver el gateway porque no lo hemos visto a detalle para no confundir vamos a ver el de producto otra vez y agarrando el de producto nosotros vemos aquí en el archivo teniendo eso en el product service seguramente también te vas a encontrar con quien la clase principal que es la mey vamos abriendo la ubicó es esta activas la anotación ya con la librería que pudiste implementar la habilitas la anotación para que funcione como un cliente de discovery para que la pueda encontrar de ureca con esto y con la configuración del server a donde va con este name asistirá a la magia de conocer quién es quién en el que micro servicio es cada uno sale entonces eso es esta parte que es lo que habíamos dicho del discovery y acceder al local bueno aquí lo que decíamos de ribón básicamente es este cómo se complementa con con ureca y pero bueno tengo esta práctica la verdad es que no no hay suficiente tiempo para revisarlo para armar la siquiera y pues bueno esta es la parte de ya seguiríamos con la parte de gateway no sé si haya un algún comentario sobre lo que es este ureca no es ureca está de cómo se configuró el servidor cómo se levantaron los clientes eso es esa configuración que se hizo en el producto también la vas a hacer en el usuario en el orden y función y incluso en el gateway y funciona igual y de hecho tan es así que pues si tú lo ves aquí el descubrimiento aquí te marca los tres no los cuatro pero los cuatro que están asociados entonces y es la misma son los mismos pasos entonces este listo no sé si hay alguna algún comentario o algo dudas sobre lo que es este spring perfecto va bien entonces muy bien sale vale entonces si no hay dudas este vamos al siguiente
on 2023-08-17