2. ¿Qué son los
Microservicios?
los microservicios son una alternativa para desarrollar una única aplicación como un
conjunto de pequeños servicios, los cuales se ejecutan en un propio proceso y estos
servicios se pueden implementar, dependiendo de las capacidades del negocio.
Se pueden implementar de forma independiente. Estos servicios no depende de una
Administración central. Se puede escribir en diferentes lenguajes de programación y
utilizar diferentes tecnologías de almacenamiento de datos.
Los microservicios se adaptan perfectamente a los requerimientos de agilidad,
escalabilidad y confiabilidad de las aplicaciones modernas en la nube..
Microservicios
Los microservicios surgen como una alternativa
a la manera tradicional de desarrollar
aplicaciones. Este tipo de aplicaciones es muy
dependiente del hardware sobre el que se
instala. Esta gran dependencia del hardware se
materializa en largos tiempos de inactividad a la
hora de realizar actualizaciones del software o
despliegues de nuevo hardware para añadir
más capacidad.
arquitectura
monolítica
El modelo monolítico es totalmente
incompatible con la gran velocidad de
los ciclos de desarrollos y con los
requerimientos de disponibilidad
actuales. Hoy en día, sería impensable
tener que pasar por un ciclo entero de
integración y testing de una aplicación
entera cada vez que se modifique una
de sus partes.
VS
3. Microservicios: características
principales
• Están enfocados a escenarios empresariales: a diferencia del
enfoque monolítico, cada microservicio se desarrolla a partir de un
escenario concreto de cliente o negocio, por lo cual son más simples
y menos condicionados por la tecnología.
• Son desarrollados por equipos pequeños: su enfoque a producto,
permite a un equipo de desarrollo seguir vinculado al servicio que
ha desarrollado a lo largo de todo su ciclo de vida – en
contraposición con el modelo enfocado a proyecto, donde el equipo
es únicamente responsable del desarrollo del software que a
continuación se traslada a otro equipo para su mantenimiento.
• Permiten un alto nivel de desacoplamiento: cada microservicio
mantiene su propio dominio lógico, comunicándose y compartiendo
datos con los demás, con un enfoque RESTful y utilizando los
protocolos HTTP y TCP, y XML o JSON como formato de serialización.
4. • Son independientes de lenguajes concretos: cada
microservicio puede ser desarrollados en un distinto lenguaje
de programación (C++, C#, Java, etc.) y apoyarse a diversas
tecnologías de almacenamiento a segunda de las ventajas que
aportan para el objetivo del servicio.
• Son gestionados de forma independiente: tanto su
implementación, actualización y escalado se realizan de forma
independiente, lo que aplica también al control de versiones y
a al almacenamiento de los estados de los servicios.
• Tienen nombres únicos: cada microservicio tiene un nombre
único para que se pueda resolver su ubicación; un registro de
servicios se ocupa de recopilar un directorio.
• Son resilientes: En caso de error, un microservicio puede
reiniciarse en otra maquina para seguir estando disponible,
evitando la pérdida de datos y manteniendo su coherencia.
5. Principales plataformas de
microservicios
• Una plataforma de microservicios ofrece funcionalidades como brindar
un servicio al estar realizando un mantenimiento o escalando. En este
caso la plataforma se ocupa de comunicar la información de ubicación
actualizada a todos los demás microservicios, para que puedan
establecer o restablecer rápidamente la comunicación.
• Además, una plataforma de microservicios traslada automáticamente
las instancias a máquinas virtuales o a otros servidores cuando el
software o hardware en el que se ejecutan fallan o deben reiniciarse
para realizar actualizaciones.
• Estas son algunas de las principales plataformas más populares para
desarrollar e implementar aplicaciones de microservicios:
• Docker Swarm y Docker Compose. La filosofía de contenedores Docker
se alinea de forma natural con las arquitecturas de microservicios.
• Kubernetes. Es un sistema de código abierto que automatiza la
implementación, las operaciones y el escalado de las aplicaciones en
contenedores. Originalmente desarrollado por Google, se basa en sus
experiencias en servicios como Google Search y Gmail.
6. • Mesosphere: Mesosphere Datacenter Operating System
(DCOS) es un administrador de clúster escalable que incluye
Mesosphere’s Marathon, una herramienta de orquestación de
contenedores de nivel de producción
• OpenShift: Es una plataforma como servicio (PaaS) que
aprovecha el empaquetado basado en contenedores Docker
para implementar orquestación de contenedores y
capacidades de administración informática para Kubernetes.
• Pivotal Cloud Foundry: Permite arquitecturas de
microservicios combinando flujo de trabajo y programación de
contenedores desde Cloud Foundry con integraciones para
patrones de microservicios
• Service Fabric: Desarrollado por Microsoft, potencia sus
servicios en la nube a gran escala, incluidos SQL DB, DocDB,
Intune, Cortana y Skype for Business, así como muchos
servicios internos de infraestructura de Azure.
7. Casos de éxito
• Abrazar los microservicios ha ayudado a grandes empresas a ser tan
ágiles e innovadoras como startups. Algunos de los casos más
importantes son:
• Netflix: Hace ya unos años, esta empresa realizado un gran cambio,
transformándose de una aplicación monolítica de DVD a una
arquitectura de microservicios que le permite ofrecer servicios de
streaming digital de calidad en centenares de distintas pantallas y
dispositivos a millones de clientes en todo el mundo.
• Amazon: También tuvo que adoptar los microservicios, como parte
de su transición desde una tienda de libros online a un proveedor de
servicios en la nube. Gracias a los microservicios, su web ha podido
implementar de forma exitosa novedosos servicios y se ha
consolidado como uno de los principales referentes del comercio
electrónico.
• Twitter: También adoptó los microservicios para poder soportar la
ingente cantidad de trafico que recibe. Y así, casi todas las grandes
compañías de Internet como Ebay o el mismo Google.
8. Retos de los microservicios
• Aunque traen muchas ventajas, los microservicios son un
concepto relativamente nuevo y, por lo cual, presentan
bastante retos:
• En primer lugar, la complejidad: Una aplicación basada en
microservicios es más compleja que un monolito, ya que está
compuesta por muchos servicios distintos e independientes.
Se necesita por lo cual de una política de gobernanza
adecuada.
• Además, manejar los fallos es más complicado, ya que se
necesita monitorizar distintas piezas para detectar los posibles
problemas.
• Finalmente, no todos los profesionales de IT poseen los
conocimientos necesarios para desarrollar y gestionar
correctamente una arquitectura de microservicios.