El uso de la tecnología ha cambiado mucho en los últimos años. El aumento de dispositivos móviles como smartphones y tablets, junto con las mejoras en las comunicaciones han hecho que cada vez sea más necesario tener acceso a la información de forma rápida y eficaz desde cualquier parte. El almacenamiento de la información ha cobrado mucha importancia siendo necesaria la optimización del espacio en estos dispositivos así como la posibilidad de compartir la información entre ellos. La programación en la nube, en inglés “Cloud Computing”, nos permite satisfacer estas necesidades aportando diferentes soluciones a los retos que se nos puedan plantear.La programación en la nube consiste en dar acceso desde cualquier dispositivo y lugar a los servicios de negocio o tecnología a través de Internet. El usuario que los consume puede tener acceso a las aplicaciones o a la información sin necesidad de mantener grandes infraestructuras.
Los grandes beneficios que ofrece la programación en la nube son:
- Escalabilidad: los entornos son capaces de amoldarse a la demanda para aumentar o disminuir su capacidad de procesamiento.
- Eficiencia: al ser entornos escalables los tiempos de respuesta no se ven afectados por los picos de demanda que pudieran producirse.
- Rendimiento: se optimiza el uso de recursos de manera automática permitiendo la monitorización por parte del proveedor y del usuario.
- Coste: los costes se reducen al pagar sólo por lo que se consume, sin necesidad de invertir en el mantenimiento de infraestructura.
- Seguridad: la centralización de los sistemas permite una inversión mayor en seguridad.
Actualmente podemos distinguir entre dos tipos de nubes:
- Las nubes públicas son el modelo estándar de programación en la nube donde un proveedor externo ofrece su infraestructura a través de Internet y es el responsable de mantenerla. El usuario podrá usar el hardware o software del proveedor y pagar sólo por el uso que haga de los recursos.
- Las nubes privadas suelen ser usadas por grandes organizaciones que necesitan tener acceso a sus aplicaciones e información a lo largo de toda su red. Son propietarios de los servidores y del almacenamiento siendo ellos los responsables de la seguridad para controlar el acceso.
Existen varias soluciones a la hora de implementar nuestros servicios en la nube. Debemos tener en cuenta cómo vamos a realizar la implementación de los servicios y cómo vamos a desplegarlos en la nube para elegir la que más se ajuste a nuestras necesidades. A continuación detallamos cada una de estas soluciones:
- HaaS (Hardware as a Service)
Se tiene acceso total a las máquinas, como un cluster propio. Esta opción suele usarse para nubes privadas, en las que se conoce y confía en todos los que tienen acceso a nuestros servicios. Para programación en la nube de manera pública es la opción menos recomendable por los riesgos de seguridad que conlleva dar acceso a nuestras máquinas a usuarios externos.
- IaaS (Infrastructure as a Service)
Se tiene acceso flexible a una infraestructura de servidores y almacenamiento, normalmente mediante el uso de máquinas virtuales. La gran ventaja de utilizar IaaS es que permite crear un entorno totalmente personalizado, configurando a su gusto los diferentes componentes que usarán nuestros servicios, como la base de datos o el servidor de aplicaciones. Por otro lado, nosotros seremos los responsables de definir y configurar de forma manual las herramientas necesarias para el mantenimiento, como los scripts de arranque o la monitorización
IaaS es el método más utilizado para las nubes públicas al ofrecer al usuario mucha flexibilidad, aunque por el contrario también requiere de mucho conocimiento y responsabilidad para su implantación y mantenimiento.
Estos son algunos de los proveedores de IaaS:
- Amazon Web Services (http://aws.amazon.com/es/)
- Eucalyptus (https://www.eucalyptus.com/)
- Rightscale (http://www.rightscale.com/)
- Microsoft Azufre (http://azure.microsoft.com/es-es/)
- Paas (Platform as a Service)
Se tiene acceso flexible a servidores y almacenamiento a través de una plataforma que permite desarrollar servicios propios e integrarlos en ella. No se tiene acceso a la máquina virtual, siendo la plataforma del proveedor la encargada de configurar de manera automática lo necesario para poner en funcionamiento nuestras aplicaciones. Así mismo posee herramientas que se pueden utilizar para la monitorización de nuestros servicios, configuración de escalado y otros aspectos.
PaaS es la solución más fácil de implantar puesto que no hay que preocuparse de la configuración de las máquinas, siendo menos flexible. Los proveedores ponen limites a la hora de desarrollar nuestras aplicaciones debiéndose ajustar la implementación a las directrices establecidas por la plataforma elegida.
Estos son algunos de los proveedores de PaaS:
- Google App Engine (https://cloud.google.com/appengine/)
- Microsoft Azufre Web Sites (http://azure.microsoft.com/es-es/services/websites/)
- AppScale (http://www.appscale.com/)
- AWS Elastic Beanstalk (http://aws.amazon.com/es/elasticbeanstalk/)
- Saas (Software as a Service)
En esta arquitectura es el propio Software el que actúa como un servicio accesible desde Internet, eliminando el concepto de pago por licencia del producto e incorporando el pago por uso del servicio. El mantenimiento del software se centraliza sin ser necesaria la actualización del mismo en todos los dispositivos en los que se use.
Se podría definir como una evolución de la Arquitectura Orientada a Servicios (SOA, Software Oriented Architecture)
Estos son algunos de los proveedores de SaaS:
- Google Docs (https://docs.google.com/)
- MS Office Online (http://go.microsoft.com/fwlink/p/?LinkID=403460)
- Gmail (https://www.gmail.com)
Si se quiere implantar una solución usando Cloud Computing, se debe tener en cuenta si se quiere invertir mucho tiempo en la configuración y puesta a punto de los entornos para tener una configuración personalizada, si por el contrario se desea simplificar esta tarea e implementar nuestra aplicación bajo las directrices de una plataforma en concreto, o bien usar software online desarrollado por terceros. Esta decisión es la más importante para enforcar de manera correcta nuestro proyecto.