Creando una Aplicación Escalable - Microservicios con Spring Boot

Sdílet
Vložit
  • čas přidán 23. 06. 2023
  • Microservicios con Spring Boot
    Creando una Aplicación Escalable
    Video 1/5
    En primer video de esta serie sobre microservicios, crearemos una aplicación escalable utilizando Spring Boot.
    Aprenderás paso a paso cómo diseñar e implementar diversos microservicios independientes que trabajarán en conjunto para formar un sistema funcional.
    Exploraremos conceptos clave como la modularidad, la descomposición de la lógica empresarial y la comunicación entre los microservicios.
    Además, te mostraremos cómo aprovechar las características de Spring Boot, como la inyección de dependencias y la gestión automática de la configuración, para agilizar el desarrollo y mejorar la eficiencia de tu aplicación.
    ¡No te pierdas este primer video lleno de conocimientos prácticos sobre la creación de microservicios con Spring Boot!
    Saludos
    github.com/uncle-dave-code/mi...
    Imágenes Personalizadas
    / suhaco_
  • Věda a technologie

Komentáře • 99

  • @user-jp3zm9rs5c
    @user-jp3zm9rs5c Před 8 měsíci +12

    Una tontería, por si a alguien más le pasa. en mysql order es una palabra reservada, me daba problemas para crear la tabla order, ahora entiendo porque en el vídeo usa la palabra orders para crear esa tabla

    • @NerO8683
      @NerO8683 Před 7 měsíci

      Me pasó con lo mismo con Character. Ahora ante la duda lo chequeo

    • @mure5437
      @mure5437 Před 4 měsíci +2

      Si quieres usar nombres que no entren en conflictos con palabras reservadas de alguna capa del sistema puedes usar ejemplo: @Table(name = "\"ORDER\"")

    • @oshoosho4604
      @oshoosho4604 Před měsícem

      algo similar pasa cuando usas h2 e intentas crear la tabla user, debes especificar el name y poner users

  • @uncledavescode
    @uncledavescode  Před rokem +11

    ❗En los próximos días van a estar saliendo las demás partes, la próxima sale el sábado 1 de julio. Please, téngame paciencia 😅

    • @JuanCHB_88
      @JuanCHB_88 Před 9 měsíci +1

      Muchísimas gracias por tus aportes

  • @patricknavarro191
    @patricknavarro191 Před 10 měsíci +2

    Excelente tutorial, video 1 completado, vamos por más 😎

  • @monsterleagueescritas
    @monsterleagueescritas Před 10 měsíci +2

    Es increible la cantidad de tecnologias aplicadas en esta serie de videos!!

  • @EduardoCruz
    @EduardoCruz Před měsícem +1

    Gracias por el contenido. Nota : Al crear la Db de MySql desde el Intellij en la ultima version de docker por alguna razon no cogia el command : -p3306 en lugar de eso puse command: --default-authentication-plugin=mysql_native_password y funciono ok

  • @Alberto_APC91
    @Alberto_APC91 Před 6 měsíci +1

    Un contenido muy muy valioso, muchas gracias.

  • @davidxcode
    @davidxcode Před 6 měsíci +1

    Muy agradecido por esta serie de videos enriquecedores, eres grande Tío Dave!

  • @manuonda
    @manuonda Před 11 měsíci +1

    comenzando con estos cursos!! gracias

  • @j3v1t0
    @j3v1t0 Před rokem +10

    Podrías ampliar este proyecto de microservicios de cómo usarlo con AWS y Google Cloud Platform. Claro si es posible. Para entender mejor cómo subir los microservicios en la nube.

    • @uncledavescode
      @uncledavescode  Před rokem +6

      Si, el tema es que tuve que decidir cuál iba a ser el alcance de la serie y hay varias cosas que no incluí que hubiese querido que estuvieran, el servidor de configuración, testing con contenedores, crear las imágenes de los servicios para docker, pero ya 5 videos era mucho contenido.
      Pero sin dudas que pienso abordar esos temas.
      Un Saludo y gracias por pasar por acá.

    • @j3v1t0
      @j3v1t0 Před rokem +5

      @@uncledavescode pues en vez de 5 vídeos puedes hacerlos con más de 5 partes y que esté completo 😁

    • @ismaeltrocha6319
      @ismaeltrocha6319 Před 7 měsíci +1

      @@uncledavescode La neta que aprendí demasiado a niveles fuera de este mundo con este curso, y lo que dice el compañero la verdad estaría muy bueno y mas para nosotros que somos de estudio autodidacta, me alegro mucho el encontrar este curso, muchisimas gracias, espero le sea posible poder ampliarlo mas allá y muchas gracias por este curso, feliz año.

    • @uncledavescode
      @uncledavescode  Před 7 měsíci +3

      @@ismaeltrocha6319 Que bueno que te ayudó. Esa es la idea. Trato de balancear con el poco tiempo que tengo en cuanto a temas, estoy seguro de que más adelante voy a agregar temas relacionados a AWS. Sigo pensando que hay muchos temas que cuando comienzan pasan por alto y trato de agregar videos para que tengan bases más sólidas pero los entiendo jejeje. Saludos

  • @brandonv8525
    @brandonv8525 Před 9 měsíci +1

    Increible tutorial quieria aprender sobre microservicios con spring boot para conseguir un empleo, este tutorial me ayuda bastante aparte excelente musica de fondo. Gracias!

    • @uncledavescode
      @uncledavescode  Před 9 měsíci

      Gracias por pasar por acá.. Tengo casi listo comenzar con uno desde 0 de Hibernate pero esos temas densos, a pesar de ser bien interesantes no atraen mucho xD. Saludos.

  • @JesusDiaz-tt1pw
    @JesusDiaz-tt1pw Před 7 měsíci +1

    Amigo, tremenda la explcacion, pero queria resaltar el tema de la musica que pusiste.. Muy amena y a un volumen exelente, hace que el video fluya y el aprendisaje sea mas agradable. Gracias por compartir tu conocimiento!!

  • @geovannymesa2015
    @geovannymesa2015 Před 5 měsíci +1

    Excelente video muchas gracias, la verdad me sorprendió la manera en la que mapea los datos tan sencilla, y yo matándome con ModelMapper
    Muchas gracias, éxitos y bendiciones

    • @uncledavescode
      @uncledavescode  Před 5 měsíci +1

      Hola Geovanny
      Gracias por pasar por acá.
      Si, con el tiempo te vas dando cuenta de que las soluciones a veces son más simples, hay que hacer más uso del lenguaje y tratar de buscar menos bibliotecas, no sería la primera vez que una biblioteca se hace útil y se le deja de dar soporte, dejando muchos desarrollos a medias.
      Me alegra que hayas encontrado útil el video.
      Saludos

    • @geovannymesa2015
      @geovannymesa2015 Před 5 měsíci +1

      @@uncledavescode Si señor es verdad, muchas gracias por la recomendación

    • @cesarivanurbinah.9884
      @cesarivanurbinah.9884 Před 2 měsíci

      @@geovannymesa2015 @Builder es la opción nativa de Java a las librerías de mapeo famosas como MapStruct, lo único que añadiría es que sería mejor crear un package solo para mapeo, así queda más limpio el servicio.

  • @jagmig15
    @jagmig15 Před 5 měsíci +1

    Gracias tío por este mini curso, me gustó mucho este primer video, solo que a mi entender se requieren conocimientos avanzados d Java ya que me costó llevar el hilo.

    • @uncledavescode
      @uncledavescode  Před 5 měsíci +1

      Si, es uno de los requisitos, además de tener una idea de Spring Boot, hay otros videos más simples con Spring Boot en el canal. Gracias por pasar. Saludos

  • @user-iu6yz6ck6h
    @user-iu6yz6ck6h Před rokem

    👍👍👍👍👍👍👍👍👍👍👍👍👍

  • @agustinaragon3311
    @agustinaragon3311 Před měsícem

    Una consulta, es necesario modularizar en maven con microservicios? cuales serian las ventajas y desventajas?

  • @amoMiFlia
    @amoMiFlia Před 7 měsíci +1

    me confunde un poco el uso de docker al configurar el yml tendras un video donde explicas docker, se que hay mucho pero veo que tu forma de explicar es muy buena

    • @uncledavescode
      @uncledavescode  Před 7 měsíci +1

      Hola, la verdad no tengo un video sobre docker.
      He pensado en hacer uno pero temas de tiempo me complican. Voy a intentarlo..
      Saludos

    • @pOs3YDoN86
      @pOs3YDoN86 Před 7 měsíci +1

      Es muy fácil @amoMiFlia, solo tienes que instalar docker desktop para windows o linux o mac, que está en la página oficial de docker y es gratuito, luego añadir el plugin de docker a intellij luego el mismo plugin una vez arrancas docker en tu local te lo reconoce y solo tienes que arrancar los servicios desde docker compose como el hace, automáticamente te baja las imagenes de los servidores de bdd, tanto de postgres como de mysql y te crea los contenedores con las configuraciones que viste en el docker-compose. Tampoco necesitas un nivel muy avanzado, con esto que te explico ya te arrancaría y es prácticamante automático.

  • @MaiaDoroshenko
    @MaiaDoroshenko Před 7 měsíci +1

    hola exelente video , no tenes un curso completo en udemy de microservicios ?

    • @uncledavescode
      @uncledavescode  Před 7 měsíci

      Hola Maia... gracias... no, no tengo cursos en udemy, creo que requeriría más tiempo de mi del que puedo aportar jejeje. Saludos

  • @biancahoffmann2489
    @biancahoffmann2489 Před 4 měsíci +1

    Recien empiezo a aprender sobre microservicios jejeje, pero tengo entendido que se puede crear servicios en diferentes lenguajes de programacion, por ejemplo, si yo creo el servicio de ordenes con java/spring y luego el de productos con mm nodejs y el inventario con c#, y al trabajar con spring cloud, eureka, gateway que son de spring, como puedo hacer para comunicar los demas microservicios en lenguajes diferentes? o para eso se usa los contenedores, kafka???
    por cierto excelente curso. 😁

    • @uncledavescode
      @uncledavescode  Před 4 měsíci

      Bueno, esa mezcla de tecnología lo mejor es usa otra cosa que los una jeje. Pero si, la idea es esa, y que la comunicación entre ellos no dependa de la tecnología de los mismos, puedes usar kafka para mensajería, Rest para una API, y cosas así. Gracias por pasar. Saludos

  • @wilfredomartel7781
    @wilfredomartel7781 Před 6 měsíci +1

    Buen trabajo! Ahora tengo una duda! ¿què tal si tengo tres tablas de distintos modulos y es imperante que se guarden en la misma transacciòn, has manejado estos casos?

    • @uncledavescode
      @uncledavescode  Před 6 měsíci +2

      Hola Wilfredo, gracias por pasar por acá y ser parte de esta pequeña familia xd.
      Lo que me preguntas es bien común, explicar en un mensaje no tan simple, más adelante trataré de explicarlo en un video.
      Esencialmente, cuando hablamos de microservicios, tenemos dos formas de realizar transacciones distribuidas, tenemos 2PC(Two Phase Commit) donde se completa una transacción en dos fases, tenemos un componente que se encarga de coordinar la transacción, en la primera fase pregunta a cada microservicio involucrado si está listo para realizar una transacción y en caso de que todos estén listos, en la segunda fase realiza la transacción. Si alguno de los microservicios no pudo finalizar la transacción, el componente coordinados, avisa a los demás microservicios para que hagan rollback.
      Esta vía, aunque es muy utilizada tiene algunos problemas, y es que dependen del componente coordinador, si este falla estamos en 0, además de que si uno de los microservicios es lento, las operaciones de los demás microservicios se verán afectadas. En fin, como todo, depende de la situación.
      El otro caso a ver es el patrón Saga, y este a su vez se puede implementar con choreography o con orchestration, y si escribí mucho para resumirte 2PC, imagina para esto, pero en esencia acá se manejan eventos, en esencia, choreography hace que cada microservicio emita un evento al próximo servicio que debe procesar la transacción, y con orchestration tenemos algo similar a 2PC, donde este componente se encarga de manejar el flujo de la transacción.
      Es bien complicado explicar sin un ejemplo, pero lo voy a tener en cuenta para el futuro.
      Saludos

    • @wilfredomartel7781
      @wilfredomartel7781 Před 6 měsíci +1

      @@uncledavescode gracias por tomarte el tiempo en aclararme la duda. Voy a investigar patron Saga.

  • @j3v1t0
    @j3v1t0 Před rokem

    Que plugins utilizas que te completa el código?

    • @uncledavescode
      @uncledavescode  Před rokem +2

      Copilot, lo utilizo para agilizar un poco los videos. Saludos

  • @JurgenMolina
    @JurgenMolina Před 8 měsíci +1

    Hola que pena molestarte es que estoy migran un proyecto de la universidad que hice el semestre pasado y lo hice con java 11 seria que puedo seguir los videos y utilizar java 11 en lugar de 17

    • @uncledavescode
      @uncledavescode  Před 8 měsíci +1

      Hola Jurgen...
      Lo puedes hacer.. solo tener en cuenta cuando utilizo records tienes que utilizar clases normales... y creo que en la Stream API de Java no existía el método toList, debes utilizar .collect(Collectors.toList()).
      Pero en principio no tendrías problemas..
      Si tienes alguno escríbeme al mail.
      Saludos

    • @JurgenMolina
      @JurgenMolina Před 8 měsíci

      @@uncledavescode muchas gracias 🫂

  • @jurgenhumbertomolinabaraja4996
    @jurgenhumbertomolinabaraja4996 Před 8 měsíci +1

    Que es el docker-compose

    • @uncledavescode
      @uncledavescode  Před 8 měsíci +1

      Hola Jurgen, Docker Compose es una herramienta de docker que nos permite definir y ejecutar varios contenedores usando un solo archivo. En este caso tenemos varias bases de datos, luego verás keycloak y otros más.
      Para este caso es una manera de mantener organizada la aplicación y tener todos los servicios juntos.
      Se que en los videos no hablo de docker porque no es lo fundamental de la serie, pero la idea es definir los servicios en un archivo, y con una herramienta de docker y un comando ejecutar todos los servicios que te mencionaba arriba a la vez. Saludos

  • @nolimits700
    @nolimits700 Před 9 měsíci +1

    Una pregunta, porque crear nuevas clases dto para request y response, si podemos usar las clases de entidad y solo crear un dto cuando sea imprescindible. Es una buena practica?, perdona mi ignorancia, pero solo me confundió usar tantas.

    • @uncledavescode
      @uncledavescode  Před 9 měsíci +1

      Hola, gracias por pasar por acá.
      En general hay un tema de buenas prácticas, pero igual de rendimiento.
      El ejemplo que pongo es bien simple, la vida es un poco más complicada.
      - No es bueno pasar a la capa de presentación todos los datos de una entidad, si tenemos 15 columnas y solo vamos a mostrar 5 columnas tenemos un tema de rendimiento además de mostrar información que es posible que no quieras compartir.
      - Si tenemos una API que le brinda a un tercero cierta información, imagina lo que pasa si cambia el modelo, como ya le pasas entidades, la API va a fallar, no vas a poder hacer los ajustes en tu sistema para que los clientes de tu API sigan funcionando.
      -En el caso de Hibernate también hay otro tema de rendimiento, las entidades se almacenan en el contexto de persistencia, Hibernate tiene un mecanismo que se encuentra constantemente verificando si hay cambios en esas entidades.
      Si puedes ver este video solo después del minuto 10 para que veas una diferencia de rendimiento entre obtener entidades y dtos.
      czcams.com/video/U9-7zlKoA2c/video.html
      En resumen, a pesar de que mis ejemplos son simples trato de codificar siguiendo las buenas prácticas.
      La semana que viene voy a comenzar con una serie de Hibernate para que puedan ver exactamente lo que pasa detrás de Spring Data.

    • @josehoraciogallardoa
      @josehoraciogallardoa Před 6 měsíci

      para no esponer la entidad de la data y a parte porque el dto lo puedes manipular con los campos que requieras y no todo como el entities

  • @oscardavidramirez5432
    @oscardavidramirez5432 Před 7 měsíci

    por que en una parte del codigo se hacen las anotaciones de @getter y @setter en vez de data?

    • @uncledavescode
      @uncledavescode  Před 7 měsíci +1

      Hola Oscar, @Data incluye además de los getters y setters las implementaciones de hashcode y de equals... Por lo general las implemntaciones de esos métodos sugeridas no son las mejores, por ejemplo una entidad o dto con 10 campos, con las implementaciones sugeridas consideran que son iguales si cada una de las propiedades son iguales, yo considero que una entidad es igual a otra si tienen el mismo ID o Key que puede ser compuesta.
      Saludos

    • @oscardavidramirez5432
      @oscardavidramirez5432 Před 7 měsíci +1

      @@uncledavescode gracias amigo, por cierto muy buen video.

    • @uncledavescode
      @uncledavescode  Před 7 měsíci

      Saludos!!!

  • @_elJotita
    @_elJotita Před 4 měsíci +1

    que plugins tienes ?

  • @JavierMedina26
    @JavierMedina26 Před 9 měsíci +1

    Sugerencia aunque capaz ya te lo han dicho, el fondo blanco o el tamaño de la grabacion no ayuda mucho para seguirte.
    De resto muy buen video

  • @danielhernannavarrotantale5394

    hola tengo errores con e docker compose

    • @uncledavescode
      @uncledavescode  Před rokem +1

      Hola… tienes instalado Docker Desktop?

    • @danielhernannavarrotantale5394
      @danielhernannavarrotantale5394 Před rokem

      @@uncledavescode hola me lo descargue hace unos minutos pero cuando ingreso me indica este error: Docker Desktop requires a newer WSL kernel version. Yo uso windows 10

    • @uncledavescode
      @uncledavescode  Před rokem +1

      Instalar Docker puede llegar a ser complicado, hay características de windows qué hay que habilitar. Hay varios videos en YT donde hablan de ese tema. Si se te complica mucho te recomiendo instalar la base de datos local y listo. Utilizar la misma base de datos para los tres microservicios. Saludos

    • @danielhernannavarrotantale5394
      @danielhernannavarrotantale5394 Před rokem

      @@uncledavescode ok muchas gracias voy a tratar de revisar videos.

    • @danielhernannavarrotantale5394
      @danielhernannavarrotantale5394 Před rokem +1

      @@uncledavescode Hola que tal ya logre instalarme docker pero cuando intento correr el docker-compose me sale este error: Error response from daemon: error creating temporary lease: write /var/lib/desktop-containerd/daemon/io.containerd.metadata.v1.bolt/meta.db: read-only file
      system: unknown
      Espero una ayuda.

  • @RochaNahuel
    @RochaNahuel Před 10 měsíci +1

    Espero no quedarme ciego antes de terminar la serie jaja el fondo blanco no me deja hacer foco

  • @leninvalen123
    @leninvalen123 Před 7 měsíci

    ¿Cuándo se agrega el usuario de la orden amigo?

    • @uncledavescode
      @uncledavescode  Před 7 měsíci

      no entendí que me quisite decir

    • @leninvalen123
      @leninvalen123 Před 7 měsíci +1

      @@uncledavescode Mil disculpas amigo no me hice entender, digamos que en el registro de la orden es posible que exista un id de usuario, ¿El usuario se obtiene del token después y se lo registra?.

    • @uncledavescode
      @uncledavescode  Před 7 měsíci

      Hola Lenin, ahora si jejeje.
      Mira, por lo que entiendo, es que que quieres dejar registrado el usuarlio que genera la orden o cosas por el estilo. En mi experiencia, es un tema de diseño, no debes asignarle la responsabilidad al microservicio de órdenes que agregue información del usuario que es posible que el no tenga, el solo necesita saber que el request que se realizó cuenta con la autorización adecuada, muchas veces pasa que el keycloak no verifica la autorización por suuario, puede ser que lo haga por grupos de usuarios, o por cleinte de keycloak y puede ser que no puedas obtener esa info de keycloak.
      Por eso recomindo que ta la información que necesites para generar la orden sea pasada al microservicio del órdenes por la capa del sistema que cuente con esa información.
      Puedes agregarle a la orden información del usuaio como su email, pero es otro el microservicio el encargado de enviar esa info.
      No se si me extendí mucho, lo primero que es un modelo reducido, y lo segundo es que si necesitas la info del usuario, entonces que sea parte de la firma del endpoint, no le agregues a la orden trabajo que no le corresponde.
      Si te queda algo de duda no dudes en escribirme,
      Saludos

    • @leninvalen123
      @leninvalen123 Před 7 měsíci +1

      Vi algo de Kafka pero no me queda muy claro, talvés me podrías orientar un poco por favor?, soy noob con microservicios y me he manejado más con una librería centralizada de modelo global donde suelo especificar todo y trato de tener esta perspectiva de microservicios ja ja :c

    • @uncledavescode
      @uncledavescode  Před 7 měsíci

      Hola. Lenin
      Lo primero es que no hay que saber de todo, jejeje
      Poco a poco cuando comienzas a ver estos temas va cambiando tu mentalidad.
      En cuanto a Kafka no es necesario que entiendas todos los detalles, de como funciona, solo saber para los terminos del video en que es una forma de enviar mensajes entre los microservicios de una forma asíncrona.
      A grandes rasgos... imagina que quieres enterarte de lo que alguien habla, entonces te suscribes a su canal, cada vez que esa persona emite un mensaje, entonces te va a llegar a ti.
      Es algo bien reducido lo que te comento, pero es mas o menos la idea, te suscribes a un tópico, y todos los mensajes que lleguen a ese tópico lo vas a recibir.
      Es complicado explicar esos temas en un mensaje pero es solo para que tengas una idea. Kafka tomaría toda una serie de videos jajaja.
      Saludos

  • @JS.Erick..
    @JS.Erick.. Před 6 měsíci +1

    yo viendo esto y apenas se lo basico de java jajaja:(

    • @uncledavescode
      @uncledavescode  Před 6 měsíci

      Suele pasar. A veces me encuentro viendo videos de talleres de autos. jajaja

  • @ricardocastillo8004
    @ricardocastillo8004 Před 4 měsíci +1

    No tienes mas cursos en alguna plataforma?

    • @uncledavescode
      @uncledavescode  Před 4 měsíci

      Hola.. la verdad es que apenas tengo tiempo para subir algo acá jejeje. Gracias por pasar.. saludos

  • @JuanCHB_88
    @JuanCHB_88 Před 9 měsíci +2

    Hola profe una pregunta tienes curso en udemy? saludos

  • @yatausao
    @yatausao Před 4 měsíci +1

    que ide usa

    • @uncledavescode
      @uncledavescode  Před 4 měsíci

      Hola,
      IntelliJ IDEA, puedes usar la versión Community.
      Saludos