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 Sadek Drobi on Sep 26, 2007
Service Oriented Architecture has become one of mainstream practices in enterprise software development. However, according to Dan North, the adoption of SOA has been shaped by tools offered by software vendors whose interest is "to emphasize the complexity of SOA and then provide a timely and profitable solution.” As a result, decisions of many SOA architects have been driven by technological considerations instead of focusing on mapping and modeling core business scenarios, which is the essence of SOA approach.
In his article, Dan North shows how to design an SOA in “a technology-agnostic” way. In order “to remove any reference to computers or modern technology”, he chooses to use the example of vacation booking process as it “would have occurred in a 1950s company”. In this business scenario, an employee Bob proceeds with his vacation booking that has to be approved by the personnel department. Step by step, Dan North illustrates how to identify SOA requirements based of a thorough mapping of business processes:
In SOA terms, the personnel department is a service provider. One of its services is scheduling annual leave. Bob is a client or consumer of the service. The vacation request form describes a service contract. The filled-in form is then an asynchronous message—Bob doesn’t suspend his activities waiting for the reply to come back; instead he gets on with his regular work.
The internal mail is a message transport — an unreliable one in this instance. Luckily, Bob has an error-handling protocol, namely a timeout. After a week, his calendar alerts him to call the personnel department. The telephone call is a synchronous interaction—he is on the telephone in real time. He then implements an error-correcting strategy, which is to resend the message.
While talking about the error-handling strategy, North provides even more examples of SOA requirements defined through business process modeling. If someone updates vacation records to reduce the number of leave days before the vacation approval and then the request goes missing - as in Bob's case - it could result in inconsistencies with the records. Understanding this drives to the conclusion that “the vacation-booking service has to be transactional”. A request may also fail for some business reasons, e.g. the allowance is used up, a signature is missing, etc. In SOA terms this is referred to as “semantics” or “business rules”. In this case a response should be sent back to the person concerned returning the reason of the failure. In a similar way, North shows how the business context defines SOA requirements for correlation of responses, availability of services, security or service evolution.
According to North keeping focused on real business issues allows “to separate the “what” from the “how””:
In fact, a true service-oriented architecture should only have services with a direct counterpart in the business; otherwise they cannot possibly be modeling a business process.In the same line, North argues that architects should avoid defining a universal domain model if in the reality there are two separate domains. For instance, “vacation” doesn’t mean the same thing to Bob and to the personnel department clerk in charge of leave requests. For the former it relates to “palm trees” and “long walks on the beach”, while for the latter “it refers to the business process around booking that time”. North believes that these two domains should be represented as such whereas “vacation” should be used as a business concept that “ties together all of the finer-grained domain models behind each service”. Not only would it better reflect the reality but it would also have advantages in terms of architecture:
Abstract technical concepts, such as a “data service” or a “replication service,” don’t make any sense in business terms. (There may be shared modules or libraries to provide common technical functionality, but these should not be implemented or referred to as services.)
The service contract is then expressed in terms of enterprise-level business concepts, such as a vacation or a dispatch or a sales order, which again decouples the service consumer from the service provider and allows them to evolve independently, while still able to communicate in a common language.Dan North is fully aware that designing an SOA through business processes modeling is "only the first step to implementing a fully working SOA". However, focusing on business issues helps “to understand [the] intent of the service [and] to investigate any business complexity independent of technical issues”. This way, SOA requirements are defined without being constrained by technical decisions, which can always be "mapped back to identifiable business value in terms of the business process" that is being modeled.
Free Gartner Cloud Services Brokerage Report
18 agile and lean practices for effective software development governance
A practical guide to choosing the right agile tools
SOA All-In-One Guide: KPIs & Best Practices, ESB Report
Improve Java Garbage Collection, Runtime Execution, and JVM visibility with Zing
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.
No comments
Watch Thread Reply