28
Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia Borja Guardiola – 8 Nov 2012 @bluevia_es @borjaguardiola Borja at tid.es

Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

  • Upload
    bluevia

  • View
    1.914

  • Download
    0

Embed Size (px)

DESCRIPTION

Presentación para el workshop de App Circus de Madrid en noviembre 2012

Citation preview

Page 1: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

Borja Guardiola – 8 Nov 2012

@bluevia_es

@borjaguardiola

Borja at tid.es

Page 2: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

Agenda

1. Python

2. Entorno

3. Django

4. Despliegue en local

5. Despliegue en la nube

6. Heroku

7. Instant Servers

Page 3: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

Python

Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis muy limpia y que favorezca un código legible.

Características:• Multiparadigma ya que soporta orientación a objetos, programación

imperativa y, en menor medida, programación funcional.• Lenguaje interpretado• Usa tipado dinámico• Es fuertemente tipado• Multiplataforma..

Page 4: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

Virtualenv

Virtualenv es una herramienta para crear entornos de Python aislados

Para crear un entorno virtual

$ Virtualenv venv

Page 5: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

pip

Herramienta de instalación de paquetes de Python.

$ pip install –r requirements.txt

requirements:txt:- Django==1.4- httplib2==0.7.2- oauth2==1.5.211

Page 6: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

Django - createproject

Django es un framework de desarrollo web de código abierto, escrito en Python, que cumple en cierta medida el paradigma del Modelo Vista Controlador.

Creamos proyecto Django

$ python venv/lib/site-packages/django/bin/django-admin.py startproject bvstore$ python manage.py runserver 0.0.0.0:8000

bvstore/manage.pybvstore/

__init__.pysettings.pyurls.pywsgi.py

Page 7: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

Django - startapp

Creamos una aplicación

$ python manage.py startapp purchases

purchases/__init__.pymodels.pytests.pyviews.py

Page 8: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

Django – models.py

Actualizamos el modelo

$ editor models.py

class Product(models.Model): name = models.CharField(max_length=40) content_url = models.CharField(max_length=100) image_url = models.CharField(max_length=100) price = models.IntegerField() currency = models.CharField(max_length=5)

def __unicode__(self): return self.name + "-" + str(self.price) + " " + self.currency

$ python manage.py syncdb

Page 9: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

Django – models.py

Jugando con el API

$ python manage.py shell

from purchases.models import Product

Product.objects.all()

p = Product(name="La Roca",content_url="http://video.com/laroca",image_url="http://laroca.com/i

mg.jpg",price=3,currency="EUR")

p.save()

Product.objects.filter(name=“La Roca”)

Page 10: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

Django – settings.py

Configuración del proyecto

STATICFILES_DIRS = ( os.path.dirname(os.path.realpath(__file__))+"/../static",)

INSTALLED_APPS = ('bvstore.purchases',

)DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3',

'NAME': 'storeapp.database’, }}

Admin options

Page 11: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

Django - urls

Declaración de urls del proyecto. Es una “tabla de contenidos” del proyecto. Las urls tienen la forma:

(regular expression, Python callback function [, optional dictionary])

$ editor urls.py

from django.contrib import admin

admin.autodiscover()

urlpatterns = patterns('',url(r'^$', ‘purchases.views.home', name='home'),

url(r'^admin/doc/', include('django.contrib.admindocs.urls')),url(r'^admin/', include(admin.site.urls)),

)

Page 12: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

Django - admin

Administración de la base de datos

$ editor models.py

admin.site.register(BVApp)admin.site.register(Purchase)

Page 13: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

Django - views

Lógica de la aplicación (controlador):

$ editor views.py

def home(request): return HttpResponse("Hola mundo. Estás en la home.")

def movies(request): return HttpResponse("Hola mundo. Estás en la categoría de películas.")

Page 14: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

Django - templates

Interfaz de la aplicación (vistas). Html con etiquetas especiales.

$ editor settings.py

TEMPLATE_DIRS = (os.path.dirname(os.path.realpath(__file__))+"/templates“

)

$ editor views.py

return render_to_response('store.html',context_instance=RequestContext(request))

Page 15: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

Django - templates

Interfaz de la aplicación (vistas). Html con etiquetas especiales.

$ editor store.html

{% if purchase_list %}

<h6>Películas compradas</h6>

{% for p in purchase_list %}

<p>{{ p.product_name }}</p>

{% endfor %}

{% else %}

<h6>No hay ninguna compra realizada.</h6>

{% endif %}

Page 16: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

Bluevia

Bluevia es la iniciativa de desarrolladores de Telefónica y Telenor, que ofrece principalmente APIs de pagos y comunicaciones pero también otros productos y servicios que son de ayuda a los desarrolladores (ej. Instant Servers, Arduino)

Page 17: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

Bluevia - Pagos

Flujo de pago de Bluevia

1. Autorización + callback (Oauth like)

2. Invocación del pago

3. Status (opcional)

Page 18: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

Bluevia - Pagos

Autorización

$ editor views.py

• Autorización purchase

• Callback authorized

• Invocación del pago authorized

Page 19: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

Desplegar en Cloud

Other detailsIncluding date etc.

Los nuevos Clientes Siempre conectados a través de diferentes dispositivos

Son consumidores de información y servicios pero también creadores de contenidos

Los clientes tienen nuevas necesidades que las empresas digitales pueden satisfacer aprovechando las ventajas de la Cloud Pública.

Emprendedores digitales Ofrecen servicios a través de una o varias aplicaciones a sus clientes/usuarios (empresas o

particulares)

Los ingresos se generan al cobrar cuota por servicio, por publicidad o en modalidades mixtas «freemium»

La nube Servidores que alojan aplicaciones de las nuevas empresas para permitir que sus usuarios

puedan conectarse desde cualquier lugar y dispositivo

La «Cloud» pública: el modelo más eficiente para las start-ups

Page 20: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

¿Por qué Cloud Pública?

Other detailsIncluding date etc.

Sin inversiones, sin amortizaciones. Pago por horas de uso.

Proyectos que arrancan, con incertidumbre de futuro. Poco presupuesto en el arranque. Necesidad de variabilizar los costes.

Flexibilidad inmediata para crecer o decrecer y solo pagar por lo usado.

Demanda desconocida, muy poca al principio pero con crecimientos rápidos.

Provisión inmediata que permite tener las máquinas funcionando en minutos.

Entorno muy cambiante en el que solo los más ágiles triunfan.

Servicio gestionado por un experto. SLAs y disponibilidades de servicio.

Empresas muy pequeñas, los emprendedores deben enfocarse en su negocio y no preocuparse por lo que lo sustenta.

Condicionantes de los emprendedores digitales

Ventajas de la Cloud Pública

Page 21: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

PaaS e IaaS

Other detailsIncluding date etc.

PaaS: Plataforma com

o Servicio (H

eroku)

IaaS

: Inf

raes

truc

tura

com

o Se

rvic

io (I

nsta

nt S

erve

rs)

Page 22: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

Heroku deploy

PaaS que soporta Ruby, Java, Node.js, Scala, Clojure and Python

Best practices de www.12factor.net

Pasos:

• Creación de cuenta

• Heroku client

• Requirements.txt (psycopg2==2.4.5 dj-database-url==0.2.0)

• Procfile

• Crear aplicación (heroku apps:create circusapp -s cedar)

• Crear base de datos (add-on)

Page 23: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

Heroku deploy (II)

Pasos:

• Promote DB – Establece BBDD por defecto (heroku pg:promote HEROKU_POSTGRESQL_AQUA)

• Syncdb (heroku run python bvstore/manage.py syncdb)

• Despliegue git push (git push heroku master)

• Enjoy! http://circusapp.herokuapp.com/movies

Page 24: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

Instant Servers deploy

IaaS, el servicio de Cloud Pública de Telefónica para las start-ups digitalesOfrece provisión inmediata, total libertad de gestión de las diferentes máquinas, virtuales, pago por uso y alta disponibilidad y rendimiento

Pasos:

• Creación de cuenta

• Configuración clave ssh

• Copiar site

• Crear virtualenv (python virtualenv.py  --system-site-packages ~/projects/site/venv)

• Instalar dependencias (pip install -r requirements)

• Sincronizar BBDD

• Runserver y enjoy! http://81.45.18.53:8000/movies

Page 25: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

Comparativa PaaS vs. IaaS

Other detailsIncluding date etc.

Completamente flexible. Permite instalar cualquier cosa en la máquina.

Más barato en producción.

1 mes gratis sin límite de capacidad.

SLAs a nivel de máquina y servicio

Requiere más conocimientos y es necesario realizar más tareas de administración y configuración.

Sin entorno de desarrollo gratuito (máquina 0,5 gratis 6 meses próximamente)

(Se factura por máquina – 0,06$ máquina 1GB/hora)

Fácil y sencillo de usar. Se despliega una aplicación muy rápido.Entorno de desarrollo gratuito (1 hilo / 10.000 registros BD)SLAs a nivel de aplicación.

Menos flexible, tiene una serie de add-ons de pago pero no permite instalar software aparte.Más caro en producción.

(Se factura por hilos de ejecución – 0,05$ 1 hilo/hora)

PaaS: Plataforma como Servicio (Heroku)

IaaS: Infraestructura como Servicio (Instant Servers)

+

-

+

-

Page 26: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

Instant Servers

Other detailsIncluding date etc.

www. Ins tan tServers .es

Soporte en castellano Datos alojados en España o UK Calidad y niveles de servicio garantizados por contrato (99,9% de

disponibilidad trimestral por máquina con penalizaciones)

Tecnología 20-30% más potente

Page 27: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

Credits

• www.python.org/

• www.djangoproject.com/

• foundation.zurb.com/

• www.heroku.com

• www.instantservers.es

• www.bluevia.com

Page 28: Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia

Preguntas?

@[email protected]