New-age Transactional Systems - Not Your Grandpa's OLTP
John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.
Posted by Mark Little on Nov 01, 2009
In a recent article, John Moe discusses a taxonomy of approaches to SOA, specifically incremental SOA aka Zero Middleware or Guerrilla SOA. As John says, there are ...
... a number of alternative gurus offering to make SOA once more a simple, affordable option – which I will group into this Guerrilla SOA discussion, but also seek to differentiate the approaches to allow you to find a way forward that may best suit your circumstances.
These approaches include:
Jim Webber, Dave Chappell, Steve Jones and others pick up on this article, with Dave first commenting on the apparent cost of vendor driven SOA solutions:
My employer (Oracle) would be quite happy if $250M for every SOA project in a large company went towards our middleware.
But then he focuses on the core of John's argument:
The greater cost of any project, whether SOA or otherwise, is the people time. I would argue that trying to do a project based on SOA principles without middleware is just wasting more time reinventing wheels that get built into proprietary frameworks that have to be maintained over time, or worse just left behind by the "Guerrilla" consultants.
Coming from the non-vendor crowd, Steve agrees with Dave:
+1Nonsense to say that the product spend is a huge part of it. Most projects its around 10 to 1 or greater over a long programme and at least 4 or 5 to 1 on short engagements. Anyone who is spending more on licenses than implementation in SOA is a muppet.
Jim, from another non-vendor company, gives some anecdotal evidence to counter this. He discusses a telecomms based engagement that he and his team were involved with:
Prior to our first project starting, that client had already undertaken some analysis of their future architecture (which needs scalability of 1 billion transactions per month) using a blue-chip consultancy. The conclusion from that consultancy was to deploy a bus to patch together the existing systems, and everything else would then come together. The upfront cost of the middleware was around £10 million. Not big money in the grand scheme of things, but this £10 million didn't provide a working solution, it was just the first step in the process that would some day, perhaps, deliver value back to the business, with little empirical data to back up that assertion.
The cost from the vendor was too much, hence leaving the door open for an alternative. Therefore, using the approaches behind Agile and Guerrilla SOA, Jim's team was able to spend ...
... a couple of weeks working through some analysis of the problem, including some simple mathematical models of how the problem domain scales over time, and how the solution would have to compensate. We took the time to understand how to incrementally alter the enterprise architecture to release value early, and we proposed doing this using commodity HTTP servers at £0 cost for middleware. Importantly we backed up our architectural approach with numbers: we measured the throughput and latency characteristics of a representative spike (a piece of code used to answer a question) through our high level design, and showed that both HTTP and our chosen Web server were suitable for the volumes of traffic that the system would have to support.
According to Jim the project went from strength to strength, ultimately delivering the solution the customer was after for relatively little financial expenditure. The success of the first project lead to a second engagement that was also successful. Jim concludes with a direct response to Dave's statement about people costs:
But what's particularly interesting, coming back to the cost of people versus cost of middleware argument, is this: we spent nothing on middleware. Instead we spent around £1 million on people, which compares favourably to the £10 million up front gamble originally proposed. To be explicit:Total cost of working software in production: £0 (middleware) + £1,000,000 (staff) = £1,000,000
Total cost of middleware approach: £10,000,000 (middleware) + £? (staff) = > £10,000,000
Steve has a response to Jim though:
Wonder if he factors in the cost of supporting it over the next 5+ years....
He then concentrates on the figures Jim used in his example, specifically the $10 million on middleware:
[...] if someone is spending $10m on middleware upfront then that person is a complete and utter idiot. I'm really struggling to think of someone who has _upfront_ spent that much on middleware, hell I'm struggling to think of somewhere that has spent that much in total outside of organisations whose total spend is way over $500m a year on IT alone.
Anecdotal evidence in either direction is hard to base any decisions on (worse still, one instance is not a good statistical sample from which to draw any conclusions.) All SOA practitioners, whether or not vendor based, will have in depth analyses of why their projects succeed or fail, but have good reasons to not disclose them. Without truly independent data it will always be hard to judge the true benefits of one approach versus another. However, Steve concludes with an interesting point:
The bit in Jim's post that he doesn't consider is that there were idiots involved in the $10m decision.... and right now my money would be on that.
So the debate rages on.
Perhaps it's selection bias, but as far as I've seen the expensive middleware that is supposed to decrease support costs seems to do the opposite in practice.
I am always suspicious when I read something that talks about "Approaches to SOA" and does not contain a single word about versioning, especially, when "incremental" is part of the approach. Time and time again, the pundits argue about antiquated, decades old, concepts such as cohesion or coupling. Time and time again they argue about the cost of X or Y, when the problem, the only problem, that needs to be solved is "how can I create elements of business logic" that are both shared across different solutions and can be evolved easily without breaking everything that relies on it -of course, at the lowest cost possible.
Unbeknown to the people referenced above (since they never, ever talk about it), SOA technologies such, as Web Services, have delivered real solutions to this conundrum. The keystone of the solution is a forwards compatible versioning strategy supported by the extensibility mechanisms of XML and XML Schema. For some really strange reason, extensibility is good with dynamic languages but when it comes to creating extensible interfaces, all the sudden, it is bad. Almost as if RPC has been entrenched in the DNA of the entire industry.
So yes, incremental is the name of the game in SOA, but without the correct versioning strategy your SOA will come to a halt, making it too costly to change anything (I am not sure Jim cares about that). And no, analysis paralysis is no approach to SOA: you can't govern with what you don't know.
SOA is simple:
1) govern enough but not more
2) over time when governance you reach the limits of governance, use forwards compatibility
3) when you reach the limits of forwards compatibility, use loose coupling (delivered by Service Containers)
By contrast, REST relies simply on "serendipity" for reuse (no governance, no forwards compatibility and strong coupling between the consumer and the provider).
I'm flattered to have unkowingly kicked off this debate on Guerrilla SOA.
My main point (besides writing an entertaining article) was to promote the empirical evidence I have seen of the 'Think big, but start small' route to SOA success.
@Jean-Jacques, Regarding governance and versioning, I wholeheartedly agree on the need for them - but to me that is a different debate. I presented on SOA governance yesterday at an Ovum event in London and described some of the many ways this could be done.
@Jason, I agree middleware can be an expensive mistake, and is significantly more complex than usually stated.
Regards
John
John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.
Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.
Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.
Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).
Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.
Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.
One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.
InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.
3 comments
Watch Thread Reply