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 Dilip Krishnan on Apr 09, 2009
Jack Van Hoof presents a prescriptive guidance on how to model a federated service bus infrastructure such that it affords the various parts on the enterprise interacting with it, the desired levels of autonomy. In his opinion the word ESB doesn't say much about the scope of the audience it services, so he further classifies ESB’s on the basis of their level of federation
This pattern suggests four levels of interest in a federated service bus infrastructure consisting of multiple logical buses:
- Application level – The application level service buses support fine grained application level processes and activity monitoring. Each application is bound to its own logical bus. In practice this boundary will typically be implemented by an application name space on an application server using JMS (java) or WCF (.net).
- Domain level – A domain is a functional cohesive entity, like Human Resource Management, Finance, Logistics, Sales, Acquisition. Service buses at this level support cross application processes and activity monitoring within the boundaries of the distinct domains. Domains also expose domain generic services to be accessed by the domain’s applications. Multiple domain buses [might exist], one for each domain.
- Corporate (enterprise) level – The corporate level service bus supports cross domain processes and activity monitoring. At the corporate level one corporate bus [serves] the enterprise [that can also] be accessed by the domains.
- External level – An external level service bus supports interaction with the company’s outside world, the business partners, consumers and suppliers.
Since the categorization of these buses naturally forms a hierarchy in the types of buses in an enterprise, he warns that if the federation is not effectively modeled it could turn into what he calls “spaghetti”. To avoid this he use a parent-child metaphor to model the topology and scope of the service buses.
In this pattern a layered structure of interaction is promoted to maintain the desired boundaries of autonomy and yet structure controllability. This layered structure leads to a hierarchical parent-child communication approach. A child has only one parent (it's only a metaphor, folks), a parent may have multiple children. [for e.g.] An application is a child of one domain (n:1); a domain is the parent of one ore more applications (1:n)
Having explained that, he recommends the following rules to avoid getting into a “spaghetti” situation
- Child-level processes may deliver messages to their parent’s bus
- Parent-level processes may deliver messages to their children's buses
- Downward skip-level messaging always cascade from parent bus to child bus
- Upward skip-level messaging always cascade from child bus to parent bus
- Parent-level buses may expose services to their children's buses
He also presents considerations that make the practice not as easy as just following the rules.
Domain models will mostly be shaped on a foundation of autonomy which has organically risen from culture, history and mightiness. Domains tend to make their own choices with respect to IT-resources such as applications, tools and platforms.
With regard to a federated service bus infrastructure, the use of different products [… and] Supporting interoperability [between them] is the main focus in the current IT-industry.
Jack presents a logical approach to modeling the service bus infrastructure. Do read his original article for details.
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