martes, 28 de abril de 2015

¿Qué es eso de “la nube” y en qué me beneficia?



Durante el desarrollo de ticketopolis, y desde que empezamos a comercializarlo, nos ha tocado escuchar una pregunta frecuente  por parte personas a las que les hemos platicado del proyecto. “¿Qué es eso de la nube?” Mucha gente la confunde como un sinónimo de “internet”, también suelen confundirla con algún software, o con ciertos proveedores que ofrecen la infraestructura.

El término, usado también en las matemáticas, meteorología, astronomía y física, se refiere a una aglomeración de objetos que vista desde lejos tiene forma de nube. Probablemente tomar el término prestado de otras disciplinas es lo que crea la confusión al delimitar su alcance.

La definición por parte del “National Institute of Standards and Technology” NIST por sus siglas en inglés es: (http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf)
El cómputo en la nube es un modelo que permite un acceso a través de redes desde cualquier lugar, conveniente, a demanda (1), a un conjunto de recursos de cómputo configurables (redes, servidores, almacenamiento, aplicaciones y servicios) (2) que pueden ser rápidamente puestos a disposición y liberados con un esfuerzo administrativo mínimo o interacción con el proveedor de servicios (3). 
Según la definición estamos hablando prácticamente de 3 puntos:
  1. Debe poderse acceder desde internet o una intranet.
  2. Se deben poder acceder servidores para correr aplicaciones o servicios.
  3. Se deben poder dar de alta o baja de manera sencilla.
Analizando el detalle de cada punto:
  1. Es importante que se pueda acceder desde cualquier red, técnicamente se puede utilizar cualquier protocolo o puerto. Idealmente la nube debe encontrarse en una ubicación física diferente al punto en donde se va a acceder, con la intención de tener la información en otro lado(s). Existen soluciones que permiten aplicar los mismos principios de la nube en servidores o discos duros locales, sin embargo, hay que tener cuidado tratando de tener los respaldos en otras ubicaciones físicas, previniendo cualquier tipo de desastre.
  2. El segundo punto engloba las características que permiten que exista la nube, la principal, llamada “virtualización”, se logra a través de un software que divide los recursos de un servidor físico en dos o más “servidores virtuales” o “instancias”. La clave está en cómo coloquialmente decimos “No pongas todos los huevos en una misma canasta”, permitiendo que la aplicación o servicio esté distribuida en diferentes servidores, e incluso en diferentes ubicaciones físicas. Si una instancia falla, el resto deben permanecer intactas y se sigue brindando el servicio sin interrupciones.
  3. El dar de alta o baja instancias de manera sencilla, se refiere a que se deben tener suficientes recursos para cubrir las necesidades según la demanda en cada momento. Es decir, si en algún momento se requiere más capacidad de cómputo (porque hay más clientes solicitando el servicio simultáneamente), se debe de poder dar de alta instancias que satisfagan esa demanda; por el contrario, si baja la demanda de capacidad de cómputo, dar de baja las instancias para optimizar los recursos y el costo incurrido por los mismos. Este proceso debe ser lo más fácil y rápido posible, e incluso automático y transparente para los clientes.
¿Y en qué me beneficia? Es la segunda pregunta que recibimos al explicar qué es la nube. El término de “la nube” no sólo se limita a cómo administrar y distribuir los servidores para tener disponible aplicaciones y servicios; el objetivo final es beneficiarte a ti como cliente, permitiendo que dichos servicios estén siempre disponibles sin importar qué día u hora es, si se le están aplicando actualizaciones a los sistemas operativos o a la aplicación, si falló algún componente de un servidor, etc. Tu beneficio es el acceso a la aplicación o servicio en cualquier momento, gracias a la infraestructura de la nube que está detrás y se encarga de reemplazar instancias cuando no están saludables (que están lentas o fallaron por cualquiera que sea el motivo), y de administrar los recursos para satisfacer la demanda existente (que todos los usuarios tengan acceso).

Ticketopolis nació inspirado en este modelo de la nube, al tratarse de un sistema en donde la demanda de tráfico es muy variable, ya sea por eventos con promoción en medios masivos, por límite en la fecha de registro, o eventos muy populares. En nuestra versión anterior, el sistema se hospedaba en un servidor; era poderoso en características, pero a fin de cuentas todos los usuarios accedían a él. Si un día había varios eventos y hacían el registro a la misma hora, se apreciaba que la velocidad de respuesta no era la misma que en horas no pico. Afortunadamente nunca experimentamos una falla técnica que tumbara el servidor, pero nunca estuvimos exentos de tenerlas; por ello pensamos en redefinir totalmente la infraestructura y el modelo de la aplicación, aprovechando al 100% la nueva tecnología de la nube.

Una de nuestras grandes inspiraciones ha sido Netflix que, como bien lo han establecido sus ingenieros, diseñan la plataforma pensando en que los servidores son máquinas que van a fallar tarde o temprano por algún motivo. Con esto en mente, se prevén las fallas y se arma infraestructura para que una falla de este tipo no afecte al servicio. A fin de cuentas el más beneficiado es el usuario o cliente.

¿Y cómo usa ticketopolis la nube? Nos apoyamos en la infraestructura ofrecida por Amazon, quien domina el mercado de “IaaS” (“Infraestructure as a Service” en inglés). Por muy buenas razones, en Amazon se hospedan cientos de miles de clientes alrededor del mundo; incluyendo las grandes empresas basadas en la nube como Pinterest, Instagram, DropBox, Foursquare, Netflix, Shell, Adobe, etc. Sus servicios son muy robustos y permiten aprovechar los beneficios de la ya famosa “nube”. En ticketopolis distribuimos el contenido (tanto estático como dinámico y base de datos) en múltiples instancias, en múltiples ubicaciones físicas. Contamos con diferentes instancias para la aplicación, para los servidores de trabajo (quienes hacen tareas en el fondo agilizando todos los procesos y mejorando el tiempo de respuesta al usuario), para la base de datos (no relacional), y para el almacenamiento de archivos. Ah y por si fuera poco, también utilizamos CDN (“Content Delivery Network”, en inglés) encima de todo esto; pero ese ya será tema de otra publicación.

Y tú ¿ya comprobaste los beneficios de la nube? Usa ticketopolis y te asegurarás que es el sistema más rápido y confiable del mercado.