viernes, 19 de octubre de 2012

Por qué podés llegar a usar Openstack

Anoche leía sobre la arquitectura de Openstack - http://en.wikipedia.org/wiki/OpenStack

En este artículo de Ken Pepple:

Openstack Folsom Architecture

http://ken.pepple.info/openstack/2012/09/25/openstack-folsom-architecture/

y no puedo evitar comentar sobre la frase - trillada a esta altura - de que Openstack es el linux de los sistemas operativos de cloud.

Es verdad, 100%, desde eso a que Openstack se vuelva el “sistema operativo de cloud” omnipresente, tal vez falte un tiempo. O tal vez otro software mejore la idea de Openstack y ese sea el definitivo. Pero la cuestión es que sí, a corto y mediano plazo, el sistema operativo de cloud por excelencia va a ser Openstack.


Facilidad de Instalación
Que sea fácil de instalar no es algo que tome a la ligera en una tecnología que pocos conocen bien y menos aún dominan.

¿Los demás sistemas no son buena competencia? Para nada, el modo más fácil de montar hoy una cloud privada es comprar licencias de productos propietarios (y no nos olvidemos que podemos pagar por training, otra ventaja).

Sin embargo, esa es justamente la debilidad de las cloud propietarias: el que cuesten algo.

Openstack por otra parte  no  tiene un  costo  en licencias,  y eso  - sumado a   sus   capacidades técnicas - tiene un peso tremendo al momento de decidir  la adopción de una infraestructura que muy posiblemente va a permanecer  en producción 10 años más tiempo (en el caso de una cloud propietaria, hay que prever tener plata para pagar 10 años de licencias, y cuando se vaya por la "mitad", con la cloud privada ya "crecida", los costos iniciales podrían ser superados inclusive).

Como ejemplo, siempre recuerdo que cuando arrancaba con Linux en 1999-2000 muchas empresas instalaban un webserver Apache (sobre linux) "para probar y hasta que haya plata para comprar Internet Information Server (el "apache" de Microsoft). Tal vez más tarde compraron Windows Platform (más que nada por Active Directory), pero los Apache sobre Linux siguen instalados todavía, ahí donde los pusieron (en algunos pocos casos que vi, es la misma instalación de hace 10 años, un Debian sucesivamente actualizado a nuevas versiones, ni siquiera reinstalado una vez :-).

Openstack es relativamente difícil de instalar comparándolo con productos comerciales. ¿Training local? Nada a la vista comparable con lo disponible en US y EU. Hay pocos libros. Por otra parte, hay muchísimo material en línea, muy ordenado de modo que un sysadmin con experiencia puede entrenarse en relativamente poco tiempo.
Openstack es de momento el campo de acción de los mejores administradores de sistemas, así que son lo primero que hace falta para pensar en Openstack, y claro, incluso para montar clouds propietarias, sysadmins de primera es lo que hace falta igualmente tener desde el vamos (antes que el presupuesto incluso). Las clouds propietarias aprovechan esto claro, proveyendo deployments fáciles, claro, por un precio.


¿Por qué vas a empezar a usar Openstack en algun momento?


¿Soporte de hipervisores?
No por esto, aunque es muy importante en cuanto a la provisión de servicios IaaS de Openstack.

Hay varios motivos como ya vimos antes, entre otros, tiene soporte para todos los hipervisores populares del mercado: ESX, Kvm, Hyper-v, Xen, etc.
http://docs.openstack.org/trunk/openstack-compute/admin/content/selecting-a-hypervisor.html

Y las chances son de que alguno de esos hipervisores ya esté corriendo en la mayoría de las infras de tamaño medio para arriba, eventualmente llegarán a tener 5-8 hipervisores corriendo y alguien va a sugerir implementar un soft de cloud para administrar "todo eso".


¿Qué tan bueno es el soporte? En el link pueden verlo y al final hay una lista de bugs conocidos de Openstack para cada hipervisor soportado:
http://wiki.openstack.org/HypervisorSupportMatrix


Aplicaciones de nube:
El motivo más importante sin embargo, es que Openstack es un verdadero software de cloud. Por eso vas a poder programar y correr aplicaciones de nube sobre Openstack, sino ahora mismo, muy pronto.

Dice Ken Pepple en el artículo que linkeé al comienzo de este texto:

---------
"The OpenStack project as a whole is designed to "deliver(ing) a massively scalable cloud operating system." To achieve this, each of the constituent services are designed to work together to provide a complete Infrastructure as a Service (IaaS)."

Traduzco:

"El proyecto Openstack como un todo está diseñado para "entregar un sistema operativo de cloud masivamente escalable". Para lograr esto, cada unos de los servicios constituyentes está diseñado para trabajar en conjunto para proveer una Infraestructura Como Servicio completa (Iaas - Infrastructure as a Service)."
---------


Hasta ahí, nada nuevo, IaaS es lo que podemos comprar hoy de cualquier proveedor de cloud propietario, y es el motivo principal actual de la adopción de clouds (IaaS nos permite administrar mucho mejor cualquier "manada" de 10 a 40 hipervisores).

Ahora, sigue la explicación de Ken

--------
"This integration is facilitated through public application programming interfaces (APIs) that each service offers (and in turn can consume). While these APIs allow each of the services to use another service, it also allows an implementer to switch out any service as long as they maintain the API. These are (mostly) the same APIs that are available to end users of the cloud."

Traduzco:

"Esta integración es facilitada a través de APIs públicas que cada servicio ofrece (y a la vez, consume). Aunque estas APIs permiten a cada uno de los servicios usar otro servicio, también permite cambiar el servicio en sí, siempre que el nuevo se mantenga usando la misma API. Estas son - mayormente - las mismas APIs que están disponibles para usuarios finales en la cloud."
--------

Explico: más allá de la utilidad inmediata de Openstack para hacer IaaS sin pagar un costo en licencias, la fortaleza real reside en las APIs, al igual que Amazon AWS:

http://aws.amazon.com/code
http://aws.amazon.com/developertools

Openstack permite construir verdaderas "aplicaciones de nube" a través de sus APIs, una posibilidad que no está disponible en los software de cloud propietarios, mayor y casi completamente enfocados en la provisión de IaaS únicamente.

Esas "aplicaciones de nube" añaden al soft de cloud la flexibilidad necesaria para aprovechar las nuevas posibilidades que brinda una cloud (que, de vuelta, no se limitan a la provisión de IaaS). De vuelta voy a dar ejemplos del estándar actual, Amazon, para que puedan ver a qué me refiero:

http://aws.amazon.com/customerapps/
http://aws.amazon.com/customerapps/Amazon-S3
http://onlamp.com/pub/a/onlamp/2008/05/13/creating-applications-with-amazon-ec2-and-s3.html


y un libro recomendado para ver más "sustancia" (snipets de código?):

"Programming Amazon EC2
Run Applications on Amazon's Infrastructure with EC2, S3, SQS, SimpleDB, and Other Services" Feb. 2011
http://shop.oreilly.com/product/0636920013228.do


La pregunta de fondo en todo esto es: ¿Qué tanto se puede depender de un proveedor de software de cloud propietario si es que nuestra organización empieza a programar aplicaciones de nube?

El ejemplo (antecedente en la práctica) Para entender mejor, comparémoslo con el uso de Apache+Mysql+PHP de hoy en día: programamos nuestra aplicación Apache+Mysql+PHP, luego sabemos que podemos instalarla y correla:

- En servidores propios,
- En servidores ajenos (rentados, VPS, instancias de sistemas operativos corriendo en un cloud, etc.)

* Importante: Prescindo de Linux porque podemos usar otros sistemas operativo para Apache+Mysql+PHP.

Es decir, al programar en Apache+Mysql+PHP tenemos una garantía muy buena de que nuestro soft, básicamente, va a "durar". Si codeamos algo ahora, lo podremos seguir ejecutando dentro de, digamos, 10 años.

Al programar aplicaciones para la nube hoy, en el estándar actual AWS de Amazon, las cosas dependen al 100% de la empresa, si la API cambia, nuestra app deja de funcionar como antes, ya no corre sobre la nube de Amazon.

Las APIs de Openstack, sumadas a sus capacidades de provisión de IaaS, van camino - todavía es un potencial- a solucionar este problema de modo muy similar a cómo Apache+Mysql+PHP solucionan el problema de correr aplicaciones web en casi cualquier "lado" en la web.


¿Hay ya algo "material" en apps Openstack? Sí, aunque es un terreno para visionarios, startups y grandes presupuestos corporativos, todavía:

El componente object store Swift (parte de Openstack), lo usan algunas empresas para proveer storage y servicios apoyados en ese storage, hay muchas más, pero acá dejo algunos ejemplos concretos:


- RackSpace (los que codearon Swift):
http://www.rackspace.com/blog/rackspace-cloud-files-now-supporting-extremely-large-file-sizes/

- Marketto (una empresa que codeó apps de nube como producto y usa Swift en RackSpace como plataforma):
http://www.rackspace.com/knowledge_center/case-study/marketo-achieves-swift-success-with-rackspace

- KT:
http://www.slideshare.net/joearnold/open-stackconference-commercialization-of-object-storage

- SwiftStack:
http://swiftstack.com/

- Internap:
http://www.cloudtweaks.com/2011/01/internap-unveils-first-open-source-infrastructure-cloud-platform/

- HP:
https://www.hpcloud.com/products/object-storage
https://www.hpcloud.com/products/CDN


El componente Compute (se llama "Nova" en la versión actual), lo usan

- Rackspace
- HP - https://www.hpcloud.com/products/cloud-compute


Más allá de esos usuarios de las API de Openstack, su uso para provisión de IaaS está dado hoy en: CERN, NASA, Mercadolibre y un par de lugares más:

http://www.openstack.org/user-stories/

Etc.etc.


Conclusión
Openstack es un software a tener en cuenta, hace falta tenerlo presente y considerarlo seriamente cuando se esté planificando una infraestructura virtual, que con el tiempo evolucionará a una arquitectura de nube completa.

No hay comentarios: