An interview with Alvaro Videla (@old_sound ) about RabbitMQ and Erlang
Hello everybody! The Erlang User Conference in Stockholm is approaching!!! Today you may read in this blog post my interview to one of the speakers: Alvaro Videla. Alvaro is in the RabbitMQ team and one of the authors of “RabbitMQ in action“! I hope you will enjoy this interview!
Down the RabbitMQ hole!
Paolo – Hello Alvaro, thank you for being here! Please introduce yourself to our readers.
Alvaro – I’m a developer based in Switzerland working for the RabbitMQ team. Before coming to Switzerland I used to work in Shanghai building a quite popular German website. I very much like Erlang and every other language that doesn’t show an “Algol like” syntax and mindset, like Factor for example. I write open source here: http://github.com/videlalvaro and write about several ideas here: http://videlalvaro.github.io/
Paolo – How did you end up using Erlang? When you started learning Erlang, what was the thing that intrigued you most about the language?
Alvaro – I started learning/using Erlang when I was in China, probably in 2009. The feature that made me learn Erlang, was fault tolerance. The idea that a supervisor could restart a child and the app will keep running. The other idea that I find quite interesting and that place Erlang over other programming languages is pattern matching.
Paolo – I know that you are acknowledged not only as a RabbitMQ advocate, but also as a proficient PHP developer. Can you describe your feelings in switching from a object oriented programming language to a functional one?
Alvaro – For me learning Functional Programming showed that OOP is far from being the only way one could do things. Also it showed me how using the right tool for the job, in this case, the right paradigm, one could achieve solutions to problems than in popular OOP languages would be too complex. Another interesting feature from FP languages in general are the more advanced and high level flow control operators/techniques that facilitate programming.
Paolo – Can you give in a few words a brief description of what RabbitMQ is and what kind of problems it solves efficiently?
Alvaro – RabbitMQ is a Queueing and Messaging Server. It can be used to decouple applications, to integrate different apps, written for various platforms and languages, and that offers a queueing system that can help applications scale, whether by using a basic produce/consume model, or to offer reliability by handling offline consumers, among other things.
Paolo – Many developer know RabbitMQ because it allows the achievement of decoupling, high scalability and reliability. Do you think these features are somehow related to the fact that it is implemented using Erlang and OTP?
Alvaro – I think high scalability and reliability are thing facilitated by Erlang when it comes to operating RabbitMQ. For clients using RabbitMQ, it really does not matter that RabbitMQ is written in Erlang or not.
Paolo – You are one of the authors of RabbitMQ in Action by Manning. Would you like to tell to the folks out there some words about your book?
Alvaro – It’s a book that tries to teach you the basic concepts of Messaging and AMQP so people reading the book can go and implement applications that use messaging by themselves. We tried to achieve a friendly and relaxed style as well, trying to write the book we wished it was there when we started learning about RabbitMQ.
Paolo – At the Erlang User Conference 2014 you will give the following talk: “Building a Distributed Data Ingestion System with RabbitMQ Tutorial: Scaling Applications With RabbitMQ”. Can you give to our readers a brief summary of the talk?
Alvaro – The talk will teach how by using some advanced but very simple features from RabbitMQ, we can achieve reliable cross-datacenter replication with what RabbitMQ provides out of the box.
The tutorial will be an intro to RabbitMQ and messaging.
Paolo – How should follow the talk and why? What levels of Erlang and RabbitMQ are needed in order to fully understand your talk?
Alvaro – A basic understanding of Erlang would be enough, mostly just to read the code examples. Still, not knowing Erlang won’t prevent you from understanding the main ideas presented on the talk.
Paolo – Given your experience on the field, what are the most common mistakes teams do when working with implementations based on Advanced Message Queuing Protocol and especially on RabbitMQ?
Alvaro – The most common mistake is when people try to use RabbitMQ or any message system as a database. The converse can be said about databases being used as messaging systems.
Paolo – What are the next frontiers in the use of RabbitMQ? What are the new fields we can explore and challenges we can win using this technology?
Alvaro – It would be quite interesting to build decentralised architectures with RabbitMQ, like what the New York Times is doing with RabbitMQ and the Shovel plugin, and also learn more about how RabbitMQ can help on the Internet of Things space, by using MQTT.