Mark is an expert on Microsoft StreamInsight and has a lot of practical customer experience with the product. Let’s see what he has to say.
Q: While event-driven architecture (EDA) and complex event processing (CEP) are hardly new concepts, there does seem to be momentum in these areas. While typically a model for financial services, EDA and CEP have gained a following in other arenas as well. To what might you attribute this increased attention in event processing and which other industries do you see taking advantage of this paradigm?
A: I tend to think about technology in terms of tipping points, driven by need. The financial sector, driven by the flood of market data, risks and trades was the first to hit the challenge of needing timely analytics (and by need, we mean worth the money to get), spawning the development of a number of complex event processing engines. As with all specialized engines, they do an amazing job within their design sphere, but run into limitations when you try to take them outside of their comfort zone. At the same time, technology drivers such as (truly) distributed computing, scale-out architectures and “managed by somebody” elastic computing fabrics (ok, ok, I’ll call it the “Cloud”) have led to an environment wherein the volume of data being created is staggering – but the volume of information that can be processed (and stored, etc) hasn’t.
Whereas I spend most of my time lately working on two sectors (process control – oil & gas, smart grids, utilities and web analytics), the incoming freight train of cloud computing is going to land the challenge of dealing with correlating nuggets of information spread across both space and time into some semblance of coherence. In essence, finding the proverbial needle in the stack of needles tumbling down an escalator is coming soon to a project near you.
Q: It’s one thing to bake the publication and consumption of events directly into a new system. But what are some strategies and patterns for event-enabling existing packaged or custom applications?
A: This depends both on the type of events that are of interest, and the overall architecture of the system. Message based architectures leveraging a rich subscription infrastructure are an ideal candidate for ease of event-enabling. CEP engines can attach to key endpoints and observe messages and metadata, inferring events, patterns, etc. For more monolithic systems there are still a range of options. Since very little of interest happens on a single machine (other than StarCraft 2’s single player campaign), there’s almost always a network interface that can be tapped into. As an example on our platform, one might leverage WCF interceptors to extract events from the metadata of a given service call and transfer the event to a centralized StreamInsight instance for processing. Another approach that can be leveraged with most applications on the Microsoft platform is to extract messages from ETW logs and infer events for processing – between StreamInsight’s ability to handle real-time and historical data, this opens up some very compelling approaches to optimization, performance tuning, etc, for Windows applications.
Ultimately, it comes down to finding some observable feed of data from the existing system and converting that feed into some usual stream of events. If the data simply doesn’t exist in an accessible form, alas, StreamInsight does not ship with magic event pixie dust.
Q: Microsoft StreamInsight leverages a few foundational Microsoft technologies like .NET and LINQ. What are other parts of the Microsoft stack (applications or platforms) that you see complimenting StreamInsight, and how?
A: StreamInsight is about taking in a stream of data, and extracting relevant information from that data by way of pattern matching, temporal windows, exception detection and the like. This implies two things – data comes from somewhere, and information goes somewhere else. This opens up a world wherein pretty much every technology under the fluorescent lamps is a candidate for complimenting StreamInsight. Rather than get into a meandering and potentially dreadfully boring bulleted list of doom, here’s some of (but not the only :)) top of mind technologies I think about:
- SQL Server. I’ve been a SQL Server guy for the better part of a decade now (after a somewhat interminable sojourn in the land of Oracle and mysql), and for pretty much every project I’m involved with that’s where some portion of the data lives. Either as the repository for reference data, destination for filtered and aggregate results, or the warehouse of historical data to mine for temporal patterns (think ETL into StreamInsight) the rest of SQL Server suite of technology is never far away. In a somewhat ironic sense, as I write up my answers, I’m working on a SQL output adapter in the background leveraging SQL Service Broker for handling rate conversion and bursty data.
- App Fabric Cache. Filling a similar complementary role in terms of a data repository as SQL Server (in a less transactional & durable sense), I look to AppFabric Cache to provide a distributed store for reference data, and a “holding pond” of sorts to handle architectural patterns such as holding on to 30 minutes worth of aggregated results to “feed” newly connecting clients.
- SharePoint and Silverlight. Ultimately, every bit of the technology is at some point trying to improve the lot of its users – the fingers and eyeballs factor. Great alignment SharePoint, combined with Silverlight for delivering rich client experiences (a necessity for visualizing fast-moving data – the vast majority of all visualization tools and frameworks assume that the data is relatively stationary) will be a crucial element in putting a face on the value that StreamInsight delivers.
Q [stupid question]: They say you can’t teach old dogs new tricks. I think that in some cases that’s a good thing. I recently saw a television commercial for shaving cream and noticed that the face-actor shaved slightly differently than I do. I wondered if I’ve been doing it wrong for 20 years and tried out the new way. After stopping the bleeding and regaining consciousness, I decided there was absolutely no reason to change my shaving strategy. Give us an example or two of things that you’re too old or too indifferent to change.
A: One of the interesting things about being stuck in a rut is that it’s often a very comfortable rut. If I wasn’t on the road, I’d ask my wife who would no doubt have a (completely accurate) laundry list of these sorts of habits.
One of the best aspects of my job on the AFCAT team is our relentless inquisitive drive to charge out into unknown technical territory. I’m never happier than when I’m learning something new, whether it be figuring out how to apply a new technology or trying to master a new recipe or style of cuisine. Coupled with a recent international relocation that broke a few of my more self-obvious long standing habits (Tom Horton’s coffee, ketchup chips, a 10-year D&D campaign), this is probably the hardest question to answer.
With the aforementioned lack of a neutral opinion to fall back on, I’m going to have to pull a +1 on your shaving example – I’ve been using the same shaving cream for almost two decades now, and the last time I tried switching up, I reconfirmed that I am indeed rather violently allergic to every single other shaving balm on the planet 😉
Thanks Mark. Keep an eye on his blog and the AppFabric CAT team blog for more in-depth details on the Microsoft platform technologies.