Allan Jude Consolidador de FreeBSD Discute las Ventajas del Sistema Operativo y su Rol de Mantener Millones de Servidores Corriendo
Brindandole Poder a plataformas como Netflix o a tu sistema de juegos favorito, FreeBSD es un sistema operativo robusto y de código abierto en el cual confían millones de sitios para servir páginas web. Incluso Mac OSX se basa en parte en FreeBSD. Con mas de 400 voluntarios de desarrollo que lo dirigen, el proyecto FreeBSD es una fuerza dinámica que pone el control en las manos de los Administradores de Sistemas. El consolidador del proyecto Allan Jude, ha sido un fan del proyecto desde 2002. El discute la estructura interna del sistema y las caracteristicas de las funcionalidades que lo atrajeron al proyecto —contribuyendo a su documentación y posteriormente a su desarrollo — y en que esta trabajando ahora, mas de una decada después.
“Asi que hice este cambio y ahora esta en todas partes…”
Imagina que el codigo en el que trabajaste hoy o la solicitud de la característica que enviaste ayer en la encuesta en línea fuera consolidada y afectara la vida de millones de individuos — En sus PlayStation o en Netflix — y en los millones de sitios que confían en su sistema operativo para ayudar a servir páginas web.
“Es definitivamente una lección de humildad.... y un sentimiento algo extraño,” admitió Allan Jude.
Cuando Allan inició su propia compañía de hospedaje de sitios web para transmisión de video en línea, FreeBSD era el unico sistema operativo que había usado previamente con otros hosts. Basado en su experiencia y confort con él, le confió al sistema el futuro de su incipiente negocio.
Una decada después, el antes Administrador de Sistemas fué a una conferencia enfocada en el sistema operativo de código abierto FreeBSD, donde conoció a algunos de los colaboradores de su equipo de documentación. “Ellos me inspiraron,” dijo a nuestro equipo en una charla reciente. El empezó a escribir documentación pero pronto quiso contribuir en mejoras más allá de los documentos.
Hoy día, Allan tiene un lugar como Consolidador del Proyecto FreeBSD. Es raro que tu llegues a conversar con alguien involucrado en un proyecto de código abierto de escala masiva como éste — raro y sorprendente.
Dos Enormes Beneficios de FreeBSD desde el Punto de Vista del Administrador de Sistemas
Nosotros vivimos en una escuela de la ciudad con toneladas de aspirantes a desarrolladores web y a Administradores de sistemas encauzados desde la Universidad de Florida. Muchos de ellos estan destinados a ir por la ruta de Linux simplemente porque el nombre es más familiar. Ellos lo ven por todos lados. Sin embargo la realidad, de acuerdo con Allan es que FreeBSD “puede hacer practicamente todo lo que puede hacer Linux — y en la mayoría de los casos puede hacerlo mejor.”
El consolidador de FreeBSD Allan Jude, se unió a una enorme red de desarrolladores en 2012, habiendo sido un fan del proyecto desde 2002.
El hecho de que el involucramiento de Allan en el desarrollo del proyecto empezara a partir de su experiencia personal con el sistema, levanta la pregunta: ¿Por qué ESTE SISTEMA OPERATIVO? “Por la manera en que está organizado,” responde Allan, y al parecer esa declaración incluye la estructura interna y el equipo interno.
- Organización del Código, Meticulosmente Mantenido y Documentado
El Proyecto FreeBSD funciona como un mundo extremadamente bien organizado en si mismo. Allan explica el ambiente: “Hay una página de documentación que explica cómo esta diseñado el sistema de archivos y todo tiene un lugar y siempre va en ese mismo lugar.”
Especialmente con tantas manos trabajando en el mismo lugar en este proyecto, sería fácil que el orden se volviera una maraña. Allan explicó que en muchas otras aplicaciones, los desarrolladores estructuran el código como ellos sientan que tiene sentido, y eso varía de desarrollador a desarrollador. “Con FreeBSD, siempre hay un lugar asignado para las aplicaciones [sin importar cuál sea] y siempre va a ir ahí,” concluye Allan.
Para mantener este orden, FreeBSD tiene una Guía de Estílo que tiene que seguirse meticulosamente. Allan nos dijo que el equipo esta tan fuertemente entrelazado que sirve como una fuente de auditabilidad del uno para con el otro. “Es un grupo de gente extremadamente entrelazado. Si pones algo en el lugar equivocado, alguien dirá, ‘Hey, eso va en este lugar,’ y entonces se corrige.”
Conforme el equipo de desarrollo continúa creciendo, ellos predican el apropiado estilo FreeBSD con un sistema de tutorías. Cada nuevo desarrollador que entra abordo recibe un mentor o tutor para asegurarse de que son entrenados de acuerdo con la guía antes citada. “Cuando te unes a FreeBSD se te asigna un mentor o tutor por un tiempo, eso significa que cualquier cosa con la que colabores es revisada primero por ellos,” Explicó Allan, “y si algo esta mal con ello, es su error — no el tuyo — lo cual realmente ayuda un montón al principio cuando estas iniciando.” No es broma, te imaginas solo involucrarte y tomar el destino del sistema de juegos de alguien en tu primera solicitud de caracteristicas en un proyecto masivo como lo es éste?
- Paquetes de Distribución con Control de Versiones sin Dolor y 25,000 Ports para escoger
Otro factor sobresaliente es que FreeBSD hace paquetes de forma diferente — totalmente mantenido por su equipo con control de versiones sencillo para ti. FreeBSD permite tomar control de tus paquetes cuando configuras y mantienes tu sistema, y ofrecen un ciclo de “liberación sobre la marcha” con 25,000 ports diferentes de los cuales escoger.
“Tu no tienes que ir cazando por ahí agregando repositorios externos que son administrados quien sabe por quien,” Allan agregó, que uno de los beneficios favoritos de FreeBSD. “Es que todo esta en un solo repositorio de paquetes de FreeBSD,” y cuando quieres cambiar digarmos desde ,PHP 5 a PHP 7, “es solo cuestión de decirle a [FreeBSD]” que actualice y está hecho.
Con el beneficio agregado de las Cárceles o Celdas de FreeBSD — el contenedor que permite almacenar tu sitio de versiones de desarrollo y producción separados en una sola máquina — tu puedes actualmente hacer el cambio entre ellos en base a pruebas. No hay necesidad de instalar una nueva máquina o alterar el ambiente de producción.
El Proyecto más Reciente de Allan que esta bajo los Reflectores: Ambientes de Arranque
Así que, ¿Cómo es un día en la vida de un desarrollador del Proyecto FreeBSD? Allan nos dijo que la mayoría de los miembros estan trabajando en el proyecto como un hobby o como un trabajo de tiempo parcial en conjunto con sus “trabajos del día.” Él indicó que frecuentemente el esta trabajando en un proyecto en un día determinado, y resulta que no es tan sencillo como el creyó que sería, o no funciona de la manera que el quería, o se siente inspirado por el ¿Qué pasaría si..: “Sería grandioso si tuviera esta característica extra,” el verbaliza su tren de pensamiento. “Me digo, voy a empezar a trabajar en esto, y, una vez que tenga una idea general de como lo quiero hacer, lo publico en la lista de correo y obtengo retroalimentación.” Con una comunidad responsiva a solo un buzón de distancia y una revisión completa de código después, Allan y sus compañeros desarrolladores tienen el sistema de soporte que necesitan para subir contribuciones frescas en el ciclo de liberación de FreeBSD.
“Creo que lo más reciente que he hecho y para lo que mucha gente estaba esperando, es una característica llamada Ambientes de Inicio,” Señaló Allan. “Si estas usando ZFS, puedes tomar una instantanea de tu sistema antes de que instales una actualización y entonces, si la actualización no funciona, puedes regresar a como estaba antes el sistema — pero esto solo afecta los archivos del sistema.” En otras palabras, tus directorios home y archivos de bases de datos no son afectados durante el regreso del sistema operativo hasta el punto en que estabas contento con él.
Allan compartió con nosotros una de sus últimas gemas del proyecto FreeBSD — acceso simple a los ambientes de inicio para SysAdmins.
“Anteriormente, tenías que usar una herramienta en el sistema operativo para cambiar entre ellos,” señaló Allan. “Después de una actualización, si el sistema no llegaba a arrancar, entonces esa herramienta no era de mucha ayuda.” Para combatir esa frustración, Allan hizo que la característica fuera mas usable para todos por medio de agregar una opción para seleccionar el Ambiente de Inicio en el menú que aparece después del primer arranque. Como un bono añadido, la característica esta accesible ante la mayoría de los usuarios quienes no necesariamente tienen que saber que existía de antemano. “Ahora ellos ven esa opción cada vez que inician, de tal forma que ellos pueden ir a la documentación sobre como utilizarla,” concluyó Allan. Darle a la gente lo que necesitan, incluso si ellos no saben que lo necesitan — Bien hecho, Allan!
El Protocolo de Pruebas, Usando ZFS es un Ejemplo Asombroso
Para aquellos que no saben, ZFS, o el Sistema de Archivos Z, es la nueva ola de los sistemas de archivos, dado que realmente es más que un simple sistema de archivos. Es un proyecto de código abierto desarrollado por Sun Microsystems™ que combina administración de volúmen y características tradicionales de sistema de archivos, mientras que reconoce la estructura general de los discos de almacenamiento involucrados. Supera muchos problemas antiguos encontrados en otros sistemas de archivos, los cuales solo podían reconocer un solo disco (inclusive cuando estaba colocado en una configuración avanzada de RAID por hardware).
Naturalmente le preguntamos a Allan como cambió ésto el juego para su propio negocio como copañía de streaming de video. “Ahora que nos estamos acercando al petabyte de almacenamiento, otros sistemas de archivos ya no son mas una opción,” explica sin rodeos. El mayor punto de venta del ZFS para el negocio de Allan son las instantaneas y la replicación. “Cuando estas hablando sobre archivos de decenas de terabytes para algunos clientes, otras opciones de respaldo ya no funcionan, así que teniendo la replicacion al nivel de bloques realmente mejora mucho las cosas para nosotros,” señaló, haciendo notar que algo que pueda mantener sistemas de archivos separados para cada cliente es realmente bueno también. Con ZFS, ellos son capaces de administrar archivos de clientes como una unidad discreta, lo que es conocido como un conjunto de datos — y si alguien no paga su factura, ellos pueden remover esa instantanea particular del cliente del almacenamiento sin afectar a los usuarios que pagan.
Incorporar Nuevos Sistemas de Archivos en un Sistema Operativo No es un Desafío Pequeño
Muy bien desarrolladores — tomen un momento para pensar a traves del proceso de integrar un nuevo sistema de archivos en un sistema operativo. Mmm, a quien no le gusta un desalentador proyecto que pede durar semanas y mas semanas? Preparense ahora: Este reto bestial fue enfrentado y vencido por un desarrollador Polaco de nombre Paweł Jakub Dawidek — y lo hizo en tan solo 21 días.
“El trabajó cerca de 18 horas al día,” menciona Allan, imaginando probablemente como se caían nuestras quijadas a traves del telefono. “El no estaba trabajando de esa manera a proposito; fue más como si el estuviera tan exitado e interesado que de plano no podía detenerse de pensar o de trabajar en ello.”
Esa actitud es representativa de lo que se siente a traves de todo el equipo de desarrollo de FreeBSD, es lo que pienso. Cada vez que formulamos preguntas sobre, “Qué tan seguido trabajas en el proyecto?” La respuesta de Allan iba de, “Bueno, algunas veces no puedo hacerlo durante la semana, y otra veces ocupo TODO EL FIN DE SEMANA.” Puesto de forma simple, Allan dice, “Esta es la divertido de las cosas.”
Las Pruebas son Truculentas y Rigurosas, así que FreeBSD Viene con el Universo Compilado
Para complicar más las cosas, ZFS tiene su propio repositorio principal con sus propias reglas y requerimientos de pruebas: p.ej., una solicitud de una caracteristica tiene que estar probada en sistemas operativos con ZFS corriendo en ellos como FreeBSD o Linux y usada en producción por un mínimo de 3 meses antes de que ésta llegue a ser consolidada.
“El repositorio de ZFS debe estar en calidad de producción todo el tiempo,” explicó Allan. “FreeBSD tiene un conjunto de pruebas, un conjunto de pruebas de regresión, y entonces una contínua integración con Jenkins.” El truco es adivinar en cual de las multiples plataformas se debe hacer. Si tu realizas una consolidación, el código se ve perfecto, pero entonces te das cuenta de que solo sabes como funciona en tu hardware x86. Tal vez su funcionalidad en ARM sea una historia diferente. (Como diría el perro de Caricatura Scooby Doo "Rut ro, Raggy" (Uh!, Ho!, Shaggy) Expresion que indica que algo malo va a pasar y que escapa a tu control).
El equipo FreeBSD no estaría completo sin su mascota. Conozcan al BSD Daemon: Beastie!
“Nosotros tenemos este concepto llamado Compilación del Universo donde compilas FreeBSD para cada diferente ambiente de procesador que esta soportado,” nos compartió Allan. De esa forma no importa que tan bien funcione en tu sistema, también sabras que funciona en el de todos los demas.
Como se esperaba, Allan nos dijo que la Compilacion del Universo puede tomar un tiempo en desarrollarse y perfeccionarse — “especialmente si no tienes todo el hardware, pero la Fundación FreeBSD proporciona servidores para los desarrolladores del proyecto.” Así que afortunadamente, ellos tienen acceso a servidores realmente grandes, algunos con 36 núcleos, y repletos de RAM. “Si tienes que hacer una Compilación del Universo en tu laptop, esta podría tomar un día y medio,” agregó Allan, con una carcajada.
Lo que se Pueda Salir por las Grietas es Atrapado Inmediatamente por Jenkins
Antes de unirse a los aproximadamente 400 desarrolladores y a sus contribuciones en una mision compartida para fortalecer y evolucionar el poderoso sistema operativo de código abierto FreeBSD, Allan fue un Administrador de Sistemas. El jugó con PHP, Perl, y escripts de shell, pero no fue sino hasta hace poco que tomó el lenguaje C.
“Algo importante con lo que nos quedamos es que tu no tienes que ser un desarrollador experimentado con toneladas de experiencias para hacer una diferencia en el proyecto,” indicó Allan — y la diferencia que desarrolladores como Allan estan haciendo es increible. Si tu tambien quieres enviar la consolidación de código que contribuya al proyecto en que millones de servidores web confían, hay una gran cantidad de maneras de involucrarse!
Estamos hablando especialmente a los Administradores de Sistemas aquí, como hizo notar Allan ellos son los principales usuarios de FreeBSD. “Tener mas Administradores de Sistemas en la compilación actual del sistema significa que podemos ofrecer las herramientas que ellos estan buscando — diseñadas de la manera que un Administrador de Sistemas quisieran tenerlas diseñadas, no necesariamente de la manera en que un desarrollador podría pensar que las cosas tienen mas sentido,” agregó Allan.
Si tu estas usando FreeBSD actualmente y se te atraviesa la oportunidad de hacer una característica más fácil de usar o más funcional — ¡Empieza a trabajar por hacer eso! “Podemos tomar contribuciones de cualquiera que desee ofrecerlas,” concluyó Allan.
Si quieres involucrarte, pero no te sientes al nivel o con la disponibilidad, aún, Checa Las páginas de Trabajos para Juniors de la FreeBSD wiki ahi encontraras la lista más reciente de tareas que necesitan hacerse.
Nos leeremos en el siguiente artículo!
FreeBSD rulez!
Este post es una actualización de un artículo propio que puede consultarse en la siguiente URL: