Communications of the ACM,
Vol. 55 No. 5, Pages 56-65
10.1145/2160718.2160734
Messages may be retried. Idempotence means that's OK.
The full text of this article is premium content
1 Comments
CACM Administrator
The following letter was published in the Letters to the Editor of the December 2013 CACM (http://cacm.acm.org/magazines/2013/12/169937).
--CACM Administrator
Pat Helland's article "Idempotence Is Not a Medical Condition" (May 2012) addressed a serious reliability topic messaging in a service-oriented world but in an irreverent way. His axioms (such as "Every application is allowed to get bored and abandon its participation in the work.") are generally obvious when being read but often ignored by software developers in the real-world press of development.
Along with the proliferation of tools supporting distributed Web apps, it is easier than ever for software developers to (mostly) ignore the pitfalls of underlying distributed messaging, at least until the software is stressed in a production environment. Helland pointed us toward the dragons lurking in our assumptions concerning the robustness of messaging in a networked environment, concluding with "basic principles" cast as "four insidious illuminations":
+Because retries happen, all messages must be indempotent;
+Messages can be reordered;
+Hidden effects can cause one's dialogue partner to miss part(s) of a conversation; and
+Guaranteed delivery of the last message is impossible.
. . . ignorance of which can result in latent problems to surface only when repair is most costly.
Kudos to Helland for illuminating a significant source of bugs, amusing us in the process.
Steven Pothier
Tucson, AZ
Displaying 1 comment
Log in to Read the Full Article
Purchase the Article
Log in
Create a Web Account
If you are an ACM member, Communications subscriber, Digital Library subscriber, or use your institution's subscription, please set up a web account to access premium content and site
features. If you are a SIG member or member of the general public, you may set up a web account to comment on free articles and sign up for email alerts.
CACM Administrator
The following letter was published in the Letters to the Editor of the December 2013 CACM (http://cacm.acm.org/magazines/2013/12/169937).
--CACM Administrator
Pat Helland's article "Idempotence Is Not a Medical Condition" (May 2012) addressed a serious reliability topic messaging in a service-oriented world but in an irreverent way. His axioms (such as "Every application is allowed to get bored and abandon its participation in the work.") are generally obvious when being read but often ignored by software developers in the real-world press of development.
Along with the proliferation of tools supporting distributed Web apps, it is easier than ever for software developers to (mostly) ignore the pitfalls of underlying distributed messaging, at least until the software is stressed in a production environment. Helland pointed us toward the dragons lurking in our assumptions concerning the robustness of messaging in a networked environment, concluding with "basic principles" cast as "four insidious illuminations":
+Because retries happen, all messages must be indempotent;
+Messages can be reordered;
+Hidden effects can cause one's dialogue partner to miss part(s) of a conversation; and
+Guaranteed delivery of the last message is impossible.
. . . ignorance of which can result in latent problems to surface only when repair is most costly.
Kudos to Helland for illuminating a significant source of bugs, amusing us in the process.
Steven Pothier
Tucson, AZ