SlideShare una empresa de Scribd logo
1 de 5
Descargar para leer sin conexión
Arquitectura de microservicios
La arquitectura de microservicios (en inglés, Micro Services Architecture, MSA) es una aproximación
para el desarrollo de software que consiste en construir una aplicación como un conjunto de pequeños
servicios, los cuales se ejecutan en su propio proceso y se comunican con mecanismos ligeros
(normalmente una API de recursos HTTP). Cada servicio se encarga de implementar una funcionalidad
completa del negocio. Cada servicio es desplegado de forma independiente y puede estar programado en
distintos lenguajes y usar diferentes tecnologías de almacenamiento de datos.1 ​
Se suele considerar la arquitectura de microservicios como una forma específica de realizar una arquitectura
orientada a servicios.2 ​
Características
Integración de servicios
Ejemplo
Críticas
Carga cognitiva
Referencias
En el mundo real, no todas las implementaciones de este estilo de arquitecturas siguen las mismas
características, pero la mayor parte de las arquitecturas de microservicios tienen la mayor parte de las
siguientes características:2 ​
3 ​
Los componentes son servicios. La principal manera de crear componentes (unidad de
software independientemente reemplazable y actualizable) es mediante la inserción de un
botón que automáticamente por detrás, gestione la decomposición en servicios en lugar de
bibliotecas. Los servicios son componentes separados que se comunican mediante
mecanismos como los servicios web o los RPC en lugar de usar llamadas a funciones en
memoria como hacen las bibliotecas.
Organizada en torno a las funcionalidades del negocio. El sistema se divide en distintos
servicios donde cada uno está organizado en torno a una capacidad del negocio. Es muy
importante limitar la responsabilidad de cada servicio. Cada servicio implementa toda la
funcionalidad del negocio que agrupa desde la interfaz de usuario, la persistencia en el
almacenamiento y cualquiera de las colaboraciones externas.
Productos, no proyectos. En esta arquitectura normalmente se sigue la idea de que un
equipo debe estar a cargo de un componente (servicio) durante todo el ciclo de vida del
mismo, desde la etapa de diseño y construcción, la fase de producción y hasta la de
mantenimiento. Esta mentalidad se acopla bien con la vinculación a una capacidad del
negocio. En lugar de ver el software como un conjunto de funcionalidades terminadas se ve
como una relación continua, donde la pregunta es cómo puede el software ayudar a sus
Índice
Características
usuarios a mejorar la funcionalidad del negocio que implementa. Esto es facilitado por el
bajo nivel de granularidad que ofrecen los microservicios.
Extremos inteligentes, tuberías bobas. Las aplicaciones creadas desde microservicios
pretenden ser tan disociadas y cohesivas como sea posible, ellas poseen su propia lógica
de dominio y actúan como filtros en el clásico sentido UNIX: recibe una solicitud, aplica la
lógica apropiada y produce una respuesta. Estos pasos son coreografiados usando
protocolos simples (típicamente HTTP con REST o mensajería liviana como RabbitMQ o
ZeroMQ) en lugar de protocolos complejos como WS-BPEL.
Tener gobierno descentralizado permite usar tecnologías que se adapten mejor a
cada funcionalidad. Con el sistema con múltiples servicios colaborativos, podemos decidir
utilizar diferentes lenguajes de programación y tecnologías dentro de cada servicio. De esta
forma podemos elegir la herramienta adecuada para cada tipo de trabajo en lugar de tener
una estandarizada. Por ejemplo si una parte del sistema necesita mejorar su rendimiento es
posible usar una tecnología, quizás más complicada, que permita alcanzar el nivel de
rendimiento requerido. Otro ejemplo sería usar para ciertas cosas (reflejar interacciones
entre usuarios) una base de datos orientada a grafos, y usar para otra bases de datos
orientadas a documentos. la arquitectura de microservicios permite adoptar nuevas
tecnologías más rápido y en aquellos lugares donde se puede aprovechar su potencial ya
que se acota el impacto.
Gestión de datos descentralizada. Los microservicios prefieren dejar a cada servicio que
gestione su propia base de datos, sean estos diferentes instancias de la misma tecnología
de base de datos o sistemas de base de datos completamente diferentes. Por ejemplo
podríamos tener Redis para sesiones de usuarios (base de datos en memoria), MySQL
(relacional) para los datos de pago, MongoDB (orientada a documentos) para el catálogo de
productos, Neo4j (orientada a grafos) para las recomendaciones y Apache Cassandra
(orientado a clave-valor) para el análisis de logs y analíticas. El estilo de microservicios
tiene implicaciones en el manejo de las actualizaciones las cuales tradicionalmente han
usado transacciones para garantizar la consistencia. Las transacciones impone un
acoplamiento temporal lo que se vuelve problemático cuando hay varios servicios. Como
las transacciones distribuidas son mucho más difíciles de implementar, las arquitecturas de
microservicios promueven la coordinación no transaccional entre servicios, con el
reconocimiento explícito que la consistencia puede ser una consistencia eventual y los
problemas son compensados operativamente. El sistema merece la pena siempre y cuando
el costo de solucionar los errores sea menor que el costo de perder negocios por una mayor
consistencia. Los microservicios no obligan a tener distintas tecnologías de
almacenamiento, solo lo permiten.
Diseño tolerante a fallos. Las aplicaciones necesitan ser diseñadas de modo que puedan
tolerar las fallas de los distintos servicios. Cualquier llamada de servicio puede fallar y el
cliente tiene que ser capaz de responder a esto con la mayor facilidad y eficacia posible,
evitando los muy habituales fallos en cascada de las arquitecturas distribuidas. Patrones
más importantes para conseguir estabilidad que se usan en la arquitectura de
microservicios:
Usar tiempos de espera máximos. Es un mecanismo simple que permite dejar de
seguir esperando por una respuesta que consideramos que ya no vendrá. Asociado al
vencimiento de un tiempo de espera es frecuente que aparezcan:
Reintento. Consiste en repetir una operación para el cual finalizó su tiempo de
espera
Encolar para reintentar la operación para ser realizada más tarde
Disyuntores. Funcionan de forma similar a los interruptores automáticos accionados
por sobrecargas que hay en las instalaciones eléctricas. En el software existen para
permitir que un subsistema ante una falla no destruya el sistema entero por sobrecarga
y una vez que el peligro ha pasado pueda reestablecerse. Este mecanismo se suele
usar para envolver operaciones peligrosas con un componente y así poder esquivar las
llamadas cuando el sistema no esté operativo. Si el disyuntor detecta que las fallas
superan una frecuencia umbral el disyuntor salta abriéndose y las llamadas fallan sin
realizar ningún intento de ejecutar una operación real. Después de esperar un tiempo
adecuado se decide que la operación tiene una oportunidad y pasa a un estado de
semiabierto en el que la próxima llamada es permitida, si tiene éxito entonces el
disyuntor se vuelve a cerrar y todo vuelve a funcionar normalmente, si falla el disyuntor
se vuelve a abrir y se vuelve a esperar el tiempo adecuado para intentar.
Compartimentos estancos para contención de daños manteniendolos aislados. La
forma más común de tenerlos es usando redundancia física teniendo por ejemplo varios
servidores y dentro de cada servidor varias instancias. A gran escala podríamos tener
varias granjas de servidores.
Automatización de la infraestructura. La mayoría de los productos y sistemas
desarrollados con el enfoque de microservicios han sido construidos por equipo que usan
entrega continua y su precursor la integración continua. Para conseguir esto es necesario:
Automatizar todo el proceso, desde el chequeo del código, pruebas, despliegue, ...
Control de versiones y gestión de configuración. Todo el software tiene que estar
versionado y poder gestionar las distintas configuraciones para conseguir la entrega
continua.
Arquitectura adecuada. La arquitectura tiene que permitir realizar cambios sin que
afecten al resto del sistema. La arquitectura de microservicios lo hace posible.
Diseño evolutivo. Cuando se divide el sistema en servicios hay que tener en cuenta que
cada uno tiene que poder ser reemplazado o actualizado de forma independiente. Es decir,
tiene que permitir una fácil evolución. El diseño del servicio tiene que ser de tal forma que
evite en lo posible que la evolución de los servicios afecte a sus consumidores.
Cuando tratamos con problemas complejos, es necesario tratar con el problema de manejar procesos de
negocio que involucran a varios servicios. Hay dos formas de abordar este tipo de problemas:
Orquestación y coreografía.3 ​
2 ​
Con orquestación lo que hacemos es tener un software que guíe y dirija el proceso, de
forma similar a como lo hace un director de orquesta.3 ​
2 ​
Con coreografía lo que hacemos es dejar que cada parte del sistema realice su trabajo y
se les deja trabajar en los detalles, como hacen los bailarines en un ballet. Es más
adaptado a la arquitectura de microservicios que cada servicio sepa cómo actuar en cada
momento, e interactúe con otros, en lugar de tener a alguien que los coordine. Por eso para
integrar se suele preferir tener coreografía.3 ​
2 ​
Veamos un ejemplo de un sistema en el que cuando doy de alta un cliente tengo que:3 ​
2 ​
Acreditarle una cantidad de puntos de bienvenida en su cuenta de fidelidad.
Enviarle un kit de bienvenida a través del correo postal.
Enviarle un correo electrónico de bienvenida al cliente.
Integración de servicios
Ejemplo
La estrategia a tomar con un mecanismo de orquestación sería que el servicio cliente contenga la lógica
de control y en la creación este se comunicaría con el Banco de puntos de fidelidad, el Servicio de correo
postal y el Servicio de correo electrónico a través de una serie de llamadas petición/respuesta. Por tanto el
Servicio Cliente realiza el seguimiento de las tareas y sabe si el proceso se ha completado sin problemas. El
problema de este enfoque es que el Servicio de Cliente se puede convertir en una autoridad de gobierno
central demasiado fuerte donde toda la lógica gira alrededor de él.3 ​
2 ​
La estrategia a tomar con un mecanismo de coreografía sería informar a cada parte del sistema de su
trabajo, y dejarlos trabajar en los detalles, como los bailarines en un ballet que se encuentran en su camino y
reaccionan ante otros a su alrededor. Para ello el servicio cliente emitiría un mensaje asincrónico cuando se
crea un cliente. Así el Servicio de Correo Electrónico, el Servicio Postal, y el Banco de puntos de
Fidelidad, solo es necesario que se suscriban a esos eventos y reaccionar en consecuencia. Si algún otro
servicio necesita llegar a la creación de un nuevo cliente, simplemente tiene que subscribirse a los eventos y
hacer su trabajo cuando sea necesario. Este diseño implica que se necesita de trabajo adicional para
asegurarnos de que se han sucedido las cosas correctas. Por ejemplo, saber si el banco de puntos de
fidelidad tuvo un error y por alguna razón no estableció correctamente los puntos. Para solucionar este
problema, normalmente es necesario crear un sistema de monitoreo que refleje explícitamente la vista del
proceso de negocio, y a su vez, haga un seguimiento de lo que cada uno de los servicios realiza como
entidad independiente que le permite ver excepciones mapeadas al flujo de proceso más explícito.
En general, los sistemas que utilizan el enfoque del tipo coreografía, están débilmente acoplados, son más
flexibles y más susceptibles de cambiar. Sin embargo, es necesario realizar el trabajo extra de monitorear y
seguir los procesos a través de los límites del sistema.3 ​
2 ​
El enfoque de microservicios esta sujeto a críticas por una serie de problemas:
Los servicios forman barreras de información.4 ​
Los mensajes entre servicios sobre la misma red tienen un costo mayor en términos de
latencia y tiempo de procesamiento de mensajes comparado con un proceso de servidor
monolítico.5 ​
Las pruebas y el despliegue son más complicados en el modelo de microservicios.6 ​
Mover responsabilidades entre servicios es difícil. Puede requerir comunicación entre
distintos equipos, reescribir funcionalidades en diferentes lenguajes o cambiar la
funcionalidad para que funcione en otra infraestructura.5 ​
Contemplar el tamaño de los servicios como el principal mecanismo de estructuración
puede llevar a utilizar demasiados servicios cuando una estrúctura de modularización
interna puede llevar a un diseño más simple.7 ​
La arquitectura introduce complejidad adicional y nuevos problemas a resolver, como latencia en la red,
formato de los mensajes, equilibrado de carga y tolerancia a fallos.8 ​
6 ​
Una aplicación compuesta por un número de microservicios tiene que acceder a su propio ecosistema, lo
que puede crear complejidad innecesaria.9 ​ Este tipo de complejidad puede reducirse estandarizando el
mecanismo de acceso. La Web, considerada como un sistema, estandarizó el mecanismo de acceso a través
de mantener el mismo sistema de acceso entre el navegador y los recursos de aplicación sobre los últimos
Críticas
Carga cognitiva
20 años. Utilizando el número de sitios web indexados por Google, se creció desde 26 millones de páginas
en 1998 a alrededor de 60 trillones de páginas individuales en 2015 sin necesitar cambiar el mecanismo de
acceso. La Web en sí misma es un ejemplo de cómo la complejidad inherente a un sistema tradicional de
software monolítico puede superarse.10 ​
11 ​
1. Microservices a definition of this new architectural term (https://martinfowler.com/articles/micr
oservices.html). Martin Fowler 2014
2. Building microservices. Designing fine-grained systems (https://www.nginx.com/wp-content/
uploads/2015/01/Building_Microservices_Nginx.pdf). Sam Newman. O’Reilly 2015
3. Microservicios Parte II (http://sergiomaurenzi.blogspot.com.es/2015/04/microservicios-parte-i
i.html). Sergio Maurenzi. 13 de abril de 2015.
4. Jan Stenberg (11 de agosto de 2014). «Experiences from Failing with Microservices» (http://
www.infoq.com/news/2014/08/failing-microservices).
5. Martin Fowler. «Microservices» (http://martinfowler.com/articles/microservices.html).
6. «Developing Microservices for PaaS with Spring and Cloud Foundry» (http://www.infoq.com/
presentations/microservices-pass-spring-cloud-foundry).
7. Tilkov, Stefan (17 de noviembre de 2014). «How small should your microservice be?» (http
s://www.innoq.com/blog/st/2014/11/how-small-should-your-microservice-be/). innoq.com.
Consultado el 4 de enero de 2017.
8. Pautasso, Cesare (2017). «Microservices in Practice, Part 2: Service Integration and
Sustainability» (http://ieeexplore.ieee.org/document/7888407/). IEEE Software 34 (2): 97-
104. doi:10.1109/MS.2017.56 (https://dx.doi.org/10.1109%2FMS.2017.56).
9. «BRASS Building Resource Adaptive Software Systems». U.S. Government. DARPA. 7 de
abril de 2015. "Access to system components and the interfaces between clients and their
applications, however, are mediated via a number of often unrelated mechanisms, including
informally documented application programming interfaces (APIs), idiosyncratic foreign
function interfaces, complex ill-understood model definitions, or ad hoc data formats. These
mechanisms usually provide only partial and incomplete understanding of the semantics of
the components themselves. In the presence of such complexity, it is not surprising that
applications typically bake-in many assumptions about the expected behavior of the
ecosystem they interact with."
10. Alpert, Jesse; Hajaj, Nissan. «We knew the web was big» (http://googleblog.blogspot.co.at/2
008/07/we-knew-web-was-big.html). Official Google Blog. Google.com. Consultado el 22 de
agosto de 2015.
11. «The Story» (http://www.google.com/insidesearch/howsearchworks/thestory/). How search
works. Google.com. Consultado el 22 de agosto de 2015.
Obtenido de «https://es.wikipedia.org/w/index.php?title=Arquitectura_de_microservicios&oldid=130566918»
Esta página se editó por última vez el 2 nov 2020 a las 03:24.
El texto está disponible bajo la Licencia Creative Commons Atribución Compartir Igual 3.0; pueden aplicarse
cláusulas adicionales. Al usar este sitio, usted acepta nuestros términos de uso y nuestra política de privacidad.
Wikipedia® es una marca registrada de la Fundación Wikimedia, Inc., una organización sin ánimo de lucro.
Referencias

Más contenido relacionado

Similar a Arquitectura_de_microservicios.pdf

Modelos de sistemas distribuidos
Modelos de sistemas distribuidosModelos de sistemas distribuidos
Modelos de sistemas distribuidosTensor
 
Modelos de sistemas distribuidos
Modelos de sistemas distribuidosModelos de sistemas distribuidos
Modelos de sistemas distribuidosTensor
 
Modelos de los sistemas distribuidos
Modelos de los sistemas distribuidosModelos de los sistemas distribuidos
Modelos de los sistemas distribuidosMargarita Labastida
 
Fundam servclient
Fundam servclientFundam servclient
Fundam servclienttvazamar
 
Arquitectura de sistemas distribuidos-grupo Maria
Arquitectura de sistemas distribuidos-grupo MariaArquitectura de sistemas distribuidos-grupo Maria
Arquitectura de sistemas distribuidos-grupo Mariagequito
 
Arquitectura de sistemas distribuidos-Grupo de Maria
Arquitectura de sistemas distribuidos-Grupo de MariaArquitectura de sistemas distribuidos-Grupo de Maria
Arquitectura de sistemas distribuidos-Grupo de Mariagequito
 
Trabajo de que es un administrador de red
Trabajo de que es un administrador de redTrabajo de que es un administrador de red
Trabajo de que es un administrador de redCarina Manzano
 
M.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptx
M.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptxM.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptx
M.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptxHawkMartnez
 
Arquitectura 2
Arquitectura 2Arquitectura 2
Arquitectura 2bistasa
 
Guia para el diseño modular de sistemas
Guia para el diseño modular de sistemasGuia para el diseño modular de sistemas
Guia para el diseño modular de sistemasOscar Centeno
 
MuleSoft y las arquitecturas orientadas a microservicios
MuleSoft y las arquitecturas orientadas a microserviciosMuleSoft y las arquitecturas orientadas a microservicios
MuleSoft y las arquitecturas orientadas a microserviciosCarlos Reinoza
 
Unidad 1. Desarrollo de Aplicaciones Distribuidas
Unidad 1. Desarrollo de Aplicaciones DistribuidasUnidad 1. Desarrollo de Aplicaciones Distribuidas
Unidad 1. Desarrollo de Aplicaciones DistribuidasIsidro Lopez Riuz
 
Modelo cliente servidor ensayo
Modelo cliente servidor ensayoModelo cliente servidor ensayo
Modelo cliente servidor ensayoWilmer Yacelga XD
 
Modelos de sistemas distribuidos
Modelos de sistemas distribuidosModelos de sistemas distribuidos
Modelos de sistemas distribuidosTensor
 
Orientación a tendencias de Arquitectura DDD
Orientación a tendencias de Arquitectura DDDOrientación a tendencias de Arquitectura DDD
Orientación a tendencias de Arquitectura DDDCesar Gomez
 
Estilos y patrones arquitectónicos
Estilos y patrones arquitectónicosEstilos y patrones arquitectónicos
Estilos y patrones arquitectónicosIsrael Rey
 

Similar a Arquitectura_de_microservicios.pdf (20)

Modelos de sistemas distribuidos
Modelos de sistemas distribuidosModelos de sistemas distribuidos
Modelos de sistemas distribuidos
 
Modelos de sistemas distribuidos
Modelos de sistemas distribuidosModelos de sistemas distribuidos
Modelos de sistemas distribuidos
 
Modelos de los sistemas distribuidos
Modelos de los sistemas distribuidosModelos de los sistemas distribuidos
Modelos de los sistemas distribuidos
 
Fundam servclient
Fundam servclientFundam servclient
Fundam servclient
 
Arquitectura de sistemas distribuidos-grupo Maria
Arquitectura de sistemas distribuidos-grupo MariaArquitectura de sistemas distribuidos-grupo Maria
Arquitectura de sistemas distribuidos-grupo Maria
 
Arquitectura de sistemas distribuidos-Grupo de Maria
Arquitectura de sistemas distribuidos-Grupo de MariaArquitectura de sistemas distribuidos-Grupo de Maria
Arquitectura de sistemas distribuidos-Grupo de Maria
 
Soa
SoaSoa
Soa
 
Trabajo de que es un administrador de red
Trabajo de que es un administrador de redTrabajo de que es un administrador de red
Trabajo de que es un administrador de red
 
M.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptx
M.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptxM.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptx
M.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptx
 
Arquitectura
ArquitecturaArquitectura
Arquitectura
 
Arquitectura 2
Arquitectura 2Arquitectura 2
Arquitectura 2
 
Guia para el diseño modular de sistemas
Guia para el diseño modular de sistemasGuia para el diseño modular de sistemas
Guia para el diseño modular de sistemas
 
Modelos de sistema
Modelos de sistemaModelos de sistema
Modelos de sistema
 
MuleSoft y las arquitecturas orientadas a microservicios
MuleSoft y las arquitecturas orientadas a microserviciosMuleSoft y las arquitecturas orientadas a microservicios
MuleSoft y las arquitecturas orientadas a microservicios
 
Unidad 1. Desarrollo de Aplicaciones Distribuidas
Unidad 1. Desarrollo de Aplicaciones DistribuidasUnidad 1. Desarrollo de Aplicaciones Distribuidas
Unidad 1. Desarrollo de Aplicaciones Distribuidas
 
Arquitectura de sistemas distribuidos
Arquitectura de sistemas distribuidosArquitectura de sistemas distribuidos
Arquitectura de sistemas distribuidos
 
Modelo cliente servidor ensayo
Modelo cliente servidor ensayoModelo cliente servidor ensayo
Modelo cliente servidor ensayo
 
Modelos de sistemas distribuidos
Modelos de sistemas distribuidosModelos de sistemas distribuidos
Modelos de sistemas distribuidos
 
Orientación a tendencias de Arquitectura DDD
Orientación a tendencias de Arquitectura DDDOrientación a tendencias de Arquitectura DDD
Orientación a tendencias de Arquitectura DDD
 
Estilos y patrones arquitectónicos
Estilos y patrones arquitectónicosEstilos y patrones arquitectónicos
Estilos y patrones arquitectónicos
 

Último

CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdfCAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdfReneBellido1
 
Fisiología del Potasio en Plantas p .pdf
Fisiología del Potasio en Plantas p .pdfFisiología del Potasio en Plantas p .pdf
Fisiología del Potasio en Plantas p .pdfJessLeonelVargasJimn
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfMirthaFernandez12
 
PRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potenciaPRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potenciazacariasd49
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPJosLuisFrancoCaldern
 
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdfPPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdfZamiertCruzSuyo
 
Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IILauraFernandaValdovi
 
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfLEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfAdelaHerrera9
 
Cadenas de Markov investigación de operaciones
Cadenas de Markov investigación de operacionesCadenas de Markov investigación de operaciones
Cadenas de Markov investigación de operacionesal21510263
 
estadisticasII Metodo-de-la-gran-M.pdf
estadisticasII   Metodo-de-la-gran-M.pdfestadisticasII   Metodo-de-la-gran-M.pdf
estadisticasII Metodo-de-la-gran-M.pdfFlorenciopeaortiz
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfAntonioGonzalezIzqui
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaXjoseantonio01jossed
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaSHERELYNSAMANTHAPALO1
 
Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaANDECE
 
Linealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfLinealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfrolandolazartep
 
CLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civilCLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civilDissneredwinPaivahua
 
CE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdf
CE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdfCE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdf
CE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdfssuserc34f44
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.ALEJANDROLEONGALICIA
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCANDECE
 

Último (20)

CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdfCAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
 
Fisiología del Potasio en Plantas p .pdf
Fisiología del Potasio en Plantas p .pdfFisiología del Potasio en Plantas p .pdf
Fisiología del Potasio en Plantas p .pdf
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
 
PRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potenciaPRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potencia
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
 
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdfPPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
 
Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo II
 
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfLEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
 
Cadenas de Markov investigación de operaciones
Cadenas de Markov investigación de operacionesCadenas de Markov investigación de operaciones
Cadenas de Markov investigación de operaciones
 
estadisticasII Metodo-de-la-gran-M.pdf
estadisticasII   Metodo-de-la-gran-M.pdfestadisticasII   Metodo-de-la-gran-M.pdf
estadisticasII Metodo-de-la-gran-M.pdf
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresa
 
Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de Almería
 
Linealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfLinealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdf
 
CLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civilCLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civil
 
CE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdf
CE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdfCE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdf
CE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdf
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRC
 

Arquitectura_de_microservicios.pdf

  • 1. Arquitectura de microservicios La arquitectura de microservicios (en inglés, Micro Services Architecture, MSA) es una aproximación para el desarrollo de software que consiste en construir una aplicación como un conjunto de pequeños servicios, los cuales se ejecutan en su propio proceso y se comunican con mecanismos ligeros (normalmente una API de recursos HTTP). Cada servicio se encarga de implementar una funcionalidad completa del negocio. Cada servicio es desplegado de forma independiente y puede estar programado en distintos lenguajes y usar diferentes tecnologías de almacenamiento de datos.1 ​ Se suele considerar la arquitectura de microservicios como una forma específica de realizar una arquitectura orientada a servicios.2 ​ Características Integración de servicios Ejemplo Críticas Carga cognitiva Referencias En el mundo real, no todas las implementaciones de este estilo de arquitecturas siguen las mismas características, pero la mayor parte de las arquitecturas de microservicios tienen la mayor parte de las siguientes características:2 ​ 3 ​ Los componentes son servicios. La principal manera de crear componentes (unidad de software independientemente reemplazable y actualizable) es mediante la inserción de un botón que automáticamente por detrás, gestione la decomposición en servicios en lugar de bibliotecas. Los servicios son componentes separados que se comunican mediante mecanismos como los servicios web o los RPC en lugar de usar llamadas a funciones en memoria como hacen las bibliotecas. Organizada en torno a las funcionalidades del negocio. El sistema se divide en distintos servicios donde cada uno está organizado en torno a una capacidad del negocio. Es muy importante limitar la responsabilidad de cada servicio. Cada servicio implementa toda la funcionalidad del negocio que agrupa desde la interfaz de usuario, la persistencia en el almacenamiento y cualquiera de las colaboraciones externas. Productos, no proyectos. En esta arquitectura normalmente se sigue la idea de que un equipo debe estar a cargo de un componente (servicio) durante todo el ciclo de vida del mismo, desde la etapa de diseño y construcción, la fase de producción y hasta la de mantenimiento. Esta mentalidad se acopla bien con la vinculación a una capacidad del negocio. En lugar de ver el software como un conjunto de funcionalidades terminadas se ve como una relación continua, donde la pregunta es cómo puede el software ayudar a sus Índice Características
  • 2. usuarios a mejorar la funcionalidad del negocio que implementa. Esto es facilitado por el bajo nivel de granularidad que ofrecen los microservicios. Extremos inteligentes, tuberías bobas. Las aplicaciones creadas desde microservicios pretenden ser tan disociadas y cohesivas como sea posible, ellas poseen su propia lógica de dominio y actúan como filtros en el clásico sentido UNIX: recibe una solicitud, aplica la lógica apropiada y produce una respuesta. Estos pasos son coreografiados usando protocolos simples (típicamente HTTP con REST o mensajería liviana como RabbitMQ o ZeroMQ) en lugar de protocolos complejos como WS-BPEL. Tener gobierno descentralizado permite usar tecnologías que se adapten mejor a cada funcionalidad. Con el sistema con múltiples servicios colaborativos, podemos decidir utilizar diferentes lenguajes de programación y tecnologías dentro de cada servicio. De esta forma podemos elegir la herramienta adecuada para cada tipo de trabajo en lugar de tener una estandarizada. Por ejemplo si una parte del sistema necesita mejorar su rendimiento es posible usar una tecnología, quizás más complicada, que permita alcanzar el nivel de rendimiento requerido. Otro ejemplo sería usar para ciertas cosas (reflejar interacciones entre usuarios) una base de datos orientada a grafos, y usar para otra bases de datos orientadas a documentos. la arquitectura de microservicios permite adoptar nuevas tecnologías más rápido y en aquellos lugares donde se puede aprovechar su potencial ya que se acota el impacto. Gestión de datos descentralizada. Los microservicios prefieren dejar a cada servicio que gestione su propia base de datos, sean estos diferentes instancias de la misma tecnología de base de datos o sistemas de base de datos completamente diferentes. Por ejemplo podríamos tener Redis para sesiones de usuarios (base de datos en memoria), MySQL (relacional) para los datos de pago, MongoDB (orientada a documentos) para el catálogo de productos, Neo4j (orientada a grafos) para las recomendaciones y Apache Cassandra (orientado a clave-valor) para el análisis de logs y analíticas. El estilo de microservicios tiene implicaciones en el manejo de las actualizaciones las cuales tradicionalmente han usado transacciones para garantizar la consistencia. Las transacciones impone un acoplamiento temporal lo que se vuelve problemático cuando hay varios servicios. Como las transacciones distribuidas son mucho más difíciles de implementar, las arquitecturas de microservicios promueven la coordinación no transaccional entre servicios, con el reconocimiento explícito que la consistencia puede ser una consistencia eventual y los problemas son compensados operativamente. El sistema merece la pena siempre y cuando el costo de solucionar los errores sea menor que el costo de perder negocios por una mayor consistencia. Los microservicios no obligan a tener distintas tecnologías de almacenamiento, solo lo permiten. Diseño tolerante a fallos. Las aplicaciones necesitan ser diseñadas de modo que puedan tolerar las fallas de los distintos servicios. Cualquier llamada de servicio puede fallar y el cliente tiene que ser capaz de responder a esto con la mayor facilidad y eficacia posible, evitando los muy habituales fallos en cascada de las arquitecturas distribuidas. Patrones más importantes para conseguir estabilidad que se usan en la arquitectura de microservicios: Usar tiempos de espera máximos. Es un mecanismo simple que permite dejar de seguir esperando por una respuesta que consideramos que ya no vendrá. Asociado al vencimiento de un tiempo de espera es frecuente que aparezcan: Reintento. Consiste en repetir una operación para el cual finalizó su tiempo de espera Encolar para reintentar la operación para ser realizada más tarde Disyuntores. Funcionan de forma similar a los interruptores automáticos accionados por sobrecargas que hay en las instalaciones eléctricas. En el software existen para permitir que un subsistema ante una falla no destruya el sistema entero por sobrecarga y una vez que el peligro ha pasado pueda reestablecerse. Este mecanismo se suele
  • 3. usar para envolver operaciones peligrosas con un componente y así poder esquivar las llamadas cuando el sistema no esté operativo. Si el disyuntor detecta que las fallas superan una frecuencia umbral el disyuntor salta abriéndose y las llamadas fallan sin realizar ningún intento de ejecutar una operación real. Después de esperar un tiempo adecuado se decide que la operación tiene una oportunidad y pasa a un estado de semiabierto en el que la próxima llamada es permitida, si tiene éxito entonces el disyuntor se vuelve a cerrar y todo vuelve a funcionar normalmente, si falla el disyuntor se vuelve a abrir y se vuelve a esperar el tiempo adecuado para intentar. Compartimentos estancos para contención de daños manteniendolos aislados. La forma más común de tenerlos es usando redundancia física teniendo por ejemplo varios servidores y dentro de cada servidor varias instancias. A gran escala podríamos tener varias granjas de servidores. Automatización de la infraestructura. La mayoría de los productos y sistemas desarrollados con el enfoque de microservicios han sido construidos por equipo que usan entrega continua y su precursor la integración continua. Para conseguir esto es necesario: Automatizar todo el proceso, desde el chequeo del código, pruebas, despliegue, ... Control de versiones y gestión de configuración. Todo el software tiene que estar versionado y poder gestionar las distintas configuraciones para conseguir la entrega continua. Arquitectura adecuada. La arquitectura tiene que permitir realizar cambios sin que afecten al resto del sistema. La arquitectura de microservicios lo hace posible. Diseño evolutivo. Cuando se divide el sistema en servicios hay que tener en cuenta que cada uno tiene que poder ser reemplazado o actualizado de forma independiente. Es decir, tiene que permitir una fácil evolución. El diseño del servicio tiene que ser de tal forma que evite en lo posible que la evolución de los servicios afecte a sus consumidores. Cuando tratamos con problemas complejos, es necesario tratar con el problema de manejar procesos de negocio que involucran a varios servicios. Hay dos formas de abordar este tipo de problemas: Orquestación y coreografía.3 ​ 2 ​ Con orquestación lo que hacemos es tener un software que guíe y dirija el proceso, de forma similar a como lo hace un director de orquesta.3 ​ 2 ​ Con coreografía lo que hacemos es dejar que cada parte del sistema realice su trabajo y se les deja trabajar en los detalles, como hacen los bailarines en un ballet. Es más adaptado a la arquitectura de microservicios que cada servicio sepa cómo actuar en cada momento, e interactúe con otros, en lugar de tener a alguien que los coordine. Por eso para integrar se suele preferir tener coreografía.3 ​ 2 ​ Veamos un ejemplo de un sistema en el que cuando doy de alta un cliente tengo que:3 ​ 2 ​ Acreditarle una cantidad de puntos de bienvenida en su cuenta de fidelidad. Enviarle un kit de bienvenida a través del correo postal. Enviarle un correo electrónico de bienvenida al cliente. Integración de servicios Ejemplo
  • 4. La estrategia a tomar con un mecanismo de orquestación sería que el servicio cliente contenga la lógica de control y en la creación este se comunicaría con el Banco de puntos de fidelidad, el Servicio de correo postal y el Servicio de correo electrónico a través de una serie de llamadas petición/respuesta. Por tanto el Servicio Cliente realiza el seguimiento de las tareas y sabe si el proceso se ha completado sin problemas. El problema de este enfoque es que el Servicio de Cliente se puede convertir en una autoridad de gobierno central demasiado fuerte donde toda la lógica gira alrededor de él.3 ​ 2 ​ La estrategia a tomar con un mecanismo de coreografía sería informar a cada parte del sistema de su trabajo, y dejarlos trabajar en los detalles, como los bailarines en un ballet que se encuentran en su camino y reaccionan ante otros a su alrededor. Para ello el servicio cliente emitiría un mensaje asincrónico cuando se crea un cliente. Así el Servicio de Correo Electrónico, el Servicio Postal, y el Banco de puntos de Fidelidad, solo es necesario que se suscriban a esos eventos y reaccionar en consecuencia. Si algún otro servicio necesita llegar a la creación de un nuevo cliente, simplemente tiene que subscribirse a los eventos y hacer su trabajo cuando sea necesario. Este diseño implica que se necesita de trabajo adicional para asegurarnos de que se han sucedido las cosas correctas. Por ejemplo, saber si el banco de puntos de fidelidad tuvo un error y por alguna razón no estableció correctamente los puntos. Para solucionar este problema, normalmente es necesario crear un sistema de monitoreo que refleje explícitamente la vista del proceso de negocio, y a su vez, haga un seguimiento de lo que cada uno de los servicios realiza como entidad independiente que le permite ver excepciones mapeadas al flujo de proceso más explícito. En general, los sistemas que utilizan el enfoque del tipo coreografía, están débilmente acoplados, son más flexibles y más susceptibles de cambiar. Sin embargo, es necesario realizar el trabajo extra de monitorear y seguir los procesos a través de los límites del sistema.3 ​ 2 ​ El enfoque de microservicios esta sujeto a críticas por una serie de problemas: Los servicios forman barreras de información.4 ​ Los mensajes entre servicios sobre la misma red tienen un costo mayor en términos de latencia y tiempo de procesamiento de mensajes comparado con un proceso de servidor monolítico.5 ​ Las pruebas y el despliegue son más complicados en el modelo de microservicios.6 ​ Mover responsabilidades entre servicios es difícil. Puede requerir comunicación entre distintos equipos, reescribir funcionalidades en diferentes lenguajes o cambiar la funcionalidad para que funcione en otra infraestructura.5 ​ Contemplar el tamaño de los servicios como el principal mecanismo de estructuración puede llevar a utilizar demasiados servicios cuando una estrúctura de modularización interna puede llevar a un diseño más simple.7 ​ La arquitectura introduce complejidad adicional y nuevos problemas a resolver, como latencia en la red, formato de los mensajes, equilibrado de carga y tolerancia a fallos.8 ​ 6 ​ Una aplicación compuesta por un número de microservicios tiene que acceder a su propio ecosistema, lo que puede crear complejidad innecesaria.9 ​ Este tipo de complejidad puede reducirse estandarizando el mecanismo de acceso. La Web, considerada como un sistema, estandarizó el mecanismo de acceso a través de mantener el mismo sistema de acceso entre el navegador y los recursos de aplicación sobre los últimos Críticas Carga cognitiva
  • 5. 20 años. Utilizando el número de sitios web indexados por Google, se creció desde 26 millones de páginas en 1998 a alrededor de 60 trillones de páginas individuales en 2015 sin necesitar cambiar el mecanismo de acceso. La Web en sí misma es un ejemplo de cómo la complejidad inherente a un sistema tradicional de software monolítico puede superarse.10 ​ 11 ​ 1. Microservices a definition of this new architectural term (https://martinfowler.com/articles/micr oservices.html). Martin Fowler 2014 2. Building microservices. Designing fine-grained systems (https://www.nginx.com/wp-content/ uploads/2015/01/Building_Microservices_Nginx.pdf). Sam Newman. O’Reilly 2015 3. Microservicios Parte II (http://sergiomaurenzi.blogspot.com.es/2015/04/microservicios-parte-i i.html). Sergio Maurenzi. 13 de abril de 2015. 4. Jan Stenberg (11 de agosto de 2014). «Experiences from Failing with Microservices» (http:// www.infoq.com/news/2014/08/failing-microservices). 5. Martin Fowler. «Microservices» (http://martinfowler.com/articles/microservices.html). 6. «Developing Microservices for PaaS with Spring and Cloud Foundry» (http://www.infoq.com/ presentations/microservices-pass-spring-cloud-foundry). 7. Tilkov, Stefan (17 de noviembre de 2014). «How small should your microservice be?» (http s://www.innoq.com/blog/st/2014/11/how-small-should-your-microservice-be/). innoq.com. Consultado el 4 de enero de 2017. 8. Pautasso, Cesare (2017). «Microservices in Practice, Part 2: Service Integration and Sustainability» (http://ieeexplore.ieee.org/document/7888407/). IEEE Software 34 (2): 97- 104. doi:10.1109/MS.2017.56 (https://dx.doi.org/10.1109%2FMS.2017.56). 9. «BRASS Building Resource Adaptive Software Systems». U.S. Government. DARPA. 7 de abril de 2015. "Access to system components and the interfaces between clients and their applications, however, are mediated via a number of often unrelated mechanisms, including informally documented application programming interfaces (APIs), idiosyncratic foreign function interfaces, complex ill-understood model definitions, or ad hoc data formats. These mechanisms usually provide only partial and incomplete understanding of the semantics of the components themselves. In the presence of such complexity, it is not surprising that applications typically bake-in many assumptions about the expected behavior of the ecosystem they interact with." 10. Alpert, Jesse; Hajaj, Nissan. «We knew the web was big» (http://googleblog.blogspot.co.at/2 008/07/we-knew-web-was-big.html). Official Google Blog. Google.com. Consultado el 22 de agosto de 2015. 11. «The Story» (http://www.google.com/insidesearch/howsearchworks/thestory/). How search works. Google.com. Consultado el 22 de agosto de 2015. Obtenido de «https://es.wikipedia.org/w/index.php?title=Arquitectura_de_microservicios&oldid=130566918» Esta página se editó por última vez el 2 nov 2020 a las 03:24. El texto está disponible bajo la Licencia Creative Commons Atribución Compartir Igual 3.0; pueden aplicarse cláusulas adicionales. Al usar este sitio, usted acepta nuestros términos de uso y nuestra política de privacidad. Wikipedia® es una marca registrada de la Fundación Wikimedia, Inc., una organización sin ánimo de lucro. Referencias