SlideShare uma empresa Scribd logo
1 de 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
Agenda

1. Python
2. Entorno
3. Django
4. Despliegue en local
5. Despliegue en la nube
6. Heroku
7. Instant Servers
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.
.
Virtualenv

Virtualenv es una herramienta para crear entornos de Python aislados



Para crear un entorno virtual



$ Virtualenv venv
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
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
Django - startapp

Creamos una aplicación



$ python manage.py startapp purchases




purchases/
     __init__.py
     models.py
     tests.py
     views.py
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
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”)
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
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)),
)
Django - admin

Administración de la base de datos



$ editor models.py


admin.site.register(BVApp)
admin.site.register(Purchase)
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.")
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))
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 %}
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)
Bluevia - Pagos

Flujo de pago de Bluevia




1. Autorización + callback (Oauth like)

2. Invocación del pago

3. Status (opcional)
Bluevia - Pagos

Autorización




$ editor views.py

•   Autorización  purchase

•   Callback  authorized

•   Invocación del pago  authorized
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.
¿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.
IaaS: Infraestructura como
                       Servicio (Instant Servers)




Other details
Including date etc.
                                                    PaaS e IaaS




                          Servicio (Heroku)
                       PaaS: Plataforma como
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)
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 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
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.
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.
Credits



•   www.python.org/
•   www.djangoproject.com/
•   foundation.zurb.com/
•   www.heroku.com
•   www.instantservers.es
•   www.bluevia.com
Preguntas?




@borjaguardiola
borja@tid.es
Bluevia.com

Mais conteúdo relacionado

Destaque

The 2015 U.S. Mobile App Report - COMSCORE
The 2015 U.S. Mobile App Report - COMSCOREThe 2015 U.S. Mobile App Report - COMSCORE
The 2015 U.S. Mobile App Report - COMSCORE
Romain Fonnier
 

Destaque (20)

Innvovation Security Day Metashield
Innvovation Security Day MetashieldInnvovation Security Day Metashield
Innvovation Security Day Metashield
 
Innovation Security Day FAAST
Innovation Security Day FAASTInnovation Security Day FAAST
Innovation Security Day FAAST
 
Raquel Pinillos, Congreso DEC. Informe sobre nivel de la "operativización" d...
Raquel Pinillos, Congreso DEC.  Informe sobre nivel de la "operativización" d...Raquel Pinillos, Congreso DEC.  Informe sobre nivel de la "operativización" d...
Raquel Pinillos, Congreso DEC. Informe sobre nivel de la "operativización" d...
 
Social Engagement
Social EngagementSocial Engagement
Social Engagement
 
The 2015 U.S. Mobile App Report - COMSCORE
The 2015 U.S. Mobile App Report - COMSCOREThe 2015 U.S. Mobile App Report - COMSCORE
The 2015 U.S. Mobile App Report - COMSCORE
 
Ponencia Andrés Laseca en el evento Cloud Media de Telefónica
Ponencia Andrés Laseca en el evento Cloud Media de TelefónicaPonencia Andrés Laseca en el evento Cloud Media de Telefónica
Ponencia Andrés Laseca en el evento Cloud Media de Telefónica
 
Análisis heart bleed
Análisis heart bleedAnálisis heart bleed
Análisis heart bleed
 
Una completa y pionera guía sobre Bitcoin, la moneda virtual
Una completa y pionera guía sobre Bitcoin, la moneda virtualUna completa y pionera guía sobre Bitcoin, la moneda virtual
Una completa y pionera guía sobre Bitcoin, la moneda virtual
 
Informe Ostelea Turismo Colaborativo 2015
Informe  Ostelea Turismo Colaborativo 2015Informe  Ostelea Turismo Colaborativo 2015
Informe Ostelea Turismo Colaborativo 2015
 
Gamification in 2012: Trends in Consumer and Enterprise Markets with Metrics
Gamification in 2012: Trends in Consumer and Enterprise Markets with MetricsGamification in 2012: Trends in Consumer and Enterprise Markets with Metrics
Gamification in 2012: Trends in Consumer and Enterprise Markets with Metrics
 
Resultados Proyecto Valcronic presentados en Congreso Crónicos 2014. Más info...
Resultados Proyecto Valcronic presentados en Congreso Crónicos 2014. Más info...Resultados Proyecto Valcronic presentados en Congreso Crónicos 2014. Más info...
Resultados Proyecto Valcronic presentados en Congreso Crónicos 2014. Más info...
 
Predicciones cloud Telefónica para 2016
Predicciones cloud Telefónica para 2016Predicciones cloud Telefónica para 2016
Predicciones cloud Telefónica para 2016
 
Observatorio de Redes Sociales: 4ª ola
Observatorio de Redes Sociales: 4ª olaObservatorio de Redes Sociales: 4ª ola
Observatorio de Redes Sociales: 4ª ola
 
Cloud Híbrida de Telefónica
Cloud Híbrida de TelefónicaCloud Híbrida de Telefónica
Cloud Híbrida de Telefónica
 
Ponencia Datos abiertos en educación SIMO Educación 2014. Más información sob...
Ponencia Datos abiertos en educación SIMO Educación 2014. Más información sob...Ponencia Datos abiertos en educación SIMO Educación 2014. Más información sob...
Ponencia Datos abiertos en educación SIMO Educación 2014. Más información sob...
 
Infraestructura para big data Telefónica
Infraestructura para big data TelefónicaInfraestructura para big data Telefónica
Infraestructura para big data Telefónica
 
Netflix on Cloud - combined slides for Dev and Ops
Netflix on Cloud - combined slides for Dev and OpsNetflix on Cloud - combined slides for Dev and Ops
Netflix on Cloud - combined slides for Dev and Ops
 
State of Bitcoin Q2 2015
State of Bitcoin Q2 2015State of Bitcoin Q2 2015
State of Bitcoin Q2 2015
 
iPads on your network? Take Control with Unified Policy and Management
iPads on your network? Take Control with Unified Policy and ManagementiPads on your network? Take Control with Unified Policy and Management
iPads on your network? Take Control with Unified Policy and Management
 
El estado del arte de la movilidad en la empresa española 2013
El estado del arte de la movilidad en la empresa española 2013El estado del arte de la movilidad en la empresa española 2013
El estado del arte de la movilidad en la empresa española 2013
 

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

Descubriendo Windows Azure Platform 16-02-2011
Descubriendo Windows Azure Platform 16-02-2011Descubriendo Windows Azure Platform 16-02-2011
Descubriendo Windows Azure Platform 16-02-2011
Gisela Torres
 
Software Delta.Info
Software Delta.InfoSoftware Delta.Info
Software Delta.Info
inloac
 
Kumbia PHP Framework - Inicios, Presente y Futuro
Kumbia PHP Framework - Inicios, Presente y FuturoKumbia PHP Framework - Inicios, Presente y Futuro
Kumbia PHP Framework - Inicios, Presente y Futuro
Deivinson Tejeda
 

Semelhante a Aprende a crear y desplegar una aplicación de python que use APIs de BlueVia (20)

IaaS + PaaS Cloud Solutions
IaaS + PaaS Cloud Solutions IaaS + PaaS Cloud Solutions
IaaS + PaaS Cloud Solutions
 
Webinar Migración de Forms & Reports a Oracle Cloud
Webinar Migración de Forms & Reports a Oracle CloudWebinar Migración de Forms & Reports a Oracle Cloud
Webinar Migración de Forms & Reports a Oracle Cloud
 
Serverless Wars
Serverless WarsServerless Wars
Serverless Wars
 
Modelos de negocio en la nube
Modelos de negocio en la nubeModelos de negocio en la nube
Modelos de negocio en la nube
 
Usando azure para escalar tu producto
Usando azure para escalar tu productoUsando azure para escalar tu producto
Usando azure para escalar tu producto
 
Visual Studio 2010 Ligthswitch + AZURE + Zero Code
Visual Studio 2010 Ligthswitch + AZURE + Zero CodeVisual Studio 2010 Ligthswitch + AZURE + Zero Code
Visual Studio 2010 Ligthswitch + AZURE + Zero Code
 
Offering Cloud Solutions
Offering Cloud Solutions Offering Cloud Solutions
Offering Cloud Solutions
 
Microservicios con .NET
Microservicios con .NETMicroservicios con .NET
Microservicios con .NET
 
Cloud Computing - Gina Franco
Cloud Computing - Gina FrancoCloud Computing - Gina Franco
Cloud Computing - Gina Franco
 
Trabajo fin de master Dirección TI
Trabajo fin de master Dirección TITrabajo fin de master Dirección TI
Trabajo fin de master Dirección TI
 
Genesis Suite Server
Genesis Suite ServerGenesis Suite Server
Genesis Suite Server
 
Google Cloud Platform y Python
Google Cloud Platform y PythonGoogle Cloud Platform y Python
Google Cloud Platform y Python
 
Máquinas de estado con Logic App & Automate sobre CDS
Máquinas de estado con Logic App & Automate sobre CDSMáquinas de estado con Logic App & Automate sobre CDS
Máquinas de estado con Logic App & Automate sobre CDS
 
Descubriendo Windows Azure Platform 16-02-2011
Descubriendo Windows Azure Platform 16-02-2011Descubriendo Windows Azure Platform 16-02-2011
Descubriendo Windows Azure Platform 16-02-2011
 
Software Delta.Info
Software Delta.InfoSoftware Delta.Info
Software Delta.Info
 
Despliegue de aplicaciones OS en entornos Cloud Computing con Bitnami- OpenEx...
Despliegue de aplicaciones OS en entornos Cloud Computing con Bitnami- OpenEx...Despliegue de aplicaciones OS en entornos Cloud Computing con Bitnami- OpenEx...
Despliegue de aplicaciones OS en entornos Cloud Computing con Bitnami- OpenEx...
 
Kumbia PHP Framework - Inicios, Presente y Futuro
Kumbia PHP Framework - Inicios, Presente y FuturoKumbia PHP Framework - Inicios, Presente y Futuro
Kumbia PHP Framework - Inicios, Presente y Futuro
 
Descubriendo windows azure
Descubriendo windows azureDescubriendo windows azure
Descubriendo windows azure
 
Apuntes entorno cliente servidor
Apuntes entorno cliente   servidorApuntes entorno cliente   servidor
Apuntes entorno cliente servidor
 
NubeAzure.pdf
NubeAzure.pdfNubeAzure.pdf
NubeAzure.pdf
 

Mais de BlueVia

China Unicom presentation from BlueVia's #MWC 2012 event
China Unicom presentation from BlueVia's #MWC 2012 eventChina Unicom presentation from BlueVia's #MWC 2012 event
China Unicom presentation from BlueVia's #MWC 2012 event
BlueVia
 
Developing network-friendly-applications
Developing network-friendly-applicationsDeveloping network-friendly-applications
Developing network-friendly-applications
BlueVia
 
Connfu Adhearsion
Connfu AdhearsionConnfu Adhearsion
Connfu Adhearsion
BlueVia
 
BlueVia Business Models
BlueVia Business ModelsBlueVia Business Models
BlueVia Business Models
BlueVia
 
Enrich your Super Apps with BB6 and BlueVia APIs
Enrich your Super Apps with BB6 and BlueVia APIsEnrich your Super Apps with BB6 and BlueVia APIs
Enrich your Super Apps with BB6 and BlueVia APIs
BlueVia
 

Mais de BlueVia (15)

China Unicom presentation from BlueVia's #MWC 2012 event
China Unicom presentation from BlueVia's #MWC 2012 eventChina Unicom presentation from BlueVia's #MWC 2012 event
China Unicom presentation from BlueVia's #MWC 2012 event
 
Developing network-friendly-applications
Developing network-friendly-applicationsDeveloping network-friendly-applications
Developing network-friendly-applications
 
Connfu Adhearsion
Connfu AdhearsionConnfu Adhearsion
Connfu Adhearsion
 
Facetones Case Study
Facetones Case StudyFacetones Case Study
Facetones Case Study
 
BlueVia Marketing Toolkit
BlueVia Marketing ToolkitBlueVia Marketing Toolkit
BlueVia Marketing Toolkit
 
BlueVia Business Models
BlueVia Business ModelsBlueVia Business Models
BlueVia Business Models
 
BlueVia for Telco 2.0
BlueVia for Telco 2.0BlueVia for Telco 2.0
BlueVia for Telco 2.0
 
BlueVia SDK for .NET Overview
BlueVia SDK for .NET OverviewBlueVia SDK for .NET Overview
BlueVia SDK for .NET Overview
 
Enrich your Super Apps with BB6 and BlueVia APIs
Enrich your Super Apps with BB6 and BlueVia APIsEnrich your Super Apps with BB6 and BlueVia APIs
Enrich your Super Apps with BB6 and BlueVia APIs
 
Text Deck Case Study
Text Deck Case StudyText Deck Case Study
Text Deck Case Study
 
GoGoStat Connect Case Study
GoGoStat Connect Case StudyGoGoStat Connect Case Study
GoGoStat Connect Case Study
 
BlueVia Developer Payment Guide
BlueVia Developer Payment GuideBlueVia Developer Payment Guide
BlueVia Developer Payment Guide
 
Movistar developers platform está cambiando
Movistar developers platform está cambiandoMovistar developers platform está cambiando
Movistar developers platform está cambiando
 
O2 Litmus is Changing: Find out about BlueVia
O2 Litmus is Changing: Find out about BlueViaO2 Litmus is Changing: Find out about BlueVia
O2 Litmus is Changing: Find out about BlueVia
 
BlueVia overview
BlueVia overviewBlueVia overview
BlueVia overview
 

Último

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Último (12)

Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 

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
  • 2. Agenda 1. Python 2. Entorno 3. Django 4. Despliegue en local 5. Despliegue en la nube 6. Heroku 7. Instant Servers
  • 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
  • 7. Django - startapp Creamos una aplicación $ python manage.py startapp purchases purchases/ __init__.py models.py tests.py views.py
  • 8. 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
  • 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”)
  • 10. 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
  • 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)
  • 18. Bluevia - Pagos Autorización $ editor views.py • Autorización  purchase • Callback  authorized • Invocación del pago  authorized
  • 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.
  • 27. Credits • www.python.org/ • www.djangoproject.com/ • foundation.zurb.com/ • www.heroku.com • www.instantservers.es • www.bluevia.com