La plataforma como servicio no es para todos los escenarios

Independientemente de el entorno en el que trabajemos, hay ofertas derivadas de la nube que nos son interesantes de forma inmediata. El hecho de poder consumir un software como servicio  (saas) o consumir infraestructura como servicio (iaas), resultan rentables casi desde el minuto 0 a una empresa de cualquier tamaño.

obviamente… siempre y cuando tengan amortizado los bienes o se lancen a algo nuevo

Pero con las plataformas como servicio (Windows Azure Platform, Amazon AWS, Force.com … )** creo que es diferente, no creo que resulte atractivo para todos los públicos. Al fin de al cabo, una plataforma como servicio nos ofrece es una serie de APIs que nos dan acceso a los recursos de un datacenter, ya sea por el número de máquinas corriendo la aplicación, el número de gigas o teras disponibles, la alta disponibilidad…  pero siendo realistas, no todas las aplicaciones necesitan un datacenter para funcionar.

 

¿Qué aplicación podría sacarle partido a un API con acceso a un datacenter?

Hay curvas de las diferentes aplicaciones tipo en muchas charlas y artículos, pero vamos a intentar ponerle nombre a estas curvas, a ver si alguien se siente identificado.

 

image Campañas de marketing, pruebas de concepto, cubrir un evento por un espacio de tiempo (elecciones, foros, convenciones… ), una tarea limitada (convertir videos, fotos…), un render de una pelicula 3d …

image Una campaña de marketing, donde los primeros días necesitas más servidores, algo viral,  un negocio nuevo en internet (fail fast & cheap), un producto como servicio que triunfa, una nueva red social  una web de gatitos y perritos,… Y no tiene porque implicar solo potencia de computación, puede ser una curva de necesidad de almacenamiento, como un lugar donde cada vez necesites más almacenamiento (videos, documentos)
image No hay un perfil tipo ya que  cualquier aplicación puede tener un pico impredecible, la cuestión es… ¿nos importa cubrir esa necesidad extra? ¿podemos asumir no dar servicio a nuestros clientes si lo solicitan todos a la vez?
Puede que hasta ahora no nos saliese rentable, pero el modelo que proponen las plataformas como servicio pueden haberle dado la vuelta a la toritlla.

 

image Aplicaciones con unas necesidades muy cambiantes, como el mundial de fútbol que hizo telecinco en internet, donde los días pico necesitaba 142 servidores de media, y los días valle 4.

OJO que no tiene porque necesitar más de 100 servidores para ser rentable, con que puedas cambiar de 4 a 1 deberías planteártelo 🙂

 

Además de estos perfiles tipo, tenemos que tener otros factores en cuenta, como que queramos tener presencia en diferentes mercados con un único proveedor (despliegas en diferentes datacenters y listo), o que la plataforma nos ofrezca un servicio que no podemos / queremos implementar localmente (como los servicios de AppFabric en Windows Azure) o el tiempo de respuesta en casos de necesitar escalabilidad cuasi inmediata, puede que un hoster ‘tradicional’ no pueda aprovisionar y desplegar nuestra aplicación en 100 servidores en 40 minutos…

 

Pero entonces, ¿en qué aplicaciones no serian rentables el uso de una plataforma como servicio?

Solo tenemos que invertir los escenarios anteriores

Aplicaciones de uso constante, con usuarios conocidos y estables donde la caída circunstancial no es crítica.

Y no pequemos de enterados, éste perfil es el de muchas aplicaciones en internet. Los blogs, las páginas de presencia corporativa, las páginas de marketing 1.0, las extranets, comercio electrónico de nicho,… En los precios que se barajan hoy en las plataformas como servicio, en estos casos será más rentable quedarnos con nuestro hoster o con ese espacio compartido en el servidor web en el que ya estamos. En caso de utilizar una plataforma como servicio, estaríamos desaprovechando los recursos por los que estamos pagando ese extra al mes.

¡Es como pagar el gimnasio para no ir!… pero eso no lo hace nadie ¿no?

 

si desarrollas producto, adaptate o muere

Claro y conciso ¿no? Tú, yo, tus clientes, nuestros conocidos,… y en definitiva, todo el mundo, se está acostumbrando a marchas agigantadas al consumo de valor como servicio. Si construyes producto, debes adaptarlo cuanto antes para poder exponerlo como servicio. Esta adaptación debe ser tanto técnica, como de negocio, y no que decir tiene que a poco bien que se venda tu producto como servicio, te vendría muy bien exponerlo sobre una plataforma como Windows Azure, donde tienes todo un datacenter detrás para ayudarte a no morir de éxito y a reducir los costes de los recursos necesarios para el alojamiento y buen funcionamiento del producto 🙂

 

vale por hoy…Happy hacking!!

~ds

 

* Seguro que se me olvida algún escenario, si me lo indicáis lo añado. thanks.

** No pongo a Google porque todavía no tiene la oferta empresarial madura, aunque según vi en un evento hace poco la tendrán… en algún momento.

*** Tengas o no alguno de los escenarios, las plataformas como servicio son un nuevo reto para los desarrolladores y es recomendable que estemos familiarizados con el tipo de apis, que hagamos nuestro ‘Hola Mundo’ para perderle el miedo. En el caso de la plataforma Windows Azure hay recursos gratuitos suficientes para probar y familiarizarse con la plataforma para el futuro http://msdn.microsoft.com/es-es/azure  ó http://www.twitter.com/esazure

Hablar de HTML 5 es gratis

…y si además de ser gratis hace que estés en el candelero, que tengas unos followers extra en twitter, o unos cientos más de visitas en el blog… pues habrá que opinar, ¿no? ¿no es lo que hace todo el mundo? si no lo haces te quedas atrás… no estás en “la ola del software”!!!

Personalmente, hasta hace poco no he tenido tiempo de meterme un poco con todo este tema de HTML5 como para tener una opinión que defender. Hasta ahora había asistido a charlas de diferentes proveedores, había leído algún documento del W3C, he visto algún video, he probado algunas demos… pero no estaba cómodo defendiendo una opinión propia aun. Es sorprendente como tanta gente pasa a tener una opinión del mundillo de HTML5 tan rápidamente, suena a que más de uno está comulgando con opinión prefabricada }=)   vade retro tecnicoless!!

De todos modos, como opinar es gratis y en internet publicamos cualquiera, pues ahí va mi opinión sobre toda esta historia…

En realidad, de qué se habla cuando se habla de HTML 5?

En los foros en los que yo he estado y en los recursos que he consumido, cuando se habla de HTML5, realmente se habla de HTML5 como leguaje de marcas, de CSS3 y de las nuevas APIs que deberían exponer los navegadores. Estos bloques se corresponden cuasi perfectamente con los working groups dentro de HTML 5, que son:

w3c HTML. Lenguaje de marcas

w3c Web Apps. API

w3c CSS. Estilo

w3c SVG. SVG 😉

ecma  ECMAScript. Lenguaje para manipular el DOM

Y estos grupos, aproximadamente trabajan sobre 100 especificaciones diferentes que tienen interdependencias… sencillito ¿no? 🙂

Diferencias de implementaciones de HTML 5 entre navegadores

Resulta muy curioso ver como en las web de demos de HTML 5 de algunos proveedores se pide su navegador para ver la demo… pero si es un estándar… no debería poder verse cualquiera de las demos con cualquiera de los navegadores que dicen que lo soportan??

( por ejemplo…)

image

Si haces un bypass de la petición e intentas ver la demo en tu navegador, supuestamente  compatible con HTML5 te llevas la sorpresa de que no funciona!! Pero… ¿no funciona porque tu navegador no es compatible? o ¿no funciona porque el sitio web no es HTML5?

Espera…debe ser nuestro navegador… porque en la web que visitamos pone que es HTML5, y porqué no fiarnos, no? <modoPardillo/>

En las sesiones de Google he visto como los websockets son parte del estándar, la geolocalizacion es parte del estándar, los web workers son parte del estándar, los sensores son parte del estándar, la base de datos SQL en cliente es parte del estándar, lo que empieza con –webkit es parte del estándar…  eso si… “use it ar your own risk”   Que yo sepa, los elementos que están 100% seguros en la especificación de HTML 5 del w3c con el canvas, svg, audio, video y algunos elementos de markup (article, section, nav…) y poco más.

Entonces… web workers, sql en cliente, sensores…

Web SQL Databasehttp://dev.w3.org/html5/webdatabase/ “Beware. This specification is no longer in active mantenance”

Web Workers. No son una especificación w3c, son una especificación de whatwg. Un grupo fundado en el 2004 por Mozilla, Opera y Apple que tiene como objetivo introducir cambios más agresivos en la web. No es una especificación w3c. http://www.whatwg.org/specs/web-workers/current-work/ 

Web Sockets. Especificación draft en Nov 2010. http://dev.w3.org/html5/websockets/ 

Sensores. Que tengamos acceso a través de ECMAScript a información de los sensores/gps… presentes en el dispositivo. Ni siquiera he encontrado el spec. Si alguno lo tenéis os agradecería el enlace, solo he encontrado una discusión en un foro de whatwg.

etcétera… No digo que sean malas ideas, ni mucho menos, pero tenemos que tener en cuenta que NO son parte del estándar w3c, ni tienen porqué estar soportadas en el futuro por todos los navegadores. A todos los efectos sería como hacerte un plugin especifico para tu navegador y esperar que tu web se vea igual en todas partes.

 

y es que….el estándar no esta listo!!!

Obviamente los aprox 100 documentos de los diferentes working groups no están en el mismo estado, algunos están acabados, otros en proceso y otros con mucho trabajo pendiente. El estándar… HTML5 como gran paraguas, no esta acabado, pero ¿hasta qué punto está usable? ¿puedo empezar a trabajar basandome en el? ¿cuánto le importa a un fabricante de navegadores? y ¿ cuánto nos importa como desarrolladores? :) 

Mientras se va cerrando el estándar y los diferentes navegadores compiten para tener una implementación que respete los estándares, pienso que también se hace una carrera paralela por hacerse con el estándar de mercado / estandar de uso. Imaginemos que un navegador YYY implementa alguna funcionalidad de HTML5 sin que esté cerrada, en un momento en el que aún se está discutiendo en el w3c. Imaginemos que a facebook ( como uno de los sitios más importantes) le encanta esa funcionalidad y decide sacarle partido. Aunque no estuviese en el estándar

¿a alguien le cabe la duda de que no lo van a implementar todos los navegadores? No, ¿verdad?

y ¿qué ha pasado entre que el resto de navegadores lo han  implementado?

Que la mayoría de usuarios de facebook han descargado el navegador YYY y lo han colocado en posición dominante respecto a cuota de mercado…. y eso por tirarse a la piscina con el estándar. Premio!!

En este momento casi todos los proveedores están jugando la baza de SU implementación del estándar para que se adopte cuanto antes y el resto vayan detrás. Y digo casi todos porque creo que desde Microsoft estamos siendo bastante estrictos con la implementación (aunque no sé como… acabaremos siendo los malos)… cosa que a estas alturas del negocio, personalmente no sé si es buena idea o es pecar de pescadilla en aguas de tiburones. Remitimos más tests que nadie para asegurarnos que todos implementamos el estándar del mismo modo, estamos en todos los foros donde se están definiendo las especificaciones, intentamos dar transparencia en el proceso de w3c, llevamos la implementación de forma muy cautelosa… a ver cómo acaba 🙂

Me recuerda a la imagen de un duelo… donde los participantes muy respetuosamente cogen el arma y se alejan 10 pasos de espaldas… pero al segundo paso se oye  un ¡bang!

 

Mi recomendación personal e intransferible

Audio, video, canvas, css3, nav y demás… si a día de hoy quiero hacer algo que salga de ahí y que no se pueda hacer con JQuery. Lo hago con Silverlight.

 

Pero entonces… si HTML 5 es TAN, TAN, TAN genial… ¿qué pasa con Silverlight?

esto lo dejamos para otro día… 😉

 

happy hacking!

~ds

 

PD1 –> Estoy algo cansado de oír que HTML 5 es el futuro de la web. Si lo es o no lo es… lo decidirá el tiempo. Hemos oido tantas veces que X o Y es el futuro de la web…

PD2 –> los principales sitios de prueba de HTML5

Microsoft –> http://ie.microsoft.com/testdrive/

Google –> http://www.html5rocks.com/

Apple –> http://www.apple.com/html5/