Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 1,654 views

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

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

Statistics

Views

Total Views
1,654
Views on SlideShare
1,653
Embed Views
1

Actions

Likes
1
Downloads
11
Comments
0

1 Embed 1

https://twitter.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    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 Presentation Transcript

    • Aprende a crear y desplegaruna aplicación de python queuse APIs de BlueViaBorja Guardiola – 8 Nov 2012@bluevia_es@borjaguardiolaBorja at tid.es
    • Agenda1. Python2. Entorno3. Django4. Despliegue en local5. Despliegue en la nube6. Heroku7. Instant Servers
    • PythonPython es un lenguaje de programación interpretado cuya filosofía hacehincapié 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..
    • VirtualenvVirtualenv es una herramienta para crear entornos de Python aisladosPara crear un entorno virtual$ Virtualenv venv
    • pipHerramienta de instalación de paquetes de Python.$ pip install –r requirements.txtrequirements:txt: - Django==1.4 - httplib2==0.7.2 - oauth2==1.5.211
    • Django - createprojectDjango es un framework de desarrollo web de código abierto, escrito enPython, que cumple en cierta medida el paradigma del Modelo VistaControlador.Creamos proyecto Django$ python venv/lib/site-packages/django/bin/django-admin.py startproject bvstore$ python manage.py runserver 0.0.0.0:8000bvstore/ manage.py bvstore/ __init__.py settings.py urls.py wsgi.py
    • Django - startappCreamos una aplicación$ python manage.py startapp purchasespurchases/ __init__.py models.py tests.py views.py
    • Django – models.pyActualizamos el modelo$ editor models.pyclass 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
    • Django – models.pyJugando 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”)
    • Django – settings.pyConfiguración del proyectoSTATICFILES_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
    • Django - urlsDeclaració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.pyfrom django.contrib import adminadmin.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)),)
    • Django - adminAdministración de la base de datos$ editor models.pyadmin.site.register(BVApp)admin.site.register(Purchase)
    • Django - viewsLógica de la aplicación (controlador):$ editor views.pydef 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.")
    • Django - templatesInterfaz de la aplicación (vistas). Html con etiquetas especiales.$ editor settings.pyTEMPLATE_DIRS = ( os.path.dirname(os.path.realpath(__file__))+"/templates“)$ editor views.pyreturn render_to_response(store.html, context_instance=RequestContext(request))
    • Django - templatesInterfaz 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 %}
    • BlueviaBluevia es la iniciativa de desarrolladores de Telefónica y Telenor, que ofreceprincipalmente APIs de pagos y comunicaciones pero también otrosproductos y servicios que son de ayuda a los desarrolladores (ej. InstantServers, Arduino)
    • Bluevia - PagosFlujo de pago de Bluevia1. Autorización + callback (Oauth like)2. Invocación del pago3. Status (opcional)
    • Bluevia - PagosAutorización$ editor views.py• Autorización  purchase• Callback  authorized• Invocación del pago  authorized
    • Desplegar en CloudLos clientes tienen nuevas necesidades que las empresas digitales pueden satisfaceraprovechando las ventajas de la Cloud Pública.Los nuevos Clientes  Siempre conectados a través de diferentes dispositivos  Son consumidores de información y servicios pero también creadores de contenidosEmprendedores 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 Other details Including date etc.
    • ¿Por qué Cloud Pública?Condicionantes de los Ventajas de la Cloudemprendedores digitales PúblicaProyectos que arrancan, con incertidumbre Sin inversiones, sin amortizaciones. Pago porde futuro. Poco presupuesto en el arranque. horas de uso.Necesidad de variabilizar los costes.Demanda desconocida, muy poca al Flexibilidad inmediata para crecer o decrecerprincipio pero con crecimientos rápidos. y solo pagar por lo usado.Entorno muy cambiante en el que solo los Provisión inmediata que permite tener lasmás ágiles triunfan. máquinas funcionando en minutos.Empresas muy pequeñas, los Servicio gestionado por un experto. SLAs yemprendedores deben enfocarse en su disponibilidades de servicio.negocio y no preocuparse por lo que losustenta. Other details Including date etc.
    • IaaS: Infraestructura como Servicio (Instant Servers)Other detailsIncluding date etc. PaaS e IaaS Servicio (Heroku) PaaS: Plataforma como
    • Heroku deployPaaS que soporta Ruby, Java, Node.js, Scala, Clojure and PythonBest practices de www.12factor.netPasos:• 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)
    • 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
    • Instant Servers deployIaaS, el servicio de Cloud Pública de Telefónica para las start-ups digitalesOfrece provisión inmediata, total libertad de gestión de las diferentesmáquinas, virtuales, pago por uso y alta disponibilidad y rendimientoPasos:• 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
    • Comparativa PaaS vs. IaaSPaaS: Plataforma como IaaS: Infraestructura comoServicio (Heroku) Servicio (Instant Servers) Fácil y sencillo de usar. Se despliega Completamente flexible. Permite+ una aplicación muy rápido. + instalar cualquier cosa en la máquina. Entorno de desarrollo gratuito (1 Más barato en producción. hilo / 10.000 registros BD) 1 mes gratis sin límite de capacidad. SLAs a nivel de aplicación. SLAs a nivel de máquina y servicio - Menos flexible, tiene una serie de add-ons de pago pero no permite - Requiere más conocimientos y es necesario realizar más tareas de instalar software aparte. administración y configuración. Más caro en producción. Sin entorno de desarrollo gratuito (máquina 0,5 gratis 6 meses (Se factura por hilos de ejecución – próximamente) 0,05$ 1 hilo/hora) (Se factura por máquina – 0,06$ máquina 1GB/hora) Other details Including date etc.
    • Instant Servers w w w. I n s t a n t S e r v e r s . e s  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 potenteOther detailsIncluding date etc.
    • Credits• www.python.org/• www.djangoproject.com/• foundation.zurb.com/• www.heroku.com• www.instantservers.es• www.bluevia.com
    • Preguntas?@borjaguardiolaborja@tid.esBluevia.com