Desplegando aplicaciones Symfony en Heroku
Parte 1
Introducción al "Cloud" de Heroku
Gracias :)
About
Andrés Fernández
CTO & desarrollador & cofundador en Cloudman Labs
andres.fernandez@cloudmanlabs.com
@andresfgm84
Desarrollo de software en nube
Parte 1
Introducción al "Cloud" de Heroku
Andrés Fernández
@andresfgm84
4-11-2015
¿Cómo hemos llegado hasta aquí?
Hacemos SaaS
Al principio de los tiempos...
...utilizábamos servidores dedicados
Preparar el entorno
- Sistema operativo (usuarios, permisos, directorios, ...)
- Instalación y configuración de dependencias (Apache, PHP, MySQL, ...)
- Configuración para producción (dominio, ssl, ...)
y desplegar
con git, ftp, ...
- Costoso de configurar
- Dificilmente escalable
- Dificilmente replicable
- Despliegue "manual" (Git, Capistrano u otro...)
- Sistema de backups
- ...
Un momento ...
Y además ...
El problema de la erosión
Software erosion
- Actualizaciones de seguridad (SO, Apache, MySQL, SSL, PHP, ...)
- El disco duro del servidor se ha llenado con archivos de log
- Los procesos de la aplicación se han colgado o han fallado y hay que reiniciarlos manualmente (Por ejemplo "memory leaks")
- Un fallo de hardware hace que se caiga la aplicación
también conocido como "software rot"
¿Y qué hacemos?
¡Subámonos a la nube!
Cloud computing
Modelos de servicio
Probemos con IaaS
Amazon Web Services
- Permite configurar tu infraestructura en la nube
- Tremendamente potente
- Todo es escalable
pero...
Seguimos teniendo que configurar la infraestructura, el entorno, el sistema de despliegues
y...
- Actualizaciones de seguridad (SO, Apache, MySQL, SSL, PHP, ...)
El disco duro del servidor se ha llenado con archivos de log- Los procesos de la aplicación se han colgado o han fallado y hay que reiniciarlos manualmente
Un fallo de hardware hace que se caiga la app
Sólo hemos solucionado el problema de la erosión en parte...
¿Y el PaaS?
¿Qué es eso?
Según la Wikipedia...
"Es una categoría de servicios de computación en nube (Cloud computing) que provee una plataforma que permite desarrollar, ejecutar y administrar aplicaciones web, sin la complejidad de construir y mantener una infraestrucura [...]"
Platform as a Service
Algunos PaaS
¿Por qué Heroku?
En ese momento era uno de los pocos PaaS que soportaba Symfony
Nos enteramos de su existenacia porque en la propia comunidad de Symfony se hablaba de esta plataforma
- Uno de los primeros PaaS
- Fundado en 2007 por James Lindenbaum, Adam Wiggins y Orion Henry
- Al principio sólo contemplaba Ruby
- Adquirido por Salesforce en 2010
Un poco de historia
¿Cómo funciona Heroku?
Dynos
+
Add-ons
¿Qué es una Dyno?
"Contenedor Unix virtualizado, aislado, ligero y seguro que contiene la aplicación y provee un entorno para ejecutarla"
¿Qué es un add-on?
Son servicios de Heroku o de terceros que extienden la funcionalidad base de la plataforma, totalmente gestionados y escalables
Algunos ejemplos
- Bases de datos: Postgre, MySQL, MongoDB, Redis, ...
- Monitorizar: Blackfire.io, New Relic, ...
- Mail / SMS: Mandrill, Mailgun, ...
- Cache: Memcached, Iron cache, ...
- Búsqueda: Elastic search, ...
- Mensajes y colas: RabbitMQ, IronMQ
- ...
Precios
Un momento,
esto no es tan fácil ...
Arquitectura de las aplicaciones Heroku
The Twelve-Factor App
Documento escrito por el cofundador Adam Wiggins
The Twelve-Factor App
1. Codebase
2. Dependencies
3. Config
4. Backing Service
5. Build, release, run
6. Processes
7. Port binding
8. Concurrency
9. Disposability
10. Dev/Prod parity
11. Logs
12. Admin processes
Ahora tenemos una aplicación robusta, auto-escalable y tolerante a fallos.
Y con un sistema de despliegue seguro y automático.
y además ...
Heroku se encarga de la erosión ...
Actualizaciones de seguridad (SO, Apache, MySQL, SSL, PHP, ...)El disco duro del servidor se ha llenado con archivos de logLos procesos de la aplicación se han colgado o han fallado y hay que reiniciarlos manualmenteUn fallo de hardware hace que se caiga la app
Y por eso vivimos mucho más tranquilos ...
¿En qué se diferencia Heroku respecto a hosting tradicional?
-
Se centra en la aplicación y no en la infraestructura
-
Es un entorno dinámico y distribuido
-
Utiliza un modelo de ejecución basado en procesos
- Hace cumplir una separación estricta entre la aplicación y sus dependencias.
En resumen
Conclusiones
Apreciamos el valor de una buena infraestructura "cloud"
Conclusiones
Sabemos que no somos expertos ni tenemos recursos para gestionar nuestra propia infraestructura de forma adecuada
Conclusiones
Nos centramos en nuestro "core business", que es hacer aplicaciones de calidad, y delegamos la gestión de la infraestructura a un PaaS
Gracias por vuestra atención
¿Alguna pregunta?
Desplegando aplicaciones Symfony en Heroku
By Andrés Fernández García
Desplegando aplicaciones Symfony en Heroku
Cylicon Valley 4-11-2015
- 5,426