Podcast Z #6: Proyecto X - DNS como base de datos distribuida mundial

Share:

Listens: 0

Podcast Z

Technology


Usar el DNS como un sistema de cacheo mundial. http://podcast.jcea.es/podcastz/6 Notas: 00:30: El proyecto es confidencial, pero quiero exponer algunas técnicas que pueden ser útiles para otros programadores. 02:50: El programa requiere actualizarse constantemente de forma automática. 04:30: El usuario solo instala manualmente un "descargador". 05:50: Descripción del proceso de actualización. 06:30: Firma digital, imprescindible cuando hay actualizaciones constantes a través de redes no confiables. 08:00: En la primera versión del proyecto, el programa se descargaba en cada ejecución (20KBytes). 09:00: Pero esto no escala cuando el número de usuarios crece, o el tamaño del fichero crece. 13:30: Usar el DNS para comprobar las versiones, utilizándolo de caché. A nivel mundial y de forma simple. 15:20: Cuando un ordenador pide a su ISP que haga una petición de DNS, dicho ISP cachea el resultado y está disponible para otros clientes. Y el tiempo de cacheo es configurable en el servidor origen. 17:30: Problema: sin instalar librerías adicionales, Python tiene una capacidad de interacción con el DNS muy limitada. Hay que buscarse la vida. 19:30: En vez de decir a través del DNS qué versión es la más moderna, lo que hacemos es permitir que el cliente confirme si su versión es la última o no. Comprobamos si el registro "HASH_MD5.md5.DOMINIO" existe o no. 22:40: Ojo con los ISPs puñeteros que resuelven a sus propias IPs las resoluciones DNS inexistentes. Solución: Comprobamos que la IP resuelta sea la esperada. 25:00: Firma digital por El Gamal. 27:20: El actualizador no hace más descargar la versión actual (con todas las verificaciones) y luego le pasa el control. Actualizar el actualizador es "complicado" :).