Cloud Computing (La Nube) para Humanos

Cloud Computing (La Nube) para Humanos

He estado tentado de poner arriba una imagen más tipo:

Photo by Rebecca Freeman / Unsplash

pero resulta que no todo el mundo las llama nubes, hay quien llama a esto esponjita, bombón, fringuel, jamón o incluso malvavisco, en fin (puedes ponerme un tweet o comentario en linkedin si llamas a esto de otra forma que no he incluido). Me disperso, así que por aclarar, empezaré explicando el por qué de este post y luego conceptos diarios de computación en la nube para humanos.

Por qué hablar en 2022 de la nube

Este post surge después de una comida con un ex-compañero de teatro, que recientemente está dando clases en un Máster Universitario, y cuyos alumnos se quejaban de que, tras una formación extensa en algunas partes de IT, no les habían contado nada de La nube y luego llegaban a las distintas empresas y en el minuto uno lo primero de lo que oían hablar en todas partes era de la nube. También me ha inspirado un poco después este tweet de Pol Rodriguez:

Que es algo, por otro lado, en lo que nosotros creemos mucho, en acercar la tecnología a todas las personas, bien haciendo proyectos positivos de impacto social, como puede ser Credible, o bien por artículos como estos. Por ejemplo, ya hemos escrito Kubernetes para humanos, metodologías ágiles para humanos y Docker para humanos, de momento.

Bien, soltada la chapa inicial sobre nosotros y un poco de cómo surgió esto, diré que hablando del tema con mucha gente ajena al mundo IT, la nube sigue pillando como algo un poco lejano y etéreo, en gran parte por el nombre elegido originalmente.

Qué es la nube en un párrafo

La nube son máquinas y servicios de otro, accesibles desde Internet.

Oye, pero es que dicho así, te dejas un montón de cosas en el tintero. Cierto, y cada vez se complica más la cosa, pero originalmente, la evolución fue usar máquinas tuyas en tu centro de datos, luego usar máquinas tuyas en un centro de datos de otra empresa, y luego, cuando ya no era un único centro de datos y empezaron a virtualizarse las máquinas, empezó a hablarse de la nube, como infraestructura como servicio.

El principio básico es económico y funcional, gestionar máquinas es costoso y especializado. Salvo que necesites hacerlo porque ya sea una parte fundamental del negocio, tiene sentido subcontratarlo. Además, algunos de los proveedores de infraestructura como servicio son compañías tipo Amazon, Microsoft o Google, que ellas mismas necesitan usar gran cantidad de estos servicios y, en cierto modo, ya tienen todo el conocimiento e infraestructura, tiene sentido para ellas vender esa infraestructura como servicio.

Como decíamos, al principio la nube era, fundamentalmente, Infraestructura como servicio. Luego se ha ido complicando, apareció primero el Software como servicio y, poco a poco, han ido surgiendo proveedores de Plataforma como Servicio. Para distinguir entre todas estas cosas hemos hecho este cuadro:

Tabla de diferencias entre IAAS, PAAS y SAAS

Hemos marcado en verde aquellas cosas que te dan hechas en cada caso. Es decir, si la infraestructura es tuya gestionas todo, servidores, redes, almacenamiento, sistema operativo, librerías, ejecutables, el código y los datos. Infraestructura como servicio es un proveedor que te da acceso a servidores, red, almacenamiento, gestionados por él, pero lo que es sistema operativo, librerías, etc, de las distintas máquinas, tendrías que hacerlo tú mismo. La Plataforma como Servicio, te da además de lo anterior, lo que sería sistema operativo, librerías, ejecutables, gestionados por la propia plataforma, solo tendrías que preocuparte del código y los datos. Esta última, Plataforma como servicio, es la más complicada de entender, la explico un poco más en detalle más adelante.

Por ejemplo, en Google Cloud puedes contratar una máquina en Compute Engine:  y acceder a una máquina con unas determinadas características físicas (y de la que puedes escoger preinstalaciones de una serie de plantillas, por ejemplo para instalar Wordpress, o un sistema operativo concreto), pero de la que luego tendrás una IP, acceso por ssh y te encargas de todo lo que quieras instalarle. Esto sería Infraestructura como Servicio, porque una vez creada la máquina, tu te encargas de todo lo demás. Si un día esa máquina falla, backups, reinstalar código, etc, es tu responsabilidad. Lo mismo para almacenamiento, en Google Cloud tienes Cloud Storage con el que puedes pagar solo por el espacio que utilizas. Todos estos servicios claro suelen tener un montón de ventajas en funcionalidades de automatización que, hechas por tu cuenta, llevarían mucho tiempo. Por ejemplo, en Cloud Storage es muy fácil configurar para que de una carpeta (o bucket) determinada, los ficheros más antiguos de X fecha se borren solos, o pasen a otra carpeta con un tipo de almacenamiento más barato, etc.

Por otro lado, en el mismo Google Cloud, puedes contratar el servicio de Cloud Run que sería un ejemplo de Plataforma como Servicio, ya que no tienes que encargarte de la máquina que hay por debajo, solo generas una imagen de Docker y el servicio de Cloud Run se encarga de que esté accesible. Este último, las Plataformas como Servicio, son quizá las más difíciles de entender, porque parece difícil desvincular el código y los datos de la máquina en la que se van a ejecutar. Esto ha sido posible gracias a todo el movimiento que ha venido entre la virtualización de las máquinas y la ejecución en contenedores. Lo explicamos un poco en su día en Docker para Humanos, pero básicamente tu creas un paquete con tu código y los datos, y las plataformas como servicio se encargan de ejecutarlo y darte una dirección para visualizar el resultado o acceder al mismo, un endpoint en inglés.

Otra de las ventajas de los proveedores de Infraestructura es que se puede decidir entre un montón de ubicaciones para las máquinas, tener servicios multi-ubicación, etc. Es decir, aquí hemos dado un plumazo rápido a algunas de las soluciones que hay para Infraestructura o Plataforma contratados con un tercero, pero solo hay que echar un vistazo al catálogo de Google:

tabla con algunos de los servicios ofrecidos en Google Cloud

Y esta tabla no tiene ya todos, porque por ejemplo Cloud Run del que hablábamos antes, no aparece.

Mucho más que máquinas

Una cosa que destaca viendo el cuadro de arriba, es la cantidad de categorías de servicio que hay, y, como decía antes, las que no paran de añadir. Inicialmente la gente cuando piensa en Google Cloud (o en Amazon AWS o Azure de Microsoft, que al final en general son muy equivalentes), lo primero en lo que piensa es en máquinas de terceros por las que pagas, pero a día de hoy hay multitud de servicios de inteligencia artificial, machine learning, big data, etc, contratables desde el mismo proveedor.

Aparte, para el mismo vertical de servicio estos proveedores suelen dar un rango de soluciones muy amplio, desde servicios básicos de Infraestructura como Servicio a sistemas más complejos y Plataformas como Servicio en su caso. Por ejemplo, en el caso de bases de datos, tienes desde el acceso más básico de Infraestructura como Servicio, lo que sería Cloud SQL en Google, por ejemplo, en el que puedes definir máquinas de bases de datos con PostgreSQL, MySQL o SQL Server, y tu te encargas de montarlo todo, bases de datos noSQL como seria Datastore y sistemas globales distribuidos, pensados para aplicaciones más grandes, como puede ser Cloud Spanner.

Y esto es todo por el momento, que no es poco, en futuras publicaciones podemos ir profundizando en algunos de los elementos por separado, cualquier duda o sugerencia, ¡es bienvenida!


💡
En Softspring llevamos muchos años trabajando con Google Cloud, si tienes un proyecto que crees que podría beneficiarse de estar en la nube, tienes dudas con estos conceptos o quieres sugerirnos futuras publicaciones, escríbenos por twitter o a hola@softspring.es.