Por: Daniel Laverde

Bogotá, Colombia

Un poco de historia …

Típicamente cuando usted o su organización quería prestar servicios web o necesitaba ejecutar aplicaciones informáticas utilizaba un servidor, el cual le permitía en la mayoría de los casos tener un funcionamiento adecuado de sus necesidades de capacidad de cómputo. Sin embargo, cuando la demanda de su aplicación web o plataforma superaba los límites establecidos, un solo servidor no era suficiente y eso tenía como consecuencia que su aplicación sufriera intermitencia, lentitud o simplemente dejará de funcionar, intrínsecamente esto traía otro tipo de consecuencias como: afectación del servicio al usuario final, imprevistos financieros, etc.

Con el objetivo de mitigar estos impactos negativos y peligrosos para las organizaciones que dependen de sus aplicaciones de misión crítica estas organizaciones se hacían a grandes y costosas capacidades de cómputo, balanceadores de carga, centros de cómputo, equipo de redes, etc. Hardware que al poco tiempo se hacía obsoleto y que de ninguna forma podía asegurar que iba a poder suplir la necesidad en un momento de alta demanda.

Es allí que surge el concepto de autoescalamiento en la nube, entendido como la propiedad de un sistema de incrementar o disminuir su capacidad de cómputo de forma automática según la demanda con ciertos criterios definidos.  Este tipo de infraestructura sería muy costosa y compleja para ser desplegada en una organización sin un presupuesto colosal, por esta razón este servicio tiene mucho sentido en la nube, computación al alcance de todo el mundo, donde se paga solo por lo que se usa. Este beneficio es realmente provechoso para organizaciones que tienen picos de concurrencia muy altos en ciertas temporadas del año, ciertas horas del día, momentos específicos o momentos impredecibles, por ejemplo: una universidad en período de vacaciones tiene una demanda mucho más baja a cuando está en período de matriculaciones o de exámenes.

Un sistema con autoescalamiento bien ajustado no requiere intervención manual para responder a períodos de alta demanda.

¿Qué se necesita?

Lo más importante es que “resetee” su mente y se olvide de cómo funcionan las cosas en un servidor tradicional, en la nube no se habla de servidores, por su efímera vida se habla de instancias, no se habla de discos duros sino se habla de almacenamiento, debe recordar que su aplicación necesita seguir funcionando así falle una o más instancias por lo tanto debe tener en cuenta estos puntos al definir su arquitectura:

  • El código debe ser el mismo en todas las instancias, puede por ejemplo usar un repositorio git y clonar o hacer un pull cuando necesite actualizar el código.
  • Debe definir los criterios de autoescalamiento, pueden ser criterios de carga, de memoria, de procesamiento, de latencia o incluso de hora del día o días de la semana.
  • El almacenamiento debe ser común para todas las instancias.
  • Dependiendo de su arquitectura debe tener al menos un balanceador de carga.
  • Los certificados de seguridad normalmente se configuran en el balanceador de carga.
  • Las sesiones de los usuarios deben residir en un lugar que pueda ser accedido por todas las instancias que lo necesiten como una base de datos, memcached, etc.

Lo anterior son solamente algunos aspectos técnicos que son clave para la buena gestión de una arquitectura autoescalable.

¿Qué conocimientos se requieren?

Para crear una infraestructura autoescalable debe tener algunos conocimientos de servidores tradicionales y otros más de vanguardia, algunos de ellos son:

  • Debe saber cómo configurar un servidor tradicional, este conocimiento de la vieja escuela es fundamental puesto que estos son los ladrillos de su nueva infraestructura en la nube, usualmente se generan imágenes que son la base de arquitecturas más complejas.
  • Los conocimientos básicos de redes, de DNS y nombres de dominio son importantes puesto que en la nube las IPs estáticas no son tan relevantes al tener servicios que se auto escalan, se crean y se destruyen.
  • Hay que entender cómo funciona el almacenamiento que va a usar y cómo lo va a conectar con su aplicación, en la nube se tienen varios tipos de almacenamiento, uno local para las instancias donde típicamente estaría el código de la aplicación, alguna parte del caché que no debe ser compartido y un almacenamiento compartido, escalable, de alta disponibilidad y durabilidad  y de capacidad teóricamente como lo es servicio S3 de Amazon Web Services o Google Cloud Storage.
  • Debe conocer los mecanismos de monitoreo que tiene su proveedor de servicios en la nube, este monitoreo se puede hacer a nivel de cada instancia o servicio.

Los servicios en la nube pueden llegar a ser bastante complejos e intimidantes al principio, por esto existen herramientas que le permiten abstraerse en una capa más alta para crear arquitecturas con interfaces gráficas sin llegar al detalle de lo que ocurre tras bambalinas, algunas herramientas como Scalr, RightScale o OpsWorks entre otras le permiten hacer esto.

En suma, el autoescalamiento es perfecto para cualquier tipo de organización que preste un servicio que requiera de una gran capacidad de cómputo. Por ello, es indispensable que las organizaciones (grandes, medianas o pequeñas) formalicen alianzas con una compañía experta en infraestructura tecnológica que les pueda brindar soporte, consejos sobre las mejores prácticas y servicios adicionales como backups. Esto se traducirá en tranquilidad para su organización.

*Daniel Laverde – Director de Infraestructura y Soporte de Nivel Siete.

Foto por: Manuel Rivera

Hacer Comentario

Su dirección de correo electrónico no será publicada.