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 Robert Bazinet on Sep 06, 2007
NServiceBus is an open source communications framework that will help guide developers who are trying to build enterprise .NET systems, without falling into many of the typical pitfalls. It provides scalability critical features like publish/subscribe support, integrated long-running workflow and deep extensibility. According to its creator, this makes an ideal foundation for building distributed application.
NServiceBus was first released in January 2006 and was deployed in a large-scale distributed system in March of 2006. InfoQ had the opportunity to speak with Udi Dahan, creator of NServiceBus.
The reason for its creation:There were two major forces that drove me to write NServiceBus. First of all I wanted to formalize the way Service Layer classes were written when using asynchronous messaging (regardless of Web Services). And second I wanted to formalize a communications API which supported publish/subscribe semantics so that I could freely move between transports – whether they inherently supported publish/subscribe or not. It was also very important to me to not use a centralized broker, otherwise I couldn't have supported the high levels of scalability needed. Finally, I made the step of formalizing the way long-running workflows and orchestrations connects to asynchronous messaging.For any developer who architects using SOA principles, on the basis for using NServiceBus over some other methodology or some other so-called enterprise service bus:
NServiceBus makes it difficult to work in ways that will hurt your scalability. Since the asynchronous messaging patterns are brought to the fore, developers will, by default, avoid the temporal coupling so prevalent in most Web Service implementations. Other methodologies make so many other options just as easy to use that developers can make mistakes that will hurt their scalability and availability and only find out about those mistakes in production .Having noticed NServiceBus is built with MSMQ in mind or as an option, when asked why this choice of direction:
Another thing NServiceBus does differently is to totally isolate all workflow code from all technologies. This makes it easy to unit-test workflow classes, making it possible to iterate quickly on the development of key business processes. These portable .NET POJOs give developers the flexibility to host their workflows in whatever runtime they want.
The core of NServiceBus is not dependent on MSMQ. The extensibility points of NServiceBus allow you to plug in your own communication transport, subscription storage, and workflow persister. I've already implemented a transport over MSMQ, and another over WCF's NetTCP binding. Developers can use those as-is or write their own. Many of the SOA products currently out there are much more tied to HTTP, so this is something of a break from the common practice.
I chose to use MSMQ since it is one of the two main Microsoft communications technologies that enables parties to communicate in a disconnected fashion (SQL Server Service Broker is the other). MSMQ has a much more accessible API in that it is directly available as a part of the .NET Framework whereas Service Broker currently isn't. I consider disconnected communications a critical part of any SOA infrastructure since the Tenet of Service Autonomy does not allow us to assume that the service with which we wish to communicate is currently available.
NServiceBus is an open source product licensed under the Creative Commons Attribution 3.0 License . IT is packaged as a set of .NET assemblies which can be hosted in any application or clients licensed.
Since the interview was brief, we asked Udi what information he would like to pass on to readers who were not very familiar with service-oriented architecture (SOA) or wanted to learn more about implementing SOA:
If you're getting involved in developing service-type applications and aren't familiar with SOA you need to understand that it is significantly different from what you've done so far. You do not just slap some attributes on the same kind of code you've always written. Before getting bogged down in the specific technology you're using, take the time to understand the higher level messaging patterns services employ - they can save you from a serious rewrite.Udi was recently interviewed on DotNetRocks about all things SOA including some discussion about NServiceBus. You can learn more about Udi at his blog.
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.
1 comment
Watch Thread Reply