In this morning's keynote by Dave Campbell, Dave carried on the message that Pat started yesterday called "Metropolis - Part 2".
The major topics Dave covered can be summarized as follows:
Space Between Services. In this topic he covered the ideas of messages acting as the only go-between for services that are fully encapsulated. He stressed that a request/response model is the most common message model but there may be others. The response may include reference data that the request uses to make other requests. As a result, the reference data has identity and needs a versioning scheme.
Schema Between Services. In this topic he stressed the need for messages to be immutable once written and that each message should have a schema. The schema (typically XSD) must be able to be found in order to validate messages. Messages should have Ids as well. The schemas can themselves be extensible and so you should publish a cannonical schema and allow individual apps to build on that. However, you need to save the entire message and only process what you can understand. The design of the schema can also take an early or late bound approach. Obviously the latter allows for more flexibility at the cost of performance and complexity.
Service-Agents and Service-Masters. The former manages Activity related data while the latter manages Resource and Activity data. Activity data is the data required for a long running transaction, i.e. the data associated with the process of creating an order. The Resource data is the longer term business type data. Activity data should be persisted in the database because it will be needed to correlate responses in long running transactions.
Ownership of Data in the Enterprise. Here, Dave discussed the fact that each piece of data needs an owner and that the owner publishes changes to others who receive the update and cache it. The idea is to have a single owner and multiple copies and version the data. If changes are to be made non-owning services need to make a request to change the data which changes the version.
Representation of Data. This was the most interesting part where he defined 4 kinds of data: Activity, Resource, Reference, and
Request/Response. He then talked about each type's characteristics and whether it can be normalized etc. For example, Resource data is normalized and highly concurrent whereas Reference data may not be normalized and is not updated. He then talked about how the different types of data can be represented in SQL storage and the typical formats they take (XML, objects, SQL) when used. Basically, Reference and Request/Response data should be modeled as XML whereas Activity and Resource data can be modeled as objects.
Tying it all together. The big three recommendations from the talk are: 1) use XML-Infosets between services, 2) Use objects to implement the business logic encapsulated within a business service, 3) Store private data and messages in SQL Server
At the end he covered some thoughts on business processes that covered the semantics of tentative operations, cancellation and confirmation, reorderability, and interchangeability of resources and went over a few good tips for how services should be architected to be more loosely coupled.
After the keynote I attended two breakout sessions on Service Oriented Architecture (and a trip to the Microsoft Company Store for some $10 software) which were small groups of 15 architects and a couple Microsoft folks. Very interesting discussion that made me realize that there are more questions than answers in this space at the moment. I walked away with alot more to think about.
One more keynote today and then back to the hotel for more work...
No comments:
Post a Comment