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

2,535 views

Published on

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

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,535
On SlideShare
0
From Embeds
0
Number of Embeds
17
Actions
Shares
0
Downloads
20
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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

  1. 1. Aprende a crear y desplegaruna aplicación de python queuse APIs de BlueViaBorja Guardiola – 8 Nov 2012@bluevia_es@borjaguardiolaBorja at tid.es
  2. 2. Agenda1. Python2. Entorno3. Django4. Despliegue en local5. Despliegue en la nube6. Heroku7. Instant Servers
  3. 3. 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..
  4. 4. VirtualenvVirtualenv es una herramienta para crear entornos de Python aisladosPara crear un entorno virtual$ Virtualenv venv
  5. 5. 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
  6. 6. 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
  7. 7. Django - startappCreamos una aplicación$ python manage.py startapp purchasespurchases/ __init__.py models.py tests.py views.py
  8. 8. 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
  9. 9. 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”)
  10. 10. 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
  11. 11. 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)),)
  12. 12. Django - adminAdministración de la base de datos$ editor models.pyadmin.site.register(BVApp)admin.site.register(Purchase)
  13. 13. 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.")
  14. 14. 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))
  15. 15. 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 %}
  16. 16. 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)
  17. 17. Bluevia - PagosFlujo de pago de Bluevia1. Autorización + callback (Oauth like)2. Invocación del pago3. Status (opcional)
  18. 18. Bluevia - PagosAutorización$ editor views.py• Autorización  purchase• Callback  authorized• Invocación del pago  authorized
  19. 19. 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.
  20. 20. ¿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.
  21. 21. IaaS: Infraestructura como Servicio (Instant Servers)Other detailsIncluding date etc. PaaS e IaaS Servicio (Heroku) PaaS: Plataforma como
  22. 22. 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)
  23. 23. 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
  24. 24. 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
  25. 25. 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.
  26. 26. 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.
  27. 27. Credits• www.python.org/• www.djangoproject.com/• foundation.zurb.com/• www.heroku.com• www.instantservers.es• www.bluevia.com
  28. 28. Preguntas?@borjaguardiolaborja@tid.esBluevia.com

×