Archive for 29 septiembre 2009

La importancia del backup

29 septiembre 2009

Partiendo de la base de que, en este negocio, todo puede fallar, hay que tener siempre un plan B para cuando la cosa se pone realmente “mal”. Normalmente se intentará evitar siempre llegar a una situación en la que sea necesario “tirar” de la copia de seguridad. Sin embargo, tener un buen backup ofrece ventajas únicas. Hacer copias de ficheros no tiene ninguna dificultad, preparar una buena estrategia sí. Veamos una serie de puntos fundamentales a tener en cuenta antes de diseñar una buena estrategia de backup para el servidor donde se aloja nuestro preciado sitio web.

No es tan importante el dispositivo físico como una buena estrategia

No es tan importante el dispositivo físico como una buena estrategia

  • Cualquier tipo problema. Un backup debe proteger ante cualquier eventualidad.
    • Un fallo de software o de programación puede hacer, por ejemplo, que la base de datos se vaya degradando paulatinamente. Sería deseable guardar una serie de estados (“fotos”) desde, al menos, el día que empezó a corromperse la información. Una copia diaria de la base de datos durante el último mes puede ser suficiente para un sitio web “vivo”.
    • Hardware. Un error común es no hacer copia de un disco duro porque está en raid-1 o espejo. Efectivamente esto salvará la información en caso de que uno de los discos se rompa, pero no lo hará en el caso de que los datos se hayan borrado por cualquier otra razón (errores de software, virus o ataques). Otro error habitual es hacer la copia dentro del mismo disco o del mismo equipo informático. Cuando es este disco o este equipo el que se rompe, de poco sirve la copia.
    • Virus, gusanos, ataques mal intencionados, etc. En realidad se podría tratar este problema como una forma combinada de los dos anteriores.
    • Catástrofes imprevisibles. Incendios, robos, etc. Si se produce un incendio o un robo en la oficina, tener el backup en otro datacenter, oficina o en casa será suficiente. Y esto escala bien, es decir, cuanto más lejos mejor, tanto lógica como físicamente. A una mente paranoica el tener la copia de seguridad en otro país le daría la seguridad de que sus datos estarán a salvo incluso frente a una guerra por ejemplo 😮
Entonces, para que un buen backup soluciones cualquier tipo de problema, hay que hacer copias periódicas. También hay que guardar el historial, hacer la copia en otro equipo físico y guardar los archivos de ésta en una localización diferente a los datos originales
  • Toda la información. A la hora de diseñar la estrategia de copia, es vital listar todos los datos que es necesario proteger. Ficheros de datos, imágenes, ficheros de configuración, bases de datos o repositorios de software. Igual de importante es tener en cuenta que la información que se va a copiar evoluciona con el tiempo y no siempre se va a copiar la misma información. Es necesario, pues, tener un mecanismo que permita mantener esta “lista” de elementos a copiar “viva”.
  • La estrategia. Con los puntos anteriores claros, preparar una estrategia se convierte en una tarea trivial. Definir a que hora se hará (seguramente cuando haya menos usuarios/tráfico) y donde se copiará la información físicamente. Una cosa importante a tener en cuenta es que, casi siempre, se trabaja con ficheros a la hora de hacer el backup. Por eso es importante que, la información que no lo es se pueda convertir antes a fichero. Un ejemplo claro son las bases de datos que, por lo general, tiene su propio sistema de backup. Otra decisión importante es si el backup debe estar cifrado o no. Aunque suene necesario, lo cierto es que muchas veces no compensa.
Para asegurarse que se copia toda la información es tan importante definir bien al principio lo que se va a copiar, como hacer revisiones periódicas de que información nueva debe ser copiada.
  • Recuperable. No sirve de nada tener una copia de seguridad que no se puede restaurar. Parece algo evidente, sin embargo es sorprendente la cantidad de veces que ocurre que al intentar recuperar un dato copiado, el backup está corrupto, vacío o simplemente se descubre que el backup ¡nunca se ha hecho! Ojo también al utilizar cifrado para almacenar las copias. Siempre debe haber, al menos, dos personas con la llave y/o la contraseña y asegurarnos de que realmente es así
La única forma de asegurarse que la información está correctamente guardada es hacer “simulacros” restaurando el backup de vez en cuando.

Herramientas libres para Voota

14 septiembre 2009

Decir que utilizamos únicamente software libre es muy bonito, pero a la hora de ponerte a buscar las herramientas que se van a utilizar, hay que poner mucha atención. Hagamos un pequeño repaso del software más importante que hemos escogido y por qué para construir Voota.

php (vs java)

La única duda que se nos planteó era utilizar java o php. Ambos tienen sin duda puntos a favor y en contra. A favor de Java podemos decir que es, sin duda, uno de los lenguajes más robustos y que mejor implementa aspectos como la herencia y el polimorfismo. Es el lenguaje que yo elegiría para aplicaciones grandes y con cálculos complejos (bancos, compañías de seguros o aplicaciones internas en empresas grandes).

Sin embargo, cuando los requerimientos de agilidad y rendimiento son críticos, php manda. Así, ulizando php ganamos fundamentalmente en dos cosas: Velocidad y velocidad, o lo que es lo mismo, en tiempo de desarrollo y en rendimiento en ejecución. He aquí algunos mitos que hay que ir olvidando:

  • php no es un lenguaje serio: Es posible que esto fuera cierto en las primeras versiones, pero desde php5 ya es un lenguaje orientado a objetos real  y con todas las características necesarias para para hacer software de calidad.
  • php solo lo usan sitios pequeños. No se por qué razón me ha tocado oir tantas veces frases como esta, pero el hecho de que Wikipedia, Facebook o Yahoo estén en php habla por sí solo.

Si la única pega de php es, pues, que no es tan robusto y, quizá, “estricto” como Java, la solución pasa por utilizar un framework que ponga “orden” y estructura en la aplicación.

Herramientas para Voota

Herramientas para Voota

symfony

Hay varios frameworks haciendo la competencia a symfony: CakePHP, Zend y muchos otros. En realidad cualquiera de ellos ofrece servicios similares (diseño 3 capas, scaffolding, etc.). La elección de symfony es, sobre todo, por ser el más utilizado dentro de la comunidad opensource, por la calidad del código y por el soporte (usuarios, plugins y código ya desarrollado). Desde nuestro punto de vista la eterna cuestión de si se debe usar un framework o, por el contrario, cada desarrollo debería llevar su propio código (al menos de base) está obsoleta: No utilizarlo, es colgarse un yunque del cuello.

mysql (vs postgres)

No hay una razón real para no utilizar una base de datos tipo postgres. Realmente las dos son fiables. Utilizamos mysql principalmente porque es la utilizada “por defecto” en entornos LAMP. En cualquier caso utilizaremos siempre un sql lo más estándar posible para mantener la máxima independencia de la base de datos. Cosa que por otro lado también nos proporciona Symfony.

svn (vs git)

A pesar de que últimamente parece estar muy de moda utilizar git como repositorio de software, hemos optado por subversión. Las razones son simples: Es el más maduro, el que mejor se integra con otras herramientas que utilizamos (Eclipse, Trac, etc.) y porque nos da todas las funcionalidades que necesitamos.

Trac

Pocas alternativas tenemos a Trac. Permite publicar todo lo necesario a través del wiki, tiene un sistema de tickets muy potente, se integra a la perfección con el repositorio de software, y sobre todo es muy muy muy simple de manejar. ¿Qué no? Te invito a que lo compruebes 😉

http://trac.voota.org/

Pootle

Una agradable sorpresa. No tenía el gusto de conocer esta pequeña herramienta. De hecho todavía la tenemos como “experimento”, pero cada día nos gusta más. Ofrece una interfaz web para traducir las etiquetas de cualquier aplicación y admite tanto los clásicos “.po” de toda vida, como los modernos “.xliff” utilizados por Voota.es.

Otras herramientas que estamos utilizando para un futuro no muy lejano son OTRS (ticketing system) y OpenERP como aplicación de gestión. A lo mejor próximamente son motivo de un nuevo post …