Hosting 3
3 plataformas para almacenar rails en la nube
Existen diversas plataformas para almacenar aplicaciones web como Ruby on Rails en la nube. Pero hay 3 que sobresalen, así que comparemoslas.
- Elastic Beanstalk
- Heroku
- EngineYard
Para ir al grano, Elastic Beanstalk de Amazon gana, pero todo dependerá de tu situación.
Características que todas estas plataformas tienen en común.
- Implementación desde la línea de comando con Git
- Soporte completo para aplicaciones de Ruby/Rails
- Gemas instaladas y actualizadas automáticamente en cada Push
- Facilidades para manejar migraciones (db:migrate)
- Soporte a base de datos integrada (no necesita instalación por separado)
Ninguna de estas características viene en Elastic Beanstalk cuando es iniciado por primera vez. Si no más bien, viene mucho más adelante, así que puedes ir reconsiderando esto si es que lo has ignorado.
Heroku
Pros:
Es muy fácil comenzar con Heroku, solo debes instalar el “toolkit” y seguir este recetario.
La documentación es simple y directa.
Heroku es la opción más barata para un sitio de bajo tráfico, así que puedes comenzar un sitio con una base de datos básica totalmente gratis. Aunque será un poco lento si es que tienes un montón de tráfico.
Tiene un plan gratuito y no necesitas tener una tarjeta de crédito para usarlo, pero si para instalar plugins o subir el plan al modo pagado.
Los respaldos son manejados automáticamente con pgbackups.
Provee un montón de extras, haciendo más fácil integrar sistemas como NewRelic para monitoreo y SendGrid o Mandrill para emails. La integración de la base de datos es simple con el soporte Postgres pero se pueden ocupar otras.
Tiene plan gratuito.
CONS:
Una vez que haz añadido poder y manejas más tráfico, el precio del plan sube rápidamente.
Necesitas extraer manualmente tu aplicación añadiendo “dynos”. un concepto un poco vago que utiliza Heroku .
El soporte al cliente es algo pobre, pero no he tenido que utilizarlo muy frecuentemente.
No puedes ingresar en tu servido vía SSH
Nosotros en En1mes usamos Heroku para todo nuestro testeo de aplicaciones y para pequeños proyectos que desean crecer.
Engine Yard
PROS:
El escalamiento (ampliación de recursos disponibles para atender a más usuario) ocurre automáticamente, así que puedes manejarlo hasta el máximo (aunque esto pueda guiar a un cobro gigantesco).
Puedes usar SSH en el servidor.
Los respaldos son manejados automáticamente.
Provee un montón de extras, haciendo más fácil integrar sistemas como NewRelic para monitoreo y SendGrid para emails.
La integración de base de datos es simple con Postgres y hay soporte MySQL.
El soporte al cliente es excelente.
CONS
Es un poco más de trabajo para implementar que Heroku y después de la primera publicación, demora un poco en actualizarse.
Es caro, es fácil pagar cerca de $60.000 pesos en un solo mes, por un servidor con poco tráfico en el sitio.
EngineYard aplica un 20% de recargo en todos los precios Amazon, así como el uso de Amazon para almacenamiento, direcciones IPs y respaldos. Esto siempre resulta un poco más caro.
Personalmente recomendaría EngineYard para la producción de productos donde el dinero no es problema. Ni tampoco donde el soporte y la interacción mínima con ajustes es requerida.
Elastic Beanstalk
PROS
Nuevos usuarios pueden usar Elastic Beanstalk y algunos sub-servicios totalmente gratis, por el tiempo aproximado de 1 año. (Esto le hace competir directamente con Heroku)
Un ejemplo de sitio con bajo tráfico en Elastic Beanstalk después del periodo de prueba está a $20.500 pesos por mes. Para correr el mismo sitio en EngineYard puede costar al menos $ 50.000 pesos por mes.
Las incrustaciones ocurren automáticamente, así que puedes manejarlo hasta el máximo (aunque esto pueda guiar a una cuenta sorprendentemente grande).
Puedes usar SSH en el servidor y cambiar ciertas cosas.
Los respaldos son manejados automáticamente.
CONS
Es un poco más de trabajo para ajustar y utilizar por primera vez que heroku y hasta que EngineYard (el kit de herramientas necesita una instalación manual.
No puedes hacerlo como una gema, pero esto solo toma unos pocos minutos.
Para usar la base de datos y tener la misma facilidad en Heroku y EngineYard, necesitarás usar el servicio Amazons RDS (el cual provee un MySQL, Oracle o SQL servidor de base de datos).
No hay plugins así que es un poco más complejo de integrar con herramientas de monitoreo NewRelic (aunque esto es gratis para AWS users) y SendGrid.
Elastic Beanstalk en sí mismo, es gratis. Pero debes pagar por el ancho de banda, almacenamiento, base de datos, respaldos, etc.
No tienes mucho feedback por parte del servidor cuando lo ejecutas así como Heroku y EngineYard.
Elastic Beanstalk es lo que yo recomendaría como hosting para tener un balance entre servicio y precio. Incluso puedes comenzar un proyecto pequeño de la manera correcta debido a su almacenamiento gratis. Existen más contras para Elastic Beanstalks, pero siento que son compensados por el precio en muchas situaciones.
Advertencia: A medida que tu aplicación empiece a crecer sufrirá frecuentemente de bots y otros tipos de ataque que se conectan y capturan datos de tu sitio o simplemente utilizan recursos de tu sitio, si ocupas plataformas que escalan automáticamente siempre serás capaz de mostrarles resultados a tus usuarios pero tus costos podrían crecer exponencialmente, y fácilmente multiplicarse por cien o incluso por mil.Cómo escoger un hosting para tu sitio web
En cuanto a hosting no sólo hay varias soluciones, hay varios tipos de ellas y este artículo es para ayudarte a tomar una decisión de como escoger una solución para las necesidades de tu página web.
Hosting clásico
El típico hosting que uno puede comprar, Hosting.cl, PlanetaHosting y HostingCenter son algunos de ellos, se componen principalmente de un panel de control, siendo el más común el CPanel.
Este tipo de hosting es muy fácil de administrar, basta con ir al programa que uno necesita, como por ejemplo el para subir archivos o el para controlar base de datos y crear lo que uno necesita.
Ventajas: Son muy fáciles de usar, vienen con muchas aplicaciones útiles, incluso hay algunos planes gratuitos como el de Hostinger.
Desventajas: Son maquinas compartidas entre varias personas, tienes muchos tipos de limitaciones dependiendo del plan que escojas y no puedes correr aplicaciones que no vienen configuradas, por ejemplo si quisieras levantar una aplicación en Ruby On Rails este tipo de hosting no te serviría.
VPS
Se le llama VPS o virtual private system cuando uno arrienda una maquina virtual de un computador que para motivos prácticos es lo mismo que arrendar un computador.
Cuando quieres comprar un VPS te recomendaría alejarte de la lista anterior de hosting y buscar uno internacional, puesto que son mucho más barato, las dos mejores empresas de VPS internacional que conozco están Linode y Digital Ocean.
Ventajas: Obtiene una maquina completa que puedes instalarle lo que quieras, por lo tanto puedes tener tu propio servidor para PHP, Ruby On Rails, Django, Node o incluso uno de páginas estáticas.
Otra gran ventaja son sus costos, los VPS nacionales pueden costar cerca de 100 dólares mensuales, pero los internacionales cuestan a partir de 5 dólares mensuales y son tan potentes como los nacionales. (Las ventajas de alcanzar economías de escala) e incluso si sabes configurarlos pueden ser mucho más barato que las alternativas de hosting clásico.
Desventaja: Los VPS que recomendé te entregan una maquina sin nada instalado, por lo que se requiere conocimientos básicos (más medios que básicos) de linux para poder hacer funcionar una de ellas.
Servidor dedicado
Un servidor dedicado es casi lo mismo que un VPS pero en este caso no tienes una maquina virtual de un servidor, en lugar de eso tienes un servidor completo para ti solo.
Ventajas: Todo el poder de la máquina exclusivamente para ti.
PAAS
Las novedosas Platform as a Service, o sea una plataforma completa como un servicio. Son páginas web que te permiten subir tu landing page / sitio web / aplicación y ellos se encargan de correrlo. En esta categoría hay varias que son interesantes mencionar, tenemos a Heroku, OpenShift, Amazon y Azure
Ventajas: Para algunos tipos de aplicaciones son muy fáciles de configurar, por ejemplo Heroku hace muy fácil la creación de un sitio con Ruby on Rails
Desventajas: Los precios (en sus planes no gratuitos) son bastante elevados comparado con los otros tipos de soluciones, otro problema que tienen es que el uso de cada una de ellas es distinto y requiere seguir un tutorial distinto, aprovecho de dejarte el de Heroku y el de Amazon
¿Cuál elegir?
En la primera etapa de tu desarrollo te recomiendo la versión gratuita de Heroku o la versión gratuita de Hostinger, lo importante es simplemente estar en linea y probar tu sitio con clientes reales, cuando necesites más usuarios tendrás que escalar a una solución de pago.
Escogiendo a una solución de pago
Si tienes una página web sencilla o hecha en WordPress y no quieres lidiar con problemas de infraestructura (setear un servidor) lo mejor es optar por un sitio como hosting.cl o una versión pagada de Hostinger.
Si tienes una aplicación web y no quieres lidiar con problemas de infraestructura utiliza las versiones de pago de Heroku u Openshift.
Si quieres ahorrarte mucha plata mensualmente o realmente necesitas optimizar tu servidor puedes utilizar un VPS, hay distintos tipos de servidores que puedes utilizar, pero en mi experiencia te recomiendo evitar Apache e instalar Nginx.
Actualmente tengo todos los sitios en Linode sobre servidores Nginx y gracias ahora estamos ahorrando doscientos dólares mensuales.
Amazon S3, la guía definitiva para subir tu página a un hosting de excelencia.
Como dentro de los cursos de en1mes hacemos cursos de páginas web muchas veces los exalumnos me preguntan por hostings de calidad que sean gratis o baratos, y nacionales y yo siempre les recomiendo lo mismo, si Hostinger no satisface tus necesidades, tu siguiente plan definitivamente debería ser Amazon S3.
Si subes tu página web a Amazon S3 hará que tu web cargue mucho más rápido que en todos los hosting gratuitos existentes y que muchos hosting pagados, y, lo mejor, pagarás mucho menos por gran servicio.
Además en amazon S3 no tendrás preocuparte de que se caiga tu sitio por la cantidad de usuarios, eso lo regulará automáticamente Amazon.
Entonces como puedes hacer para subir tu página web a Amazon S3?, sólo sigue esta guía
Crear bucket en AMAZON s3
Primero paso es crearse una cuenta en amazon web service (http://aws.amazon.com/es/). Luego lo que vamos a necesitar es crear un Bucket en Amazon S3 (ir a services –> S3). Al bucket creado lo mejor es que le pongas el nombre de tu web por ej. nombredemiweb.com (tal como se ve en la imagen)
Un vez creado el bucket, debes seleccionar “Properties” luego debajo de “Static Web Hosting” debes seleccionar “Enable website hosting”. Luego ahí debes poner el nombre de tu página de inicio, después debes guardar en haciendo click en “Save”.
2) Configurar Route53
Dentro de Route53 debes ir a “Hosted zones” y hacer click en “Create hosted zone”, ahí colocas el nombre de tu domino y luego seleccionado el nombre de tu hosted zone creada haces click en “Go To Record Sets” . Tras esto se hace click en “Create Record Set”.
En “name” no colocar nada, dejar tal como está el “type” en A
y en alias seleccionar “Yes”. Debajo de Alias click en “Enter target name”. Ahí deberás seleccionar al bucket correspondiente y luego click en “Create Record Set” para guardar los cambios.
Para que puedas usar también tu dominio con www. debes crear un CNAME record. Para esto debes ir nuevamente a “Create Record Set”, luego en “name” debes poner www y en “Type” seleccionar CNAME. Luego en “value” debes ingresar el link del bucket que destacamos en el paso 1 en la creación del Bucket en “properties”.
Y listo! Sólo te te falta asegurarte que el dominio donde lo compraste (ej. Godaddy) tenga configurado los DNS para que apunten a tu Route53. Para esto debes ir a configurar los Name Servers (Servidores de nombres) y agregar los que están en Route S3, bajo el tipo NS.
2) CONFIGURAR el www.
Para hacer esto, debes crear un nuevo bucket con el nombre por ej. www.nombredemiweb.com y en propiedades poner que se redirija al sin www. de esta forma:
Después en Route53, en el Record Set creado anteriormente debes agregar un CNAME, en Name debes poner: www ; en alias dejar en no y en Value poner el mismo EndPoint del primer bucket creado en S3 sin el www.
Tras lo anterior te debería funcionar perfecto tu dominio tanto con como sin www.
Si tienes cualquier duda o comentario no dudes en comentar