desarrollo de aplicaciones en la nube
TRANSCRIPT
DESARROLLO DE APLICACIONES EN LA NUBE I
OpenShift de Red Hat
GLOSARIO DE TÉRMINOS
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.
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.
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.
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.
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.
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”.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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).
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).
Git y Openshift
Pull
Mi aplicación en la nube
Mantenimiento de mi aplicación en PC, MAC o Móvil
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
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
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
DESARROLLO DE APLICACIONES EN LA NUBE I
FIN DE ESTA PARTE
GLOSARIO DE TÉRMINOS