domingo, 8 de enero de 2012

¿Hosting, housing o cloud?


La gran mayoría de emprendedores tecnológicos nos hemos preguntado al menos en una ocasión: ¿qué modelo de implementación tecnológica utilizo para hospedar mis servicios? 

El primer paso que deberías hacer es realizar un buen análisis de tus necesidades. Al menos deberías haber respondido a las siguientes preguntas:

- ¿Qué tecnología utilizaré? PHP, .NET, JAVA, Ruby... 
- ¿Necesitaré gran capacidad de almacenamiento? 
- ¿Necesitaré gran capacidad de proceso? (procesador y memoria).
- ¿Qué previsión de crecimiento tengo a un año vista? ¿Puede aumentar mi tráfico en un 100%?
- ¿Tengo conocimientos en gestión de sistemas? ¿Qué tiempo quiero invertir en mantenimiento?
- ¿Qué disponibilidad necesito? Es decir, ¿qué pasa si la web deja de funcionar durante X horas?

Como puedes ver hay preguntas de respuesta rápida y sencilla, pero también hay otras que son muy difíciles de responder. Algunas son instantáneas, como por ejemplo la disponibilidad necesaria, obviamente siempre tiene que estar disponible. Pero todo tiene un coste... 
 
Actualmente podríamos afirmar que existen tres alternativas diferenciadas:


Hosting
El servicio de hosting es el alquiler de una parte de una máquina, de toda su totalidad o de varias. 
El cliente paga en función de la capacidad de los recursos que alquila: procesador, memoria, disco, ancho de banda... 
A día de hoy continúa siendo la más común y seguramente económica, ya que existen muchos proveedores que ofrecen servicios de hosting y compiten ajustando precios. 
Existen además dos modelos de hosting: compartido y dedicado. 
En el hosting compartido, seréis varios los clientes que utilizareis los mismos recursos, mientras que en el dedicado los recursos serán 100% para tí, mejorando tu capacidad de rendimiento pero a cambio de un incremento sustancial en el coste.

Pros
- Gran número de proveedores (muchas alternativas).
- El precio puede ser competitivo si no necesitas grandes prestaciones. 
- Fácil implementación. Los proveedores disponen de servicios que te facilitan la instalación.
- Te olvidas del mantenimiento, ya que lo que pagas es un alquiler.

Contras
- Capacidad limitada de crecimiento.
- Al poder compartir recursos con otros clientes puedes llegar a ser afectado por ellos (compartido).
- Rendimiento algo menor en hostings compartidos.


Housing
El servicio de housing es el alquiler de un espacio en un datacenter, de la corriente eléctrica y de la conectividad a Internet para que tú puedas instalar tus propias máquinas. 
El principal incoveniente que tiene esta modalidad es que necesitarás realizar al menos una inversión inicial en una máquina. Otro problema es que no todos los proveedores están interesados en comercializar Housing, ya que el margen de beneficios que obtienen es menor.
Actualmente es el modelo que utilizo con mis propios proyectos como tusclasesparticulares.com, después de haber pasado por diferentes proveedores de Hosting y haber intentado pasar a Cloud. 

Pros
- Tú decides con precisión los recursos que necesitarás y te aseguras el rendimiento. 
- Puedes llegar a optimizar al máximo tu proyecto. 
- Cuando necesitas grandes prestaciones el coste puede ser menor al resto de alternativas.

Contras
- Deberás hacerte cargo del mantenimiento de la/las máquinas. 
- Necesitarás hacer una inversión inicial mayor.


Cloud
El servicio de cloud, la nueva moda, es un alquiler más escalable de unos recursos tecnológicos.
Generalemente se asocia con el concepto "la nube", pero en realidad no necesariamente es eso...
Permíteme que me aclare. Hoy en día verás muchos proveedores que te ofrecen "Servidores Cloud", "Soluciones Cloud", como quieran llamarle. Debes saber que existen en realidad dos tipos:

  1. Cloud de proveedores de servicios de TI (tipo Acens, Arsys, Claranet, 1&1, ...). Este tipo de cloud no es más que un hosting flexible, utilizando tecnologías de virtualización. Es decir, que te permite aumentar el uso de tus recursos sin necesidad de cambiar de máquina (por necesidad de más disco, o más memoria, o más procesador), pero no tiene nada que ver con la nube. 
  2. Cloud de Amazon (AWS) y Microsoft (Azure). Este modelo de cloud es algo distinto. Aunque en realidad existe una red de computadoras y hacemos uso de ellas, todo es transparente y podemos aumentar el uso de recursos con más facilidad. Además nuestros datos están más redundados... (bueno, eso díselo a Ricardo Galli de Menéame)
La verdad es que yo he pensado en muchas ocasiones modificar el modelo actual que utilizamos (Housing) por Cloud (modelo AWS/Azure), pero analizando las necesidades: procesador, memoria, disco y ancho de banda necesario, continua sin ser más económico. Además, encuentro que el Cloud tiene una mayor vinculación tecnológica, es decir, que una vez decidido un modelo Cloud (como por ejemplo Azure en mi caso), mi plataforma estaría muy vinculada, demasiado.

Pros
- Capacidad de crecimiento. 
- Coste flexible en función de las necesidades.
- Mayor disponibilidad (teórica).

Contra
- Mayor vinculación tecnológica.
- Dependiendo del caso, mayor coste.


Como siempre espero que el post sea de utilidad. 

Tengo previsto en los próximos días escribir un post sobre como reducir el coste tecnológico en aplicaciones web con mucho tráfico. Será sobretodo muy interesante si utilizas un modelo de Hosting o Housing, aunque también te puede ser de interés si utilizas Cloud de proveedores de servicios de TI.