Вы находитесь на странице: 1из 27

¿ QUE ES UN SISTEMA MONOLITICO ?

Unico ejecutable
¿ QUE ES UN SISTEMA MONOLITICO ?

Un sistema monolítico corriendo en un solo proceso

• Deploy de toda la aplicación junto a todas sus partes.


• Todas las personas encargadas de las partes esenciales de la aplicación deben estar presentes para un deploy, en caso de que se
presente alguna falla crítica.
• Si hay un error de código crítico toda la aplicación deja de funcionar.
• Al momento de programar se genera una gran dependencia entre las partes, comprometiendo a cualquiera de las partes al
momento de un error crítico.
• Cambiar una de las partes podría con llevar el cambio de otras partes, incluso podría llevar a cambiar la parte del usuario y así
comprometer su experiencia.
• La escalabilidad está sujeta a toda la infraestructura debido a la estrecha relación entre las partes.
• Todas las partes comparten los mismos recursos.
¿ QUE ES MICROSERVICIOS ?
Es un estilo de arquitectura es decir, una forma de desarrollar una aplicación, basada en un
conjunto de pequeños servicios, cada uno corriendo en sus propios procesos y comunicándose
mediante mecanismos livianos, generalmente un recurso API de HTTP.
VENTAJAS

• Deploy de un solo servicio sin hacer a los demás bloques.


• Deploy del servicio únicamente con el equipo encargado del microservicio.
• En el caso de un error crítico los demás microservicios seguirán funcionando sin ser afectados de
forma directa.
• Cada equipo es capaz de programar sin interferir con otros equipos.
• Como consecuencia de lo anterior, cambiar una parte no afecta a otra parte, incluso no debería
afectar la experiencia del usuario final.
• La escalabilidad no está sujeta a ninguna de las partes, como son independientes es posible agrupar
y distribuir en varios servidores como sea necesario.
• Eficiencia, gracias a que cada servicio es independiente de los demas, así mismo se pueden gastar
los recursos, un servicio podría consumir los recursos de una máquina, o algunos servicios podrían
compartir los recursos, todo dependerá de las necesidades del producto.
¿ QUE ES MICROSERVICIOS ?
En resumen, los microservicios son pequeños servicios, autónomos que trabajan coordinadamente juntos.

Una comparación gráfica de la arquitectura monolítica con la de microservicios, se puede representar de la siguiente manera:
EVOLUCIÓN

Monolitica SOA Microservicios


Alto acoplamiento, cualquier Menor acoplamiento, permitía Desacoplamiento total, permite
cambio afecta a la totalidad de desarrollar código en partes más desarrollar pequeños servicios de
la aplicación, CI/CD una tarea pequeñas, pero todo debe estar manera totalmente independiente
casi imposible. comunicado y estrictamente (Agnósticos y Poliglotas). Su
desarrollado para que encaje con exposición de servicios es dada a
el resto del desarrollo través de la exposición de API´S.
ARQUITECTURA
COMPONENTES

Los microservicios son mas pequeños,


desacoplados y perfeccionados para realizar
pequeñas tareas de manera eficiente. – Aparte de
la funcionalidad principal del microservicio,
necesitaremos componentes específicos para
hacer una correcta implementación de la
arquitectura.

Al lado derecho podemos observar los retos de


arquitectura planteados para el desarrollo de
microservicios.
COMPONENTES
Ejemplo de componentes
ACCESO DE DATOS Y COMUNICACIÓN

De la misma manera que en una aplicación monolítica


los microservicios pueden acceder a datos a través de
capas de persistencia, drivers o configuración
especifica para cada caso

Exponen funcionalidades a través de API’s rest.

Se comunican entre si con protocolos http o


mensajería.
DESCUBRIMIENTO Y SERVICIOS
Registro: Consiste en el registro de cada nueva instancia, dejando
consignado sus datos de ubicación, como nodo, puerto e ip (Entre
otros).

Descubrimiento: Es el proceso que permite tener acceso a la


información del registro.

Orquestación: Software que guíe y dirija el proceso, de forma


similar a como lo hace un director de orquesta.

Herramientas disponibles para el servicio de Descubrimiento:


1. Eureka (Spring Cloud Netflix)
2. Zookeper
3. Etcd
4. Consul

Herramientas para la orquestación:


1. – Ribbon + Eureka (Spring Cloud Netflix)
2. – Kubernetes
3. – Docker swarm
ENRUTAMIENTO
MONITOREO Y LOGS

• Un aspecto importante a resaltar en la


arquitectura a microservicios es la
monitorización, contar con un panel
unificado con información en tiempo
real de cada microservicio.
MONITOREO Y LOGS

• La centralización y explotación de
logs juega un papel importante de lo
contrario seria inmanejable la
administración de los mismos.
CI/CD
DEPLOYMENT
DEMO
GO
BOOKING
CASOS DE ÉXITO

En ocasiones este tipo de arquitectura se relaciona con pequeños desarrollos, startups o empresas pequeñas
pero lo cierto es que estas arquitecturas han sido populares gracias a compañías como Netflix, Facebook, eBay,
Amazon, Twitter o Google, que han evolucionado sus arquitecturas hacia los microservicios para poder
adaptarse de una mejora manera a la evolución, crecimiento y cambios que han sufrido.
QUE SIGUE?
¿ POR DONDE EMPEZAMOS ?

➤ Analiza la estructura de tu organización


➤ Preparar al equipo
➤ Cultura de automatización.
➤ Analizar las habilidades existentes y desarrollar las faltantes
➤ Continuous delivery / CD
➤ Evaluar el estado actual del proyecto
➤ Coding (practices, patterns, etc…)
➤ Testings
➤ Deployment
➤ Definir los objectivos del proyecto
¿ QUE SIGUE?

➤ Definir los dominios del sistema


➤ Patrones de diseño
➤ Comunicación
➤ Descubrimiento / Registro
➤ Descubrimiento
➤ Seguridad
➤ Herramientas, frameworks o librerías para implementar los componentes base.
ESTRUCTURA DEL SISTEMA
➤ Definición de dominios
➤ De acuerdo a la lógica de negocios.
➤ Estandarización entre servicios y APIs.
➤ Comunicación
➤ GRPC / Protobuffers.
➤ REST
➤ AMQP
➤ Identificar dominios
➤ Según la logica de negocio y estructura del negocio.
PATRONES
➤ Ruteo
➤ ApiGateway
➤ Descubrimiento y registro de servicios
➤ Consul
➤ Consistentencia de datos
➤ Seguridad
➤ JWT
➤ OAUTH
➤ SSL
➤ Logs
➤ Logstail
➤ ELK
➤ Orquestación
➤ Dockers swarm
➤ Kubernetes
➤ Dokku
➤ Deis
ANTIPRACTICAS

A. Intentar crear un sistema desacoplado antes de tener claros los dominios de cada aplicación.
B. Mantener más de un servicio en un mismo repositorio.
C. Usar una misma base de datos para mas de un servicio.
D. Exponer todos los componentes del servicio de manera pública.
E. Tener dependencias entre despliegues de diferentes servicios
F. Pensar que la automatización viene después.
G. ….
REFERENCIAS

Sam Newman. 2015. Building Microservices (1st ed.). O'Reilly Media, Inc..
RICHARDSON, C., A pattern language for microservices, http://microservices.io/patterns
FOWLER, M., Microservices Resource Guide, https://www.martinfowler.com/microservices/

Вам также может понравиться