Author: Oriol Rius

Viatge de noces: Japó i Maldives

Reading time: 4 – 7 minutes

Com que encara no he m’he pogut refer al 100% dels problemes tècnics que han afectat a un servidor que va fallar just abans de marxar al viatge de noces encomptes de fer la ressenya del viatge al Wiki la faré al blog directament.

Així doncs, faig un petit resum del que hem estat fent en la lluna de mel i ús poso quatre fotos per fer boca.

Dia 1 (10-11/5/2012) – Torrelavit > Barcelona > Doha > Osaka > Kyoto

L’objectiu d’aquest dia pràcticament només era anar des de casa fins a l’hotel de Kyoto (Karasuma Kyoto Hotel). Així doncs, viatjant amb Qatar Airways i fent escala a Doha varem arribar fins a Osaka on gràcies alJapan Rail Pass poguerem desplaçar-nos fins l’estació central de Kyoto. Allà després d’un munt d’hores de viatge i carregats de maletes agafarem un taxi fins l’hotel. Podriem haver-ho fet en metro però per ser el primer dia varem decidir anar a lo senzill.

Dia 2 (12/5/2012) – Kyoto

El primer dia a Kyoto ens ho varem prendre molt en serio i visitarem el següent:

Dia 3 (13/5/2012) – Kyoto

El segon dia a Kyoto:

Dia 4 (14/5/2012) – Kyoto > Tokyo

Al migdia sortirem amb el Shinkansen des de l’estació de tren de Kyoto fins a la de Tokyo. Allà agafarem el metro en hora punta fins a Shinjuku. Tota una experiència anar en un metro com a sardines i carregats amb les maletes. Al arribar a Tokyo pràcticament ja era de nit i arribarem a l’hotel Keio Plaza on ens van regalar una habitació superior per estar en viatge de noces.

Dia 5 (15/5/2012) – Tokyo

Primer dia de visites per Tokyo:

Dia 6 (16/5/2012) – Tokyo

Segon dia:

Dia 7 (17/5/2012) – Tokyo

Tercer dia per la capital:

Dia 8 (18/5/2012) – Tokyo Narita > Kuala Lumpur > Malé

Amb tren sortirem directament de l’estació de Shinjuku, molt aprop de l’hotel fins al aeroport de Narita. Allà avió amb Malaysia Airlines fins a Kuala Lumpur on ferem escala fins arribar a Malé, capítal de Maldives prop de la mitja nit. Com que era massa tard per agafar un hidroavió fins a l’hotel Kuramathi ferem nit a un hotel al costat de l’aeroport: Hotel Hulhule.

Dia 9 (19/5/2012) – Malé > Hotel Kuramathi

A primera hora del matí i després d’un bon esmorzar agafarem l’hidroavió fins a l’hotel Kuramathi, on començarem l’etapa de relax del viatge de noces. Què podem explicar de passar 4 nits i 4 dies i mig en una habitació de 90 metres quadrats sobre l’aigua, amb banyera d’hidromassatge a la terrassa i totes les comoditats que es poden imaginar. Tot això dins d’una illa on només hi ha l’hotel i on tens tots els serveis i comoditats que es poden imaginar només pensades per passar uns dies de somni.

Dia 14 i 15 (23/5/2012) – Hotel Kuramathi > Malé > Doha > Barcelona > Torrelavit

Sortirem de l’hotel a les 15h aproximadament, així doncs, com no podia ser d’altre forma aprofitarem fins a l’últim minut el privilegi de poder disfrutar la illa i els serveis de l’hotel. Després de nou amb l’hidroavió fins a Malé, allà amb Qatar Airways fins a Barcelona fent escala a Doha.

Resum en fotos

[nggallery id=”1″]

Avui en faig 35!

Reading time: 1 – 2 minutes

Encara dintre d’aquest núvol que m’envolta des de fa setmanes i que no em deixa tocar de peus a terra avui és un altre dia molt especial en la meva vida, avui compleixo 35 anys. No és cap número màgic com els 18 o els 30. Però avui realment sento que tot el que m’envolta és màgic; la família, els amics i el més màgic de tot és la connexió que sento amb el meu interior. Tinc la sensació d’estar en pau en mi mateix i això ús asseguro que és el millor regal que he experimentat mai. La veritat és que ara mateix no puc demanar res a la vida, així doncs només puc seguir donant i compartint tot allò de que disposo. Aprendre que la felicitat és un estat que s’ha de saber disfrutar durant el caminar cap a l’objectiu que manté l’il·lusió i que sostenta la passió amb la que s’afronten les accions diaries. Tot plegat fa que continui afrontant els dies amb un fantàstic somriure als llavis.

9 anys des de que vaig tornar a neixer

Reading time: 2 – 3 minutes

Avui es compleixen 9 anys del meu accident que em podria haver costat la vida, sempre m’agrada escriure un article recordant el moment i mostrant una foto de com va quedar el cotxe.

accident bmw

Aquest any el fet és més emotiu que mai ja que després del punt d’inflexió que va suposar per mi aquest segona oportunitat me n’adono que he canviat molt les meves preferencies vitals i això em fa sentir molt bé. De fet, amb l’última re-organització del blog es pot veure que a més del meu interés per la tecnologia es diferencia clarament un apartat dedicat al creixement personal i un altre per tractar temes personals, com aquest mateix article.

Però no només el blog és un gran exemple del meu canvi interior, el passat 29 d’abril vaig contraure matrimoni amb l’Estefania una persona que m’ha ajudat a tenir un punt de vista molt diferent a la vida; on els aspectes més competitius de la nostre societat han obert un espai a altres parts més emocionals que m’ajuden a mantenir l’equilibri en el meu dia a dia. Quan després de tots aquests anys de treball personal arribes en un punt d’equilibri entre la part mental, emocional, espiritual i física tot plegat té un efecte revitalitzant que t’ajuda a afrontar el dia a dia amb un somriure als llavis.

L’última prova me l’ha posat la vida aquest darrer dia 1, dia en el que un dels meus servidors personals m’ha donat un ensurt que paliar els efectes em costarà encara moltes setmanes de feina i esforç, tan energètic com econòmic. Però el difícil, o l’interessant, és saber afrontar aquesta situació professional sense que m’afecti el moment tan dolç que estic vivint en la meva vida personal. Dit d’altre forma, el interessant és aconseguir que aquest contra-temps tècnic no tingui efectes sobre el viatge de noces que comença aquest proper dijous. Això és el que em fa estar més content de la meva evolució d’aquests 9 anys.

No penseu pas que estic dient que he arribat al final del meu camí, al contrari, he descobert que l’èxit no el trobaré al final del camí sinó disfrutant del dia a dia pel fet de poder viure el camí que he escollit. Per no allargar-me massa acabaré l’article amb una cita:

La vida és un joc, no et prenguis res seriosament.

TED: Jill Bolte Taylor – El derrame de iluminación

Reading time: 2 – 3 minutes

Hoy he disfrutado de este video de TED; es la primera vez que referencio este servicio pero seguro que no será la última.

Quiero recomendaros este video porqué hace una reflexión sobre cómo nos hace percibir nuestro interior y exterior los dos emisferios del cerebro. Creo que son 20min de iluminación que no puedo dejar de recomendaros.

Deseo que os guste y os llene tanto como lo ha hecho conmigo.

Deep inside AMQP

Reading time: 5 – 8 minutes

In the next lines I’ll describe with more details the properties and features of AMQP elements. It won’t be an exhaustive description but in my opinion more than enough to start playing with AMQP queues.

Channels

When producers and consumers connects to the broker using a TCP socket after authenticating the connection they establish a channel where AMQP commands are sent. The channel is a virtual path inside a TCP connection between this is very useful because there can be multiple channels inside the TCP connection each channels is identified using an unique ID.

An interesting parameter of a channel is confirmation mode if this is set to true when messages delivered to a exchange finally gets their queues the producer receives an acknowledge message with an UID of the message. This kind of messages are asynchronous and permits to a producer send the next message when it is still waiting the ACK message. Of course if the message cannot be stored and it is lost the producer receives a NACK (not acknowledged) message.

Producers

Maybe this is the most simple part of the system. Producers only need to negotiate the authentication across a TCP connection create a channel and then publish all messages that want with its corresponding routing key. Of course, producers can create exchanges, queues and then bind them. But usually this is not a good idea is much more secure do this from consumers. Because when a producers try to send a message to a broker and doesn’t have the needed exchange then message will be lost. Usually consumers are connected all time and subscribed to queues and producers only connect to brokers when they need to send messages.

Consumers

When a consumer connects to a queue usually uses a command called basic.consume to subscribe the channel to a queue, then every time subscribed queue has a new message it is sent to consumer after last message is consumed, or rejected.

If consumer only want to receive one message without a subscription it can use the command basic.get.This is like a poll method. In fact, the consumer only gets a message each time it sends the command.

You can get the best throughput using basic.consume command because is more efficient than poll every time the consumer wants another message.

When more than one consumer was connected to a queue, messages are distributed in a round-robin. After the message is delivered to a consumer this send an acknowledge message and then queue send another message to next consumer. If the consumer sends a reject message the same message is sent to next consumer.

There are two types of acknowledgements:

  • basic.ack: this is the message that sends consumer to queue to acknowledge the reception of a message
  • auto_ack: this is a parameter we can set when consumer subscribes to a queue. The setting assumes ACK message from consumer and then queue sends next message without waiting the ACK message.

The message basic.reject is sent when the consumer wants to reject a received message. This message discards the message and it is lost. If we want to requeue the message we can set the parameter requeue=true when sent a reject message.

When the queue is created there can be a parameter called dead letter set to true, then consumer rejects a message with the parameter requeue=false the message is queued to a new queue called  dead letter. This is very useful because after all we can go tho that queue an inspect the message rejection reason.

Queues

Both consumers and producers can create a queue using queue.declare command. The most natural way is create queues from consumers and then bind it to an exchange. The consumers needs a free channel to create a queue, if a channel is subscribed to a queue, the channel is busy and cannot create new queues. When a queue is created usually we use a name to identify the queue, if the name is not specified it’s randomly generated. This is useful when create temporary and anonymous queues for RPC-over-AMQP.

Parameters we can set when create a new queue:

  • exclusive – this setting makes a queue private and is only accessible from your application. Only one consumer can connect to a queue.
  • auto-delete – when last consumer unsubscribes from queue the queue is removed.
  • passive – when create a queue that exists the server returns successfully or returns fail if parameters don’t match. If passive parameter is set and we create a queue that exists always returns success but if the queue doesn’t exist it is not created.
  • durable – the queue can persist when the services reboots.

Exchange and binding

In the first post of the serie we talked about different exchange types as you can remember these types are: direct, fanout and topic. And the most important parameter to set when producer sends a message is the routing key this is used to route the message to a queue.

Once we have declared an exchange this can be related with a queue using a binding command: queue_bind. The relation between them is made using the routing key or a pattern based in routing key. When exchange has type fanout the routing key or patterns are not needed.

Some pattern examples can be: log.*, message.* and #.

The most important exchange parameters are:

  • type: direct, fanout and topic.
  • durable: makes an exchange persistent to reboots.

Broker and virtual hosts

A broker is a container where exhanges, bindings and queues are created. Usually we can define more than one virtual brokers in the same server. Virtual brokers are also called virtual hosts. The users, permissions and something else related to a Broker cannot be used from another one. This is very useful because we can create multiple brokers in the same physical server like multi-domain web server and when some of this virtual hosts is too big it can be migrated to another physical server and it can be clustered if it is required.

Messages

An AMQP message is a binary without a fixed size and format. Each application can set it’s own messages. The AMQP broker only will add small headers to be routed among different queues as fast as possible.

Messages are not persistent inside a broker unless the producer sets the parameter persistent=true. In the other way the messages needs to be stored in durable exchanges and durable queues to persist in the broker when it is restarted. Of course when the messages are persistent these must be wrote to disk and the throughput will fall down. Then maybe sometimes create persistent messages is not a good idea.

 

 

El mejor año de tu vida

Reading time: 1 – 2 minutes

Este mes de enero leí el libro “El mejor año de tu vida” de Mónica Fusté. Un libro que ya estube recomendando a través de twitter. Después de leer el libro y a modo de notas personales hice un mapa mental que hoy me he decidido a traducir al castellano y a compartir con todos vosotros.

mind map del libro "el mejor año de tu vida"
mind map del libro "el mejor año de tu vida"

Añadir que este mapa mental no sustituye para nada la lectura del libro. Pero si que después de leerlo a mi me ha sido muy útil tenerlo a mano para recordar conceptos fundamentales del viaje interior que estoy haciendo.

Classificació

Reading time: < 1 minute He dedicat gairebé tot el dia a acabar el nou format del blog. És possible que hi acabi afegint algo. Però ara per ara la idea que porto al cap la dono per tancada. És a dir, que la re-estructuració en la forma d'accedir i visualitzar els continguts queda totalment separada en les tres seccions que ja he estat comentat. Ara només entrar al blog com podeu veure en el menú principal es pot escollir de forma senzilla el poder veure tots els contiguts, només els de tecnologia, creixement personal o els personals. Així quan algú entri amb una idea concreta desitjo que li sigui més senzill trobar el que busca. Finalment a la part superior podeu trobar els menús que hi havia abans a la barra principal. Apa doncs, a disfrutar-ho.

What is AMQP? and the architecture

Reading time: 3 – 4 minutes

What is AMQP? (Advanced Message Queuing Protocol)

When two applications need to communicate there are a lot of solutions like IPC, if these applications are remote we can use RPC. When two or more applications communicate with each other we can use ESB. And there are many more solutions. But when more than two applications communicate and the systems need to be scalable the problem is a bit more complicated. In fact, when we need to send a call to a remote process or distribute object processing among different servers we start to think about queues.

Typical examples are rendering farms, massive mail sending, publish/subscriptions solutions like news systems. At that time we start to consider a queue-based solution. In my case the first approach to these types of solutions was Gearman; that is a very simple queue system where workers connect to a central service where producers have to call the methods published by workers; the messages are queued and delivered to workers in a simple queue.

Another interesting solution can be use Redis like a queue service using their features like publish/subscribe. Anyway always you can develop your own queue system. Maybe there a lot of solutions like that but when you are interested in develop in standard way and want a long-run solution with scalability and high availability then you need to think in use AMQP-based solutions.

The most simple definition of AMQP is: “message-oriented middleware”. Behind this simple definition there are a lot of features available. Before AMQP there was some message-oriented middlewares, for example, JMS. But AMQP is the standard protocol to keep when you choice a queue-based solution.

AMQP have features like queuing, routing, reliability and security. And most of the implementations of AMQP have a really scalable architectures and high availability solutions.

The architecture

The basic architecture is simple, there are a client applications called producers that create messages and deliver it to a AMQP server also called broker. Inside the broker the messages are routed and filtered until arrive to queues where another applications called consumers are connected and get the messages to be processed.

When we have understood this maybe is the time to deep inside the broker where there are AMQP magic. The broker has three parts:

  1. Exchange: where the producer applications delivers the messages,  messages have a routing key and exchange uses it to route messages.
  2. Queues: where messages are stored and then consumers get the messages from queues.
  3. Bindings: makes relations between exchanges and queues.

When exchange have a message uses their routing key and three different exchange methods to choose where the message goes:

    1. Direct Exchange:  routing key matches the queue name.
    2. Fanout Exchange: the message is cloned and sent to all queues connected to this exchange.
    3. Topic Exchange: using wildcards the message can be routed to some of connected queues.

This is the internal schema of a broker:

ssh-copy-id

Reading time: < 1 minute Really useful command of ssh package to add public key of your user account to a remote SSH server and then access there with passwordless authentication method. ssh-copy-id [-i [identity_file]] [user@]machine In the past I wrote a simple cookbook to explain this process but now this is as simple as possible. Don't forget ssh-copy-id is the most easy way to add your ssh public key in remote servers.

AMQP and RabbitMQ [TOC]

Reading time: 1 – 2 minutes

After reading the book ‘RabbitMQ in action‘ I’m working on series of posts  that will include the following subjects:

  1. What is AMQP? and the architecure
  2. Deep inside AMQP
  3. RabbitMQ CLI quick reference
  4. Hello World using ‘kombu’ library and python
  5. Parallel programming
  6. Events example
  7. RPC
  8. Clustering fundamentals
  9. Managing RabbitMQ from administration web interface
  10. Managing RabbitMQ from REST API

Please let me know if you are interested in this series of posts. Because in my opinion this is very interesting and it always comes in handy to know if someone has been working on those subjects.

Scroll to Top