28. No se pregunten lo queustedespuedenhacer en la nube; pregúntense lo que la nubepuedehacerporustedes ¡Muchas Gracias! Sebastián Gómez sgomez@artech.com.uy @sebagomez
Notas del editor
Cloud Computing es un término conocido es el que mas pegó… Qué es Cloud Computing? Cloud Computing es ejecutar aplicaciones desde la nube… pero y cual es la diferencia con lo que ya había de antes, con los clásicos hosters que existen desde hace años?Por eso el término no me gusta, porque queda «cool» pero no dice nada… en cambio Elastic Computing si dice algo, Elastic Computing es un mejor término porque refleja la capacidad que tengo de utilizar recursos de la nube (internet) y pagar por la cantidad de recursos que estoy utilizando durante el tiempo que lo hago. Es lineal. Por eso elastic computing es un término que a mi me gusta mas.En los próximos 30 minutos les voy a contar las ventajas que pueden utilizar hoy de Elastic Computing pequeñas y medianas empresas, justamente por el componente elástico…
Pero antes de ir de lleno a la charla déjenme contarles algo… levanten la mano quienes han oído hablar de CloudCamp [manos levantadas]CloudCamp es una organización que se dedica a organizar eventos para la difusión y evangelización de CloudComputing. Este año se hizo por primera vez acá en Uruguay (en Montevideo) y tuve el agrado de participar y la verdad que está muy bueno, se lo recomiendo a todos los interesados en el tema (que debes ser todos).Pero lo interesante que quería mostrarles de CloudCamp es que si entran a la página (CloudCamp.org) verán en la parte de sponsors una buena cantidad de los de los cuales estos son algunos. Y con esto quiero demostrarles que CloudComputing no es una moda del momento… los grandes jugadores están invirtiendo cifras astronómicas en la construcción de los Data Centers que soportan esta infraestructura. Y lo otro es fíjense las diversidades… CloudComputing no es el caballito de batalla de una empresa que está haciendo mucho ruido… son todas las que tarde o temprano se dieron cuenta de la importancia de CloudComputing.Pero en realidad, si entran a la página de sponsors de CloudComputing lo que mas llama la atención es la cantidad… porque aparte de estos sponsors están…
Estos,
Estos,
Estos,
Y estos…
Y aparte de los sponsors traje algunos casos de éxitos de PyMEs que ya migraron sus sistemas a la nube.
Entonces?... Cloud Computing no es una moda... No es el caballito de batalla de una empresa Y ahora les voy a mostrar como las pequeñas y medianas empresas pueden hacer uso de la nubePersonalmente pienso que las pequeñas y medianas empresas tienen cierta ventaja, ya que tienen menos que perder y es mas fácil moversePero es para mi?
Déjenme que les cuente entonces por qué si es para ustedes.La nube brinda tres servicios o mejor dicho, yo me voy a basar en tres servicios que encuentro fundamentales para la ejecución de aplicaciones en la nube.Estos tres servicios el del poder computacional, el de base de datos relacional y el de almacenamiento. Si bien el de bases de datos es también almacenamiento los voy a tratar estos dos servicios por separado porque si bien «suenan» parecido son bastante distintos.
Empecemos entonces por el de cómputo que es el mas común el queprimerounoasocia con el tema de Cloud Computing.
Computo. Este es el servicio mas conocido... la nube me deja correr mi aplicación en algún lado. Este es el que se menciona cuando se habla de decenas de instancias en máquinas de 16 GB de RAM y todo eso... pero puedo levantar solo una... o dos para tener alta disponibilidad y balanceo de carga.Pero tal vez en mi centro de cómputo tengo ya una aplicación ejecutando, que está en un servidor que anda bien o la tengo en algún hoster local con quien arreglé un buen precio y no tengo la necesidad de moverme a este esquema.Este servicio véanlo como un servicio de alquiler de máquinas.
Imagínense por ejemplo que mi appgenexus que siempre generé con .net y corrí en IIS en servidores Windows, y quiero hacer una prueba de concepto, quiero ver cómo se comporta generando java y corriendo en un Apache sobre Linux. Para hacer una prueba como esa tengo que salir a buscar un servidor… voy a tantear con las especificaciones… voy a pensar bueno si ahora ejecuta en esta máquina en Windows busco una parecida para correr el Linux, hay que tomar la decisión de qué Linux instalar, quien lo va a hacer, quien va a hacer todo el setup de esa máquina para que yo pueda después hacer el deploy de mi aplicación ahí. En vez de eso, yo puedo ir a Amazon y alquilar por un día o unas horas una máquina con la distribución de Linux que quiera y el Apache ya isntalado… y pago por el tiempo que tengo esa máquina levantada, nada mas… no me convence esa distribución de Linux y quiero probar otro?, levanto otra máquina con el Linux que quiero y ya está…Puedo hacer también pruebas de performance. Imaginen que tenemos una aplicación en un cliente que se queja de que la aplicación anda lenta… hablamos con el equipo de desarrollo y ellos nos dicen que la programación está bien, que el problema es que está corriendo en una máquina con pocos recursos… y nosotros sabemos que está corriendo en un Dual Core con 4 GB de RAM… bueno vamos a hacer una prueba… vamos a ejecutar la misma aplicación en un equipo con 2 QuadCore con 16 GB de RAM? Cuánto me podría a mi hacer esa prueba en mi empresa? Cuánto tiempo me podría llevar hacerla? En cambio puedo nuevamente alquilar una máquina con las prestaciones que necesito T minimizo obviamente el costo del error. Qué pasa si yo encargué un equipo donde quiero instalar mi aplicación y cuando la aplicación está corriendo me doy cuenta que le erré… que necesito una máquina con mayor poder de procesamiento o con otra distribución de Linux porque la que instalé tiene «algo» que anda mal con mi aplicación… en cualquier caso todo eso tiene un costo bastante considerable en tiempo y dinero que pasa a ser despreciable si lo que hice fé contratar una máquina en amazon. Tiro la VM que levanté y agarro otra, con otro Linux u otros recursos… con 16GB de RAM anda bien, bueno vamos a probar con 8….Si ven este servicio como alquiler de equipos le van a encontrar muchos beneficios.
Y qué va a hacer Genexus? va a hacer el deploy de aplicaciones directamente a la nube.Va a haber un wizard (también tareas msbuild) que van a empaquetar mi aplicación me va a pedir los datos relevantes al deployy Genexus se encargará de enviar mi app a la nube y que quede ejecutando con los parámetros que le marqué anteriormente.
Acáestá lo que les decía, va a existirunaopcióndesdeGenexusque me abrirá el wizard yotengoqueingresar los datos, estosdatostambiénestáncomoparámetrosobviamente de lastareasmsbuild y al final mi aplicaciónquedacorriendo en la nube.Piensenque con estemecanismo, jutnos con lastareasmsbuildyopodríaarmar un proceso de night build de unaaplicación web… puedoarmartodo el esquema de build todo al final del díaculminando con la subida de la aplicación a la nube al final paraquemisbetatesterstengantodos los dias bits nuevos.
Estaquetrajeparamostrarlesesunaaplicaciónquehizo la gente de Genexus USA. Esunaaplicaciónparaseguimiento de proyectos, interactúa con Genexus, Genexus Server y es la primer experiencia de deploy exitosoquetuvimos… estaparticulaermenteestáejecutando en Windows Azure.Si les interesa mas el gerenciamiento de proyectosGenexus hay unacharlasobre XPM hoy a las 15:45
Hasta aquívemos el primero y el mas común de los serviciosque mas allá de lasdistintasimplementaciones de los proveedoresno dejan de sermáquinasdondeestácorriendo mi aplicación.Ahora el servicioquevamos a veres el de base de datosrelacional y esteyaes un pocodistintoporqueyatengoquedejar de verlocomomáquinassinoque lo veocomo un servicio. Quiensabe en cuantasmáquinasestácorriendo, y lo mejor de todoesque no me interesa.
El caso más típico es el de los datos de mi aplicación y obviamente se le saca mas el jugo cuanto mas cerca del servidor de base de datos estoy… De nada me sirve tener un servidor de base de datos corriendo en multiples servidores con balanceo de carga si le voy a tirar una consulta desde acá que me va a devolver mil registros…. Aunque, ojo, porque si la ejecución de esa consulta impleca varios joins, sub consultas, etc… ahí tal vez si, me convenga tener esa base de datos en la nube… hay que analizarlo.
Pero puedo tener otros escenarios que datos de mi aplicación. Otro escenario podría ser el tener una base de datos que atiende aplicaciones. Mi empresa tiene un sistema que necesita grabar o leer de una base en común... hacen un intercambio de datos con esa base de datos.Pero tal vez la ventaja mas grande sea todo los problemas que me evito con esto… en cuanto a mantenimiento, que el crecimiento del ldf que el espacio en disco del mdf en fin cierto tunning que siempre suele en el servidor de base de datos que si necesito mayor poder de procesamiento para el servidor de base de datos… etc
Y que tiene Genexus para este servicio?Bueno por suerte (para nosotros) tanto Amazon y Microsoft nos lo hicieron bastante fácil dado que el servicio de Microsoft (SQL Azure) no es más que un SQL Server y el de Amazon (Amazon RelationalDatabaseService (RDS) es un MySql y aparte ambos exponen el servicio con los mismos protocoles que usaríamos para conectarnos a un DBMS ‘local’.Como ven en la imagen, lo único que tengo que hacer desde Genexus es cambiar las propiedades de la conexión a la base de datos… acá muestro la conexión con SQL Azure y lo único distinto a SQL Server es que el «Server Name» es bastante distinto, el resto es igual…Esta forma de conexión, aparte de hacer casi transparente el cambio entre por ejemplo un SQL local y SQL Azure me permite utilizar todas las herramientas que ya dispongo para conectarme a estos nuevos servicios. Quienes utilicen el SQL Management Studio de SQL Server, también lo pueden utilizar para conectarse a las bases de datos de la nube y lo mismo para las herramientas MySql.SQL Azure aparte tiene una aplicación en internet llamada por ahora proyecto «Houston» donde uno puede acceder a las bases de datos desde un navegador.
Acáven lo que les decía, ahíestoylogueandome al servidor de SQL Azure mirolastablasquetiene, puedoverlasestructuras y hacerconsultasobre los datos.
Hasta ahoravimosentoncestodo lo necesarioparaquejecuteunaaplicaciónGenexus normal comolasquepuedentener hoy en día en la nube.Pero hay otroescenarioque no vimos, y esdondeentra el últimoservicio, el de almacenamiento. Supóngansequetienenunaaplicaciónquetiene un fuertecomponente multimedia, tieneimágenes, quepuedo no saber el tamañoporque la subenusuarios… o videos tambiénquesubenusuarios y estosquedanpúblicosparaservistosdesde mi aplicación. Como solucionoeso hoy en día… hoy tengoquesalvarlos en el disco de mi server o en algún server dedicadoparatal fin. Tendréalgunaunidadmapeadadondecorra mi aplicación y ahíiréorganizandotodosestosarchivos. Esto en la nube no se puedehacer, porque el disco de la VM dondecorre mi aplicación, muchasveceseschicoperoaparte la informaciónqueahíquede no espersistente. Si el sistemadetectaunaanomalía con la máquina virtual la baja y levantaotrra y yopierdo los datosque disco de esamáquina.
Para resolver esecasoesqueexiste el servicio de Storage o almacenamiento. Este servicio me proveejustamentealmacenamiento no estructurado . Este servicio se divide en tres:Primeroestán los blobs… los blobs son archivosque el servicio me dejadejarporahí… yo no tengoquepreocuparmedondequedanexactamenteesosarchivos, pero en el caso de Windows Azure los archivosquedansalvados en 3 lugaresdistintos, dos dentro del mismo data center y un tercero en otro data center distinto. Imaginen lo queseríaimplementaresodentro de nuestraempresa.Aparte, ambos proveedorestienenuna red de caché de esosarchivos en el mundo. O sea, quenibienyosubo un archivo a eseservicio, esearchivoesreferenciadovíaunaurldespués, esearchivoesreplicado a al a red de caches mundialquecuenta en la actualizad con 22 locaciones en todo el mundo, siendo la mas cercana a nosotros un DataCenterque hay en San Pablo, Brasil.Esto me permitetenerunabuenaexperiencia de usuarioindependientemente de donde me encuentre. Si hago el request desde Uruguay me va a venir el archivodesde San Pablo, y si lo hagodesde Asia hay un Data Center en Korea para resolver lo mismo de aquellado del mundo. Porotroladotenemos el sistema de colas de mensajes o queues. Para quienesesténfamiliarizados con el tema de colas de mensajesesto no es nada nuevo. Este servicio me permiterealizarcomunicacionesasincrónicas entre aplicaciones. Este servicio se puedevercomo un sistituto de algunoscasos en los que hoy utilizamos web services. Imagínensequeestoy en mi aplicacióncompletando un formularioque al finlizarnecesitacomunicar a otrosistema la acción. Si el otrosistema no me tienequedarunarespuesta, yopuedoutilizarestesistema y poner un mensaje en la cola paraque el usuario no se coma el tiempo de respuesta del otrosistema… el otromcuandopuedava a leer esemensaje y registrar la acción.Estosservicios me brindanunamjora en los tiempos de respuesta lo querepercute en mejorexperiencia de usuariopor lo mencionadoanteriormente. Y la cereza de la tortaesquetodosestosserviciosestándisponibles via una API rest. Por lo queya hoy podemoshaceruso de estosservicios…
CómodesdeGenexusvamos a utilizaresto? Vamos a tener external objects específicosparaestosservicios, vamos a empezar con Widnows Azure
Al importarestos external objects se les van a crearlasestructurasqueahí se ven y cargarunagrilla con los containers de mi cuentapasa a seralgo un poco mas fácil.
Con estos servicios deberían tener todo lo necesario para ejecutar su aplicación en la nube… tenemos el de computo para la ejecución de mi código, tenemos el de base de datos relacionales para guardar mis datos, y tenemos el de almacenamiento para guardar otros datos estructurados.
Si a mi se me ocurreporejemplohacer un clientepara twitter… me voyderecho a la nube… no me arriesgoporqueesbastanteimpredecible la cantidad de usuariosquepuedollegar a tener… y sillego a tener el felizproblema de que mi aplicaciónempieza a agonizarpor la carga de usuarios, lo resuelvofácilmentelevantandomáquinasvirtuales.
Y creoquelasPyMEstienenunamejoroportunidadporaquello de los quemenospierden… sivoy a hacerunaaplicaciónpara los usuarios de twitter… son millones, no se queaceptaciónvoy a tener… voyderecho a la nubeEstasaplicacionesquemuestroacá son aplicacioneshechas con Genexusqueestánpor lo menosutilizando o brindandoservicios en la nube. Lo que les mostréduranteestosminutosesalgotangibbledondeya hay gentetrabajando… no es nada para la NASA.En particular Genexus Server es un desarrollo en el queestuvemuyinvolucrado y GeneXus Server en estemomento lo tenemos en Amazon. Y Artechyacuenta con un centro de computosconservidores… pero no sabíamoscomonosiba a ir, y porsuertetomamos la desición de ir a la nube. Hoy Genexus Server estáejecutando en Amazon (vayauno a saber fisicamentedonde) y a medidaque la aceptación ha aumentadohemosidolevantandomáquinasvirtuales.
Entonces… y parafraseando a JFK No se pregunten lo queustedespuedeshacer en la nube; pregúntense lo que la nubepuedehacerporustedes.Muchasgracicas.