Plataforma Como Servicio: Heroku Vs Amazon Web Services

Plataforma como Servicio: Heroku vs Amazon Web Services

No te equivoques,  Amazon Web Services, AWS de ahora en adelante, y Heroku, no son dos plataformas como servicio, solo una de ellos pero ambas nos van a permitir implementar, supervisar y escalar aplicaciones web y móviles de manera completamente diferente. Pero antes de seguir hablando vamos a recopilar un poquito de información.

¿Que coño significa Plataforma como Servicio?

Según la Wikipedia una plataforma como servicio o PaaS es lo siguiente:

Es una categoría de servicios en la nube que permiten a los clientes desarrollar, ejecutar y manejar aplicaciones sin la complejidad de construir y mantener la infraestructura típica asociada con el desarrollo y lanzamiento de la aplicación.

Vamos que es tener, en cierto sentido, a un DevOps, o chico de sistemas, en tu equipo. Aunque algo mejor ya que no vas a tener que tratar con otra persona y ni te vas a comer la cabeza averiguando que falla cuando se romper algo.

Delegas esas tarea o al chico de sistemas o a una plataforma como servicio. ¿Que quieres hacer una build y desplegar? Pues la haces y te olvidas de compatibilidades, de versiones y librerías que fallan.

Así de primeras suena muy bonito y actualmente en el mercado tenemos varias soluciones que nos cubra esta necesidad. Desde soltar los billeticos y contratar a alguien que se encargue de la infraestructura o utilizar uno de estos servicios.

Debido a su baje coste y su fácil gestión si estas montando una startup vas a elegir casi el 100% de veces una de las siguientes plataforma como servicio pero… ¿Cuál es mejor?

Heroku contra Amazon Web Services

Vale, si echas un vistazo a los productos y servicios que te ofrece Amazon Web Service posiblemente te de un tabardillo debido a la gran cantidad de palabras y cosas que no te suenan hay para elegir. Es normal que te pierdas.

Diferentes Productos AWS

Diferentes Productos AWS

AWS ofrece una amplia cantidad de productos en los que elegir por lo que es difícil hacer una buena elección si no sabes ni de que va todo esto ni que solución es la idónea para tus necesidades.

Y ni siquiera has comenzado a considerar Heroku!

Pero bueno, relaja las tetas, no te agobies que es normal que te sientas abrumado. Vayamos poco a poco para ver las diferencias entre estas dos Plataformas como Servicio.

¿Qué Plataforma como Servicio escoger para mi Startup?

Si buscamos una comparativa de Heroku y Amazon Web Services veremos un montón de artículos que hablan de los beneficios de uno y de otro. Pero, ¿es lógica esta comparación? Intentar cruzar estos dos productos no tiene mucho sentido por las razones que iremos viendo a continuación.

AWS Elastic Compute Cloud

El Elastic Compute Cloud, también conocido como EC2 es una infraestructura como servicio (lo sé, otro actor mas en los …como servicio) y es el buque insignia de los productos ofrecidos por Amazon.

Antes de que existieran estas herramientas cuando uno quería montar, mantener y gestionar todo lo que existe al rededor de una aplicación tenía que desarrollar la infraestructuras de servidores que soportase la aplicación en cuestión.

Pero, ¿qué pinta tiene una plataforma com servicio? Bueno pues en pocas palabras si trabajamos con una PaaS, vamos a tener que configurar y mantener los servidores virtualizados que ejecuten nuestra aplicación, vamos a tener que agregar instancias de bases de datos, elegir y configurar el sistema operativo y configurar un balanceador de carga para distribuir la carga a través de varios servidores de aplicaciones.

Además, debemos seleccionar la CPU y unas cantidades mínimas de memoria RAM y almacenamiento tales que satisfagan nuestras necesidades.

Ah! Y lo mas importante, tenemos que instalar un servidor de copias de seguridad por si hay algo que se va a la wea!

Elastic Compute Cloud nos proporciona sólo los “bloques de construcción”. Nuestra tarea es seleccionar los mejores bloques para nuestra aplicación y gestionarlos activamente, no solo tener que configurarlos.

En muchas empresas de desarrollo es bastante habitual encontrarse con la figura del DevOps que en grandes rasgos es el encargado de aprovisionar las instancias de EC2, controlar el despliegue de las aplicaciones y orquestar la infraestructura de los servidores.

Algo así como el que se encarga de decidir cómo estos “bloques de construcción” van a interactuar entre sí.

Pero bueno, ahora pasemos a ver qué es lo que nos ofrece Heroku.

Diferencias entre plataforma como servicio e infraestructura como servicio

Diferencias entre plataforma como servicio e infraestructura como servicio

Heroku, aquella plataforma como servicio con nombre japonés

Heroku es también otra plataforma como servicio (PaaS) basada en Amazon Web Services pero es totalmente diferente a Elastic Cloud Compute (EC2)

Es de vital importancia saber diferenciar entre las soluciones basadas en Infraestructuras como Servicio (IaaS) y Plataformas como Servicio sobre todo cuando al considerar deployar y mantener nuestra aplicación en una de estos dos soluciones.

Heroku es mucho mas sencilla de usar que AWS, es quizá demasiado simple pero hay una buena razón para que esto sea así.

Esta plataforma nos equipa con un entorno de ejecución y un conjunto de servidores de aplicaciones ya preparados. Además, nos beneficiamos de una integración perfecta con varias herramientas de desarrollo, un sistema operativo preinstalado y servidores redundantes.

Con esto no tenemos que “perder tiempo” pensando en la infraestructura tal y como haríamos con AWS EC2, tan solo escogemos un plan de subscripción y lo cambiamos si nos quedamos cortos.

Heroku se encarga convenientemente de los detalles. Por lo tanto, podemos apuntar todos nuestros esfuerzos al desarrollo de la aplicación.

Sólo se necesita un desarrollador web o varios desarrolladores para crear una aplicación y enviarla a Heroku usando un control de versiones como GIT.

Toda la gestión del despliegue de la aplicación se realiza a través de la terminal.

Así pues comparar Heroku con AWS EC2 es como comparar una tostadora con un microondas. Ambas máquinas las usamos para calentar (y a veces tostar) pan, pero funcionan de manera completamente diferente.

Así pues tanto con Amazon Web Service EC2 como con Heroku vamos a alcanzar objetivos distintos peeeeeero hay algo de lo que todavía no te he hablado y se trata de otro producto de Amazon que funciona igual que una plataforma como servicio y es el competidor directo de Heroku.

SERVICIOS AMAZON WEB SERVICE HEROKU
Ofrecido por Amazon Salesforce
Precio Pagas por lo que usas Pagas por lo que usas
Qué te ofrece Plataforma como Servicio (Elastic Beanstalk) e Infraestructura como Servicio (AWS EC2) Plataforma como Servicio
Concepto Plataforma lista para el deploy (Elastic Beanstalk) e infraestructura (AWS EC2) Plataforma lista para el deploy
Lenguajes soportados Ruby, NodeJS, Python, Go, Docker, PHP y .NET Ruby, Python, PHP, Clojure, Go, Java, Scala y Node.js
Capacidad de escalar Escalado automático en EC2 y Elastic Beanstalk basado en tiempos y métricas aunque puedes configurar el autoescalado antes de deployar Escalado manual a través de la terminal o del panel de administración
Disponibilidad geográfica En todo el mundo Estados Unidos y Europa
Características principales Aprovisionamiento, Balanceador de carga, Autoescalado, Monitor basado en métricas, múltiples configuraciones y plantillas de despliegue Aprovisionamiento, Rollback de base de datos y de aplicación, Escalado vertical y horizontal manual, Integración completa con Github y Monitor basado en métricas
Herramientas integradas Consola de administración, Terminal y AWS CloudWatch Heroku Command Line, Heroku Application Metrics, Heroku Connect, Heroku Status

Elastic Beanstalk, un nuevo jugador se unió a la partida

Si decíamos que usar AWS era complejo para hacer un deploy mientras que con Heroku no tanto, este nuevo producto de Amazon simplifica la manera en la que desplegamos nuestras aplicaciones en AWS.

Con AWS Elastic Beanstalk vamos a ser capaces de deployar la aplicación ejecutando comandos en una terminal proporcionada por AWS o utilizando la consola de administración y sin tener que preocuparnos de la gestión de la infraestructura, ya que de ello se ocupa Elastic Beanstalk.

Por lo general, no es necesario que configuremos el aprovisionamiento, el balanceador de carga o el escalado, aunque con esta herramienta es posible obtener acceso a la infraestructura si lo necesitamos.

También vamos a poder guardar múltiples opciones de configuración para nuestra aplicación y cargarlas cuando el entorno cambie a golpe de ratón.

Elastic Beanstalk utiliza instancias de EC2 para alojar su aplicación, por lo que la migración de AWS Beanstalk a EC2 es mucho fácil y eso es la leche.

Conclusión

Cuando te planteas escoger una de estar plataformas como servicio lo primero que tienes que considerar es el coste. ¿Qué es lo que mas va a costarte? ¿Manejar y gestionar la infraestructura por ti mismo o abstraerte de todo eso aunque el precio suba un poquito mas?

Así pues y a modo de resumen deberías usar AWS EC2 cuando:

  • Necesitas flexibilidad en la infraestructura para hacer el primer deploy de la aplicación
  • Tienes a mano a un (o unos) DevOps que te gestionen la infraestructura.
  • Si deployas constantemente nuevas versiones de tu aplicación
  • Tu aplicación exige grandes cantidades de recursos.

Y usar una solución basada en Plataforma como Servicio cuando:

  • Necesitas deployar lo que se conoce como MVP (Producto Mínimo Viable)
  • Necesitas mejorar la aplicación rápidamente después del feedback de los usuarios.
  • No puedes pagar a DevOps.
  • Tu aplicación no chupa tantos recursos.

Así pues, si estas montando una startup te recomiendo que tires hacia el camino de Heroku, aunque no es la única solución en el mercado de las plataformas como servicio pero si decides por alguna razón utilizar Amazon Web Service Elastic Cloud Compute asegúrate de que tienes a un buen DevOps porque si no vas a llorar como si fueras un chiquillo de 3 años 😛

Y nada, eso es todo. ¿Tu con cuál te quedas? ¿Has utilizado alguna vez una de estas herramientas? Si es así no dudes en dejarlo en los comentarios y si tienes alguna pregunta que sepas que puedes hacérmela usando twitter a través del siguiente banner.

@gorkakatua #faqsGorkamu pregúntame por twitter cualquier cosa y vemos cómo lo solucionamos.

Hala a cascarla!

¿Te ha parecido este un artículo de 5 estrellas? Dame tu valoración:
Review Date
Reviewed Item
Plataforma como Servicio: Heroku vs Amazon Web Services
Author Rating
5

Gorka Muñoz Andrés

Me llamo Gorka Muñoz y soy un desarrollador melómano. Combino a la perfección la búsqueda de nuevos grupos con la pasión por la tecnología. Desde chiquitito me ha gustado la programación, ahora que soy mayor estoy metido en el mundo del SEO sin olvidarme del /Dev.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *