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

http://12factor.net/

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 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

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?

Made with Slides.com