Aprende a crear y desplegaruna aplicación de python queuse APIs de BlueViaBorja Guardiola – 8 Nov 2012@bluevia_es@borjagua...
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 favo...
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...
Django - createprojectDjango es un framework de desarrollo web de código abierto, escrito enPython, que cumple en cierta m...
Django - startappCreamos una aplicación$ python manage.py startapp purchasespurchases/     __init__.py     models.py     t...
Django – models.pyActualizamos el modelo$ editor models.pyclass Product(models.Model):   name = models.CharField(max_lengt...
Django – models.pyJugando con el API$ python manage.py shell    from purchases.models import Product    Product.objects.al...
Django – settings.pyConfiguración del proyectoSTATICFILES_DIRS = (    os.path.dirname(os.path.realpath(__file__))+"/../sta...
Django - urlsDeclaración de urls del proyecto. Es una “tabla de contenidos” del proyecto.Las urls tienen la forma:       (...
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. ...
Django - templatesInterfaz de la aplicación (vistas). Html con etiquetas especiales.$ editor settings.pyTEMPLATE_DIRS = ( ...
Django - templatesInterfaz de la aplicación (vistas). Html con etiquetas especiales.$ editor store.html{% if purchase_list...
BlueviaBluevia es la iniciativa de desarrolladores de Telefónica y Telenor, que ofreceprincipalmente APIs de pagos y comun...
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  ...
Desplegar en CloudLos clientes tienen nuevas necesidades que las empresas digitales pueden satisfaceraprovechando las vent...
¿Por qué Cloud Pública?Condicionantes de los                         Ventajas de la Cloudemprendedores digitales          ...
IaaS: Infraestructura como                       Servicio (Instant Servers)Other detailsIncluding date etc.               ...
Heroku deployPaaS que soporta Ruby, Java, Node.js, Scala, Clojure and PythonBest practices de www.12factor.netPasos:•   Cr...
Heroku deploy (II)Pasos:•   Promote DB – Establece BBDD por defecto (heroku pg:promote    HEROKU_POSTGRESQL_AQUA)•   Syncd...
Instant Servers deployIaaS, el servicio de Cloud Pública de Telefónica para las start-ups digitalesOfrece provisión inmedi...
Comparativa PaaS vs. IaaSPaaS: Plataforma como                              IaaS: Infraestructura comoServicio (Heroku)   ...
Instant Servers                                   w w w. I n s t a n t S e r v e r s . e s                         Soport...
Credits•   www.python.org/•   www.djangoproject.com/•   foundation.zurb.com/•   www.heroku.com•   www.instantservers.es•  ...
Preguntas?@borjaguardiolaborja@tid.esBluevia.com
Próxima SlideShare
Cargando en…5
×

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

2.352 visualizaciones

Publicado el

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

Publicado en: Tecnología
0 comentarios
2 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

Sin descargas
Visualizaciones
Visualizaciones totales
2.352
En SlideShare
0
De insertados
0
Número de insertados
28
Acciones
Compartido
0
Descargas
20
Comentarios
0
Recomendaciones
2
Insertados 0
No insertados

No hay notas en la diapositiva.

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

×