dilluns, 24 de desembre del 2007

To be asynchronous or not to be

Segurament el meu primer missatge a un blog hauria de ser sobre un tema genèric com SOA, els frameworks de programació, etc. Prometo dedicar comentaris a aquests temes però de moment començo per un tema que em té apassionat dintre del món SOA: Asincronia. Segurament molta gent pot pensar que és una qüestió banal o fins i tot alguna cosa indesitjable, però en aquests moments estic tant enlluernat pel concepte, que no seria capaç de dissenyar cap sistema sense introduir el patró asíncron d'alguna manera.
Tot va començar quan vaig assistir al simposium que TheServerSide va fer a Barcelona. En una de les sessions en Martin Fowler va fer una afirmació similar a: "l'única manera d'integrar sistemes és mitjançant missatgeria assíncrona". A mi em va semblar una frase dita perque si i a més a més, portava un temps realitzant desenvolupaments d'integració i trobava que el model síncron, si es podia aplicar, era molt millor per l'inmediatesa dels resultats, la no necessitat de correlacionar la resposta amb la pregunta, etc o sigui, la simplicitat. No soc gaire entusiaste dels gurus, però en aquell moment encara ho era menys.
Setmanes més tard vaig tenir uns problemes de rendiment en una infraestructura d'integració mal dimensionada i vaig començar a apreciar que els processos asíncrons eren molt més fàcils de recuperar que els síncrons, ja que els productes d'integració em donaven eines per fer-ho. Tot era molt evident, els processos sincrons acaben o fallen en el mateix moment i en el desenvolupament dels consumidors no sempre hi havia la previsió sobre que fer en cas de fallar.
Volent extreure conclusions sobre el que es podria haver millorat:
1) No sempre es preveu que les coses fallin i els que ens dediquem a la integració hauríem de reponsabilitzar-nos de que les diferents parts pensin en que les coses poden fallar.
2)Vaig veure casos en que es podia haver optat per síncron o asíncron (només calia haver-ho justificat) i vam tirar per síncron i aquí les paraules de Martin Fowler van venir a la meva ment.

Un cop convençut de les bondats de l'assíncronia, m'he dedicat a evangelitzar sobre aquest tema a tothom amb qui he pogut parlar (i no semblar un friki). Finalment vaig trobar una frase lapidaria que resumeix el meu pensament actual:
Many of the benefits of web services can't be realized until asynchronous interaction becomes well understood and widely practiced, and some high-value applications can't be deployed properly or at all without it.
Està escrita al llibre "Loosely coupled: the missing pieces of web services" de Doug Kaye.