comienza a estudiar gratis en ed. Team y descubre Por qué en español nadie te explica mejor el software se parece mucho a los negocios porque un negocio comienza con una persona haciéndolo todo como de team que comenzó conmigo haciendo el sitio web el marketing dictando el curso editándolo cobrando y atendiendo a los clientes pero tener un negocio es una cosa mientras que hacerlo crecer es otra muy diferente para crecer un emprendedor necesita que las funciones dejen de concentrarse en una sola persona y se distribuyan en un equipo donde cada persona haga lo que mejor sabe
hacer así creció de team igual es en el software una aplicación pequeña se puede construir con una sola tecnología base de datos y servidor es un solo paquete fácil de mantener y de desplegar donde todas las funciones están concentradas en un solo lugar pero si la aplicación crece y le toca soportar mucha demanda empezará a ponerse lenta y a caerse como nos pasó en edam entonces toca dejar de concentrar la responsabilidad en un solo punto y distribuir la app en muchas mini Apps o microservicios con responsabilidades únicas y que se comuniquen entre sí en este
video vas a aprender Qué son los microservicios Y por qué debes dominarlos para subir tu nivel como programador porque estás en Ed Team y tú sabes que en español nadie explica mejor para entender a los microservicios primero debemos repasar Qué es una arquitectura de software Este es un tema muy amplio pero para simplificar podemos decir que es la forma en que se organizan y se comunican los componentes de un software y la responsabil idades que cumple cada uno más fácil si cada componente de la aplicación fuera un jugador de fútbol la arquitectura serían las posiciones
incluido los que están en banca más la estrategia que diseña el técnico para el partido la arquitectura más conocida y con la que todos comenzamos es la monolítica que proviene del griego mono que significa uno y litos que significa piedra y que se usa para referirse a grandes monumentos de una sola piedra ya sean naturales o creados por el hombre como analogía en el desarrollo de software se usa el término monolito para el software en que el código y las funcionalidades están acopladas en un solo paquete lo cual si bien Funciona muy bien en algunos
escenarios en otros sobre todo al crecer se convierte en un problema es como el negocio manejado por una sola persona las aplicaciones monolíticas suelen dividirse en tres capas capa de datos capa de lógica y capa de cliente que en una aplicación web serían el equivalente a base de datos backend Y frontend frameworks como rubion rails larabel Django o Spring entre otros nos permiten crear una aplicación web monolítica muy fácil así que son una excelente opción para comenzar sin embargo ten en cuenta que estos frameworks no se limitan a arquitecturas monolíticas los monolitos no son una
mala práctica son tan solo una arquitectura diferente para crear software y en ciertos escenarios la arquitectura monolítica es la mejor opción sin embargo la arquitectura monolítica tiene desafíos como que al estar todo el código acoplado es muy complicado hacer cambios en una funcionalidad porque podrían afectar a otra lo mismo si queremos agregar funcionalidades nuevas lo que que hace que escalar sea bastante complicado la alternativa a la arquitectura monolítica es la arquitectura de microservicios pero para entender a los microservicios primero Debemos entender Qué es un servicio un servicio es una pieza de Software que provee una
funcionalidad específica por ejemplo en un sistema operativo tenemos servicios de red que gestionan las conexiones servicios de notificaciones de bluetooth etcétera estos corren en segundo plano y no solemos interactuar con ellos pero los servicios van mucho más allá de los sistemas operativos ya que tenemos servicios de nube como bien lo dice el nombre de Amazon web Services servicios de procesamiento de pagos por internet entre otros dentro de toda esta gama de servicios uno de los más usados son los servicios web que se encargan de exponer lógica y datos a través del protocolo http el mismo
que se usa para navegar por internet esto significa que Prácticamente todo lo que ocurre en internet está basado en servicios web incluso la Inteligencia artificial y las aplicaciones móviles en otras palabras un servicio web es la implementación de una IP Api O sea la puesta en práctica de los principios teóricos y reglas de las apis Aunque en el día a día se usa Api y servicio web como sinónimos si quieres saber más tenemos la mejor explicación de Api en español aquí en YouTube y un curso gratuito en nuestro sitio web cuando hablamos de servicios web
nos referimos al lado del backend de una aplicación la capa de lógica estos servicios pueden ser consumidos por un cliente que es la capa de presentación que puede ser un frontend web una aplicación móvil videojuegos de PC o consolas y también por otro servicio o sea otro backend estos servicios tienen unas puertas de acceso llamadas endpoints que son urls a los que los clientes u otros servicios pueden conectarse mientras que la comunicación se hace a través del protocolo http el mismo que se usa para navegar por internet como acabamos de ver los servicios son aplicaciones
que exponen lógica y datos a través de endpoints para que otros servicios o clientes se conecten pero esta definición nos habla más de la función de los servicios que de cómo está están construidos puesto que un servicio bien Podría ser un monolito por ejemplo la app de deam puede ser un monolito y aún así exponer los cursos precios y clases a través de endpoints con lo cual es un servicio pero no deja de ser un monolito Esa es la diferencia con los microservicios pues son servicios pequeñitos y específicos de ahí su nombre para cada funcionalidad
de la aplicación al igual que los servicios los microservicios pueden conectarse entre ellos para construir una aplicación y también pueden exponer sus endpoints a aplicaciones de terceros y puesto que los microservicios son tan pequeños hablar de microservicios y de arquitectura de microservicios es prácticamente lo mismo crear una arquitectura de microservicios significa dividir la lógica de tu aplicación en mini Apps microservicios con funciones muy específicas que se comuniquen entre ellos a través de ciertas reglas para evitar conflictos por ejemplo en nuestros inicios he de timer un monolito usábamos un cms llamado drupal y cuando drupal se
nos quedó corto desarrollamos nuestra propia apliación desde cero la cual también era un monolito y el mundo era feliz brillaba el sol y trinan los pájaros pero Team empezó a crecer y la app empezó a caerse a ponerse lenta y hacerle mantenimiento era demasiado complicado nos enfrentábamos a los tres desafíos de una arquitectura monolitic alta demanda que significa que cuando la cantidad de usuarios y peticiones aumenta la carga se concentra en ciertas partes de la aplicación pero no es posible aislar esa parte porque todo está muy acoplado con microservicios en cambio puedes escalar o darle
mantenimiento solo a las partes que lo necesiten número dos alta disponibilidad Y es que cada segundo de downtime o sea de la aplicación caída es dinero perdido en un monolito como todo está tan acoplado es muy difícil identificar qué parte provocó el error mientras que con microservicios se pueden monitorear para saber cuál falló y configurarlos para que escalen se reinicien o regresen a versiones anteriores automáticamente Y si definitivamente un microservicio se muere la aplicación sigue arriba y número tres alta complejidad y es que mientras más funciones se agreguen a una aplicación monolítica será más difícil
darle mantenimiento porque cada cosa depende de muchas otras en cambio los microservicios son aislados y se pueden mantener y agregar a otros sin comprometer a toda la aplicación desde entonces cambiamos nuestra arquitectura de microservicios con lo cual podemos soportar a muchísimos usuarios sin despeinar noos domina las carreras del futuro y trabaja en cualquier lugar del mundo sin salir de casa miles de personas han aumentado sus ingresos encontrado su primer empleo o creado su propia empresa estudiando en edti tú puede ser el próximo comienza a estudiar gratis en ed. Team diagonal cursos y descubre porque en
español nadie explica mejor que de team Y cómo son los microservicios por dentro pues son una aplicación y ya está pero hay tres partes en común número uno el controller que es quien recibe las peticiones de otros microservicios y entrega las respuestas Esta es la capa externa donde está el endpoint Aquí también se maneja la autenticación para que no haya acceso no autorizado por cierto si quieres saber más de autenticación Puedes ver este curso con el tio Alexis número dos el validator que valida que la petición y los datos tengan el formato correcto para evitar
conflictos y número tres el microservicio en Sí donde está la lógica del negocio que es donde se encuentra la función que cumple este microservicio y el acceso a los datos que se comunica con una base de datos externa además los microservicios deben cumplir con con las siguientes reglas número uno cumplir una sola función si en algún momento vemos que estamos agregando más funciones que se alejan del objetivo original Es recomendable crear un nuevo microservicio número dos ser autónomos es decir que no dependan de otros para funcionar esto garantiza el desacoplamiento del código y que hacer
modificaciones en un microservicio no comprometa a toda la aplicación y número tres estar aislados deben correr en entornos separados con sus propios recursos y muy recomendable cada uno con con su propia base de datos el último punto el de estar aislados implica que podemos usar diferentes lenguajes de programación y motores de base de datos en un mismo proyecto lo cual es sorprendente para quien viene de hacer todo en una misma tecnología Aunque el hecho de poder no significa que lo hagamos Pues también puedes crear todos tus microservicios con el mismo lenguaje lo que importa es
que se decida correctamente Cuál es el mejor lenguaje según la función de cada microservicio Por ejemplo si vas a crear un microservicio para análisis de datos python es una excelente opción pero si es para comunicación en tiempo real una opción más interesante es javascript con no.js si bien por un lado la arquitectura de microservicios ayuda mucho a escalar las aplicaciones por otro representa varios retos y complejidad adicional en el desarrollo Así que veamos algunas técnicas que se usan para implementar microservicios número uno arquitectura hexagonal es una arquitectura basada en puertos y adaptadores para comunicar a
los microservicios los puertos son interfaces que definen Cómo se conectarán los microservicios y los adaptadores son implementaciones concretas de estos puertos si quieres saber más sobre las interfaces sus implementaciones y los principios solid Puedes ver este video aquí en YouTube y para ir más a fondo tenemos el curso de solid y arquitectura hexagonal en editing número dos Api Gateway Y es que otro de los retos de los microservicios es gestionar la cantidad de endpoints disponibles uno o más por cada microservicio Así que para solucionarlo usamos una puerta de enlace o Api Gateway que es un
enrutador de las peticiones ya que administra los endpoints internamente y hacia fuera expone un único endpoint para aplicaciones externas además que se encarga de gestionar la seguridad los proveedores de nube tienen sus propios servicios para implementar Api Gateway Microsoft tiene azure Api management gcp tiene Google Cloud endpoints y Amazon tiene aws Api Gateway que puedes aprender en editing y número tres serverless Y es que otra forma de implementar los microservicios es serverless cuya traducción en español significa sin servidor Y cómo puede funcionar una aplicación sin servidor simple no puede el término serverless no se refiere
a que no existan servidores sino a dos cositas número uno que no tienes que administrar ni configurar servidores ya que el proveedor de nube asigna los recursos necesarios de forma automática Y número dos no tienes un servidor encendido sino que el proveedor de nube asigna los recursos cuando se ejecuta la aplicación y luego los apaga por ejemplo en Ed Team no nos llegan ventas cada segundo sio yo estaría en la lista de forbest Entonces no necesitamos el servicio de venta siempre encendido Así que un modelo serverless asigna los recursos cada vez que se ejecute una
venta y luego los apaga hasta que vuelva a realizarse una venta cada proveedor de nube tiene sus servicios de serverless como Google con Cloud functions Microsoft con azure functions y Amazon con aws lambda que también puedes aprender en editing una parte importante de la implementación de una arquitectura de microservicios es tener control sobre todo el ciclo de vida del software y esa aquí donde entra de bobs The bobs es un conjunto de buenas prácticas no es un rol para derribar el muro de la confusión que separa los desarrolladores los que escriben el software de Los
profesionales de sistemas los que se encargan de la infraestructura de servidores donde se ejecutará la aplicación Este muro de la confusión representan los problemas de comunicación y flujo de trabajo entre ambos profesionales Por ejemplo si la aplicación se cae es que tiene bxs culpa de los programadores O es que se configuró mal la infraestructura culpa de operaciones cuál será para resolver estos problemas de bobs conecta a todas las etapas del ciclo de vida del Software el cual es infinito Dentro de este ciclo de vida dos tareas son cruciales número uno la integración que significa que
el código de un programador no entra en conflicto con el de otros programadores Y número dos el despliegue que signifi enviar los nuevos cambios del software a producción estas tareas podrían hacerse a mano pero lo ideal es que sean automáticas por eso en devop se habla de c CD integración continua y de despl continuo donde la palabra continuo significa que los cambios se integran y pasan a producción sin detener el proceso a través de Test automáticos así un programador puede enviar sus cambios a producción solito siempre que pase los tests obvio si no Le tocará
corregir su código si quieres saber más de dev bobs tenemos un excelente video en YouTube y dos cursos en editing uno para empezar en dev bobs y otro para crear un flujo de cicd en gitlab la plataforma líder para de bobs y los últimos conceptos de este video son docker y kubernetes puesto que los microservicios necesitan entornos aislados y crear una máquina virtual para cada uno sería muy costoso la mejor solución es usar contenedores que como su nombre lo dice contienen Además del microservicio todas las dependencias que necesita para funcionar y lo aíslan de su
entorno el siguiente paso es administrar configurar y escalar estos contenedores para conseguir la solución es kubernetes que es el orquestrador de contenedores más utilizado en el desarrollo del software y si quieres saber más de docker y de kubernetes tenemos un video aquí en YouTube y dos cursos que puedes ir a ver en nuestro sitio web para que subas tu nivel como programador en el siglo primero antes de Cristo el Imperio Romano se expandía conquistando todos los pueblos y culturas vecinas una de sus principales estrategias era divide Y vencerás qué consistía en debilitar a sus enemigos
explotando sus rivalidades para que se dividan y vencerlos fácilmente podemos decir que los microservicios son el divida y vencerás del desarrollo de software porque dividimos una aplicación grande en aplicaciones pequeñas para poder dominarlas si no lo hiciéramos la aplicación podría crecer tanto que terminaría dominándose pero los microservicios no son para todos se necesitan desarrolladores de alto nivel que entiendan de arquitectura de software patrones de diseño y de bobs por lo que implementar microservicios en una aplicación que no lo necesita es un desperdicio de recursos y si quieres aprender más de microservicios y subir tu nivel
como programador tienes todos estos cursos en edam número uno Introducción a la arquitectura de microservicios número dos creación de microservicios con Java y springboot y número tres todos los cursos de creación de apis con todos los lenguajes que tenemos en editing además obviamente de todos los cursos que ya te mencionamos en este video ahora ya sabes qué son los microservicios Y recuerda que lo aprendiste en edam