Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia
1. 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
3. 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.
.
4. Virtualenv
Virtualenv es una herramienta para crear entornos de Python aislados
Para crear un entorno virtual
$ Virtualenv venv
5. 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
6. 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.py
bvstore/
__init__.py
settings.py
urls.py
wsgi.py
9. 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”)
11. 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)),
)
12. Django - admin
Administración de la base de datos
$ editor models.py
admin.site.register(BVApp)
admin.site.register(Purchase)
13. 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.")
14. 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))
15. 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 %}
16. 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)
17. Bluevia - Pagos
Flujo de pago de Bluevia
1. Autorización + callback (Oauth like)
2. Invocación del pago
3. Status (opcional)
19. Desplegar en Cloud
Los clientes tienen nuevas necesidades que las empresas digitales pueden satisfacer
aprovechando 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 contenidos
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
Other details
Including date etc.
20. ¿Por qué Cloud Pública?
Condicionantes de los Ventajas de la Cloud
emprendedores digitales Pública
Proyectos que arrancan, con incertidumbre Sin inversiones, sin amortizaciones. Pago por
de futuro. Poco presupuesto en el arranque. horas de uso.
Necesidad de variabilizar los costes.
Demanda desconocida, muy poca al Flexibilidad inmediata para crecer o decrecer
principio 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 las
más ágiles triunfan. máquinas funcionando en minutos.
Empresas muy pequeñas, los Servicio gestionado por un experto. SLAs y
emprendedores deben enfocarse en su disponibilidades de servicio.
negocio y no preocuparse por lo que lo
sustenta.
Other details
Including date etc.
21. IaaS: Infraestructura como
Servicio (Instant Servers)
Other details
Including date etc.
PaaS e IaaS
Servicio (Heroku)
PaaS: Plataforma como
22. 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)
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. Instant Servers deploy
IaaS, el servicio de Cloud Pública de Telefónica para las start-ups digitales
Ofrece 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
25. Comparativa PaaS vs. IaaS
PaaS: Plataforma como IaaS: Infraestructura como
Servicio (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. 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 potente
Other details
Including date etc.