Migrando el site: lecciones aprendidas
Acabo de migrar el site.
Antes estaba en mi propio hosting, gestionado íntegramente por mí. Consistía en un Drupal con una base de datos MySQL.
El sistema funcionaba esencialmente bien, pero me encontraba con algunos problemas:
- El spam me traía de cabeza. He desperdiciado muchísimas horas luchando contra él.
- Las actualizaciones eran una pesadilla. No hay una forma “automática” de hacerlas, y a veces se perdían cosas. En la última, se me “rompió” el cron, lo que significaba que no funcionaban las búsquedas, informes, etc.
- El cambio de versión a la 7.00 fue, simplemente, inviable. En el intento perdí mucho tiempo y funcionalidad, ya que es necesario desinstalar todos los plugins para poder realizar este proceso. Al desinstalar todos los plugins, se pierde toda la configuración de los mismos, cosa que no me gustó nada.
- Gestión de logins. Me gusta que la gente comente, pero tenía que poner una exigencias muy duras para saber quién estaba comentando los posts: o bien exigía registro o bien perdía la posibilidad de saber quién comentaba. Personalmente, cuando tengo que registrarme en un sitio para poner un comentario, me echo atrás. Por esa razón busqué alternativas, y éstas pasaban por plugins de dudosa funcionalidad que después tendría que mantener. Blogger me lo daba todo ya hecho y gestionado.
- El coste del hosting se me ha hecho muy caro. Tenía la opción de cambiarlo a otro sitio, pero se me hacía duro volver a montar el drupal y la base de datos.
Estas razones me hicieron pensar en otro formato: utilizar Blogger como base de datos y crear un front-end desde mi propia web. Es posible que aún lo haga, con el fin de unificar en un único site toda la información que me interesa, pero de momento Blogger me ofrece lo más imprescindible.
La migración
Pero… ¿cómo realicé la migración?
Bueno, la verdad es que ha sido mucho más difícil de lo esperado. El primer paso consistió en buscar algún programa que me permitiera realizar la migración automáticamente, pero no hubo suerte. Por eso pensé en crearme mi propia herramienta de migración de drupal a blogger , que también ha sido más difícil de lo esperado.
La idea esencial consistía en acceder a la base de datos y/o al archivo exportado .SQL y obtener la información de los blogs. Tuve un montón de problemas con los encodings de la base de datos, por lo que decidí parsear el fichero directamente.
Cuando ya conseguía leer los datos aparentemente bien, venía la segunda parte: publicarlos en Blogger. Sabía de la existencia de una API, así que comencé a investigarla. Cuando el programa estaba terminado, me encontré con el problema: blogger no deja publicar mediante su API más de 50 artículos diarios, como medida anti-spam. Yo tenía casi 200 (aunque después de filtrar se me han quedado en unos 70).
Leyendo en foros, recomendaban crear un archivo ATOM e importarlo, así que me puse a ello.
Cuando ya creaba el primer ATOM casi útil, traté de importarlo, pero Blogger me dio un aviso diciendo que sólo se importarían los archivos exportados desde Blogger. Mi gozo en un pozo.
Tras rehacer la aplicación, me decidí por volver a intentar usar la API, aunque fuera en dos tandas y eso he hecho.
La aplicación
Finalmente, la aplicación está terminada, por si alguien más necesita hacer el cambio. Debo advertir algunas cosas sobre esta aplicación:
- No aseguro que vaya a funcionar bien. A mí me ha funcionado y lo he hecho para mí. Eso significa que deberíais probarla antes.
- La importación desde fichero funciona razonablemente bien, formateando el código y todo.
- La importación desde base de datos seguramente tenga problemas de encoding.
- La exportación a fichero funciona razonablemente bien. Podéis usarla para ver cómo va a ser (más o menos) la migración.
- La exportación a Blogger funciona regular. Trato de obtener los blogs ya existentes para no volver a publicarlos, pero blogger sólo me devuelve los últimos 25. El resultado es que no puedo estar seguro de si se han exportado o no, así que tuve que meterle un parche manual diciendo que sólo exportara a partir del 50 :-(
- Estoy dispuesto a realizar modificaciones al programa si alguien las necesita. Todo es cuestión de hablarlo. Incluso si se necesita exportar a otra cosa distinta de Blogger.
Otro detalle más era el mensaje tan verboso de Blogger: “gdata.client.RequestError: Server responded with: 400, Blog has exceeded rate limit or otherwise requires word verification for new posts”. No fui capaz de encontrar la manera de “verificar la palabra”, así que no me quedó más remedio que esperar 24 horas cada vez.
Las pruebas
Traté de implementar la herramienta de migración mediante TDD, pero se me ha hecho muy cuesta arriba.
No soy un experto de TDD, aunque sí un fiel seguidor. Las pruebas me han servido de mucho durante la importación, pero no así durante la exportación, debido fundamentalmente al cambio de filosofía. Además, consideraba que sólo utilizaría la herramienta una única vez, lo que también me ha echado bastante para atrás a la hora de realizar pruebas.
Sigo convencido de que TDD es importante y que conviene utilizarlo en cualquier caso, pero me queda claro que TDD es más fácil cuando se conocen las tecnologías a utilizar. Cuando no es así, lo mejor que se puede hacer es realizar pruebas contra la api a utilizar, es decir, usar TDD contra la API para así aprender a utilizarla. He utilizado esta técnica, pero claro, las pruebas que he realizado han sido unitarias y no me han permitido detectar ninguno de los problemas que he tenido :-(
Conclusiones finales
Quizá Blogger no sea la mejor solución, pero tengo muy claro que no volveré a Drupal. No me gusta nada y cuando más me adentro en sus profundidades, menos me gusta. Aunque hay ideas que están bien, en general la filosofía de Drupal me parece de PHP 4 más que de una herramienta actual. Esperaba que Drupal 7 solucionara este problema, pero sigue siendo más de lo mismo.
Espero que esta etapa, con Blogger, me quite dolores de cabeza.