Hemos escuhado hablar de Cloud Computing (o, en español, Computación en la nube) montones de veces. Pero, ¿a qué refiere exactamente? En este artículo vamos a ver los diferentes tipos que existen y, como desarrolladores de software, para que nos sirve cada uno.

 ¿Cloud Computing?

Si, computación en la nube. Este concepto fue mencionado por primera vez por John McCarthy en 1961, durante un discurso ceremonial en el MIT.

"La computación algún día se organizará como un servicio público, tal como el sistema de telefonía lo es. [...] Los servicios computacionales se podrán convertir en la base de una nueva e importante industria" - John McCarthy (1961)

Y de eso se trata, ofrecer servicios (como la luz, el gas natural o el aguar corriente) a través de internet. Fue recién a fines de la década de los 90 y principios de 2000 que compañias como Google y Amazon le dieron la forma que conocemos hoy. John fue todo un adelantado.

Por lo tanto, Cloud Computing trata de la oferta de servicios en internet que buscan resolver diferentes problematicas según las necesidades particulares de cada negocio.

Nosotros, como desarrolladores, deberíamos no sólo dedicarnos a programar en determinado lenguaje, sino también a analizar dichas necesidades para ofrecerle al cliente la solución que mejor se adapte a éstas.

Tipos de Arquitecturas Cloud

Teniendo en cuenta qué tipo de servicio se ofrece, podemos definir 3 categorías diferentes de arquitecturas cloud. Estas son:

IaaS (Infrastructure as a Service)

También se la conoce como Hardware as a Service, ya que se trata de vendernos recursos informáticos (hardware o "fierros", en la jerga) de forma virtual. Es decir, la capacidad de almacenamiento y computo (disco, memoria y cpu) los decidís y comprás vos.

Un ejemplo de este servicio es Linode (muy pensado para ofrecer servicios a desarrolladores), que es conocido por ofrecer servicios de hosting. Es decir, vos te hacés una cuenta y alquilás un "nodo" cuyo precio está determinado por la cantidad de espacio, memoria RAM y capacidad de CPU que tu negocio requiera.

Algunas ventajas de esto son claras:

  • Costo: No tenés que comprarte un datacenter ni contratar un personal dedicado para una aplicación particular que quieras poner en producción.
  • Escalabilidad: Si la demanda de tu applicación crece, tan sólo podes mejorar el paquete que compraste y añadir los recursos que necesites. Generalmente lo haces con un par de clicks.
  • Seguridad: ¡No tenés que preocuparte por que se te queme el motherboard! Alguién ya está pendiente de todo eso por vos. Además, se aplican políticas de redundancia y recuperación para proteger tus datos.

Realmente hay muy pocas limitantes para el uso de Iaas. Por ejemplo, por diferentes reglamentaciones y si manejás datos sensibles de personas físicas, quizá confíes en tener dichos datos dentro de una red privada y no en un proveedor externo.

PaaS (Platform as a Service)

Se tratan de servicios que, además de lo anterior, te ofrecen un ambiente ya preparado para que despliegues la aplicación y la empieces a usar. Es decir, configuran el entorno necesario para tu app: El Sistema Operativo que quieras, la versión de la JVM que requieras, o maven, quizá una mariaDB o un mongo, un apache para atender los request, un nginx, etc. Prácticamente todo lo que necesites.

Un ejemplo de esto es Heroku (similar a Linode), que además del hosting te provee una simpática interfaz gráfica para elegir todo esto que te acabo de mencionar. No necesitás conocmientos extra para hacer el deploy, practicamente subís la app que quieras deployar y listo, estás en prod.

Podemos mencionar como ventajas:

  • No tenés que preocuparte por preparar un ambiente estable o por la compatibilidad de los componentes de software. Todo eso se encuentra ya gestionado por el proveedor del PaaS.
  • No tenés que estar pendiente de actualizaciones, alguien más lo hace por vos.

Obvio que está facilidad tiene una desventaja grande: la flexibilidad. ¿Qué pasa si el proveedor no tiene dentro del paquete justo esa la tecnología o herramienta particular que necesitás (como Docker, o Kubernetes)? El servicio PaaS puede quedarte corto para soluciones de software muy específicas.

SaaS (Software as a Service)

La cúspide de esta cadena evolutiva. Son servicios públicos (accesibles a través de la web, para cualquier cliente) que te ofrecen una aplicación de software ya hecha para que empieces a usar.

Muchas veces estos servicios pueden integrarse con tu aplicación, como Amazon S3, que ofrece un servicio de almacenamiento remoto de archivos, o como Movilgate, que ofrece el servicio de mensajería a través de SMS. Muchas otras veces ya existen servicios que resuelven la necesidad de tu cliente, como Dropbox o las apps de Google GSuite.

Otro ejemplo, si tu cliente está deseando un sistema para la gestión de expensas podrías ofrecerle que contrate el servicio de Mis Expensas Web (se, pasé el chivo) y listo, ni desarrollás.

Algunas ventajas que podemos mencionar:

  • No tenés que reinventar la rueda ni mantener otra app, tan sólo consumir la interfaz que el servicio te provea.
  • Contratás y pagás según el uso. Por ejemplo, en Amazon S3, la capacidad de almacenamiento que uses.
  • ¡Quizá no tengas que desarrollar nada!

Claro que la principal desventaja está asociada a esto útlimo. Muchas veces los servicios SaaS no se adecuan completamente a todas las necesidades del cliente y se requieren soluciones custom.

Conclusión

Creo que el desarrollo de software no consiste sólo en programar cosas. Uno de los valores más importantes de la metodología ágil es entregar valor constantemente al cliente. Considero que es bueno conocer la mayor cantidad de herramientas disponibles para ofrecer la solución que mejor se adecue a cada necesidad, cada negocio y cada cliente, de menera de tener un rápido ROI (Retorno de Inversión).

No sólo esto mejora la confianza del cliente a nosotros. Si el negocio crece, habrá nuevos requerimientos y más software por hacer. ¡Nos beneficiamos todos!

Mandanos tus sugerencias

Ayudanos con ideas para los artículos de este blog a contacto@somospnt.com

¡Seguínos en nuestras redes sociales para enterarte de los últimos posts!