¿Qué infraestructura hay detrás de una web 2.0?
Hace muy poco, por serendipia, he descubierto un servidor vulnerable a un ataque DDoS debido a lo pesado que es. Reciente es el ataque que han sufrido Facebook, Google, LiveJournal y Twitter con dispares resultados: mientras que Facebook y Google aguantaban el tipo, aunque con lentitud, la web de Twitter (que no su api) caía unas horas y LiveJournal sucumbía ante el ataque. Y parece que todo se debe a un intento de silenciar a un usuario crítico con la guerra entre Rusia y Georgia aunque aún están investigándolo.
¿Qué infraestructura utilizan estas webs para soportar esta carga o minimizar daños frente a un ataque? Una investigación sobre el tema permite obtener técnicas y trucos para mejorar las webs y hacerlas más seguras frente a ataques DDoS. Evidentemente, no todas las opciones son aplicables en todos los casos y este tipo de sitios están preparados para soportar elevadas cargas: flickr sirve 1000 páginas por segundo que precisan unas 25000 transacciones SQL; la Wikipedia tiene 7 millones de usuarios registrados y soporta 50.000 peticiones HTTP por segundo y unas 80.000 consultas SQL (por segundo); Facebook por su parte tiene 250 millones de usuarios y ronda los 200 millones de visitantes únicos; WordPress.com ronda los 100 millones de visitantes…
Además, estas web 2.0, a diferencia de las inamovibles páginas HTML de la web 1.0, son dinámicas. En cualquier momento pueden recibir nuevo contenido o ser alteradas. Para ello necesitan algún tipo de lenguaje que se ejecuta en cada petición lo que implica un lenguaje de programación en servidor, BBDD…
Recomendaciones de Yahoo
Un posible punto de partida, y lectura imprescindible para planear un sitio web, son las Prácticas para acelerar sitios web de Yahoo. Se trata de un conjunto de recomendaciones y micro-optimizaciones que van desde reducir el número de ficheros a descargar empaquetándolos (CSS sprites, maps), servir de forma separada los elementos estáticos hasta configurar adecuadamente la cache o servir el código HTML, javascript o CSS optimizado y comprimido.
Muchas de estas técnicas, permiten ahorrar unos pocos ciclos de ejecución y algunos bytes de ancho de banda, aligerando una web y mejorando la experiencia del usuario. Aunque ayudan (evidentemente, suprimir una única petición en varios millones de visitas son varios millones de peticiones menos), no son suficientes para soportar miles de usuarios concurrentes o aguantar el tipo frente a un ataque. En estos casos es necesaria una planificación e infraestructura acorde a las necesidades.
La piedra de Rosetta: la cache
Dejando a un lado la infraestructura física, la clave de tolas optimizaciones es la cache. En la web existen muchas caches (la del navegador, los proxys que instalan los ISP…). Cada acierto en uno de los niveles supone una petición menos al servidor final con lo que su correcta configuración reduce en gran parte el tráfico que se debe soportar.
Esta cache “externa” reduce el número de peticiones al servidor. Sin embargo, ese concepto puede utilizarse para mejorar sensiblemente el rendimiento de la aplicación. Muchos de los típicos sitios web (por ejemplo, muchos de los CMS) realmente generan una y otra vez el mismo contenido estático, realizan las mismas consultas a la BBDD y ejecutan los mismos códigos… Si se almacenasen dichos resultados, se suprimiría enormemente el tiempo destinado a los mismos al reducir tiempo de proceso, conexión…
Una posible opción es el proxy-inverso. Se trata de un elemento que se sitúa entre el servidor web y el usuario y que almacena las respuestas. De esta forma, el primer usuario tiene que esperar a la ejecución del servidor web mientras que el segundo recibe la respuesta del proxy-inverso de forma “instantánea”. Evidentemente, los datos almacenados no serán tan frescos pero con un sistema de invalidación (por ejemplo, anular las entradas una vez al día o cada hora) se puede obtener un resultado de compromiso suficientemente bueno.
El proxy-inverso, almacena toda la respuesta. Sin embargo en algunos casos nos interesa almacenar solamente una parte de la misma (un proceso muy lento, o una consulta de informes muy pesada). Para ello se disponen de unas BBDD un poco especiales: simplifican la estructura a un sencillo modelo clave-valor y suelen almacenarse en memoria. Su rendimiento es muy superior a las BBDD relacionales estándar y tienen el plus de poder consultar los datos desde prácticamente cualquier aplicación. Algunos ejemplos son memcached o redis
Utilizando estos sistemas, la optimización típica es almacenar el resultado de las operaciones pesadas en el sistema (consulta a la BBDD, petición a un servicio web) y utilizar dicha información en las subsiguientes peticiones. Como en el anterior caso, es necesario invalidar la copia del proxy-inverso para obtener datos suficientemente actualizados.
Aplicando correctamente esta simple solución software, se puede incrementar notablemente el rendimiento de la aplicación sin ningún coste adicional.
Hasta el infinito y más allá
Sin embargo, en algunos casos no es suficiente y es necesario plantearse ir más allá. En este caso es necesario escalar horizontalmente añadiendo nuevos equipos para distribuir la carga. Esta aproximación tiene multitud de opciones pero básicamente se puede realizar de dos formas.
Una solución sencilla es la replicación, es decir, utilizar dos servidores idénticos para servir el sitio. Bien aplicado, este esquema permite admitir el doble de carga y crecer en un futuro añadiendo nuevos clones. Sin embargo, este sistema presenta el problema de coherencia: todos los sistemas deberán replicar sus datos para proporcionarle al usuario la misma información independientemente del clon.
Otra opción es separar servicios. En este caso, se dejaría el servidor web (con su lenguajes de scripting) en una máquina, las BBDD en otra diferente… La carga queda distribuida y es posible afinar la configuración hardware de cada sistema para su cometido (mejores discos en la BBDD, mejor procesador en los servidores web, más memoria en servidores de caché…).
El siguiente paso es replicar algunos de los servicios. Por ejemplo, de un esquema compuesto por un servidor de BBDD, un servidor web y un proxy inverso; se podría añadir uno o dos proxy-inversos para admitir más clientes concurrentemente, o u segundo servidor de BBDD para mejorar su rendimiento.
El paso final es distribuir las réplicas geográficamente. En este caso, se tendría un servidor proxy-inverso por continente o duplicar toda la estructura en cada continente manteniendo una BBDD maestra centralizada… las posibilidades son infinitas.
La wikipedia a examen
La infraestructura de la Wikipedia ha sido presentada en sociedad. Se trata de un sitio mastodóntico y tiene una infraestructura del mismo nivel que engloba todas las posibles optimizaciones anteriores junto con algún detalle extra (geolocalización de las réplicas más adecuadas según la ubicación del usuario).
- Fuentes:
-
- Hackelare: La arquitectura de Facebook.
- OjoBuscador: Facebook se acerca a Blogger en número de visitas.
- reface.me: Facebook User Statistics for July 2009.
- flickr’s architecture & php.
Modificar el tipo de letra en LaTeX
La tipografía es el arte de manejar tipos [de letra] (que no fuentes de letra) para su impresión. LaTeX es un sistema de composición tipográfica por lo que se encarga de realizar esa tarea: disponer el contenido para su impresión.
Sin embargo, a diferencia de los sistemas WYSIWYG (What You See Is What You Get, lo que ves es lo que obtienes) en que es una de las primeras cosas que se utiliza, en LaTeX no es intuitivo la modificación del tipo de letra. Quizá porque esa labor de elección queda asignada al diseñador del tipo de documento o por la escasez de fuentes en un inicio.
A pesar de esta aparente carencia, LaTeX dispone de múltiples tipografías con sus variantes. Cualquiera de ellas puede ser modificada de forma no excesivamente complicada proporcionando una flexibilidad y posibilidades elevadísimas.
Para poder utilizar toda la potencia es necesario conocer algunos conceptos utiliza LaTeX en el manejo de tipos de letra.
Demasiado oscuro para un fin de semana

Jordi Sierra i Fabra

Portada
«Demasiado oscuro para un fin de semana»
Demasiado oscuro para un fin de semana es la segunda novela de Daniel Ros Martí escrita por Jordi Sierra i Fabra. Al igual que la primera Doble Imagen, se trata de una novela negra ambientada en los primeros años de la España democrática proporcionando el retrato, cercano y fácilmente reconocible, de la sociedad hace casi 30 años.
Nada menos que Elvis Presley.
Aunque pudo haber sido peor.
Pudo haberme golpeado con un busto de Jonh Lennon o Paul McCartney, o de los cuatro Beatles a la vez.
Eso sí hubiera sido demasiado.
Precisamente la imagen de Elvis fue lo primero que me vino a la cabeza cuando el dolor me indicó que volvía a estar consciente, que no se trataba de un sueño. El rock and roll de mis ideas y el cúmulo de estrellas de mi universo cerebral esparcían sórdidos ecos a través de mis terminaciones nerviosas. Intenté moverme y decidí no forzar las cosas al notar una punzada en la nuca, por el simple hecho de pensarlo.
Eso me salvó.
F1 en estado puro: El duelo
Hace 30 años, disputándose el GP de Francia de 1979 en el Circuito de Dijon-Prenois, se vivió un duelo histórico. Un Ferrari y un Renault son los protagonistas con la segunda posición en juego.
![]()
![]()
El podio del GP de Francia 1979:
1. Jean P. Jabouille (Renault)
2. Gilles Villeneuve (Ferrari)
3. René Arnoux (Renault)
(Imágenes: Wikipedia)
La carrera estaba cómodamente liderada por Jean Pierre Jabouille quién lograría la primera victoria para el Renault Turbo (apodado dos años antes “la cafetera/tetera amarilla”, curiosa coincidencia con la actualidad). Disputándose la segunda y tercera posición están su compañero René Arnoux (Renault RS10 [bi]Turbo, 1500cc-520 CV) y Gilles Villenueve (Ferrari 312 T4, 3000cc-515 CV).

Gilles Villenueve (Ferrari nº12, izquierda) y René Arnoux (Renault nº16, derecha) en el GP Francia 1979. (Imagen RacingPasion)
El duelo tiene como alicientes las ruedas castigadas de Villenueve y un motor tocado en el coche de Arnoux (quién a pesar de ello logró la vuelta rápida de la carrera). Sin ayudas electrónicas, sin los rigurosos sistemas de seguridad y con un diseño muy diferente al de los actuales monoplazas.
El vídeo contiene los últimos 10 minutos de la retransmisión del GP, sin duda alejada de las retransmisiones actuales. Se inicia con el abandono de Mario Andretti (campeón del año 1978 con Lotus). El inicio de las hostilidades Arnoux-Villenueve se inicia sobre el minuto 3:50. Tras tres vueltas con numerosos adelantamientos, salidas de pista y pilotos doblados, la balanza termina decantándose del lado del piloto de Ferrari.
En una carrera de F1 actual es casi imposible ver adelantamientos y estas imágenes quedan relegadas a un pasado nostálgico. Gracias a la falta de criterio, la normativa cambiante, el múltiple rasero, la unificación de los vehículos, los circuitos calcados… las carreras se están reduciendo a monoplazas dando vueltas sin ningún tipo de aliciente deportivo.
Estos duelos son los que forjan la leyenda y crean afición. Como se diría en una moderna retransmisión, ésto es F1 en estado puro.
- Fuentes:
Doble imagen

Jordi Sierra i Fabra

Portada
«Doble imagen»
Jordi Sierra i Fabra, y su alter ego Daniel Ros Martí, realizan una sórdida investigación en la clandestinidad. Un héroe cotidiano en un viaje al lado más oscuro. Descripción, diálogos y narrativa puros generando un casi continuo suspenso que obliga a seguir leyendo.
Habitualmente, la novela negra está fuertemente influenciada por la americana con sus clichés míticos apoyados por el cine. Sin embargo, es muy agradable leer una novela negra completamente españolizada. Ambiente, situación histórica y localizaciones reales aportan la cercanía y realismo del que adolece habitualmente.
– ¿Dan?
No podía creerlo. Volví a mirar el reloj y me convencí: eran las nueve y doce minutos de la mañana, y la voz que me hablaba era la de Paco, atravesando mi somnolencia y convirtiéndola en certeza de un adiós y una bienvenida. Las nueve y doce, para una persona que nunca se acuesta antes de las dos de la madrugada, es una hora tan cruel como pueda serlo las cinco de la mañana. Paco lo sabía, así que deduje que el motivo de su llamada era importante. Las esquirlas del hermoso y ya desecho sueño erótico recién borrado de mi ánimo cayeron como las gotas de una fantasía llena de burlas sobre mí, impregnándome de melancolía, haciendo que el ramalazo de ira fuese primero contenido y después suavizado. El augurio de un mal día no contribuyó a mejorar en nada el pésimo humor del momento, más bien al contrario, esa certeza lo agravó [...]
Además, la edición “dos libros por uno” viene acompañada de la segunda novela de Daniel Ros que merecerá una reseña en unos días.
Música por internet
La música es una buena compañera de viaje. Te acompaña cuando estás sólo o te aísla del ruido exterior cuando requieres concentración.
Gracias a los progresos realizados en los últimos años y al auge de Internet, es posible disfrutar de música casi personalizada con cualquier ordenador en algunos casos pagando una pequeña cuota y en otros de forma completamente gratuita. En algunos casos, es posible acceder a contenidos no disponibles por otros métodos como escuchar las emisoras del país natal a miles de kilómetros de distancia.
Del vinilo al MP3: Historia resumida de la digitalización de la música
Walkman Sony (Imagen: Wikipedia)
Pero entonces llegaron los mecanismos digitales. A mediados de los 90 surge el formato MP3 (que no el reproductor MP3) que suponía un punto de inflexión en la historia de la música. Poco después llegaría al mercado Winamp y “los que tenían ordenador” pasaron sus canciones a MP3. Seguíamos teniendo el formato físico pero era más cómodo arrancar el programa en el ordenador y reproducirlas en orden aleatorio. Poco a poco, fueron desapareciendo los soportes físicos quedándonos con el MP3 en el disco duro del ordenador, aparecieron reproductores portátiles (llamados sin pudor reproductor MP3) que relegaron al walkman a la sombra, se integró en los móviles… su uso se masificó y cambiaron las costumbres.
Pero la evolución no acabó ahí. Con la escalada de popularidad de Internet empezaron a aparecer servicios (Last.fm, Spotify) que permiten acceder a una inmensa biblioteca de música desde cualquier ordenador sin necesidad de gastar espacio en el disco duro y que además proporciona emisoras personalizadas a tus gustos. Y la radio convencional no iba a ser ajena a esta locura: casi sin costes mantiene su emisión tradicional y mediante streaming por Internet usando ese mismo formato MP3. Con un ordenador conectado a Internet, está disponible un gran abanico musical apto para todos los gustos y disponible en cualquier lugar del mundo.
Radio por Internet
Existen diversas fuentes de radio por Internet:
- Radio convencional
- Gran parte de las emisoras distribuyen sus contenidos por Internet. Desde la página web de cada uno de ellos se puede acceder a la retransmisión cargando una web habitualmente con flash. En algunos casos, es posible escucharlo con un reproductor externo.
- Radio personalizada
- Estos servicios precisan un alta en el servicio y en algunos casos el pago de una pequeña cuota. Suelen proporcionar su propio reproductor y servicios adicionales como estadísticas de escucha, recomendaciones… El ejemplo más claro es Last.FM (de pago) o Spotify (permite crear listas de reproducción).
- Radios por internet
- Son similares a las radios convencionales pero que sólo retransmiten por Internet.
Para disfrutar de estas radios es necesario disponer de un reproductor. En las radios personalizadas se necesita su propio reproductor. Para el resto se pueden utilizar múltiples aplicaciones (Winamp, iTunes, VLC, WMP) aunque una muy recomendable es screamer, que dispone de un amplio directorio de “sintonías” con radios estándar y por Internet.

Reproductor de radio Screamer
Curiosidades
La radio por Internet abre nuevos abanicos. Plataformas completas con canales de música temáticos (SKY.fm) que permiten elegir la música que más guste.
Una iniciativa curiosa, que recuerda a los programas de peticiones de canciones de la radio convencional, es StreamingSoundtracks.com. Esta emisora retransmite las peticiones realizadas por los “oyentes” a través de su web. En este caso, solamente se pueden pedir canciones de bandas sonoras del catálogo de la emisora pero sin duda es un sistema aplicable a otros muchos casos.
Un entorno de desarrollo para PHP
Desde que aprendí mi primer lenguaje de programación (BASIC para SPECTRUM), la forma de programar ha evolucionado de forma radical. De los primeros programas escritos en un editor de líneas en el SPECTRUM, pasando por diversos editores (vim, emacs, notepad, ultraedit…) hasta los más completos IDE como Borland (Turbo y Builder) o Visual Studio.
En los últimos tiempos, sobre todo con el auge de la web, PHP se ha transformado en uno de mis lenguajes más usados. Su potencia ha hecho que no sólo me sirva para implementar páginas web sino pequeños scripts para consola reemplazando a bash o perl.
En los primeros tiempos, los programas en PHP eran muy sencillos y bastaba con cualquier editor. Poco a poco los programas crecían y se hacía más costoso de mantener. La inclusión de frameworks MVC son la gota que colma el vaso haciendo imposible su gestión con un editor sencillo.
Por extraño que parezca PHP carece de un IDE propio que simplifique la programación. Así que tras buscar, escuchar consejos, probar y experimentar llegué a un entorno potente y flexible para programar en PHP, incluso en máquinas remotas.
RSS entradas