Cultura devops en REA

Como muchos sabéis ya, hace algo más de 4 meses que inicié mi aventura en tierras Australianas y comencé a trabajar para REA, grupo que se dedica a la gestión de publicidad online para el mercado inmobiliario, principalmente en Australia, pero con presencia internacional en Italia, Luxemburgo, HongKong, etc…

Deajando aparte el factor aventura, y las ganas de conocer esta parte del mundo, cuando me ofrecieron este trabajo se unieron la oportunidad de trabajar en una compañía que maneja algunos de los portales con más tráfico de Australia con mi interás por dedicarme a las operaciones web a gran escala. Uno de los elementos que más me atrajo fue la cultura de la compañía, que por lo que pude adivinar en las entrevistas, y he verificado postriormente, destaca por una implantación muy alta de metodologías ágiles, equipos de alto rendimiento y gran nivel técnico, mentalidad hacker, mimo por los empleados y una cultura devops muy evolucionada.

Un ejemplo del arraigo de la cultura devops en la empresa es que los dos grupos que celebran reuiones en la zona sobre el tema: «Melbourne devops» e «Infrastructure coders» están siempre sobre poblados de gente de REA, ya sea en el público, como colaboradores o como organizadores. Fuera de Australia, cuando uno de mis compañeros recientemente asistió a Velocity y Devopsdays en Estados Unidos recibió comentarios de admiración sobre el grado de implantación de la cultura devops en la compañía.

Pero después de tanto rollo, ¿cómo es la cultura devops en REA? Podría decirse que en una compañía como esta, en la que los conceptos de agilismo y lean están tan marcados en todos sus estratos, la búsqueda de la eficacia y las mejores prácticas es una evolución constante. Si aplicamos estos elementos al concepto de cómo operamos nuestros servicios nos damos cuenta de que se trata de un viaje que implica un cambio constante. Podemos marcar el comienzo de este viaje hace ya algún tiempo, cuando las operaciones eran ejecutadas de forma centralizada por el equipo de Operaciones Web (dentro del área de IT). Los ya consabidos problemas consecuencia de la separación de Operaciones y Desarrollo, sumados a la desalineación de ambos con los intereses del área de negocio, llevaban a un funcionamiento ineficiente. Operaciones estaba descontento porque no podía solucionar los problemas endémicos, ya que no estaba presente en el proceso de creación y/o mejora de los productos. El equipo de Desarrollo por su parte veía en Operaciones un elemento bloqueante, que no le permitía alcanzar la velocidad demandada por el entorno del negocio, en aras de mantener la estabilidad del entorno. Y todo acaba con las consabidas peleas de perros y gatos, tan ilustradas en cualquier presentación sobre devops.

Los primeros refinamientos del proceso se basaron en empezar a «infiltrar» miembros del equipo de Operaciones en los distintos equipos de Desarrollo, para intentar mejorar la comunicación, y para conseguir que el elemento de operaciones estuviera presente en el día a día del desarrollo y mejora de los servicios. Al parecer el comienzo no fue muy fácil ni agradable y en algunos casos los equipos rechazaban al nuevo miembro, como cuando un cuerpo rechaza un transplante, y también había choques culturales, siendo los «infiltrados» los que no se sentían cómodos en este nuevo ambiente. Su trabajo consistía casi únicamente en realizar pasos a producción de forma manual una y otra vez. Por aquel entonces, había un segundo equipo denominado SPA (Site performance and availability) que se encarga del soporte global de las operaciones, es decir del cuidado de las infraestructuras y gestión de incidencias relacionadas con producción.

Transcurrido algún tiempo comenzaron a hacerse evidentes las ventajas del modelo, gracias al éxito de los equipos que lo habían implementado. Esto dió paso a prácticas que mejoraron el proceso de despliegue y gestión de los servicios mediante la automatización de los mismos y al comienzo de la adopción de un modelo PaaS (Plataforma cómo servicio) cuyo objetivo era la estandarización de los entornos y la simplificación en las operación de los mismos.

Los siguientes pasos en este proceso son la incorporación de la obre la gestión de las operaciones en estos equipos que ahora serán responsables del servicio de forma global incluyendo la creación, mejora y operación del mismo. Este proceso incluye la gestión y resolución de incidencias, ahora los miembros de SPA se han enbebido completamente en los equipos, y el siguiente paso es conseguir que la responsabilidad de solucionar los problemas recaiga en todo el equipo: desarrolladores, calidad, operaciones e incluso los productores y responsables de negocio que poco a poco se han ido incorporando al equipo en su día a día, formando algo parecido a mini startups dentro de la empresa. Por lo que ahora todo el equipo se sienta en la misma zona de la oficina, atiende a las reuniones diarias (standups) y participa en el trabajo cómo uno más. Se acabó esto no lo podemos resolver esto porque X o G no colaboran. Los problemas se priorizan dentro del equipo y se decide que demandas se deben atajar primero y el diseño de nuevas funcionalidades siempre cuenta con la idea de cómo vamos a operar el servicio cuando este esté en producción.

Respecto a la tecnología usada dentro de los equpos relacionada con devops podríamos describirlo cómo que cada equipo tiene libertad para utilizar los elementos que le sean más productivos para conseguir sus objetivos, es la ventaja de tener el control y la responsabilidad de extremo a extremo de los elementos, y en muchos casos esta apoyada en la estandarización que provee el uso de una plataforma común, de la que ya hablaré en un articulo posterior. Por tanto nos encontramos elementos muy distintos cómo puppet o chef para la gestión de configuración, el uso de rpms para la distribución de nuestras aplicaciones, nagios, newrelic, gomez y graphite para monitorización y métricas entre otros muchos.

La implantación de la cultura devops en una compañía no puede medirse cómo blanco o negro, más bien se trata de un gris que va cambiando de tono ya que está en constante evolución persiguiendo el fin último de mejorar la forma en que ofrecemos nuestros servicios y aumentamos el valor para nuestros clientes, así que os mantendré informador de futuras mejoras y la implantación de los planes actuales.

Pensando en Devops

No sé si os lo he comentado ya varias veces pero me encanta la nueva mentalidad alrededor de las tendencias Devops y las Operaciones Web ágiles. Creo que es un cambio de mentalidad necesario y un gran avance para nuestra profesión pero que implica cambios a todos los niveles. Ya llevaba tiempo pensando en escribir sobre el tema ya que los recursos en inglés sobre el mismo son inagotables, pero creo que no hay tanto en español, así que os voy a dejar un batiburrillo de reflexiones que últimamente me dan vueltas en la cabeza.

El otro día estuve en el London Puppet User Group meeting y disfruté bastante de las charlas especialmente la segunda en la que mostraron un enfoque diferente en la definición de recursos orientado a provisionar varios servidores a través de Open Nebula y dejarlos configurados y operativos, todo ello a través de Puppet. Pena que todavía no he tenido la suerte de poder acercarme a London Devops y me alegro infinito de que Madrid Devops siga viento en popa, desde aquí mis felicitaciones a Mari Carmen por el empeño que está poniendo y a todos los que os acercáis a compartir por ese foro, ¿se nota que os echo de menos? 😀

Una de las primeras cosas que me vinieron a la cabeza es que no estoy seguro de si la orientación que está tomando la gente de Puppet Labs va muy en la línea de lo que yo busco en su producto. Por un lado, mantener dos desarrollos separados para la edición Enterprise y la edición Comunidad y por otro, el enfoque hacia grandes corporaciones y hacia la incorporación de elementos cómo gestión de CMDB, Workflows, etc para mí rompe un poco con la mentalidad Unix: pequeñas herramientas que hacen muy bien su trabajo y que en conjunto te dan una gran flexibilidad. Personalmente me gustaria que se trabajara más en la parte de orquestación y en romper el enfoque nodista, decidir el estado de mis nodos, por uno mucho más orientado a conjunto o a servicio.

Me encanta mcollective, creo que es una herramienta muy potente, pero no dejo de verla cómo un loop ssh para ejecutar un comando en el resultado de la busqueda de nodos que cumplen ciertas características y no lo termino de enlazar con una orquestación más basada en estados cómo es puppet sino en acciones.

Por cierto, si tenéis tiempo libre y os interesa el tema de Puppet os recomiendo que le echéis un vistazo a los videos de la pasada Puppet Conf y también a este repositorio Git que ha compartido la gente de Wikimedia con los manifiestos que ellos están usando para gestionar su infraestructura.

Otra reflexión sobre puppet, antes de pasar a otro tema, me vino del descubrimiento que en las plantillas para ficheros tipo erb podía utilizar todo el código Ruby que quisiera y esto solucionó algunos de los problemas que me estaban rondando últimamente para definir algunas plantillas algo complejas. Desde entonces un run-run en mi cabeza no para de decirme si aplicando el mismo concepto no sería mucho más potente el uso de Chef que utiliza una sintaxis más amplia y te permite utilizar el juego completo de instrucciones de ruby en tus manifiestos. Hace tiempo que no pruebo Chef, pero comentando esto con gente de la conferencia me comentaban que la orientación de Chef no cambia únicamente en eso sino que también hay que tener en cuenta que al contrario que Puppet, la ejecución de la configuración en Chef en varias ocasiones consecutivas sobre el mismo entorno en el mismo estado podría no dar lugar a los mismos efectos. Aquí me vendría bien ayuda de gente que se haya pegado más con los dos sistemas, ¿cómo véis el estado del arte los Chefistas y los Puppeteros?

Y de paso aprovecho también para volcar a texto otra de mis inquietudes de los últimos meses. Hace ya tiempo que quiero ampliar mis habilidades aprendiendo y cogiendo práctica con un lenguaje de scripting que me ayude a ser más eficiente y amplie mis posibilidades. Al principio python parecía el camino adecuado, pero cada día que pasa siento que hay más y más herramientas de administración escritas en ruby, con lo que me crece la duda, por ahora sigo poco a poco la senda de python y ya sé que la respuesta a la pregunta es: aprende los dos, pero cómo el tiempo es limitado habrá que dividir los esfuerzos o priorizarlos, ¿cómo lo véis?

Una parte de la charlas posteriores entre cervezas y pizza que me encantó era lo que comentaba uno de los asistentes: «Yo no quiero a los desarrolladores anden tocando en mis servidores», pero estuve pensando y creo que no sólo es la idea correcta sino que habría que ampliarla «No quiero a nadie rondando en mis servidores, ya sean de los equipos de desarrollo u operaciones y menos aún alguien de fuera», si hay que hacer retoques en los entornos de producción estos deberían hacerse siempre desde las herramientas de gestión de configuración y cambios de tus entornos y a través de unos workflows definidos y probados ampliamente, nunca tener que realizar acciones directas sobre las máquinas. Otro de los comentarios fue que «los equipos de desarrollo quieren estar modificando continuamente lo subido y a veces van demasiado rápido», y creo que aquí está otro de los puntos clave del cambio que estamos intentando llevar a cabo con mentalidades ágiles y devops: nuestro objetivo debe ser el de habilitar el cambio y potenciarlo, eso sí poniendo los mecanismos necesarios para asegurar el éxito: integración continua, desarrollo guiado por pruebas, automatización del despliegue, paso rápido entre entornos de pre y pro o despliegue continuo son los habilitadores para ello y tenemos que encontrar la mejor manera de integrarlos en nuestros ciclos para ganar en agilidad.

Y en el terreno herramientas, no puedo dejar de comentar una de mis favoritas en los últimos días es Vagrant, si no la habéis probado no tardéis mucho en hacerlo. Hace tiempo que estaba buscando un sistema que me permitiera gestionar facilmente máquinas virtuales en mi portátil de forma que si necesito probar algo en una Debian, Redhat o lo que sea pueda levantarla rapidamente tener un entorno configurado rápidamente y hacer la prueba y destruir la máquina. Para ello Vagrant es ideal, es un conjunto de scripts en Ruby, elo aquí de nuevo, que usan Virtualbox por debajo normalmente en modo no gráfico y que te permite levantar una serie de plantillas de máquinas virtuales (os recomiendo vagrantbox.es para descargarlas), además tiene integración con puppet y chef de forma que puedes indicarle que ejecute un manifiesto al arrancar y que te deje el entorno ya configurado según unos parámetros. Impresionantes las posibilidades también para los equipos de desarrollo a los que se puede pasar un entorno similar al de producción y ellos pueden ejecutarlo en sus máquinas para desarrollar, hacer pruebas, etc… Vamos, no hay día que no me levante al ritmo de un comandazo «vagrant up»!

Por último voy a dejar a continuación tres juegos de transparencias que me han gustado bastante en los últimos días y que creo que son bastante explicativas de todo esto al rededor del movimiento Devops:

Y lo más importante, si has llegado hasta aquí por favor deja tu comentario en la entrada para que generemos algo de debate al rededor del tema. Muchas gracias a todos. 😀

Novedades en RHEL 6

En el post anterior comentaba las primeras impresiones de la instalación de RHEL 6 y os prometía ampliar algunas de las novedades que trae esta nueva versión después de la presentación que nos realizaron en el evento de partners de Red Hat.

Cómo la descripción general podéis verla en la web de Red Hat sobre RHEL os dejo las notas que tomé porque me sorprendieron o interesaron durante la presentación:

* Mejoras en la eficencia energética: se incorporan comandos como powertop e iotop para medir el consumo de los distintos procesos así cómo tuned, un demonio que va adaptando los recursos del sistema para mejorar la eficiencia

* Con cgroups podremos establecer un límite de recursos sobre un proceso a nivel de número y porcentaje de cpu, memoria, disco y red de forma dinámica.

* Se de usar PAM a SSSD

* Respecto al temido SE-Linux se crean dos nuevos modos: SE-Linux kiosk para aplicar políticas a sesiones en modo kiosko cuando es un terminal de uso público y SE-Linux sandbox para confinar aplicaciones que no tienen todavía definida una política predefinida de SE-Linux

* En cuanto a IPSEC se pasa de usar OpenVPN a OpenSwan

* Dispondremos de System Tap para depurar aplicaciones, pero al parecer también nos va a permitir depurar aplicaciones Java

* KVM entre muchas otras mejoras permite añadir recursos físicos en caliente (CPU, disco, memoria, etc…)

* Yum permite hacer rollback de una instalación !!!

* Simplificado el reporte de errores ante fallos graves que captura el estado de la máquina y permite enviarlo a Red Hat para abrir un bug

* En la parte de Cluster podemos destacar el uso de corosync, unfencing y la interfaz conga rediseñada

También hay grandes cambios en el tema de subscripciones y se complica un poco el tema de saber cuál aplica a tu caso, además de estar fuertemente ligado a la virtualización, pero básicamente tendremos que sacarlo de cruzar los siguientes datos:

* Por cada par de sockets (zocalos utilizados) del servidor anfitrion
* Por el número de guest RHEL máximo que podemos correr en ese anfitrión (1, 4 o ilimitado)
* Por el número de extras que queramos contratar (alta disponibilidad, GFS, XFS, soporte extendido, etc…)

Un caso curioso es el de los clusters de virtualización que tengan migración en vivo, en cuyo caso todos los servidores a los que pueda ir un guest RHEL deben de tener una subscripción activa y el máximo de guests que podremos ejecutar en total en el cluster saldrá de sumar los guests permitidos en cada una de las subscripciones de los nodos anfitriones (1 o 4 o más si apilamos varias subscripciones en ese mismo anfitrión) o será ilimitado en caso de tener subscripciones de tipo ilimitado en todos los nodos del cluster, ya que estas no se pueden mezclar. Un poco lioso.

Lo que sigue estando verde es el tema de usar RHEL en nubes públicas aunque se están avanzando acuerdos con los proveedores de Cloud para que lo ofrezcan por ahora no hay subscripciones que puedas pagar por uso provenientes de la propia Red Hat.

ACTUALIZACIÓN: Se me había olvidado comentar el tema de formación y certificación que también tiene sus novedades. Cómo comentaba por twitter casi me enteré antes de que estaba RHEL 6 en la calle porque me llegó un correo indicando que en breve va a estar obsoleta mi certificación RHCE, la saqué con la versión 4, y que la RHCT, la renové a la versión 5 en el evento de partners de Valencia dónde hacían exámenes gratuitos, se convalida con la nueva certificación RHCSA (Red Hat Certified System Administrator) que será la nueva certificación previa a sacar el RHCE.

Probando la instalación de RHEL 6

Hace un par de días se lanzaba definitivamente la nueva versión de Red Hat Enterprise Linux: RHEL 6. Y aunque ya le había echado un ojo a alguna Release Candidate he sacado un rato para probar la instalación en una máquina virtual de KVM de la edición de servidor de RHEL 6 recien descargada de Red Hat Network. La instalación ha sido muy sencilla y aquí os dejo los pasos y algunos comentarios al respecto.

La instalación arranca con la selección del tipo de acciones que queremos realizar: instalar, instalar en modo texto, recuperar el sistema, arrancar desde el disco local o hacer el test de memoria. Nada nuevo por ahora en el horizonte, seleccionamos la opción de instalar:

A continuación haremos la típica selección de idioma y teclado, en mi caso me gusta mantener el idioma en inglés, sobretodo porque es más fácil rastrear los mensajes de error por internet, y el teclado en castellano:

Seleccionamos nuestra ubicación en Madrid:

Y pasamos a seleccionar el dispositivo de almacenamiento en el que queremos instalar, siendo las opciones básico o especializado, permitiendo esta última opciones muy interesantes para el modo servidor cómo instalar en una cabina de almacenamiento o añadir drivers de nuestro raid hardware:


Continuar leyendo «Probando la instalación de RHEL 6»

Charla: Gestionando nuestros servidores con Puppet

Otro semestre más vuelven los cursos del Gul de la Universidad Carlos III de Madrid que durante la semana próxima, del 08 al 14 de Noviembre, tratarán de temas tan interesantes cómo Git, tunning de Mysql, Android o ITIL. Yo me apunto de nuevo a dar una charla y esta vez será sobre Puppet y cómo puede cambiar radicalmente la concepción de la gestión de nuestros servidores ofreciendonos grandes ventajas en la automatización, gestión de configuración y la reutilización.

Mi charla será el Martes 09 de Noviembre a las 18:00 en el aula 4.0.E02 en el Campus de Leganés de la Carlos III, así que si os interesa el tema nos vemos por allí.

ACTUALIZACIÓN: Ya tenéis un resumen y las transparencias de la charla disponibles en el blog.

Red Hat EMEA Partner en Valencia

Esta semana he estado en el evento para partners de RedHat en Valencia, os dejo un link al resumen que he escrito para el blog de Andago.

RedHat Emea Partner Summit Closing

La verdad es que lo he disfrutado bastante, ya que ha sido una gran oportunidad para aprender y compartir experiencias con gente muy interesante, además de sobrevivir con un portátil con Ubuntu en un evento de estas características 😀 . Además el hecho de que sea en Valencia también me ha permitido pasar algo de tiempo, aunque realmente poquito, con mi familia.

La próxima parada será en el LinuxTag en Berlín, pero eso ya será otra historia. Os dejo unas cuantas fotos del evento a continuación:

RedHat Emea Partner Summit Awards

RedHat Emea Partner Summit Party

RedHat Emea Partner Summit Band

Charla Administrando Jboss

Bueno, la primera de las dos charlas de esta semana ya está impartida y voy a comentaros un poco cómo fue. En primer lugar agradecer a todos mis compañeros de Andago que se animaron a venir a la charla, espero que les gustara así cómo a toda la gente que se acercó a pasar un ratito hablando de Jboss. Cómo es costumbre, aquí os dejo las transparencias de la charla para los que no pudisteis venir o para los que estuvisteis y queréis refrescar algo:

La charla se comparte cómo Creative Commons Reconocimiento 2.5 de España, exceptuando la marca y el logo de Jboss que tienen todos los derechos reservados, y en caso de existir algún problema podría retirar de las transparencias. El vídeo con los contenidos de la charla puede tardar algo más ya que se va acumulando el trabajo y tarda algo más en subirse.

Creo que la charla quedó bastante completa, aunque un poco larga 2 horas y pico, pero es que hay mucho tema que cortar y espero que cubriera las expectativas tanto de la gente que no conocía para nada Jboss cómo los que querían profundizar un poco más en el tema. Cómo casi todas las charlas del GUL fue bastante interactiva, con muchas preguntas y comentarios, lo que siempre es bastante de agradecer porque se hace todo más ameno. Surgieron algunos temas interesantes cómo por ejemplo si es posible realizar medición del tiempo de CPU que consume cada clase dentro del servidor de aplicaciones, para lo que recomendamos utilizar alguna herramienta de profiling (ver post en el blog de Angago) o cuales son las clases que son serializables y cuales no, y por tanto no pueden ser usadas en un cluster de Jboss.

Cómo siempre disfruté cómo un enano, ya sé, tengo que calmar un poco mis ánimos porque de repente me emociono en el «escenario». Si tenéis algo de tiempo os recomiendo que os paséis por el resto de charlas del GUL de esta semana y la que viene, porque hay cosas super interesantes. Próxima parada: el Cebit: a conquistar Alemanía con las soluciones de software libre en la nube.

ACTUALIZACIÓN (16/03/2010) VIDEO: En este enlace al ftp del GUL podéis descargaros el vídeo de la charla: jboss.mpg (704,3 Mb)

Próximas charlas

Bueno, pues recuperado ya del subidón del FOSDEM, en el que sólo fuí cómo asistente, llega mi turno de pasar al otro lado y ocupar el rol del presentador, y es que la semana que viene voy a impartir las siguientes charlas:


Administrando Jboss
01 Marzo – 19:00-21:00
Aula 1.0.C01 – Universidad Carlos III Madrid

En esta charla veremos una introducción a la administración del servidor de aplicaciones Jboss. JBoss es el primer servidor de aplicaciones de código abierto, preparado para la producción y certificado J2EE 1.4, disponible en el mercado, ofreciendo una plataforma de alto rendimiento para aplicaciones de e-business. En la charla se cubrirán aspectos cómo la instalación, configuración básica, despliegue y clustering del servidor.

La charla se enmarca dentro del programa de cursos de Marzo del GUL que se llevará a cabo durante dos semanas y en la que se pueden encontrar otras charlas interesantes sobre software libre, programación y seguridad.

SaaS in Public Administration
05 Marzo – 10:00-10:45
Hall 2, Stand F38 CeBIT Forum Open Source – Hannover

El e-government, el software libre y el cloud computing están hoy en día en boca de todos… pero ¿qué pasa si los ponemos todos juntos? El resultado es muy interesante, pero ¿cómo encajan entre ellos? Veremos porqué el software y los estándares libres son la mejor manera de implementar soluciones de e-government y cómo las aproximaciones basadas en la nube cobran un gran sentido en estos entornos, ya que en muchos casos son la única alternativa económicamente sostenible para algunos sectores y qué mejor que poder usar la gran gama de tecnología libre de la que disponemos en el campo del cloud-computing.

Esta charla será en inglés, y es la primera vez que presento en un idioma que no sea castellano, por lo que va a ser todo un reto para mí al que estoy deseando enfrentarme. Por otro lado está la suerte de poder asisitir al Cebit, la mayor feria de electrónica de Europa, y además con el aliciente de que España es el país invitado de esta año. Pena que voy a ir con el tiempo más bien pegado porque salgo el Jueves y vuelvo el Viernes, pero intentaré aprovechar para dar una vuelta por la exposición.

Ya os contaré que tal me va en cada una de ellas y con un poquito de suerte puedo contar con vosotros en vivo.