Buscar en el blog de Andrés Cifuentes

Mostrando las entradas con la etiqueta google. Mostrar todas las entradas
Mostrando las entradas con la etiqueta google. Mostrar todas las entradas

martes, 13 de septiembre de 2011

Entre las lineas del Directorio Deportivo

Ventajas de la Plataforma como Servicio: Google App Engine

Adoptar un modelo de Cloud Computing no es una actividad que se pueda realizar de un día para otro, como en la mayoría de los cambios de paradigma, es un proceso que toma tiempo y en el cual se aprende de las experiencias y sobre todo de los errores.

Cuando Augusto Porto nos contactó para trabajar en su portal de Condolencias nosotros acabábamos de llegar el evento de Google IO, donde habíamos visto la plataforma como servicio (PaaS) de Google, por lo que la recomendación fue desarrollarlo sobre esta plataforma para aprovechar sus beneficios.

Nos tomo más tiempo de lo planeado salir con la página por que la curva de aprendizaje fue larga, el cambio de lenguaje y modelo tomó tiempo entenderlo y adaptarlo, particularmente el cambio de la base de datos relacional a Bigtable, el datastore de Google App Engine, sin embargo sabíamos que era un proceso y un reto técnico.

Después de varios meses de desarrollo e iteraciones sobre el sitio de condolencias, surgió una oportunidad de negocio para Augusto con el Directorio Funerario, en donde tuvimos la oportunidad de mejorar el proceso de desarrollo y resolver algunos de los problemas de arquitectura que tuvimos en condolencias.com, este sitio finalmente lo lanzamos hace más de 2 años y de nuevo fue parte de un proceso de aprendizaje. Para el directorio en particular, el reto estuvo en la velocidad de respuesta en donde tuvimos que realizar varias optimizaciones en el navegador y en la plataforma para tener tiempos de respuesta efectivos.

Finalmente este año, 2011, hemos desarrollado y estamos en la fase de lanzamiento del Directorio Deportivo, en donde hemos aplicado la experiencia no solo de los dos proyectos anteriores, también de otros proyectos que hemos desarrollado sobre Google App Engine como los puntos de Vía Baloto y nuestros productos como SupportPanel.

Ventajas Técnicas del Directorio Deportivo

Escalabilidad, que según la Wikipedia es "La propiedad deseable de un sistema, una red o un proceso, que indica su habilidad para extender el margen de operaciones sin perder calidad, o bien manejar el crecimiento continuo de trabajo de manera fluida, o bien para estar preparado para hacerse más grande sin perder calidad en los servicios ofrecidos.". Que para el caso del directorio deportivo implica que sin importar la cantidad de usuarios que realizan consultas sobre el directorio o la cantidad de información que este contenga la experiencia de los usuarios debería ser la misma.

Elasticidad, se refiere a un concepto clave del modelo de plataforma como servicio y esta relacionado con la forma como se cobra su uso pues implica que una aplicación puede expandirse y contraerse según la demanda, en todos sus niveles (Capa de presentación, servicios, bases de datos, seguridad ... ). Esto también implica que los componentes de aplicación pueden crecer de forma independiente el uno del otro. Así que si necesita más espacio de almacenamiento para los datos, debe ser capaz de crecer sin afectar a ese nivel, la reconfiguración o el cambio de los demás niveles. Básicamente, se comporta como una esponja, cuando se agrega agua a una esponja, crece en tamaño, que en el mundo de aplicaciones web significa que entre mas clientes añade, más crece.

Servicio de nivel mundial,  las infraestructuras de "Cloud Computing" como Google App Engine proporcionan mayor capacidad de adaptación, recuperación de desastres completa y reducción al mínimo de los tiempos de inactividad. Comparada con el "hosting" promedio que usábamos para alojar este tipo de desarrollos es imposible comparar lo que se recibe frente a lo que cuesta.
  
Ventajas Funcionales del Directorio Deportivo

Velocidad, el problema de la velocidad es que la medida bajo la que se mide es relativa a la experiencia del usuario, y es claro que cada vez estamos frente a usuarios mas exigentes, yo diría casi que mal acostumbrados, ahora todos los usuarios van a comparar las aplicaciones con Facebook, con Google, con Amazon, y obviamente a ninguno le interesa saber que la infraestructura y la cantidad de ingenieros que hay detrás de cada una de ellas supera por cientos los disponibles en un mercado como el latinoamericano. De ahí que al utilizar una plataforma de clase mundial con un desarrollo cuidadoso en desempeño, un diseño controlado mas no optimizado, se tengan tiempos y velocidades de respuesta muy comparables con desarrollos de productos o servicios de primer nivel.

Flexibilidad, En esta nueva versión del directorio nos hemos enfocado en aumentar la flexibilidad de la herramienta permitiendo a los anunciantes tener mas información, en diferentes estilos y formatos, por ejemplo pueden incluir vídeos, presentaciones o galerías fotográficas. 

Facilidad, simplificando la interfaz de búsqueda hemos mejorado la capacidad para que las personas encuentren la información que necesitan, aprovechando el motor de búsqueda textual recientemente liberado por Google sobre el App Engine. Adicionalmente hemos mejorado los filtros por ubicaciones para adicionarle un contexto a la información y ayudarle a las personas a encontrar lo que realmente están buscando.

Esperamos continuar aprovechando todas las herramientas tecnológicas del primer mundo para aplicarlas en nuestro ámbito de influencia y así continuar cerrando la brecha entre el mundo en el que estamos y el que soñamos estar. 

Andrés Cifuentes
Septiembre 12, 2011

jueves, 7 de agosto de 2008

Herramienta de extraccion de contenidos


Web content extractor

Algunas veces nos vemos en la necesidad de extraer el contenido de alguna página web y un simple copiar-pegar de una tabla HTML a OpenOffice.org Calc - o en su defecto a MS Excel - es suficiente, sin embargo en otros casos necesitamos hacer cosas más complejas o que necesariamente sean automáticas, por la distribución en la página, el volumen de información u otra causa del mismo estilo.

Recientemente me vi en esta situación pues una importación masiva de correos a Google Apps genero mas de 7000 errores, evento poco común en las importaciones masivas usando IMAP, cuando el cliente me pregunto "bueno ahora como reprocesamos las cuentas" la respuesta mia fue "sencillo, extraigamos las cuentas que fallaron y las volvemos a procesar" ... nótese el sencillo ... que resulto siendo una tarea de dos días.

El caso es que en el panel de Google Apps en las migraciones de correo usando IMAP los resultados si salen, pero se obtienen paginados de 20 en 20, el proceso de capturarlos hubiese sido una tarea dispendiosa, tediosa y propensa a errores si hubiéramos puesto a alguien a copiar-pegar clic en siguiente unas 389 veces.

Así que una búsqueda en Google - como para variar - me ayudo con la solución, buscando por web data extractor, aparecieron varias alternativas, de las cuales probé los trials de Web Content Extractor, Web Scrapper y IMacros de Iopus.

Aparentemente los tres tienen la funcionalidad para realizar la tarea, pero la verdad Web Scrapper tiene una interfaz confusa y sin los wizards no es claro como configurar las cosas, mientras que IMacros es mucho más potente y creo que la funcionalidad de extraer la información de las páginas es una consecuencia de su diseño y no es realmente el objetivo de la herramienta.

En cambio, Web Content Extractor, pareciera diseñada para exactamente el problema que yo tenía, permite primero autenticarse en el sistema, señalar el contenido que se quiere copiar, escoger las columnas que nos interesan y luego generar las URLs a partir de una interfaz extremadamente sencilla.



El programa no simula el navegador, lo que hace es precisamente usar el navegador, tal cual. En la pantalla de la vista preliminar se ve el sitio cargando pagina por pagina, extrayendo el contenido y continuando con la siguiente.

Al finalizar me permitió exportarlo a un archivo csv, aunque tiene otras opciones como ponerlos en una base de datos Access o Mysql, un script sql, un archivo xml o html.

Eso era exactamente lo que yo necesitaba y eso fue lo que hizo la herramienta. Aunque no es libre, ni gratis, - Que es como nos gusta - este es un ejemplo de una herramienta que hace una sola cosa y la hace bien.

Andrés Cifuentes
Agosto 7, 2008

jueves, 1 de mayo de 2008

Primeros pasos con Google App Engine (Configurar Ambiente)


Eforcers como socio de Google en el programa empresarial (GEP - Google Enterprise Partner) tiene acceso a algunas de las nuevas tecnologías y productos de forma preferencial, en este caso nos invitaron a conocer y "jugar" con el nuevo servicio de Google App Engine, herramienta que promete cambiar el paradigma del desarrollo de las aplicaciones web.

En este blog les describiré los primeros pasos que seguimos para desarrollar nuestra primera aplicación con David y así en cierta forma dejar documentado el proceso y los puntos claves a tener en cuenta en esta primera aproximación con este ambiente de desarrollo y publicación de aplicaciones web.


Pre-requisitos

Antes de siquiera empezar a descargar el SDK lo primero que debemos hacer es instalar o actualizar la versión de Python que tengamos en nuestro ambiente de desarrollo, en este caso yo había instalado python para un proyecto, pero no tenia la ultima versión (2.5) así que en mi Mac ejecute fink commander para actualizarla, proceso que se toma su tiempo pues compila los paquetes y sus dependencias a partir del codigo fuente, unix old style (configure, make, make install).



Instalación

Ahora si podemos descargar el App Engine SDK de acuerdo al sistema operacional en que tengamos nuestro ambiente de desarrollo, actualmente esta para plataforma Win, Mac Os X y Linux. Una vez instalado el SDK nos deja dos comandos, uno para cargar el ambiente de desarrollo y otro para realizar el despliegue de la aplicación.



Los comandos tal como lo describe el readme del SDK se ejecutan asi: /usr/local/bin/dev_appserver [options] application root="", creo que por ahora el que nos debemos aprender es como sacar la ayuda.

/usr/local/bin/dev_appserver -h

Como buen sysadmin me voy a ahorrar la tarea de tener que escribir todos los parámetros que se necesitan cada vez que vaya a levantar el ambiente de desarrollo, así que crearé un script en shell para ejecutar rápidamente, en principio veo que solo debe recibir por parámetro el directorio raíz de la aplicación así que ese será mi $1.

Configuración

Casi listo, ahora tengo que configurar mi IDE para desarrollar en Python, afortunadamente Eclipse soporta varios lenguajes usando plug-ins entre ellos hay uno para codificar en Python se llama PyDev, entonces no solo tenemos que instalarlo.

Usando la opción en el menu: Help > Software Install > Find and Install, la URL del proyecto para que nos realice las actualizaciones es :

http://pydev.sourceforge.net/updates/

Buscar la ultima versión e instalar.

Finalmente configurar el modulo instalado definiendo la ruta de pyhton y aceptando las librerías por defecto que instala.



Eventualmente alguien desarrollará o adicionará a la lista de servidores que se pueden levantar, manejar y monitorear desde el modulo de servidores en Eclipse el ambiente de desarrollo de Google App Engine, mientras tanto ejecutar un scriptsito no sera una molestia.

Bien creo que estamos listos para hacer el hola mundo.

Andrés Cifuentes
Mayo 1, 2008