Plataformas Cloud: PaaS
VS
#devBurgos
Óscar Delgado
Carlos Pérez
Índice
● Quiénes somos
● Cloud Computing y PaaS
● Heroku
Intro
Terminología
DB
Precios
○
○
○
○
○ Workflow
● Openshift
Intro
Lenguajes, MW y FW
Terminología
Precios
○
○
○
○
○ Workflow
● Ejemplo con DB
● Trucos
● Usos - Problemas comunes
● Conclusiones
● Dudas y preguntas
Quiénes somos
Óscar Delgado
@ElOjcar
Carlos Pérez
@sabadow
Cloud Computing
Cloud Computing y PaaS
App Engine
Python, Java, PHP, Go
Azure
ASP.NET, PHP, Node.js, Python, Java
CloudBees
JVM: Java, Spring, JRuby, Grails, Scala, Groovy
Heroku
Ruby, Java, Node.js, Scala, Clojure, Python, PHP
OpenShift
Java, PHP, Node.js, Ruby, Python, Perl, Vert.x
Openshift
●
● Desde 2011
● Soporta:
○ Java, PHP, Node.js, Ruby, Python, Perl, Vert.x
○ MySQL, PostgreSQL, MongoDB, MS SQL Server
● La plataforma funciona sobre RHEL
Openshift
Lenguajes, Middleware y Frameworks “Out of the box” (I)
Openshift
Lenguajes, Middleware y Frameworks “Out of the box” (II)
Openshift
Lenguajes, Middleware y Frameworks “Out of the box” (III)
Openshift
Lenguajes, frameworks, middleware o cartuchos personalizados
Openshift
Terminología
● Cartridges (cartuchos): entornos de
ejecución que Openshift gestiona.
● Gears: contenedores donde se ejecutan los
más gears automáticamente (= escalar)
cartuchos.
○
○ Se puede configurar una aplicación para que use
3 tipos, según límite de RAM y disco.
Openshift
Tipos de planes
Openshift
Workflow
● Posibilidades
○ consola web + git
○ cliente rhc + git
○ JBoss Developer Studio (= Eclipse + conjunto plug-ins) (También IntelliJ)
○ Codenvy
● Pasos:
Instalar herramientas
1. Crear cuenta
2.
3. Preparar entorno
4. Crear aplicación
5. Hacer cambios y publicar
Openshift
Workflow
1. Crear cuenta
www.openshift.com →
Openshift
Workflow
2. Instalar herramientas
1. GIT, Ruby y rubygems
○ Según SO. En Mac OSX, git implica Ruby.
2. rhc
$ sudo gem install rhc
$ gem update rhc
Openshift
Workflow
3. Preparar entorno
$ rhc setup
Openshift
Workflow
4. Crear aplicación
$ rhc cartridge list
$ rhc app create holamundo jbossas-7
Openshift
Workflow
5. Hacer cambios y publicar
$ cd holamundo
$ vim src/main/webapp/index.html
(Realizamos un cambio y guardamos)
$ git commit -a -m "Primer cambio"
$ git push
Openshift
Workflow
(*) Otras opciones de rhc
Instrucciones y detalles de rhc
$ rhc
Ejemplo: logs desde el servidor
$ rhc tail -a holamundo
Heroku
● Desde 2007
● Propiedad de desde 2010
● Soporta:
○ Ruby, Java, Node.js, Python, PHP, Clojure, Scala
○ Postgresql
● La plataforma funciona sobre Ubuntu 10.04, con
Celadon Cedar como runtime stack.
● Más de 100 add-ons (gratuitos y de pago) para añadir
funcionalidad a las apps.
Heroku
Terminología
● App: conjunto de código fuente, frameworks
y dependencias que se desea ejecutar
○ El mecanismo dependencias varía dependiendo del
lenguaje.
● Dyno: contenedores que ejecutan un
comando o aplicación.
○
○ Se pueden configurar los tipos y cantidad de dynos
3 tipos, según límite de RAM y rendimiento CPU..
para cada aplicación.
● Procfile: fichero que define el comando a
ejecutar por el dyno.
○ Formato: <process type>: <command>
○ Solo el tipo web puede recibir tráfico HTTP.
Heroku
Persistencia
● En Heroku las BD usan PostgreSQL por defecto.
○ Al crearse algunos tipos de app también se crea una BD para ella.
○ Las BD están separadas de las apps.
○ Se accede con varibles de entorno: $DB_URL
● Se pueden añadir otros tipos de persistencia mediante Add-ons
○ MySQL, MongoDB, Memcache, SQLite, …
Heroku
Precios
● En Heroku los costes se calculan mensualmente (sin couta).
● Se paga por uso
○ Dynos por hora * precio dyno
○ Las BD tienen un coste mensual.
○ Los add-ons pueden tener un coste que es definido por el mismo.
● Existe una capa gratuita por app que incluye 750h del dyno 1X.
○ Podemos tener una app con un dyno ejecutandose todo el mes
(24h/dia * 31dias/mes = 744h/mes)
○ La DB Dev es gratuita (hasta 10K filas)
○ Los dynos 2X consumen el doble de tiempo (375h/mes), los PX 16
veces de tiempo (46h/mes).
Heroku
● Heroku toolbelt: herramientas de líneas de
comandos para gestionar heroku.
○ Heroku client
○ Git
○ Foreman
Workflow
● Pasos:
Instalar Heroku Toolbelt y configurar cuenta
1. Crear cuenta
2.
3. Crear repositorio git y añadir código
4. Crear aplicación heroku
5. Publicar cambios
Heroku
Workflow
1. Crear cuenta
www.heroku.com
Workflow
2. Herramientas y configuración
Heroku
● Instalar Heroku Toolbelt
https://toolbelt.heroku.com/
● Configurar heroku client:
$ heroku login
Heroku
Workflow
3. Crear repositorio Git y añadir código
$ git init
$ git add .
$ git commit -m “Initial commit”
Heroku
Workflow
4. Crear applicación Heroku
$ heroku create
Creating polar-chamber-3014... done, stack is cedar
http://polar-chamber-3014.herokuapp.com/ |
[email protected]:polar-chamber-3014.git
Git remote heroku added
Heroku
Workflow
5. Publicar cambios
$ git push heroku master
Initializing repository, done.
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
…
$ heroku open
Opening polar-chamber-3014... done
Heroku
Workflow
Comandos útiles
Info básica de la app:
$ heroku info
Variables de entorno en la app:
$ heroku config
Ver log de la app:
$ heroku logs [--tail]
Ejemplo con DB
○ Aplicación típica tiene Servidor y BD en el mismo Gear
■ Es posible separar la BD a otro Gear → ganar rendimiento
○ Aplicación típica utiliza un Gear
■ Es posible asignar un nº mayor de Gears para el Cartridge del servidor (escalar)
Trucos
● Openshift:
○ Hot deploy
○
○ Backup-Restore
Jenkins
● Heroku:
scalar dynos
○
○ modo mantenimiento
○
○
rollbacks
foreman
Usos - Problemas comunes
Usos:
●
●
●
●
servidor web estático
servidor subida imágenes
servidor REST para app móvil
servidor para webapp
Problemas comunes:
Idle time
●
● No poder aplicar escalado en existente (Openshift)
Opinión de los ponentes
Dudas y preguntas
¡Gracias!
#DevBurgos
http://devburgos.wordpress.com/
Comentarios de: Openshift vs Heroku (0)
No hay comentarios