lunes, 25 de febrero de 2008

Mini Tao del deployment de aplicaciones en *nix

La filosofía de trabajo para el deployment de aplicaciones en *nix, como normalmente se habla genericamente de cualquier sistema operativo tipo Unix (Solarix, AIX, HP-UX,etc.), derivados (BSDs, etc.) y similares (Linux,etc.); implica cierto conocimiento del S.O. y el orden necesario para emprender cualquier trabajo de administración.


Primero: conocimiento previo sobre la arquitectura de sistemas *nix.
Esta información previa es vital para el trabajo de administración, puesto que una vez que el operador/administrado se ha logeado en el sistema, no son visualmente obvias dichas estructuras internas de organización, ni siquiera listando los archivos y directorios y/o accediendo como root los archivos.

Mi primer consejo cuando alguien pregunta qué hacer para aprender a usar Linux es: "compra un libro". En un libro de buen nivel puede leerse ordenadamente sobre estos conocimientos previos antes y de modo tal que cada nueva pregunta va siendo respondida gradualmente al avanzar en la lectura del texto.


Segundo: saber administrar el sistema operativo...
..pero entremos en detalles

Se necesita algo que va más allá del conocimiento de como instalar el sistema operativo. Es importante un conocimiento práctico/técnico sobre sistemas operativos en general. Es posible partir de la experiencia en una plataforma MS Windows para ello, pero al igual que en Unix, el funcionamiento interno de un S.O. no está a la vista en Windows tampoco.

Este conocimiento práctico se refiere al manejo de teoría y práctica de herramientas que permitan la administración de un S.O. funcionando como servidor que brinda servicios a múltiples usuarios y en conexión con una red y que implementa las funcionalidades internas necesarias y recomendadas para garantizar la prestación de servicios en el marco de requerimientos solicitados (pre, dinámicos, etc.).

Algunos ejemplos muy puntuales son:
- El manejo de los administradores de booteo (o de bootstrapping del S.O.), que permite seleccionar entre varios S.O. y en *nix, entre diferentes kernels, además de permitir editar parámetros de esos kernels antes de bootearlos.
- El modo en que los *nix interactúan con el hardware, como los típicos nombres de dispositivos (discos IDE, SATA, SCSI, unidades ópticas, de cinta, según el *nix particular, etc.);
- Niveles de permisos necesarios para acceder diferentes componentes del S.O. (cosa que varía de *nix a *nix también);
- El manejo de sistemas de archivos (performance, troubleshooting, etc.), a nivel básico, en volúmenes lógicos y/o RAID software;

etc.


Tercero: Instalación típica de aplicaciones en *nix.
En un tercer nivel de conocimiento, lo siguiente es aprender las prácticas típicas en el deployment de aplicaciones. En *nix al igual que en Windows, las herramientas tienen una típica forma de instalarse y hacer disponibles sus recursos al administrador (binarios, librerías, archivos de configuración, archivos de documentación). Muchos intentan inicialmente asociar una forma típica de acceder a binarios/herramientas/documentación en un Windows a la de un *nix y ello acarrea serios contratiempos a quien lo intenta.

Es mejor en cambio buscar el sitio del fabricante/proyecto/desarrollador y empezar a leer la documentación, comenzando por el típico "quick start" (o el documento donde explica cómo realizar una instalación por defecto rápida y exitosa), siguiendo luego con la guía de administración, y en todo momento tener presente el FAQ que se consulta antes, durante y después de iniciar la lectura de los demás documentos ya que las consultas rápidas sobre algunos tópicos llegan pseudo-aleatoriamente según el entorno concreto en el cual estemos implementando.

Nota: siguiendo esta idea en general, lo primero que debería hacerse es recurrir a la documentación del S.O. donde explica cómo instalar las numerosas aplicaciones ya incluídas con los binarios de instalación de un *nix y el modo de administrar la instalación de esas aplicaciones. Por ejemplo, una típica distribución de Linux ocupa un DVD de 4.7 GB al menos, con miles de aplicaciones listas para instalar.


Conclusión
Hay otros tópicos puntuales sobre instalación y deployment de aplicaciones en *nix (aplicaciones java, webapps tomcat, middleware varios, etc.), pero se puede decir que dentro de varios años, el manejo general seguirá siendo casi seguramente el mismo que ahora, y por ello es que un administrador *nix tiene una portabilidad de conocimientos mucho más alta que administradores de otras plataformas, en las cuales entre versiones del S.O. e incluso entre versiones de servicios en la misma versión de S.O. la metodología de configuración y administración puede variar, sin embargo en *nix usualmente la metodología permanece y se amplían las posibilidades y opciones de configuración y administración.

No hay comentarios: