bottle_openshiftEn las entradas anteriores, hemos visto como crear una aplicación web con python usando el framework Bottle (1ª parte y 2ª parte). En la entrada actual vamos a estudiar como desplegar una aplicación bottle en una infraestructura PaaS, concretamente en OpenShift.

De forma resumida el procedimiento será crear una aplicación en OpenShift con el componente (cartridge) python 2.7, e inicializar esta aplicación con la librería de bottle y una distribución del framework configurado para que funcione en OpenShift.

Continue reading

logo_nav2

En la entrada anterior vimos una introducción al web framework Bottle para la realización de páginas web usando el lenguaje python. En esta entrada vamos a ver una de las herramientas más flexibles que nos ofrece este framework: las plantillas. Bottle nos ofrece un motor de plantillas que nos facilita la creación de páginas web. A las plantillas podemos enviar información y gestionarla con código python. Para estudiar el uso de plantillas vamos a ver un ejemplo donde veremos los distintos conceptos relacionados con las plantillas.

from bottle import Bottle,route,run,request,template
@route('/hello')
@route('/hello/')
@route('/hello/<name>')
def hello(name='Mundo'):
    return template('template_hello.tpl', nombre=name)
@route('/suma/<num1>/<num2>')
def suma(num1,num2):
    return template('template_suma.tpl',numero1=num1,numero2=num2)
@route('/lista')
def lista():
    lista=["Manzana","Platano","Naranja"]
    return template('template_lista.tpl',lista=lista)
@route('/dict')
def dict():
    datos={"Nombre":"Jose","Telefono":645223344}
    return template('template_dict.tpl',dict=datos)
run(host='0.0.0.0', port=8080)

Continue reading

logo_nav

En la entrada anterior vimos como crear aplicaciones web en python. Un framework para aplicaciones web es un framework diseñado para apoyar el desarrollo de sitios web dinámicos, aplicaciones web y servicios web. Y un framework es un conjunto de herramientas y programas que nos facilitan la realización y el desarrollo de un producto software. En este artículo vamos a usar un web framework escrito en Python para desarrollar páginas web. Vamos a usar el framework bottle que podemos definir cómo indica en su página oficial:

Bottle is a fast, simple and lightweight WSGI micro web-framework for Python.

 Instalación de Bottle

Para obtener la última versión del framework vamos a usar la utilidad pip que nos permita la instalación de aplicaciones python:

# apt-get install python-pip
# pip install bottle

Continue reading

webp5Aunque de forma general se utilizan distintos framework (el más popular es django) para el desarrollo de aplicaciones web con Python. En este artículo voy a introducir los conceptos necesarios para crear una página web desarrollada con python, servida por un servidor web Apache, sin utilizar ningún framework. Para ello es necesario conocer el concepto de WSGI Web Server Gateway Interface, que es una especificación de una interface simple y universal entre los servidores web y las aplicaciones web o frameworks desarrolladas con python.

Nuestro objetivo es configurar el servidor apache para que puede comunicarse con una aplicación WSGI  y de esta manera, podamos servir páginas desarrolladas en python.

Continue reading

Los pasados 16 y 17 de febrero,participé junto a mi compañero Alberto Molina, en la Segunda Edición de las Jornadas de Informática organizadas por la Universidad de Almería, en concreto, por el Departamento de Informática de la UAL y la Escuela Politécnica Superior y Facultad de Ciencias Experimentales, y cuyo responsable ha sido el profesor Manuel Torres.

Aunque el principal motivo de la invitación era realizar una presentación para los alumnos y profesores de nuestra experiencia en el mundo del Cloud Compuntig y en especial con OpenStack, hemos tenido la oportunidad de compartir e intercambiar experiencias, sobre temas técnicos y cuestiones referente a la educación y a la metodología en el aula, lo que resultó aún más interesante a mi juicio. He de expresar, de una forma enérgica, mi sorpresa ante el interés mostrado, por un conjunto de profesores, por saber cómo funcionamos y cómo planteamos nuestras clases en el nivel educativo de la Formación Profesional.

Sin duda, haría falta constituir distintas plataformas para que los profesores de los niveles educativos de bachillerato, formación profesional y universitarios, pudieran tener esta gran oportunidad de intercambio de experiencias, que seguro sería muy enriquecedor para la calidad de la educación que pretendemos alcanzar todos los agentes educativos. Como hemos recordado más de una vez durante estos dos días, los perfiles de los alumnos que acceden a los ciclos formativos de grado superior y a estudios universitarios son cada vez más parecidos, y las dificultades que nos encontramos en nuestra labor educativa, respetando la identidad y características propias de cada institución, son cada vez más similares, por lo que la solución a dichas dificultades debe ser parecida. Quiero agradecer desde aquí, a los profesores que hemos conocido en la UAL, por la invitación a participar en estas jornadas, y en especial al Director del Departamento de Informática, Manuel Torres, por su cercanía y por su interés en que participáramos y compartiésemos estos días, que sin ninguna duda, han sido muy enriquecedores.

Aquí os dejo la presentación que hemos utilizado para nuestra charla: Infraestructura en la nube con OpenStack.

índice

Entendiendo las bases de datos como una aplicación más cualquiera, y extendiendo el concepto de SaaS (software como servicio), se puede entender las DBaaS como una nueva manera de acceder al uso de una base de datos, respondiendo a los principios del cloud computing:

  • Vamos a tener disponible nuestro servicio, en nuestro caso, una base de datos, de forma automática y bajo demanda, es decir sin que ningún operador de la empresa que ofrece el servicio tenga que realizar ninguna operación para que el cliente obtenga el servicio.
  • La base de datos debe ser accesible desde internet.
  • Se puede ofrecer el servicio usando el modelo de recurso compartido, donde varios usuarios pueden estar compartiendo recursos, por lo tanto es necesario garantizar el aislamiento y la seguridad entre usuarios.
  • Elasticidad, que es la propiedad que me permite aumentar o disminuir la capacidad de mi recurso, mi base de datos, de forma automática y en cualquier momento.
  • El pago por uso.

Evidentemente a ser la base de datos un software, es necesario combinar los DBaaS con un PaaS o un IaaS para conseguir una infraestructura totalmente operativa. Los DBaaS ofrecen tanto bases de datos relacionales (MySql, PostgreSQL,..), como base de datos no relacionales o noSQL cómo Redis, CouchDB o MongoDB. Como ejemplo de empresas que ofrecen estos servicios tenemos Amazon, que ofrece Amazon DynamoDB o ClearDB que ofrece un servicio MySQL.

RedisLabs: Redis como DBaaS

Como vimos en el artículo anterior, Redis es una base de datos no relacional, que guarda la información en conjuntos clave-valor. La empresa RedisLabs nos ofrece Redis como DBaaS. Nos podemos dar de alta en la página y podemos obtener de forma gratuita a una instancia con una base de datos Redis con una limitación de 25 Mb de memoria y 10 conexiones simultaneas. Para empezar a trabajar con esta infraestructura es suficiente, si necesitamos más recursos podemos obtenerlos por una cuota mensual. Tras darte de alta en la página, puedes dar de alta una nueva base de datos con el plan gratuito, y puedes obtener el servicio de una nueva base de datos, como observamos en la siguiente imagen:

redis

En el parámetro Endpoint obtenemos la dirección de la instancia y el puerto al que nos tenemos que conectar. Además hemos configurado una contraseña para el acceso a nuestra base de datos, la puedes ver en el parámetro Redis Password. Usando por lo tanto un cliente de redis, podemos realizar la conexión a la base de datos y empezar a trabajar con ella:

# redis-cli -h pub-redis-99999.us-east-1-3.3.ec2.garantiadata.com -p 12345
pub-redis-99999.us-east-1-3.3.ec2.garantiadata.com:12345> AUTH la_contraseña
OK
pub-redis-99999.us-east-1-3.3.ec2.garantiadata.com:12345> SET usuario pepe
OK
pub-redis-99999.us-east-1-3.3.ec2.garantiadata.com:12345> GET usuario
"pepe"

Como siempre esto es sólo una introducción sobre DBaaS, si quieres seguir formándote sobre el tema, te recomiendo leer el artículo Dbaas, Database as a Service, una introducción usando Redis de J.J. Merelo.