d7ikEWCoyQjTw6BU - 019p7lbt8D6KhbdH-Lectura Fundamental 7
d7ikEWCoyQjTw6BU - 019p7lbt8D6KhbdH-Lectura Fundamental 7
d7ikEWCoyQjTw6BU - 019p7lbt8D6KhbdH-Lectura Fundamental 7
1 //Escenario
Escenario27
Lectura fundamental
Fundamental
Etapas de un planyde
Cloud computing paradigmas
comunicación
estratégica
de la computación distribuida
Contenido
1 Cloud computing
Palabras clave:
Cloud computing, IaaS, PaaS, SaaS, servicio, algoritmos distribuidos, exclusión mutua, tolerancia a fallos, Chandy,
Berkeliy, Lamprot
Introducción
Esta Lectura fundamental tiene como propósito explorar uno de los paradigmas más importantes de
la computación distribuida: el cloud computing. La computación en la nube se ha convertido en una
de las soluciones tecnológicas más utilizadas para proveer de forma dinámica y escalable, recursos
computacionales teniendo en cuenta la forma en la que el usuario final consumirá el servicio.
En el modelo de prestación de servicios del cloud existen tres métodos de prestación de servicios:
infraestructura, plataforma y software (Furht y Escalante, 2010).
El cloud se ha convertido en una tendencia tan grande que en el mercado existen proveedores que
prestan servicios de infraestructura, de forma masiva, proveedores como Amazon EC2, Microsoft
Azure, HP Helion, Google cloud, etc. Cada uno de estos ha desarrollado tecnologías privativas, pero
también existen implementaciones basadas en software libre tales como Open Stack y Open Nebula.
En este documento también se va a profundizar en los fundamentos de los algoritmos pioneros que
han hecho posible la computación distribuida y el comportamiento del hardware y el software para
tolerar fallos.
1. Cloud computing
El término cloud computing nace a partir del concepto de hosting cuando se popularizaron las páginas
Web y se requería un host para alojarlas y esto en conjunto con las comunicaciones con base en las
implementaciones de las redes privadas virtuales -VPN, requeridas para comunicar datos a una red
que no es accesible a través de Internet.
La computación en la nube fue acuñada para hacer énfasis en un servicio de computación usando
Internet que se puede prestar a cualquier usuario, desde cualquier lugar del mundo, en cualquier
instante de tiempo, sin tener en cuenta el lugar en donde estén ubicados los hosts de la nube, lo que
significa que estos recursos deberán estar publicados todo el tiempo.
POLITÉCNICO GRANCOLOMBIANO 2
Figura 1. Paradigma de computación en la nube
Fuente: Rarelif
El concepto de cloud computing se atribuye a John McCarthy (Armbrust et al., 2010), el cual fue el
primero en dar a conocer que la tecnología en la que el tiempo de un computador era compartido lle-
varía a un futuro donde la utilización óptima de los recursos podrían hacer que varios usuarios usaran
una misma máquina y, así mismo, maximizar las ganancias prestando un servicio de cómputo.
Cloud computing es una forma de ver la tecnología orientada a un modelo de negocio encaminado a
proveer servicios sin importar su ubicación o su capacidad como se muestra en la Figura 1.
Este modelo de nube está compuesto de cinco características esenciales, tres modelos de servicios y
cuatro modelos de despliegue (Mell & Brance, 2011).
POLITÉCNICO GRANCOLOMBIANO 3
Cloud broker Proveedor cloud Consumidor cloud
SaaS
Servicio de PaaS Auditoría de
intermediación Aprovechamiento desempeño
IaaS
Privacidad
Servicio de Seguridad Abstracción de Servicio de
agregación Soporte de agregación
recursos y capas
negocios
de control
Instalaciones
Transporte en la nube
Actores Definición
POLITÉCNICO GRANCOLOMBIANO 4
Un ente que puede realizar una evaluación independiente de los
Auditor cloud servicios en la nube, las operaciones del sistema de información,
el rendimiento y la seguridad de la implementación de la nube
Por otro lado, y desde una perspectiva de administración, se logra el manejo eficiente de los
recursos computacionales compartidos, las organizaciones que prestan este servicio están
encaminadas en prestar beneficios a sus clientes finales tales como escalabilidad, flexibilidad, etc.
(Tanenbaum & Steen, s.f.).
1.1. Características
Dentro del Manifiesto de la NIST se encuentran que esencialmente existen ocho características
esenciales del cloud computing, pero adicionalmente a estas existen ocho que son de tipo común (Mell
& Brance, 2011).
Las características generales están orientadas al servicio a como la nube se debe comportar y que
capacidades debe tener para estar enmarcadas en el concepto de la NIST de cloud computing.
POLITÉCNICO GRANCOLOMBIANO 5
Autoservicio por demanda: un consumidor de manera unilateral puede aprovisionar capacidades
computacionales de manera automáticamente, tales como almacenamiento, etc., usando la red sin
necesidad de interactuar con el proveedor del servicio.
Uso de redes de banda ancha: las capacidades sobre la red deben estar disponibles basándose
en mecanismos estándares que promuevan el uso de clientes heterogéneos delgados tales como
dispositivos móviles, computadores personales, etc.
Rápido crecimiento: la capacidad puede ser aprovisionadas y/o liberada y muchas veces de manera
automática, con el fin de crecer o decrecer rápidamente para satisfacer la demanda.
Medición del servicio: Los recursos de un sistema cloud se controlan y optimizan de forma
automática, en donde una capa de medición es necesaria en algún punto para la abstracción del nivel
de apropiación del servicio. Los recursos generalmente son monitoreados, controlados y reportados.
Así como su nombre lo dice están relacionadas con la propiedad natural de los sistemas cloud ser
sistemas distribuidos naturales.
Escalabilidad: hace referencia a la capacidad de crecer según la demanda del usuario final de manera
ágil y autónoma, esto aplicado al modelo de negocio es una gran ventaja ya que el usuario final de los
recursos computacionales podrá costear solo los recursos utilizados.
Homogeneidad: está dada de acuerdo con la forma en la que los recursos computacionales se
adaptan a la necesidad del sistema siendo un mismo a través de la solución utilizada por el usuario
final.
POLITÉCNICO GRANCOLOMBIANO 6
Software de bajo costo: teniendo en cuenta el modelo de negocio bajo demanda y dividiendo la
necesidad en dos roles, el prestador del servicio y el cliente, el cliente puede arrendar una licencia de
un software específico y el proveedor de servicio pude desplegarlo de manera ágil y dinámica en su
pool de recursos.
Computación resiliente: es el manejo de los fallos (tolerancia a fallos) con el fin de poder brindar
ciertos estándares de confiabilidad del servicio y mejorar la continuidad de negocio del cliente final,
una vez más sin importar la ubicación geográfica y la localización de la información.
Orientación al servicio: una arquitectura cloud debe estar orientada al servicio a que los recursos,
aplicaciones, interfaces, datos, etc., deben presentarse al usuario final como servicio.
Seguridad: debido a que todos los datos se encuentran bajo la responsabilidad del proveedor del
servicio debe existir una capa de seguridad bastante alta, estas se pueden diferenciar en Seguridad del
Servicio, Seguridad del Explorador, Seguridad de los Datos, etc. (Mell & Brance, 2011).
Los modelos de despliegue hacen referencia hacia a quien están dirigidos los servicios del cloud.
Los clouds privadas aplican los mismos principios usados de escalabilidad y administración que los
grandes clouds públicas hacia el interior del centro de datos de la organización.
POLITÉCNICO GRANCOLOMBIANO 7
1.2.2. Cloud pública
Es una de las formas en las que la infraestructura y los recursos computacionales se ponen a
disposición del público en general, esta infraestructura debe tener acceso a redes públicas como
por ejemplo Internet.
Una cloud pública les pertenece a organizaciones que venden los servicios cloud y sirve a un grupo de
clientes heterogéneos.
Una cloud híbrida es una composición de al menos dos clouds, ya sean privadas o públicas, las cuales
se comportan como entidades separadas únicas unidas por tecnologías estándares que posibilitan la
portabilidad de datos y de aplicaciones (Hogan et al., 2011).
Está conformada por varias organizaciones, ya sean públicas, privadas o hibridas, la diferencia con este
modelo de despliegue es el soporte lo da una comunidad que comparte un mismo fin.
Los modelos de servicio dividen o segmentan las responsabilidades del proveedor de servicio, desde la
parte hardware hasta el software.
IaaS (Infrastructure as a Service) brinda la capacidad del hardware, establece al usuario en un punto
más cercano al hardware en que este se hace cargo del despliegue y montaje de su aplicación para
proveer un servicio para el mismo o una tercera persona adicional. En esta capa el usuario despliega o
migra una solución. Ver Figura 3.
POLITÉCNICO GRANCOLOMBIANO 8
Gestión de
servicios
Plataforma
Almacenamiento de hosting
Backup
& Recovery
PaaS (Platform as a Service) es muy similar a IaaS pero se diferencia porque adiciona valor a los
servicios y viene en dos diferentes tipos:
POLITÉCNICO GRANCOLOMBIANO 9
1.3.3. Software como servicio
SaaS (Software as a Service) es el proveedor licencia una aplicación al cliente como un servicio por
demanda, esto sucede a través de un modelo de subscripción llamado "pay as you go".
SaaS puede ser el aspecto más conocido de cloud computing, pero desarrolladores y organizaciones
de todo el mundo están migrando a PaaS, debido a que mezcla la simplicidad del SaaS con el poder
del IaaS, logrando así una gran dinámica en las organizaciones. Ver Figura 5.
ERP
Finanzas Redes
sociales
Gestión de
Facturación contenidos
Correo
Ventas
Consumidor SaaS y productividad
de oficina
CRM Gestión de
documentos
Recursos
humanos
POLITÉCNICO GRANCOLOMBIANO 10
1.3.4. Plataformas para el aprendizaje de montaje y desarrollo de una cloud
El proceso de aprendizaje para montar una cloud computing en un portátil es muy sencillo. Se crea
una organización de tres máquinas virtuales donde una de ellas sea la máquina máster (locomotora de
la cloud). En la máquina server se instala el OpenStack Server, el cual se puede hacer en CentOS,
Red Hat, Ubuntu, etc.
Cómo mejorar...
POLITÉCNICO GRANCOLOMBIANO 11
Paso seguido se instalan todos los demás componentes como dice el manual del enlace.
Cuando la máquina máster queda lista, hay que empezar a agregarle vagones a la locomotora, es
decir, usted va configurando servidores con OpenStack Cliente y los va matriculando en el DNS y en
la configuración del máster, para que se comuniquen y en estos servidores, que se llaman
contendores, es donde se hospedan las imágenes extendidas de las ISO (es decir, las ISO se
convierten en un computador virtual que presta un servicio) que se cargaron en el máster.
192.168.54 x 1 Grupo de
Usuarios Finales
Servidor principal
192.168.54 x 2
RabbitMQ
Log
(8 plunk)
Almacenamiento
persistente
UI - Horizon
Concentrador
Red de servidores de hospedaje
192.168.54 x 7 192.168.54 x n
POLITÉCNICO GRANCOLOMBIANO 12
2. Algoritmos de sistemas distribuidos
Un algoritmo distribuido es un algoritmo diseñado para ejecutarse en una malla computacional que
consta de un conjunto de procesadores interconectados. Los algoritmos distribuidos se utilizan en
muchas áreas de aplicación variada de la computación distribuida, como las telecomunicaciones,
la computación científica, el procesamiento distribuido de información y el control de procesos en
tiempo real.
Los problemas estándar resueltos por algoritmos distribuidos incluyen la elección del líder, el
consenso, la búsqueda distribuida, la generación del árbol de expansión, la exclusión mutua y la
asignación de recursos.
Los algoritmos distribuidos son un subtipo de algoritmos paralelos, que generalmente se ejecutan al
mismo tiempo, con partes separadas del algoritmo que se ejecutan simultáneamente en procesadores
independientes, y que tienen información limitada sobre lo que están haciendo las otras partes del
algoritmo. Uno de los principales desafíos en el desarrollo e implementación de algoritmos distribuidos
es la coordinación exitosa del comportamiento de las partes independientes del algoritmo ante fallas
del procesador y enlaces de comunicaciones poco confiables.
La elección de un algoritmo distribuido apropiado para resolver un problema dado depende tanto
de las características del problema como de las características del sistema en el que se ejecutará el
algoritmo, como el tipo y la probabilidad de fallas del procesador o del enlace, el tipo de comunicación
entre procesos que se puede realizar, y el nivel de sincronización de tiempo entre procesos separados.
Si un proceso recibe un marcador después de haber grabado su estado local, registra el estado del
canal entrante desde el cual el marcador venía cargando todos los mensajes recibidos desde que
registró su estado local.
POLITÉCNICO GRANCOLOMBIANO
13
Los supuestos del algoritmo son los siguientes:
• No hay fallas y todos los mensajes llegan intactos solo una vez.
• Cada proceso en el sistema registra su estado local y el estado de sus canales entrantes.
Iniciador de la marca
Algunas de las suposiciones del algoritmo pueden facilitarse utilizando un protocolo de comunicación
más confiable, como TCP/IP. El algoritmo se puede adaptar de modo que pueda haber múltiples
instantáneas ocurriendo simultáneamente. El algoritmo termina cuando todos hayan recibido el token
rojo con el mensaje y se pongan verdes, eso quiere decir que todos están trabajando en el desarrollo
del mismo problema que les llevó el token (cuadrado rojo) de la Figura 7.
POLITÉCNICO GRANCOLOMBIANO 14
2.2. Algoritmo de Cristian
El algoritmo de Cristian fue escrito en 1989, con el fin de sincronizar los relojes entre los servidores.
En Linux se utiliza en NTP ( Network time Protocol), basado en el algoritmo de Cristian para
sincronizar el reloj de un servidor contra un servidor de tiempo universal.
Tiempo de viaje = T1 + T2, donde Ti es el tiempo gastado en recibir el mensaje T1 y resolver la solicitud
Tiempo del cliente sincronizado T3 = Ti + (Tviaje /2)
Tiempo T1
Tiempo
Ti
de viaje
Servidor
Cliente de tiempo
Tiempo T2
(Tiempo UTC)
POLITÉCNICO GRANCOLOMBIANO 15
• Se elige un nodo individual como nodo maestro de un grupo de nodos en la red. Este nodo es el
nodo principal en la red que actúa como maestro y el resto de los nodos actúan como esclavos.
El nodo maestro se elige mediante un proceso de elección o algoritmo de elección del líder.
• El nodo maestro hace ping periódicamente a los nodos esclavos y obtiene la hora del reloj
utilizando el algoritmo de Cristian.
Servidor
UTC
Servidor Computador N
NTP Respuesta C-N 1:55 p.m.
2:00 p.m.
Solicita el tiempo del C-N
Ho
ra
cor
reg
ida
Re 2:0
Hora corregida 2:00 p.m.
sp 0p
Solicita el tiempo del C1
ues .m
So ta .
lici C1
ta 2:1
el t 0p
iem .m
po .
del
C2
Computador 2
Computador 1
POLITÉCNICO GRANCOLOMBIANO 16
A diferencia del algoritmo de Cristian, este algoritmo llama a los nodos esclavos y va revisando
el tiempo de cada uno, para ver a quien hay que sincronizar. El servidor maestro siempre se auto
sincroniza con el reloj Mundial y actualiza su hora, luego evalúa a sus servidores esclavos para ver
que correcciones hay que hacer. ver Figura 9.
Como se observa en la figura 9, el servidor NTP, primero se sincroniza con el reloj mundial, luego
empieza a sincronizar cada un de sus servidores esclavos, como por ejemplo el computador-1, el cual
tiene la hora atrasada en 10 minutos dado que en el servidor NTP son las 2:00. El servidor NTP le
solicita el tiempo al servidor C1, como se da cuenta del desfase, entonces le devuelve la hora
correcta, es decir, las 2:00 p.m.
Los algoritmos de exclusión mutua ya sean centralizados o distribuidos, fueron escritos por Dekker
y mejorados por Peterson, para manejo de procesos concurrentes que tienen que hacer uso de una
sesión crítica en un servidor, como por ejemplo la memoria, el procesador, el disco, la impresora, etc.
(Tanenbaum A, página 150).
Peterson desarrollo una mejora al algoritmo de Dekker en 1981, y lo hizo para asignar la región
crítica para dos procesos que estaban disputando el uso. Ver Figura 10.
bandera[0] = false
bandera[1] = false
p1: bandera[1] = true
turno // No es necesario asignar un turno
turno = 0
p0: bandera[0] = true
while( bandera[0] && turno == 0):
turno = 1
{ //no hace nada; espera. }
while( bandera[1] && turno == 1);
// sección crítica
{ //no hace nada; espera. }
// sección crítica
// fin de la sección crítica
bandera[1] = false
// fin de la sección crítica
bandera[0] = false
El método del algoritmo centralizado hace un consenso entre los procesos que están corriendo en el
servidor y nombra a un proceso como coordinador.
POLITÉCNICO GRANCOLOMBIANO 17
0 1 2 0 1 2 0 1 2
No hay
Solicitud Liberar OK
OK respuesta
Solicitud
Lista vacía 2
C C C
Lista ocupada
Coordinador
Coordinador Coordinador
A) B) C)
Este proceso se encarga de revisar las secciones críticas y llevar el control para poder asignar una
región crítica a un proceso que la esté necesitando, para lo cual crea una cola FIFO de solicitudes y va
asignando la sección crítica, una vez el recurso haya sido liberado como se puede ver en la Figura 11,
en donde el coordinador el proceso C en (a) indica al proceso 1 que la pila esta vacía y puede asignar
la región crítica, pero no así le sucede al proceso 2 en (b), pero no así le sucede al proceso 2, que
debe registrarse en la pila y esperar hasta que el proceso 1, libere el recurso. Ver Figura 11.
Este algoritmo falla cuando el coordinador sale del servicio; por esta razón Ricard y Agrawala,
diseñaron el algoritmo de exclusión mutua distribuido, que consiste en que: cuando un proceso
requiere usar la región crítica, genera un mensaje con un ID, la región crítica que necesita y la hora; lo
envía a todos sus compañeros y a él mismo; los procesos reciben el mensaje y si no necesitan el
recurso, responden diciendo que no lo necesitan, pero si alguno ya está en la región critica, no
responde sino que manda el mensaje a una pila de solicitud de región crítica.
El que está solicitando el recurso, compara su marca de tiempo contra la marca de tiempo de los
demás mensajes que están solicitando el recurso. Si su marca de tiempo es la menor, puede tomar el
recurso pero si el recurso está ocupado, entonces espera hasta que el recurso quede libre ya que su
turno le fue asignado.
Con base en estas metodologías, se evita que ocurran los denominados abrazos mortales, que es una
disputa entre los procesos por el derecho a usar un recurso a la vez.
POLITÉCNICO GRANCOLOMBIANO 18
Referencias bibliográficas
Armbrust, M. y Fox, A. et al. (2010). Above the clouds: A berkeley view of cloud computing.
Communications of the ACM, 53(4), 50–58.
Binildas, A. (2008). Service Oriented Java Business Integration: Enterprise Service Bus integration
solutions for Java developers. Packt Publishing.
Cardozo, V., Bernal, M. y Sierra, J. Modelo, diseño y técnicas básicas para implantar un Sistema
de computación en la nube. Recuperado de: http://repository.poligran.edu.co/bitstream/
handle/10823/682/Modelo.....%20sistema%20de%20computacion%20en%20la%20nube.
pdf?sequence=1&isAllowed=y
Coulouris, Dollimore y Kindberg. Addison and Wesley Distributed Systems Concepts and Design.
Foster, I., Kesselman, C., & Tuecke, S. (2001). The Anatomy of the Grid: Enabling Scalable Virtual
Organizations. The International Journal of High-Performance computing Applications, 15(3), 200–
222. https://doi.org/10.1177/109434200101500302
Foster, I., Zhao, Y., Raicu, I., & Lu, S. (2008). Cloud computing and Grid computing 360-Degree
Compared. 2008 Grid computing Environments Workshop, 1–10. https://doi.org/10.1109/
GCE.2008.4738445
Hogan, M., Liu, F., Sokol, A., Tong, J., Locke, G., & Gallagher, P. D. (2011). Special Publication 500-
291 NIST cloud computing Standards Roadmap-Version 1.0 NIST cloud computing Standards Roadmap
Working Group. Recuperado de: https://www.nist.gov/sites/default/files/documents/itl/cloud/NIST_
SP-500-291_Jul5A.pdf
Mell, P., & Brance, T. (2011). The NIST definition of cloud computing.
Nicolai M. Josuttis. (2007). SOA in Practice: The Art of Distributed System Design. Theory in Practice.
O'Reilly Media.
Scott O. Bradner. (1996). The Internet Standards Process. Revision 3. Internet Engineering Task.
Tanenbaum, A. S., & Steen, M. van. (s.f.). Distributed systems: principles and paradigms.
POLITÉCNICO GRANCOLOMBIANO 19
Referencias de figuras
Cardozo, V., Bernal, M. y Sierra, J. (2015). Modelo de un servidor máster de una cloud OpenStack.
[Diagrama] Recuperado de: http://repository.poligran.edu.co/bitstream/handle/10823/682/
Modelo.....%20sistema%20de%20computacion%20en%20la%20nube.pdf?
sequence=1&isAllowed=y
Tanenbaum, A. S., & Steen, M. van. (s.f.). Algoritmos de exclusión mutua. [Pantallazo]
Tanenbaum, A. S., & Steen, M. van. (s.f.). Asignación de la región critica por algoritmo centralizado.
[Diagrama]
POLITÉCNICO GRANCOLOMBIANO 20
INFORMACIÓN TÉCNICA
POLITÉCNICO GRANCOLOMBIANO 21