==============================================================================================

Carlos Abalde

==============================================================================================

I'm Carlos and this is my always-in-construction homepage. You can contact me at carlos.abalde at gmail dot com or use the links above to get more information about me. Additionally, next you can find a selection of random thoughts and useless stuff I write from time to time.

==============================================================================================

It has been a while since my last post here. I think it’s good time for some self promotion. Lately I’ve publishing some small pet projects I’ve working on. Nothing awesome, but some of this stuff may be useful for some people out there.

And that’s it! See you again in a few months! :)

---------------------------------------------------------------------------------------------

varnishsentry

Lately I’ve been traveling a lot by train. About two hours per itinerary. That’s a lot of time to think about how to make the world a better place to live.

A few weeks ago I came up with an idea: mankind needs a reasonable way to filter out and deliver Varnish Cache shared memory log entries to Sentry DSNs. A couple of train journeys later it was implemented and published in GitHub.

Enjoy it! Comments, improvements and money bags are more than welcome! :)

---------------------------------------------------------------------------------------------

Redis

I’ve been using Redis in a bunch of different projects during the last few years, sometimes as the main database, sometimes just as an auxiliary storage. It was about time to organice my notes and share some of the gathered knowledge :)

---------------------------------------------------------------------------------------------

"Best Apple Pie Ever" Trailer

---------------------------------------------------------------------------------------------

Sentry

Durante el último par de años, raro ha sido proyecto al que yo haya asomado, y no haya hecho lo posible por integrarlo con Sentry. Igual de importante que invertir todo el esfuerzo, conocimiento y herramientas a nuestro alcance para construir software libre de bugs, es interiorizar la idea de que eso no es una opción

Cuando los bugs aparezcan en producción, entre otras cosas, habrá que hacer lo posible por (1) enterarnos antes que nadie y (2) disponer de toda la información posible acerca de lo ocurrido, ya sea para reproducirlo en un entorno de desarrollo, o al menos para comprender qué caso no se ha tenido en cuenta en la implementación. Ahí es donde una herramienta como Sentry, y hay bastantes parecidas, es vital.

Sentry is a realtime event logging and aggregation platform. At its core it specializes in monitoring errors and extracting all the information needed to do a proper post-mortem without any of the hassle of the standard user feedback loop.

It’s important to note that Sentry should not be thought of as a log stream, but as an event aggregator. It fits somewhere in-between a simple metrics solution (such as Graphite) and a full-on log stream aggregator (like Logstash).

Si opinas que esta cuestión la puedes resolver a base de ficheros de log o de envío de e-mails con stacktraces, amigo mío, eres un pulsateclas y una vergüenza para la profesión. No hay excusa para no integrar un proyecto nuevo con Sentry u otra herramienta por el estilo. Raven, el cliente Sentry, está disponible en todos los lenguajes mainstream (Python, Ruby, PHP, C#, Javascript, etc.), y el esfuerzo de la integración, a mínimamente bien construidas que estén las cosas, es nulo.

Si hay algún esfuerzo para poner a andar Sentry, que tampoco, es montar el lado servidor (existe un servicio a modo de SaaS en getsentry.com, pero hay que ser muy cobarde para recurrir a algo así). Sentry en una aplicación Django que como mínimo requiere de una BD compatible con este framework (MySQL, Postgres, etc.) para ponerlo a andar. Una vez en marcha, es posible empezar a recibir ya eventos de diferentes proyectos (sí, es multiproyecto), vía UDP o TCP.

Ya dependiendo de la escala en la que nos movamos, puede interesar configurar Sentry para descargar en Redis ciertas tareas (es decir, añadir una capa de caché y descargar en un clave/valor contadores y cosas por el estilo). También, especialmente en el caso de hacer log de eventos vía TCP, puede interesarnos ganar un extra de asincronismo configurando Sentry para activar su integración con Celery, usando alguno de los muchos brokers posibles, como el mismo Redis de antes, o un servidor de colas propiamente dicho como RabbitMQ.

A todo esto hay que sumarle un buen número de opciones de configuración (sampling, notificaciones, permisos, etc.) y de posibilidades de integración vía plugins con otras herramientas como GitHub o JIRA.

Con todo, Sentry es una herramienta muy básica. ¿Qué usáis vosotros? ¿Alguien usa algo que se integre con el VCS de la implementación de cada proyecto?

---------------------------------------------------------------------------------------------

Vagrant

De todas las herramientas que he incorporado a mi día a día durante los últimos años, Vagrant es de mis preferidas. No se trata de nada espectacular. A fin de cuentas, no deja de ser un poco de pegamento para conectar con cariño tecnologías con muchísimo más peso y recorrido como VirtualBox, AWS o Puppet.

Eso sí, es de ese tipo de herramientas que, superados los miedos iniciales de los más reacios al cambio, y habiendo invertido algo de tiempo para p.e. elaborar un primer manifiesto Puppet con el que provisionar el entorno de desarrollo de alguno de los proyectos en que estemos trabajando, marca un antes y un después. La posibilidad de, con tan poco esfuerzo y tanta comodidad, tener un entorno de desarrollo reproducible (➡ documentado al detalle), aislado de otros proyectos y 100% local no tiene equivalente. Full stop.

Vagrant provides easy to configure, reproducible, and portable work environments built on top of industry-standard technology and controlled by a single consistent workflow to help maximize the productivity and flexibility of you and your team.

To achieve its magic, Vagrant stands on the shoulders of giants. Machines are provisioned on top of VirtualBox, VMware, AWS, or any other provider. Then, industry-standard provisioning tools such as shell scripts, Chef, or Puppet, can be used to automatically install and configure software on the machine.

Con este inauguro una serie de posts bajo la etiqueta #rtfm con reseñas muy breves acerca de tecnologías y herramientas que me parecen interesantes. No creo que vaya a mentar por aquí nada que no sea sobradamente conocido por todo el mundo, pero igual sí que animo a alguien a probar algo que había descartado, o lo mismo igual consigo que alguien me saque de mi error hablándome de alternativas mejores. Reciclarse o morir, es lo que hay :)

Actualizaciones:

  • 08/09/2013 21:15: @mdaguete me comenta que existe docker. Tiene un aire a Vagrant, aunque claramente es algo mucho más elaborado, más abstracto. En un primer vistazo no tengo claro que atiendan a la misma necesidad. Se va al cajón de cosas por ver :)

---------------------------------------------------------------------------------------------

Y con un sushi facilote y low cost, queda finiquitada la primera temporada de la serie :D

---------------------------------------------------------------------------------------------

¡Estrenando wok y debutando en YouTube! :D

---------------------------------------------------------------------------------------------

"Nuestra buena suerte nos permitió sentir una tristeza que nuestros padres no pudieron sentir, y una felicidad que nunca les vi."

---------------------------------------------------------------------------------------------

 #rupert  

---------------------------------------------------------------------------------------------

page 1 of 3

==============================================================================================

Based in design by Robert Boylan
Powered by Tumblr