Archivo

Archive for the ‘menéame’ Category

Un apunte personal rápido sobre el canon AEDE

julio 22, 2014 64 comentarios

Hoy es un día bastante triste para mí, o quizás debería decir, decepcionante, de esos días que maldices haber montado tu proyecto vital más importante en España y no en el extranjero. Hace años recibimos ofertas millonarias para comprar Menéame, podríamos haber aceptado y hoy tendría varios millones de euros en mi cuenta. Pero no lo hicimos, queríamos mucho al proyecto, considerábamos que estábamos haciendo algo que es útil y que venderlo hubiese significado su muerte (al menos en ese momento). Curiosamente fue el Grupo Planeta el que hizo la oferta más alta, el mismo grupo que hoy apoya medidas como el canon AEDE y leyes Sinde-Wert. Es decir, acertamos en nuestro diagnóstico, y aunque no somos millonarios podemos decir todavía que defendemos unos principios al que fuimos siempre fieles, aún a costa de nuestros propios intereses.

Durante estos casi nueve años tuvimos muchos problemas, acusaciones injustas, difamaciones (hasta me acusaron de pederasta), ataques DDoS, amenazas físicas, acosos,  demandas, juicios, intentos de engañar a los controles antispam en Menéame (incluso de periodistas de los medios que hoy piden canon AEDE, medios de PRISA incluidos), la tan mal redactada LSSI que con la inseguridad jurídica que genera nos deja en posición muy difícil entre defender la libertad de expresión y censurar la opinión de terceros para que no nos consideren corresponsables de ilícitos (ahora mismo estamos acusados en un juicio penal, por un enlace). Es decir, no fue nunca un camino fácil, y por la crisis y la caída de los ingresos de publicidad apenas nos da para mantener y desarrollar lo necesario… y pagar los gastos judiciales y de abogados para defender la libertad de opinar y enlazar.

Una de las cosas que siempre defendimos en Menéame (con mejor o pero criterio, con nuestras dudas y errores humanos) es que son los creadores de contenidos los que deben ser los beneficiados por las visitas. Así tomamos medidas técnicas para favorecer a los enlazados (cabeceras <H1> en el titular con enlace para favorecer su posicionamiento en buscadores), los titulares no enlazan a páginas de Menéame sino siempre al sitio enlazado (los que nos perjudica enormemente en número de páginas impresas, casi expulsamos a los visitantes), penalización y bloqueo de sitios que se dedican al copy&paste o plagio de otros sitios, o que sólo enlazan a material no autorizado, etc.

Pensábamos que en todos estos años hicimos relativamente un buen trabajo en este sentido. De hecho la mayoría de medios incluyeron un botón de enviar a Menéame (hasta lo hace la BBC, o el mismísimo Youtube) y sus propios periodistas hasta hacían trampas para enlazar (supongo que no es para auto castigarse, Menéame genera anualmente unas 300 millones de visitas a sitios externos).

Pero un día el gobierno anuncia que pondrá un canon para sitios como Menéame. La tasa Google le llamaron y pretenden que se siga llamando así, cuando la realidad es que proporcionalmente afecta mucho más a Menéame que a Google. Google News España no genera ingresos, y el volumen total de visitas es proporcionalmente ínfimo para esa empresa. Podrían cerrarlo y ni se darían cuenta.

No quiero repetir lo que se ha escrito ya demasiado (análisis económicos, legales, de competencia, de inseguridad jurídicas, de eliminar el derecho a cita, etc.) que podéis consultar desde la recopilación que hay en el sitio de la Coalición ProInternet, o el posicionamiento y análisis económico que hicimos en Menéame, o mi reflexión sobre el derecho a cita y los medios en El Mundo, pero voy a hacer un resumen de los argumentos de AEDE y el gobierno desde el punto de vista personal y de Menéame.

Los usuarios de Menéame envían enlaces (a cualquier sitio) y le añaden una entradilla explicativa de hasta 500 caracteres. Esta entradilla puede ser redactada por ellos o hacen un copy&paste de alguna frase, i.e. una cita, del sitio enlazado. Antes del boicot de los propios usuarios, Menéame generaba unos 2 millones de visitas mensuales a los medios AEDE, dado que son artículos públicos con publicidad, esas visitas generan ingresos a esos medios (mínimo unas 20 veces superiores a los que genera una página en Menéame). Lo que parece una relación que beneficia a todos (lectores, medios y Menéame) ahora se divulga que en realidad les estamos ocasionando pérdidas. El argumento fundamental de AEDE es que en realidad si no se les enlaza en Menéame habrían recibido más de las 2 millones que les genera. Intuitivamente no tiene ningún sentido, y se explica por el deseo de los medios de aparecer en los agregadores y redes sociales, pero es que además hay estudios que confirman lo contrario, que les está generando beneficios.

Aún así, el gobierno del PP, con el apoyo del PSOE y CiU, siguen adelante con esta propuesta, que además de todas las injusticias (y ventajas a empresas que no están en España) se cargan una limitación fundamental de los derechos de autor, ya enunciada en el Convenio de Berna de Derechos de Autor en su artículo 10, específicamente el 10.1:

Artículo 10
Libre utilización de obras en algunos casos:
1. Citas; 2. Ilustración de la enseñanza; 3. Mención de la fuente y del autor

1) Son lícitas las citas tomadas de una obra que se haya hecho lícitamente accesible al público, a condición de que se hagan conforme a los usos honrados y en la medida justificada por el fin que se persiga, comprendiéndose las citas de artículos periodísticos y colecciones periódicas bajo la forma de revistas de prensa.

Con esta propuesta se cargan este derecho a cita, pero además de forma selectiva: los medios que reclaman podrán seguir disfrutando de ese derecho a cita -de hecho, no podrían hacer nada sin él-, pero se les quita el mismo derecho a otros sitios web. No sólo eso, se les obliga a pagar un canon irrenunciable, aunque no les enlacen.

Un sinsentido desde todos los puntos de vista.

¿Cuánto dinero piensan ingresar por este concepto? Nadie lo sabe, no dicen lo que piensan, pero hablan de millones de euros al mes. ¿Cómo piensan recaudar, cuáles son las tasas? Tampoco se sabe, eso se debe negociar después de aprobada la ley. Otro absurdo: se hace una ley con objetivos económicos (de subvencionar a unos pocos) pero en ningún sitio aparecen estudios ni cifras aproximadas.

La realidad es otra, casi puedo apostar que Google cerrará Google News España antes que pagar un canon. A Facebook también debería cobrarse, pero les basta con cerrar su oficina en España. Igual para Twitter (porque ¿qué es un texto no significativo?). ¿Qué pasará con Youtube donde los usuarios suben vídeos de noticias sacadas de TV? Nadie lo sabe, más inseguridad jurídica, pero dudo que estén por la labor de pagar. Después de estas empresas, por volumen viene Menéame, que ya hemos comentado que no podemos pagar. Además nos deja en situación de desventaja de otros sitios similares (que incluso usan el software libre de Menéame) localizados fuera de España.

Un argumento es que hay que esperar y ver cómo se cobra, que quizás es una cantidad simbólica. Lo que es otro sinsentido, ¿modificar toda una ley de derechos de autor que se carga selectivamente el derecho a cita para cobrar un canon que es simbólico?  ¿Generar tanta inseguridad jurídica -y que ocasionará que empresas grandes como Google o Facebook inicien interminables procesos judiciales- por una birria de dinero que no soluciona nada?

No hay por donde cogerlo, no tiene justificación, ni ética, ni económica, ni jurídica, y que ni siquiera tiene el apoyo de la mayoría de los medios de noticias.

Si de verdad el problema es que les “ocasionamos pérdidas” al enlazar con una cita, se podría haber negociado y solucionado el problema de forma muy sencilla:

  • No enlazarlos más desde Menéame, o que fuese opt-in, los medios que lo consideren podrían solicitar que se les incluya.
  • Eliminar la entradilla -i.e. dejar sólo el titular- en los enlaces a los periódicos.

Ambas eran muy sencillas y bastaba con un mínimo de intercambio de emails, lo podríamos haber puesto en marcha en una hora. Pero no hubo tal diálogo, desde instancias del gobierno y de AEDE nunca nos llamaron ni preguntaron. Tiene una explicación: es completamente falso que les perjudiquemos. El interés no es el falaz “compensarle las pérdidas”, simplemente recaudar dinero de otras empresas que suponen -erróneamente- que ganan fortunas por enlazarlos.

La realidad es más sencilla, querían ir contra Google y redactaron una ley francotirador, pero de forma tan ignorante que les salió una bomba que afecta a todos. Y lo peor, a algunas empresas nos obligarán a emigrar, y otras a no instalarse en España.

Desde el punto de vista económico-social sólo perjudicará a España y no salvará a ninguna prensa o periodismo.

Desde el punto de vista personal es -como decía al principio, muy triste, ya tenemos que sortear muchos problemas (muchos rozando el absurdo) para mantener el sitio en marcha. Ya es muy complicado en España desarrollar proyectos relacionados con noticias, que involucren derechos de autor y libertad de expresión, pero nos siguen poniendo piedras.

Bueno, esto no es una piedra más, es una patada en los genitales, con tanta alevosía como ignorancia.

Señores diputados, ¿sabéis de verdad los efectos de lo que estáis a punto de aprobar? ¿sabéis que estáis siendo engañados?

Y me alejo de internet por unas horas, es todo una locura.

 

Las instancias m3 de EC2 no son lo que prometen

marzo 13, 2014 4 comentarios

Actualización: sigo estudiando el tema porque es muy raro, si pongo un proceso en bucle no consume el 100% de CPU, sino el 50%. Parece que hay un problema de medición (tanto localmente como lo que mide Amazon CloudWatch). Si descubro algo más lo pondré.

En enero de este año Amazon habilitó el uso general de sus nuevas instancias “m3″ (las originales son m1). Además del almacenamiento SSD, estas instancias tienen -según ellos- más CPU (3 ECU vs 2 ECU de las m1). Para los servidores web de Menéame usamos instancias m1.medium, pero las m3.medium parecían más adecuadas, nos podíamos ahorrar alrededor del 50% del coste. No las cambié inmediatamente porque el espacio disponible en /mnt en las m3 es muy pequeño (sólo 4GB) y allí es donde generábamos los logs del NGInx.

Pero estos días Amazon también empezó a ofrecer almacenar los logs del balanceador de carga (ELB) en S3, por lo que habilté estos y deshabilité los generados por NGInx en las instancias. Así, ya no hacían faltan varias decenas de GB por cada 24 horas de funcionamiento de cada instancia y podíamos pasar a usar las instancias m3 sin ningún otro cambio. Lo hice a partir de las 12 de la noche, tal como es visible en el siguiente gráfico.

Leer más…

Categorías:menéame Etiquetas: , ,

Tendencias (“trends”) históricas del uso de palabras con Sphinx

febrero 13, 2014 4 comentarios

Hace unos días quise saber desde cuándo se empezó a hablar de desahucios y suicidios en la prensa en España. Fui a Google Trends y el gráfico mostraba una evolución demasiada plana, que no se correspondía con tantas noticias que leímos en la prensa española. Me pregunté si, y cómo, podía obtener esas estadísticas en Menéame. Se me ocurrió que debería haber un truco relativamente sencillo usando los índices de de búsqueda de Sphinx (lo usamos para el buscador de Menéame). Así fue que en pocas horas pude implementar un sistema similar a Google Trends en Menéame.

Esto es lo que salió con las tendencias de esas dos palabras por su frecuencia de aparición por meses:

Evolución de suicidios y deshaucios

Leer más…

Cuando la “esclavitud” de la publicidad tampoco te permite dar mejor servicio a tus usuarios

diciembre 18, 2013 15 comentarios

Haced la siguiente prueba, si es con un móvil mucho mejor. Acceded a peta.meneame.net, navegad entre artículos y páginas. ¿Notáis que os va mucho más rápido que el original www.meneame.net? No se trata sólo de que no hay publicidad (la forma en que lo tenemos implementado casi no afecta a la velocidad de carga y dibujo después de la primera carga), está muy optimizado con “ajax”. En vez de cargar la página cada vez que se sigue un enlace interno sólo se carga el contenido que cambia, se elimina el anterior y se reemplaza por el HTML “resumido” (parcial) que envía el servidor.

Es lo que usa mucho Google+ o Facebook (y Twitter ayudado por el entorno Bootstrap) para cargas parciales, lo que evita que el navegador tenga que interpretar cada vez las hojas de estilo y compilar el Javascript. En Menéame lo tenemos desde hace varias semanas, pero no podemos publicarlo. ¿La razón? AdSense no lo deja, interpreta como si fuese una sola página (a pesar que se cambia la dirección URL dinámicamente) y deja de servir anuncios. Es decir, no es “compatible AJAX”.

Como nuestros únicos ingresos vienen de la publicidad (que está cada vez peor), y la mayoría de ellas por AdSense, por lo que si habilitamos esta nueva funcionalidad (es sólo cambiar una variable de configuración) sería nuestra sentencia de muerte… por mejorar sensiblemente el servicio a los usuarios de móviles (especialmente móviles: menos tráfico, más velocidad, menor consumo de CPU, menor consumo de batería).

Es una putada, pagamos una vez más la esclavitud de la publicidad, y de un entorno casi monopólico.

Posdatas

  1. Ya pedimos a nuestro “gerente de cuenta” de AdSense que intente conseguirnos una autorización o versión AJAX. No soy muy optimista, tenían un plan para ello y lo han cancelado.
  2. También estamos desarrollando una webapp (ver vídeo),  aunque no está claro lo de publicidad, y tiene sus propios problemas.
  3. La webapp para Android es usable y estable (aunque sin publicidad), cuando le agregue algunas funcionalidades básicas publicaremos la beta.
  4. Ya, tendremos que buscar alternativas al menos para la versión móvil, en ello estamos.

Categorías:internet, menéame Etiquetas: , ,

Android KitKat… ¿pretenden matar el HTML5 en Android?

noviembre 27, 2013 13 comentarios

La pregunta no es tan sensacionalista como parece. Hace unos días me avisaron de problemas para subir fotos a Menéame con Android KitKat. Era muy raro que diese problemas, está todo programado respetando estándares de HTML5 y Javascript. Descubrí que ese caso se debía a problemas de la gestión de memoria de Android y cómo la trataba Chrome (al ejecutar otro programa para seleccionar la imagen, si necesita memoria se la quita al Chrome, por lo que hay un “cambio de configuración”, al volver a Chrome, éste recarga la página completa, en vez de “reconstruir” lo que tenía). Pero descubrí otro error aún peor y que sucede siempre: es imposible subir una fotografía. Lo probé con el Nexus 4 y con el 7, en ambos el mismo problema, da un error “fatal” al seleccionar cualquier foto.

Lo probé con el Firefox sobre los mismos dispositivos, y no hubo problemas (además de sorprenderme la velocidad de Firefox, ¡cómo ha mejorado!). Se puede observar el fallo (“Error abrir archivo seleccionado” [sic]) en el siguiente vídeo que hice en el Nexus 4:

Visto lo visto, y que no parecía simple de solucionar, además que quería solucionar lo de compartir más fácilmente a Menéame desde un móvil, me decidí a desarrollar una pequeña app:

app Menéame de pruebas

Esta app sólo crea una actividad, basada en WebView, que empotra el renderer HTML. Hasta la versión 4.3 de Android, este renderer era el del “webkit” básico, a partir de 4.4 (KitKat) ya se usa el Chromium (el proyecto libre del Chrome). Todo iba bien, y funcionaba muy rápido… hasta que probé la subida de ficheros: imposible, no funciona en KitKat, y es imposible arreglarla (al menos en teoría y con la información que hay hasta ahora).

Las WebView tienen una pequeña interfaz con unas pocas clases de Java para controlar cosas básicas, y también para que el programa haga algunas de las cosas que no hace la vista por sí misma, por ejemplo, seleccionar ficheros para el <input type=”file”> de HTML. Resulta que no había un API para ello, pero dado que es imprescindible para casi cualquier aplicación HTML5, la gente analizó el código fuente del navegador estándar de Android y encontró la función que se llama cuando se selecciona el campo de subir fichero. La implementé tal cuál, adaptadas a las diferentes versiones de Android:

WbeChromeClient

Pero no funcionaba en KitKat, sólo en las versiones anterior, sin problemas. En KitKat ni se llaman esas funciones, no hace nada cuando se selecciona el campo.

Así fue que busqué, y veo que eliminaron esa interfaz, sin ninguna alternativa. Sólo dicen “no estaba documentada como oficial, y ya pensaremos una alternativa para futuras versiones de Android”. En los comentarios queda claro cómo afecta a tantas aplicaciones, sobre todos a las de PhoneGap, que están basadas completamente en HTML5: con KitKat es imposible subir ficheros de apps programadas en HTML5.

Sumado a eso, el propio Chrome de Google también falla para subir imágenes.

Es decir, miles de apps que dejarán de funcionar en Android KitKat, por decisiones [estúpidas] de eliminar la única interfaz posible para poder subir ficheros desde el “navegador empotrado” para apps, y por fallos increíbles en el navegador por defecto, Chrome.

La pregunta es: ¿están perjudicando así a aplicaciones en HTML5 por simple estupidez? ¿O es una estrategia para que se usen apps completamente nativas? No hay otra explicación, en cualquier caso, vaya ceguera y/o ineptitud enorme de los ingenieros que toman decisiones de desarrollo en Android. Para miles de :facepalm:.

PS: Mientras tanto, si tenéis Android KitKat y queréis subir fotos en Menéame o cualquier otro sitio, tenéis que usar Firefox u Opera Mini. Si habéis desarrollado una app que usa WebViews, estáis jodidos, porque no hay otra alternativa, al menos hasta que salga el GeckoView for Android, pero le falta todavía mucho tiempo :(

Nota: cómo hacer esos vídeos de la pantalla.

Técnicas y trucos para la versión móvil “responsive” del Menéame

noviembre 18, 2013 19 comentarios

No sé si habréis notado, pero si accedéis a Menéame desde un móvil o tableta, se carga muy rápido y están disponibles prácticamente todas las funcionalidades de la versión “normal” de la web. Aunque en realidad no se tratan de dos versiones diferentes, es la misma pero con cambios muy pequeños en la lógica del servidor, y muy poco de Javascript.

El 30% de los accesos a Menéame son desde móviles, antes teníamos una versión más reducida (sigue disponible en m.meneame.net), pero recibíamos quejas por ser muy limitado en cuanto a funcionalidades. Por otro lado, era demasiado trabajo mantener dos versiones diferentes.

También queríamos adaptar la web para los monitores Retina y de alta definición que tienen la mayoría de teléfonos y tabletas de gama media y alta (su densidad de pixels por pulgada es mayor -hasta dobla- a los típicos 96 px/pulgada de los monitores tradicionales), para ello hay que detectarlos y servir en estos casos una imagen del doble de resolución.

Así, hace unas semanas nos pusimos a tope para lograr una única versión integrada, con pocas diferencias en la lógica del backend, y casi ninguna modificación hecha con Javascript en el lado cliente. Aunque el PageSpeed no es una medida cualitativa absoluta, sí que da bastante idea de velocidad y ligereza:

Image

Como se puede deducir, las mejoras de velocidad de carga para móviles también afectó positivamente a la versión normal del web. A continuación describiré cuáles fueron los trucos y técnicas más importantes.

Leer más…

Monitorización y “self-healing” de AutoScaler/LoadBalancer de Amazon AWS

octubre 14, 2013 3 comentarios

Aunque está cada vez más fiable y con menos fallas, al principio los fallos de sincronización del AutoScaler con el ElasticLoadBalancer eran bastante frecuentes. Aún así todavía pueden ocurrir errores de programas que ponen la CPU de un servidor al 100%, o que se cuelgue algún servicio, o que deje de responder y el LoadBalancer lo elimine de su lista pero aún así sigan ejecutándose y consumiendo vuestro dinero.

El AutoScaler también tiene otro problema derivado de la extrema simplicidad de las reglas (del CloudWatch) para escalar hacia arriba y hacia abajo, especialmente esta última. Supongamos que para minimizar los costes queréis mantener las instancias entre un 70 y 85% de uso de CPU (así lo tenemos en Menéame), para ello usareis las métricas agregadas del grupo del auto escalador, pero en éste no hay forma de indicar una regla que como:

Cuando la carga con una instancia menos sea menor al 70%, decrementar una instancia

Por ello, en 2009 implementé un programa que monitoriza la carga de cada instancia del grupo que implementa este tipo de reglas. Además este programa monitoriza que todas las instancias estén dentro del margen (entre 70 y 85% de CPU), si alguna se desvía mucho toma otras decisiones. Por ejemplo: si una está cercana al 100% y la diferencia con la media de carga es superior al 50%, asume que hay un fallo en esa instancia y la terminará. Lo mismo hará que para instancias que estén muy cercanas al 0% de CPU mientras las demás están bastante por encima (lo típico de instancias “descolgadas” del LoadBalancer, por ejemplo por fallo de hardware o de algún servicio.

La verdad es que además de ahorrarnos bastante dinero manteniendo a todas las instancias “saludables” y dentro de los márgenes de CPU, me quitó dolores de cabeza. Salvo catástrofes y cosas muy raras, no tenía que preocuparme para nada del estado de los servidores web.

Pero nunca liberé ese código, cuando lo programé (hace casi cuatro años) las librerías de Python y Perl estaban bastante mal documentadas, así que lo hice en PHP porque pude entender las clases muy rápidamente. Pero el código era infumable, y ni quería liberarlo. Ahora que las librerías de Python, las boto, tienen muy buena calidad, me decidí a portar el código a Python. Ya está funcionando, y ahora lo libero y explico brevemente (haced con el código lo que queráis).

Precondiciones

Tenéis que tener instalado el paquete boto. Está probado con la versión 2.14, podéis usar el que trae vuestra distribución si es al mínimo la versión 2, o bien instalar la última con el pip (pip install -U boto). Ya está, eso es suficiente, en principio no necesitáis nada más de software.

Lo que hay que hacer es poner la configuración con vuestras claves en el /etc/boto.cfg o ~/boto. En nuestro caso, que tenemos los servidores en Dublin, la configuración es la siguiente:

[Credentials]
aws_access_key_id = XXXXXXXXXXXXXXXXXX
aws_secret_access_key = YYYYYYYYYYYYYYYYYYY

[Boto]
ec2_region_name = eu-west-1
ec2_region_endpoint = ec2.eu-west-1.amazonaws.com
autoscale_region_name = eu-west-1
autoscale_endpoint = autoscaling.eu-west-1.amazonaws.com
elb_region_name = eu-west-1
cloudwatch_region_endpoint = monitoring.eu-west-1.amazonaws.com

El código

Consiste de tres ficheros Python, los dos primeros obligatorios para hacer los controles, el tercero es para visualizar información de las instancias:

ec2_watchdata.py: Define la clase WatchData que implementa los métodos para leer los datos de AWS, manipular datos y hla lógica de controles.

ec2_watch.py: Es el script que ejecuto desde el cron cada minuto y hace lo que he explicado antes. Intenté que la lógica quede muy sencilla, y se puede cambiar todo por argumentos en la línea de comandos (con -h sale una pequeña ayuda). Permite especificar el nombre del grupo del autoescalador, si se quiere que envíe un email de las “emergencias”, para cambiar los límites de CPU, y otra para que grabe los resultados en JSON en la base de datos de Menéame como “annotation” (usado para poder visualizar el estado vía web). Lo podéis ejecutar como queráis, incluso con la opción -d o –dry si sólo queréis ver qué es lo que va a hacer, yo lo tengo en el cron para que se ejecute cada minuto, que es lo que recomiendo:

* * * * * meneame/scripts/ec2_watch.py -g web -a -m gallir@gmail.com &gt; $HOME/watch.log

ec_instances.py: Es un pequeño script (pero que lo usamos mucho) que también usa la clase WatchData, fudamentalmente para visualizar el estado de las instancias del grupo, y también permite cambiar manualmente el número de instancias deseadas (opción -i), o matar instancias (opción -k). La siguiente captura muestra varias ejecuciones de este script, con un par para cambiar el número de instancias deseadas:

ec2_instances.py

Opcional: Si miráis el código, cuando se indica la opción -a llama a la función store_annotation() en el fichero utils.py. Esta es la que guarda los datos en formato JSON en la base de datos de Menéame y que me permite controlar desde la web y mi móvil:

ec2_watch web

Ejemplos de fallos (provocados)

Primero hice que una instancia se ponga al 100% de CPU (con el comando “yes > /dev/null”), así simulaba el fallo de algún programa. ec2_watch lo detectó y primero incrementó el número de instancias de 2 a 3. Como es una “emergencia”, me avisó por email de lo que pasaba, y lo que hizo:

100% de CPU, incrementa una instancia

Minutos después esa instancia seguía al 100%, por lo que la mató:

100% CPU, la mata

La siguiente es otra prueba, pero a la inversa. Desconecté manualmente una instancia del LoadBalancer, así el uso de CPU se pondría casi a cero, lo detectó a los pocos minutos, la terminó y el autoescalador levantó otra instancia nueva (al no cambiar el número de instancias deseadas):

0% de CPU, mata la instancia

Fin

Espero que os sea útil. No aceptaré sugerencias, pero sí parches ;)

Detección de DoS y bloqueo automático de IPs con el LoadBalancer de Amazon AWS

septiembre 11, 2013 9 comentarios

En Menéame teníamos un problema no solucionado correctamente. Cada vez sufrimos más ataques DoS voluntarios e involuntarios (bots mal programados, como los de Dreamule) que en el mejor de los casos nos ocasionan gastos innecesarios (ancho de banda e instancias adicionales) y en el peor sobrecargan tanto que impiden el acceso normal a las páginas. A esto se suma un gran problema: las instancias webs (que están autoescaladas horizontalmente) están detrás del balanceador de carga de Amazon AWS (ELB, Elastic Load Balancer) y éste no permite gestionar, ni manual ni automáticamente, el bloqueo de direcciones IP.

Por ello había que buscar una solución que detecte los DoS a conexiones que se hacen a las diferentes instancias web, y que sea el propio software de Menéame que lo haga y rechace las conexiones lo más rápido posible, y consumiendo los mínimos recursos. Esto obligaba a que se registren en un sólo servidor todas las conexiones desde las diferentes instancias, se analice en él en “tiempo real” y se guarden los datos en la base de datos para que estén disponibles para todas las instancias. Éstas deberían ser capaces de rechazar esas conexiones consumiendo la cantidad mínima de recursos y ancho de banda (tanto en la de Internet, como a la base de datos, como para enviar los logs al servidor central).

Después de pensarlo durante meses, y de analizar decenas de alternativas, en unos pocos días se me ocurrió la solución “óptima”. Esto ocurrió después de un mes de vacaciones casi completamente desconectado. Es el valor que tiene el descanso, pero eso es otro tema.

Leer más…

Favorecer el disenso

noviembre 29, 2012 21 comentarios

Este apunte tiene dos partes. El objetivo original al empezar a escribir este artículo fue describir una pequeña novedad, y sus resultados, que pusimos en marcha en Menéame el 11 de noviembre. Pero antes quería hacer una breve introducción al problema que intentamos reducir -los sesgos-, pero no me salió nada breve. Lo siento, no lo puedo evitar, pero al menos os recomiendo unos libros de lectura imprescindible si están interesado en problemas similares.

Sesgos y mala información

Está estudiado, experimentado, demostrado y ampliamente reconocido en el ambiente académico y profesional de la psicología y psiquiatría el problema de los sesgos. Éste es inevitable, nos afecta a todos, cada minuto, cada opinión y cada percepción que tenemos del mundo. Es el que nos hace ignorar la información que no se ajusta a nuestros patrones y conocimiento adquirido previamente, el que selecciona aquella información que revalida lo que pensamos (sesgo de selección) e ignora aquello que lo contradice.

Leer más…

Cálculo comparativo de la diversidad de votos mediante densidad de grafos

noviembre 4, 2012 27 comentarios

En Menéame teníamos desde 2008 un control de diversidad de votos. Éste se basaba en el control de los votos de los usuarios al autor de un envío, se tomaba en cuenta el porcentaje de noticias votadas al mismo usuario. Aunque cumplió con su papel, claramente era insuficiente. Las críticas de que un grupo de personas podían conseguir una “ventaja” de lo que salía en portada tenían algo de razón. El control existente no hacía un control más global, es decir, grupos de personas con un mismo patrón de votos, por lo que intencionadamente o no, si hay un centenar de personas muy activas y afines entre ellas, éstas consiguen que sus noticias se publiquen con mayor facilidad.

Llevaba años pensando en una solución al problema. Los algoritmos y técnicas usadas son en general basadas en “corpus completo”, se construye un grafo o sus correspondientes matrices con la información completa que se quiere analizar. Para ello se pueden usar algoritmos de clustering, centralidad y/o afinidad para obtener información del grado de “diversidad de votos” en cada noticia.

Leer más…

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 460 seguidores