InfoQ

Interview

Gregor Hohpe on Conversation Patterns

Interview with Gregor Hohpe by Stefan Tilkov on Aug 09, 2008 08:25 AM

Community
SOA
Topics
Choreography ,
Orchestration ,
Business Process Management
Tags
Transactions ,
WSDL ,
BPEL ,
WS-CDL ,
WS-BPEL
Summary
In this interview, recorded at QCon London, Google architect Gregor Hohpe talks to Stefan Tilkov about his new work on conversation patterns. Building upon his earlier work on enterprise integration patterns, Gregor sees conversation patterns as playing a critical role in real-world interactions, with analogies in the natural world.

Bio
Gregor Hohpe is a software architect with Google, Inc. Gregor is a widely recognized thought leader on asynchronous messaging and service-oriented architectures. He co-authored the seminal book "Enterprise Integration Patterns". In 2005, Joel Spolsky selected Gregor's article "Starbucks Does Not Use Two-phase Commit" for his "Best Software Writing".
This is Stefan Tilkov at QCon London 2008. I am sitting here with Gregor Hohpe. Welcome, Gregor! What is it that you do?
What is your current job, what are you currently doing?
It's been a while since you wrote that book. Is it still valid, has everything changed?
Is there going to be an update?
Can you give us an idea about what these conversation patterns are about?
One of the real life examples that you have written about is the Starbuck's example; this interaction and coordinating, reminds me very much of the two-phase transaction protocol you described there. Is a transaction a conversation pattern?
It's interesting you bought up the Starbucks example: because Jim Webber's talk last night went through the same example. It was a very good way of describing a RESTful kind of Starbucks service. At the beginning of his talk he mentioned the lack of support of anything that describes conversations. He wsas saying the WSDL doesn't really help us there, it says here's a request and here's a response and that's the conversation. So in your work concerning conversation patterns, do you see more of a need for a framework to describe the conversations that a service supports or do you think that request/response is all we'll ever need?
What makes BPEL a better match for describing a process or a conversation than any other programming language? What's the specific thing that such a language adds as a benefit?
Would you say that BPEL is more for the internal use, and WS-CDL more for the overarching B2B scenarios? Is that a useful assumption? Assume a central coordinator when you're within the company, and rely on mutual agreement whenever you cross company boundaries?
Your track here at QCon had the magic "cloud" word in its title. Can you describe what it was all about? What do people mean when they talk about "cloud computing"?
ow much similarity did you see in the different speakers' presentations? Are they following the same patterns? Did you see some commonality emerge, or there is a lot of competing different approaches?
So given the transaction topic we talked about before, is this something people do on that scale? Or is it that you can no longer work with transactions if you are on a global scale?
Are you saying that we have to learn to live with the shortcomings, with the mistakes, with the inconsistencies that eventually arise and deal with them
So it would be reasonable to expect that people at least are honest about what you can expect from them. One of the problems I see with the cloud offerings is that you have no idea whether the services are going to live for as long as you need it, whether it is going to up for as much as you need it, whether it offers some performance
If I want to run a 24x7 business that never goes down, I want to deploy my software frequently, and in particular, in a non-disruptive way. Isn't how the cloud supports that today an important property?
Why would you take that approach when there's off-the-shelf technology that has solved that problem. Why wouldn't you just buy a technology that does that for you?
show all  show all
Agree in part, definitely leaves room for improvement IMHO by Guy Pardon Posted Nov 5, 2008 5:09 AM
  1. Hi, I definitely agree that "it should not be one big transaction". However, I would consider as transactional at least those parts of the system tied together synchronously. For instance: consuming messages from a queue and processing the results in a database. Or: checking a balance and crediting an account. The proposed model to solve transactional problems in a business way (trusting the goodwill of your bank) clearly does not work: how will the bank find out that they lost my 50 bucks? Either they find out themselves (pre-supposing some transaction monitor to be in place) or they know because I complain (in which case the damage is already done). A similar thing happened to me recently with Amazon (see my blog post). I consider myself a good customer of theirs, yet I had no refund so far :-( If you follow my rule of thumb then the scope of a transaction will always be very limited: -2 systems in queued order processing -N systems in SOA/workflow processing, where N is the number of services synchronously invoked/connected I think these are very acceptable. Again, I do not claim there should be one big transaction, but transactions should be used where they are of value. Best, Guy Atomikos - 3rd generation transaction management for XTP and SOA PS I also believe Starbucks would offer better service if they used two-phase commit to process their queued orders :-)

Educational Content

Bindings, Platforms, and Innovation

This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.

Orchestrating Long Running Activities with JBoss / JBPM

This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.

Neo4j - The Benefits of Graph Databases

This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.

Realistic about Risk: Software development with Real Options

This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.

Communication Flexibility Using Bindings

This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.

Writing DSLs in Groovy

After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.

Scaling Agile with C/ALM (Collaborative Application Lifecycle Management)

IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.

Concurrent Programming with Microsoft F#

Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.