desarrollo de aplicaciones en la nube

24
DESARROLLO DE APLICACIONES EN LA NUBE I OpenShift de Red Hat GLOSARIO DE TÉRMINOS

Upload: daniel-cruz

Post on 15-Apr-2017

1.228 views

Category:

Internet


0 download

TRANSCRIPT

Page 1: Desarrollo de aplicaciones en la nube

DESARROLLO DE APLICACIONES EN LA NUBE I

OpenShift de Red Hat

GLOSARIO DE TÉRMINOS

Page 2: Desarrollo de aplicaciones en la nube

PaaS o plataforma como servicio• PaaS es un entorno de trabajo en la nube que ofrece

arquitectura e infraestructura para el desarrollo de aplicaciones Web, incluye:

• Recursos de red• Almacenamiento de datos• Administración de software• Soporte técnico

• Con PaaS la única preocupación del desarrollador es la construcción de la aplicación.

• La infraestructura la proporciona el proveedor de la plataforma.

Page 3: Desarrollo de aplicaciones en la nube

OpenShift de Red Hat• OpenShift es un proveedor PaaS con opción gratuita para

el desarrollo y despliegue de aplicaciones Java, Perl, PHP, Python y Ruby.

• También proporciona servicios de base de datos con MySQL, PostgreSQL o MongoDB.

• Su modelo basado en contenedores de docker permite el uso eficiente de la infraestructura y la portabilidad de las aplicaciones.

Page 4: Desarrollo de aplicaciones en la nube

LXC Contenedores Linux• Los contenedores Linux proveen la autonomía de las

aplicaciones agrupandolas con las bibliotecas de las que dependen evitando conflictos entre ellas. No incluye un kernel (SO), por lo que son más rápidos y ágiles que las máquinas virtuales. No obstante, esto significa que todos los contenedores de un host deben utilizar el mismo kernel.

Page 5: Desarrollo de aplicaciones en la nube

LXC Contenedores Linux• Con el uso de contenedores, los recursos pueden ser

aislados, los servicios restringidos, se otorga a los procesos la capacidad de tener una visión casi completa y privada del sistema operativo con su propio identificador de espacio de proceso, la estructura del sistema de archivos, y las interfaces de red.

• Contenedores múltiples comparten el mismo núcleo, pero cada contenedor puede ser restringido a utilizar sólo una cantidad definida de recursos como CPU, memoria y E/S.

Page 6: Desarrollo de aplicaciones en la nube

Docker• Herramienta que puede empaquetar una aplicación y sus

dependencias en un contenedor virtual que se puede ejecutar en cualquier servidor Linux.

• Docker proporciona flexibilidad y portabilidad.• La aplicación se puede ejecutar en las instalaciones

físicas, la nube pública, nube privada, etc.

Page 7: Desarrollo de aplicaciones en la nube

Gear en OpenShift• Es un contenedor con recursos limitados donde un

usuario de OpenShift ejecuta su aplicacion. • En el caso de utilizar una cuenta gratuita se pueden crear

como máximo tres gears de tipo “small”, cada uno de ellos puede utilizar un máximo de 512 MB de RAM, 100MB de swap y 1GB de espacio en disco.

• Las aplicaciones se despliegan y ejecutan utilizando estos recursos asociados al “gear”.

Page 8: Desarrollo de aplicaciones en la nube

Catridge en OpenShift • Son contenedores de software preparados para

ejecutarse en un gear. • Sobre cada gear pueden desplegarse varios cartridges,

por ejemplo existen cartridges de php, ruby, jboss, MySQL, django, etc.

Page 9: Desarrollo de aplicaciones en la nube

Namespace en OpenShift• Cada cuenta de usuario en OpenShift está asociada a un

espacio de nombres para generar un FQDN (nombre de dominio completo) único en Internet para cada gear.

• En la configuración inicial de la cuenta de usuario habrá que seleccionar un espacio de nombres que sea único, este espacio de nombres se aplicará automáticamente a todos los gears que se creen.

HTTPS://quickstart-wordpressguide.rhcloud.com

Page 10: Desarrollo de aplicaciones en la nube

Acceso remoto y autenticación en OpenShift

• Una de las características interesantes que proporciona OpenShift es la posibilidad de acceder por SSH a la máquina en la que se está ejecutando la aplicación Web, aunque con un usuario con privilegios restringidos.

• El mecanismo usado para la autenticación se realiza usando claves públicas, es necesario indicar las claves públicas para poder acceder de forma remota.

• Es posible generar y usar claves RSA, este sistema criptográfico emplea dos claves una privada y otra pública, la clave pública debe subirse al portal de OpenShift.

Page 11: Desarrollo de aplicaciones en la nube

SSH Secure SHell• SSH es el nombre de un protocolo que hace posible que

un equipo (cliente) abra una sesión interactiva en una máquina remota (servidor) para enviar comandos o archivos a través de un canal seguro.

Page 12: Desarrollo de aplicaciones en la nube

SSH Secure SHell• Una conexión SSH consta de dos fases, el

establecimiento de un canal seguro y el inicio de sesión en el servidor; que puede ser a través del método de contraseña tradicional o con el uso de claves públicas.

Page 13: Desarrollo de aplicaciones en la nube

RSA y clave pública• RSA es un sistema criptográfico de clave pública que

emplea un par de claves para el envío de mensajes. • Las dos claves pertenecen a la misma persona que ha

enviado el mensaje, una clave es pública y se puede entregar a cualquier persona, la otra clave es privada y el propietario debe guardarla de modo que nadie tenga acceso a ella.

Page 14: Desarrollo de aplicaciones en la nube

Mantenimiento de aplicaciones en OpenShift

• Como desarrollador de OpenShift se tiene la necesidad de realizar cambios en el código de la aplicación.

• OpenShift emplea Git para dar mantenimiento a las aplicaciones. Esta herramienta tiene la ventaja de que no requiere una presencia en línea continua. Es posible realizar cambios al código de una aplicación en una maquina local y posteriormente llevar esos cambios a la plataforma OpenShift.

• El código de cada aplicación en OpenShift tiene su propio repositorio Git al que solo un usuario autenticado puede acceder y clonar en su máquina local.

ssh://[email protected]/~/git/apptest.git/Pass this URL to 'git clone' to copy the repository locally.

Page 15: Desarrollo de aplicaciones en la nube

Git Control de versiones• Git es un software de control de versiones cuyo propósito

es administrar ágilmente los cambios en el código de una aplicación y poder revertirlos.

• Emplea el modelo distribuido donde cada desarrollador trabaja directamente con su repositorio local, y los cambios se comparten entre repositorios en un paso posterior.

Page 16: Desarrollo de aplicaciones en la nube

Git Secciones principales• El directorio de Git (Repository) donde se almacenan los

metadatos y la base de datos de objetos del proyecto. Es la parte más importante de Git, y es lo que se copia cuando se clona un repositorio desde otra computadora.

• El directorio de trabajo (Working), es una copia de una versión del proyecto. Estos archivos se sacan de la base de datos comprimida en el directorio de Git, y se colocan en disco para que se puedan usar o modificar.

• El área de preparación (Staging) es un archivo, generalmente contenido en el directorio de Git, que almacena información acerca de lo que va a ir en la próxima confirmación. A veces se le denomina índice (“index”), pero se está convirtiendo en estándar el referirse a ella como el área de preparación.

Page 17: Desarrollo de aplicaciones en la nube

Git Estado de los archivos• Git tiene tres estados principales en los que se pueden

encontrar los archivos: • Confirmado (committed) los datos están almacenados de manera

segura en la base de datos local.• Modificado (modified), se ha modificado un archivo pero todavía no

se ha confirmado en la base de datos.• Preparado (staged), se ha marcado un archivo modificado en su

versión actual para que vaya en la próxima confirmación.

Page 18: Desarrollo de aplicaciones en la nube

Git Flujo de trabajo local1. Modificar una serie de archivos en el directorio de trabajo (edit).2. Preparar los archivos, añadiéndolos al área de preparación (add).3. Confirmar los cambios, toma los archivos tal y como están en el

área de preparación y almacena esa copia instantánea de manera permanente en el directorio de Git (commit).

Page 19: Desarrollo de aplicaciones en la nube

Git Flujo de trabajo remoto• Los repositorios remotos son versiones del proyecto que

están hospedadas en Internet generalmente con permisos de solo lectura o de lectura y escritura.

• Cuando el proyecto local se encuentra en un estado que se desea compartir se envía al repositorio remoto (push).

• También es posible recuperar la información del servidor remoto (fetch-checkout o pull).

Page 20: Desarrollo de aplicaciones en la nube

Git y Openshift

Pull

Mi aplicación en la nube

Mantenimiento de mi aplicación en PC, MAC o Móvil

Page 21: Desarrollo de aplicaciones en la nube

Algo mas sobre Git, las ramas• Los flujos de trabajo pueden operar sobre distintas ramas, la

rama por defecto en Git es master.• En cada confirmación de cambios (commit), la rama de

trabajo ira avanzando.• Pueden crearse nuevas ramas (branch).• HEAD es un apuntador que señala sobre que rama estamos

trabajando, siempre apunta al ultimo commit de la rama.

HEAD

Page 22: Desarrollo de aplicaciones en la nube

Git Comandos básicos• Clona un repositorio remoto

git clone username@host:/path/to/repository • Registra cambios (añadirlos al Index)

git add <filename>• Confirma cambios

git commit -m "Commit message"• Enviar cambios a repositorio remoto

git push origin master• Actualiza repositorio local al commit más nuevo, baja y

fusiona los cambios remotosgit pull

Page 23: Desarrollo de aplicaciones en la nube

Git Comandos básicos• Crea nueva rama

git branch <name> • Para cambiarse de una rama a otra

git checkout <branch>• Fusiona otra rama a la rama activa “Git intenta fusionar

automáticamente los cambios”git merge <branch>

• Revisión de diferencias entre ramas git diff <source_branch> <target_branch>

• Ver historial del proyecto con todo y ramasgit log

Page 24: Desarrollo de aplicaciones en la nube

DESARROLLO DE APLICACIONES EN LA NUBE I

FIN DE ESTA PARTE

GLOSARIO DE TÉRMINOS