Archive

Microsoft SOA & Bus. Process Conference 2006: Day 3

Data and Transaction Management
Steve Swartz and Clemens Vasters
Connected Systems Division, Microsoft
The core foci of this presentation were the characteristics and architectural patterns related to data storage and data access. The core takeaways were the importance of early data architecture envisioning and that the correct data architecture is the ultimate performance optimization. For experienced architects and developers in the audience, the session likely served as a refresher on the topic of data architecture.

Steve talked about data characteristics from two perspectives: scope of the data and class/type of data. Data scope included: My Database, My Shared Data, Our Database, My Huge Database, My Distributed Database. Classes/types included: Reference Data, Fresh Data, Stale Data.

As Steve puts it: “Increased collaboration changes the architecture perspective”. Thinking about data scope, the growth in data scope, data concurrency and correctness, should be one of the central tasks of early data architecture. That may be obvious, but Steve suggested that too few people consider the larger “enterprise wide” data picture when architecting solutions. I agree.

Next were the architectural patterns which included: Direct Access, Remote Access, Intermediated Access, Error Handling via ACID, Error Handling via Accounting, Error Handling via Compensation, Distribution via Caching, Distribution via Federation, Distribution via Read-Only Replication, Distribution via Read/Write Replication, and Distribution via Reporting.

The intermediated access pattern is a rich and important pattern that places processing in front of the database to control access. It is the mechanism used to achieve federated queries and therefore is a part of the federation distribution pattern. When talking about the “Error Handling via Compensation” pattern, Steve mentioned something about Microsoft working on automatic compensation capabilities? Anyone know about this? BizTalk allows you to implement the compensation pattern for long running transactions (which he mentioned) but I’m sure Steve wasn’t referring to BizTalk. “Error Handling via Accounting” is the error pattern that persists errors and then reports them for “manual” resolution. This is in contrast to the ACID error handling pattern which uses transaction management to provide automatic error handling. ACID performs much better (obviously) but does not scale as well as the “accounting” approach.

Driving Business Process Automation through Vertical Accelerators
Brennan O’Reilly & Mark Smith, EMC Microsoft Practice
This was a weak presentation with plenty of platitudes, basics and generalities on how to design integrated business systems with some focus on manufacturing, financial services, and healthcare verticals. I was hoping to get some good insight into the design of accelerators for the BizTalk platform, but left disappointed.

The healthcare part of the presentation referred to the American healthcare industry and dealt almost exclusively with billing and insurance solutions. Actually, they didn’t explicitly refer to the American healthcare industry but it was obvious from their focus on billing and HIPPA.

Effective Techniques for Handling Large Messages in SOA
Thomas Abraham, Senior Consultant/Architect
Microsoft Solutions Practice
Biggest takeaway from this session was his idea about carving up a large message in a custom pipeline component. The idea is to slice up the message, writing the “large” piece to temporary storage and then using a proxy ID in a cut-down version of the message that flows into the message box. The proxy ID “points” to the “large” message piece in temporary storage and is used to retrieve that piece for pipeline assembly on the way out of BizTalk. Not rocket science but a very useful tip for reducing the load on the message box and improving performance.

When Thomas was discussing ASP .NET 2.0 coding practices, he stated that it’s important to think about memory management. Since the introduction of garbage-collected languages, I have been saying the same thing. Ever since I started working with Java, and now C#, I have regularly come across developers who ignore the memory usage characteristics of their software and then wonder why they are having performance issues.

BizTalk Server 2006 R2 Adapter Framework
Chandramouli Venkatesh, Group Manager
Connected Systems Division, Microsoft
Chandramouli did a good job of presenting on the upcoming BizTalk adapter framework. Microsoft’s motivation behind the creation of an adapter framework is to unify their approach to adapter development enabling “…easy development of metadata-driven, host-agnostic, custom adapters to LOB systems”. This is great to see and should hopefully make the prospect of developing a custom BizTalk adapter a less intimidating experience; I haven’t developed a custom BizTalk adapter myself but I keep hearing that it’s not a trivial task.

In keeping with the harmonies that Microsoft is creating around WCF, the adapter framework will extend WCF and adapters will be surfaced as WCF bindings which will make the adapter’s consumption exactly the same as WCF service consumption. This means that custom adapters will be usable across different consuming hosts (e.g. BizTalk, a custom WCF host) which is a big win.

From a development perspective the adapter framework will ship with a rich set of development tools which will automate and simplify much of the coding required for adapter development. Microsoft’s current thinking is that the adapter framework will be made available as a separate download.

Technorati Logo , , , ,

Microsoft SOA & Bus. Process Conference 2006: Day 2

With a good dose of business-focused keynotes and sessions under my belt, I was ready for a bit of a technical dive. So, my first session of the morning was WCF: Extensibility in the WCF Service Oriented Platform, presented by Craig McMurty, Technical Evangelist at Microsoft. It started with an introduction to Windows Communication Framework (WCF) which probably could have been shortened. A couple of highlights from this session:

  • The presentation’s central theme was the WCF ability to “inject” custom functionality (i.e. extensions) at various stages along the path that a WCF message travels on both the client side and the server side. Such custom functionality can deal with specific requirements around serialization, threading, etc.
  • Craig said that WCF was a “software factory” for communication. There’s that expression again, “software factory”. Since its inception, “software factory” has been liberally bandied about when talking about a number of software development spaces. If I recall correctly, the term “software factory” had a precise meaning that doesn’t encompass each and every domain-specific API that comes along. Ok, I’ve just returned from an evening out with my colleagues where we discussed my objections to the liberal use of the expression “software factory” which now seems to include the realm of WCF. My colleague, Adam Bowron put forth an excellent argument in defense of the association of “software factory” with the code generated by WCF. He explained that the generation of the WCF code infrastructure to support a specified contract and protocol requirement (i.e. a specific service communication domain) can legitimately be labeled as a software factory example. When the term “software factory” was first “born” I believe this was the basic description:“A Software Factory is a software product line that configures extensible development tools like Visual Studio Team System with packaged content like DSLs, patterns, frameworks and guidance, based on recipes for building specific kinds of applications.”http://www.theserverside.net/news/thread.tss?thread_id=29651 

    Does this description apply to WCF? Perhaps. WCF has patterns and guidance but are they packaged and primed to kick-start the development of WCF solutions?

The next morning session in line was a presentation called Avoiding 3 Common Pitfalls in Service Contract Design. Tim Ewald (Principal Architect at Foliage Software Systems) did a reasonably good job at explaining his position against building consensus around the definition of enterprise-wide canonical representations of business entities. One of his central tenants is that flexibility in data models is one of the keys to SOA success. The 3 command pitfalls he talked about were:

  1. Too much required data. The trouble is that you may want to adopt a corporate data model for a certain business entity (e.g. a customer) but the system you are dealing with simply cannot supply some of the schema’s required information; an issue of cardinality. This forces you to take one of two approaches: 1) Gather data just to fulfill the schema requirements, or 2) Use garbage data. The solution is to make the schema elements optional (i.e. minOccurs=”0″). With a schema you should be saying “if you can supply the data in this shape (i.e. the correct sequence of elements) I’m ok but if you change the shape (i.e. out of order elements/types) then we have a problem”. Bottom line: enforce the occurrence constraints down at the system level.
  2. No Solution for Versioning. Before designing data contracts is it crucial to first establish a clear schema versioning policy that governs how the schema can change. Tim suggested that changing namespaces makes systems incompatible and offers “lower value” and goes on to say that namespace changes can be minimized with a few simple rules which include; 1) Create an instance document based on the schema version you have, 2) Always consume an instance based on the schema version you have, 3) If you want to do validation, make sure you do careful validation that doesn’t fail if, for example, new elements are detected at the end of types (i.e. the core schema version has changed to include new elements). If you want to develop flexible, loosely coupled systems then you need to be prepared to ignore some schema validation errors (e.g. unknown elements that appear at the end of a sequence). Flexibility is enhanced by a versioning policy that allow clients to extend their data contract to include new types or new elements at the end of a sequence.
  3. No System-Level Extensions. What if you want to add new elements to your version of the schema? According to Tim you should be able to extend your version of the schema and, therefore, the core schema authors should support this by “leaving a slot in the schema for clients to extend their version”. Tim went on to say that by enabling and promoting extension capabilities, the core schema team could “learn” from the extensions applied to “local/departmental” versions and then incorporate those extensions, as needed, into the core schema over time (i.e. a “harmonious” and flexible evolution of the core canonical representation driven by “feedback from the trenches”).

Tim summed up by asking us to rethink the “big bang” canonical design approach and, instead, start with a base model designed to facilitate the evolution of incremental value. This approach, according to Tim, would allow the user to adopt core schema versions at their own pace without sacrificing business goals.

After a quick bite of lunch, my colleague (Adam Bowron) and I hooked up with Jim Boyer (a great Technical Specialist from Microsoft). We walked across the street to the BizTalk product building for a meeting to discuss BizTalk 2006 end-to-end message ordering with one of the Microsoft BizTalk product/program managers. I won’t go into the details at this point expect to say that the discussions centered around enabling BizTalk to maintain FIFO message order regardless of the impact of multiple orchestrations and other BizTalk activities which can alter the original order.

Our meeting at the BizTalk building cut into the first afternoon sessions and I arrived half-way through the presentation on Building an ESB on the Microsoft Platform. I really didn’t take away much from the remainder of the session except that it looks like there is some interesting work going on around the BizTalk platform to provide a compelling ESB-esque story. My colleague mentioned that there is good work being done around enterprise-level exception management (leveraging the BizTalk 2006 failed message routing feature).

My final session of the day was entitled Get Your Processes Talking! Speech, Workflow & BizTalk United. Presented by Jon Fancey (Principal Consultant, NetStore) and Albert Kooiman (Senior Business Development Manager in the Unified Communications Group), the aim was to show how Communication Server 2007 and BizTalk can work together to deliver speech-oriented workflow solutions. This session was really all about showcasing Communication Server 2007 with a little dash of BizTalk. The speech capabilities in Communication Server appeared impressive and the design experience in Visual Studio looked great (i.e. creating a new speech workflow solution). The intention is to optimize human workflow processes via automation and thus improve service levels. My thinking at this point was that organizations need to be extremely careful about fronting their service function with a machine. Not all customer service scenarios are suitable for speech-based human workflow processes. I would go so far as to say that few customer service scenarios are suitable for the machine interface. When customers make a service call to an organization they typically do not want to talk to a machine.

Technorati Logo , , ,

Microsoft SOA & Bus. Process Conference 2006: Day 1

The Microsoft SOA and Business Process conference is a chance for IT professionals and other interested parties to become informed about Microsoft technologies and strategies surrounding business process management, workflow and data/application integration. The conference is being held from October 3rd to 6th at the Microsoft Conference Centre in Redmond and, this year, the special emphasis is that nebulous space called Service Oriented Architecture (SOA). I’ll probably say more about this later but, like others, I’m really not enamored with the SOA “buzziness” that is taking the technology world by storm. At a high level, SOA seems to be a grossly over-hyped re-branding of best practices that have been around for a long time. Yes, there are new concepts and patterns embedded in the SOA muck but the ill-defined and inconsistently defined SOA space is occupying a lot of brain power that is probably best spent on the development and re-emphasis of pragmatic best practices for driving organizational connectedness.

The first day kicked off with back-to-back keynote presentations. David Chappelle was the first keynote speaker whose talk was entitled SOA, BPM, and Microsoft: A Pragmatic View. David has a superb ability to capture and entertain the audience while delivering insightful content. He is one of those people that you come across who becomes registered on your “internal” list of those who are exceptional at a certain discipline. Mr. Chappelle, of course, is registered on the “Learn to Speak and Present like These Guys” list.

Here are some highlights from David’s talk:

  • SOA is a loosely defined vision.
  • Think of SOA as attempting to establish the equivalent of a TCP/IP for applications.
  • SOA is missing an essential element: there is no WS specification to provide interoperable queued messaging.
  • SCA (Service Component Architecture) is a WCF-style specification in the works by IBM, BEA and others.
  • Reuse of business objects has failed; achieving reuse of business services will be very hard. I definitely agree with this view. One of the reasons for the failure is lack of investment in facilitating reuse (i.e. insufficient investment in providing the appropriate documentation, in packaging and distributing the software libraries, in communicating the object libraries).
  • SOAP is not enough; need to create the necessary SOA infrastructure.
  • Focus should be on the broader notion of SOA infrastructure as opposed to ESB-style definitions.

The second keynote, Real World SOA, was presented by John deVadoss, Director of Architecture Strategy at Microsoft. An overriding sales focus diminished the effectiveness of this keynote. Video case studies videos of “real world SOA” success stories did little to convey a compelling SOA message. Also, he simply regurgitated the same old technology release information that we’ve been hearing for well over a year now (i.e. WinFx, .NET 3.0, BizTalk 2006). Some highlights from John’s talk:

  • He is seeing customers doing SOA for SOA’s sake. Well, this is very common problem with all technologies.
  • It is important to plan for frequent deliverables that emphasize “time-to-value”. This is just another way of saying the SOA projects should adopt agile development concepts, specifically incremental and iterative practices.
  • SOA “recipe”: expose, compose, consume.
  • A question from the audience asked if there was a story around monitoring and managing the services. The long-term answer will involve Microsoft System Center Manager.

Following lunch came the first sessions of the day. Since I enjoy hearing David Chappelle speak (and the other sessions weren’t very compelling) I decided to attend the two back-to-back business focused presentations by David. His first afternoon session was entitled Profiting from Process: Building a Business with BizTalk Server and he did an excellent job, as usual, of presenting on the topic. Here are some highlights:

  • He said that the session was focused on businesses that do not currently have an a major integration practice. However, in the end, there was still much content and lots of audience discussion that was useful for even experience integration shops.
  • CIO surveys consistently show that integration requirements are one of their top 10 priorities.
  • Typical sales cycles range from 3 to 9 months; expect a “long” sales cycle. One comment on this topic was that some companies, like Wal-Mart, require consultancies to complete the sale with them in a “short” time frame.
  • There was a comment from a Australian Microsoft employee who said that partners are not investing enough in pre-sales.
  • Someone else commented that clients who have invested in having vendors train their staff have seen the staff leave to take employment elsewhere which leads to the client re-engaging with the vendor to fulfill their integration requirements.
  • An excellent point was made by Jim Boyer who said that distinguishing between “proof” and “proof of concept” was very important when deciding how to demonstrate the viability of BizTalk to solve integration problems.
  • There was a great discussion on how to acquire the skill sets necessary to develop BizTalk solutions. David’s view was that you need to start with good .NET developers. Some felt that it was best to take people like analysts and train then to develop BizTalk solutions. This is an important area that probably does not receive nearly as much attention as is needed to ensure success with BizTalk.
  • Jame Healy raised the issue that it was far too easy for partners to achieve the BPI competency (something like having a couple of MCP/MCSD people on staff and execution of 2 BizTalk projects). Within the next 12 months achieving the BPI competency will become significantly more difficult.

The next session presented by David Chappelle was called Selling BizTalk Engagements. Once again, David’s talk was entertaining but I didn’t really get much out of this talk as there was much overlap from the previous session on building a business with BizTalk Server.

Technorati Logo , , ,

Roberto’s HL7 Working Group Update

Roberto Ruggeri has posted an excellent update on his activity at the HL7 Plenary and Working Group Meeting. He provides a good overview of the 3 different health groups that form the Connecting for Health consortium and how their architectures differ from a clinical data aggregation perspective. He also discusses work around pinning down HL7 messaging standards and the difficulty in adopting HL7 3 for infrastructure components due to the significant investments in HL7 2.X.

The other difficulty he mentions is related to the lack of guidance on how to transform between 3.0 and 2.X. This area is something that is key to helping vendors and organizations adopt and integrate HL7 3.0 into environments heavily populated with HL7 2.X solutions. Developing solid guidance and, ideally, “accelerators”, that provide “kick-start” transformations between 3.0 and 2.X will be needed to ease the migration to, and integration with, HL7 3.0 environments. Assuming 2.X messages are being processed in BizTalk as XML using the BizTalk HL7 Accelerator, how does one establish “kick-start” transformations to map HL7 3.0 messages to 2.X and vice versa? This is an area I am planning to investigate. It may not be that straight forward as highlighted by the whitepaper “Navigating the pitfalls: Implementing HL7 version 3” which states:

Don’t assume v2 - v3 mapping can be done at the integration layer
If your application already supports HL7 v2: HL7 v2-v3 migration by means of a mapping is problematic. The main problem is not the mapping itself (although HL7 v3 is much more detailed than HL7 v2), but the behaviour of the application. This is mainly a business flow issue. The dynamic behaviour and trigger events in V2 and V3 are sufficiently different, that your application behaviour will need to map on to them differently. If your application has to support both HL7 v3 as well as HL7 v2: create a new communication module for the HL7 v3 messages/documents, and use it in parallel to the HL7 v2 communication module.

Technorati Logo , ,

The Marriage of BizTalk and Team Foundation Server

Eric Lee has posted an interesting article describing how to implement a Kanban-style Team Foundation Server (TFS) workflow using BizTalk Server.  Integrating TFS with workflow products like BizTalk and Windows Workflow Foundation could provide significant value in helping to streamline the tracking and execution of development projects.

Technorati Logo , , , ,

Why Add Tags to my Posts?

Started thinking about adding tags to my posts and asked myself the question: Why should I add tags to my posts?  A quick search turned up this post which provides some good answers and also provides reasons why one would want to do online tagging (social bookmarking). Marshall, your site is in need of protection from comment spammers.

Technorati Logo ,

HL7 3.0 XML Message Receipt Handling

I first started thinking about the handling of HL7 3.0 XML messages when I got involved with a GotDotNet open community project to design and build an HL7 Library. This project has since gone dormant but I’ve still been thinking about this area. What is the best approach to processing HL7 3.0 XML messages at the time of receipt? Is there a need for an HL7 3.0 object model that deserializes from and serializes to XML? Of course, answers to these questions will be derived from establishing use case scenarios that reflect the business requirements for messaging and workflow. I will soon be brainstorming use case scenarios with others, including my colleague Simon Chester who is our Healthcare Industry Architect and who has a deep knowledge of solutions architecture and enterprise application integration for the healthcare industry.

Simon has posted his thoughts on an HL7 3.0 object model which reflects our recent conversations on this subject of an HL7 3.0 object model. Since then I’ve been in more discussions about how to process the receipt of HL7 3.0 messages and the need for object model deserialization. One interesting idea that came up was to use SQL Server 2005 to persist HL7 3 messages and then use SQL Server Notification Services to notify subscribers. I recently learned that SQL Server 2005 provides the capability to “register” schema collections and then create typed “xml” columns. These typed “xml” columns then provide XML instance validation during persistence and allow indexing on the elements within the XML document. The great thing about having indices on the XML elements for typed “xml” columns, is that it facilitates efficient query operations against a column’s XML document content. You no longer have to pick those elements you want represented as separate indexed columns. Other possible advantages to using SQL Server 2005 for HL7 3.0 XML message persistence include: logging and tracking of all message content without the need to implement separate logging and tracking functionality (may address some/all of Infoway’s requirements for HIAL-level log management services), using SQL Server Notification Services to publish HL7 3.0 message content to subscribers in a more purposed and “simplistic” form, the abstraction of HL7 3.0 message structures away from the core business logic and workflow.

Technorati Logo , , , ,

The Ironic Birth of Waterfall

Did you know that the birth of the waterfall software development methodology is a thing of irony?  I was working on a presentation on agile software development when I looked deeper into the history of the waterfall methodology. Dr. Winston Royce first developed the waterfall methodology in 1970 in a paper entitled “Managing the Development of Large Software Systems“. In his paper he first introduces the waterfall approach and then states that it is ”...risky and invites failure“. Royce then proceeded to propose an iterative model as an improvement on his initial waterfall suggestions. Ironically, despite Royce’s own criticisms of a waterfall approach, the industry chose to adopt waterfall, and ignore his superior iterative methodology. You can read more details here.

Technorati Logo , , ,

Proprietary Software is not Anti-Social

According to David Sugar (author of the GNU Bayonne telephony platform):

“Some choose to believe they have a right to develop software with the help of and knowledge found in the world at large, and yet deny that same right to others … As such, I personally see the question of proprietary software as anti-social …”
http://www.ddj.com/191800299

I could not disagree more. If proprietary software is anti-social then does that not make all other proprietary products anti-social? What makes a software product, borne of creativity, innovation, and intellect, different from other products derived from the same efforts?  Haven’t most products invented and constructed by mankind been borne of “knowledge found in the world at large”?

What’s your view?

Technorati Logo , ,

HL7 Insight Beta 1.1 Released

Beta 1.1 of HL7 Insight has been released with the following new cosmetic features:

  • Added ability to change the font size and the font type (fixed width only).
  • Now supports word wrap; can be toggled on or off.
  • Added ability to change the message display colors, including: background color, HL7 encoding character colors, field text color, and segment ID color.
  • When started will restore the HL7 Insight window to the previous position and size.

You can download HL7 Insight Beta 1.1 here.  Going forward, I will also place HL7 Insight releases on a separate “HL7 Insight” web page.

Technorati Logo , , ,