It's 2008. Where's my flying car? RSS 2.0
 Tuesday, October 07, 2003

I see quite a few models for Service Oriented Architectures that employ pipelines with validating "gatekeeper" stages that verify whether inbound messages are valid according to an agreed contract. Validation on inbound messages is a reactive action resulting from distrust of the communication partner's ability to adhere to the contract. Validation on inbound messages shields a service from invalid input data, but seen from the perspective of the entire system, the action occurs too late.

What I see less often is a gatekeeper on outbound channels that verifies whether the currently executing local service adheres to the agreed communication contract. Validation on outbound messages is a proactive action taken in order to create trust with partners about the local service's ability to adhere to a contract. Furthermore, validation on outbound messages is quite often the last chance action before a well-known point of no return: the transaction boundary. If a service is faulty, for whatever reason, it needs to consistently fail and abort transactions instead of emitting incorrect messages that are in violation of the contract. If the service is faulty, it must consequently be assumed that compensating recovery strategies will not function properly and with the desired result.

Exception information that is generated on an inbound channel, especially in asynchronous one-way scenarios, vanishes into a log file at a location/organization that may not even own the sending service that's in violation of the contract. The only logical place to detect contract violations in order to isolate and efficiently eliminate problems is on the outbound, not on the inbound channel. Eliminating problems may mean to fix problems in the software, allow manual correction by an operator/clerk or an automatic rejection/rollback/retry of the operation yielding the incorrect result. None of these corrective actions can be done in a meaningful way by the message recipient. The recipient can shield itself, and that is and remains very important. However, it's just a desperate act of digging oneself in when the last line of defense did already fall.

Tuesday, October 07, 2003 4:08:26 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [4] - Trackback
Architecture | IT Strategy
 Monday, October 06, 2003

Call me ignorant, but I think that the much hyped BloggerCon was an experiment that tanked completely. I wasn't there, but I see the results in "blogspace" and it is severely disappointing to say the least.

I just went through about 40 of the blogs on the blogroll and what I found was lots of name dropping like "Wow, I met NNN and he/she is so cool/interesting/witty/bright/blonde", lots of "NNN just started his session on [something that you'll find on the agenda]" and other stuff that may have been well in context if you were there, but lacks any point if you weren't.

The summary here seems to bit quite comprehensive. Before you continue reading here, click the link an go read it. .... I said go read it .... Go!

What I see is people that say "blogs save the world" and people that say "people who say that blogs save the world have lost their connection with reality". There was so much hype coming out of that room that it easily beats anything I've ever seen or heard about the potential of the Internet at the height of the bubble. Now we're not only going to get everybody connected to sell them something! No! We're going to revolutionize and revitalize democracy, we'll make the world a world of total information transparency, traditional journalism has ended!

So... if it does? What's the "Blogosphere" benefit of this conference? How did that new space that you all talked about really benefit from all that? I think it didn't, because you didn't give them any context folks, just loose hyperlinked meshes of nothingness. Microsoft TechEd and Microsoft PDC aren't about blogging, but the techedbloggers.net and pdcbloggers.net portals create a hundred times more informative and better organized "blogspace" than this blogger centric event's main "blog", which hasn't seen an update during or since the conference. Where are the presentations? Where is the archive of the web stream, where the IRC logs?

Not there? Bummer. If there is a real need for a conference about blogging, there should be tangible, organized results that the much-hyped blogspace community can benefit from. Maybe it's too early given it's only Monday, but I am almost ready to bet that we won't see that, because the idea was that these results would manifest themselves in the blogs during the conference. Instead, we find incoherent crumbs of information.

If you think that Weblogs are revolutionizing communication, why have a face-to-face conference? Why not just blog?

Here's my proposed agenda for a blogger conference that (a) stays true to the medium, (b) is productive with tangible results and (c) has all the wonderful advantages of meeting face to face.

Go to a sunny and fun place with a beach, lots of entertainment and a cool scene - in summer.

Day 0:
07:00pm Dinner
09:00pm Go out for drinks and have lots of fun
10:00pm Go to next bar (repeat until 2pm, depending on how much you can handle)

Day 1:
09:00am Breakfast in your hotel room (headache and you don't want to get out of that bath robe)
09:30am Kick out the other blogger(ess) you brought up into the room when you were both drunk and silly
10:00am Dial Up, put the "Do Not Disturb" sign on the door knob, lock the door
10:01am First prepped essays are posted by a few folks; start chatting, IM'ing, commenting, thinking, linking. Produce logs.
11:30am Second round
01:00pm Hook up with the crowd in the hotel restaurant for lunch. Discuss whether vegetarian meals are really healthier.
02:30am Third round
04:30am Fourth round
05:30pm Meet for a chat & early dinner
07:00pm Go out for drinks and have lots of fun
08:00pm Go to next bar (repeat until 2pm, depending on how much you can handle)

Day 2: (see above)

 

Monday, October 06, 2003 12:16:08 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [7] - Trackback
Blog

Ummm.... did I document that? If you use dasBlog, you can have an individual template for each category. Just create a subdirectory with the same name as the category (and subdirectory of the subdirectory for a nested category) and place the modified template files there. I just did that for the dasBlog">dasBlog category (subcategory of newtelligence) and placed the new files into the newtelligence/dasBlog subdir below the main template directory. Requires version 1.2 or later.

Monday, October 06, 2003 7:42:39 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [0] - Trackback
dasBlog

The Electric Doc’s blog is a fantastic example for someone leveraging the localization support I put into dasBlog to the maximum extent. Except for the headline and the occasional English term in the posts I don’t understand a single thing over there, but that’s the whole point of full localization, right?

If the browser’s primary language is set to Japanese, even the navigation headlines, the comment links, the dates and everything else shows up in Japanese.

World enabled. Goodness. I am really happy to see that ;)

 

Monday, October 06, 2003 6:46:06 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [1] - Trackback
dasBlog

"I'd like to bring you in for a review/training/coaching, but I guess you guys are too expensive" is something that I hear quite often when conference attendees approach me after a speech and ask me for assistance with problems they have. In fact, we likely aren't. We know the circumstances in quite a few markets in the EMEA region very well and know about the budget constraints of small and mid-size software companies. Don't make a guess, ask.

Monday, October 06, 2003 6:12:12 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [2] - Trackback
newtelligence

If you are given a hard time, because a project is late, there's now a good example to point to and say "well, it could be a lot worse".

The German TollCollect consortium that is contracted by the German government to build and operate a GSM/GPS based system to collect a country-wide, per-kilometer road use toll from trucks is currently caught right in the middle of one of the most publicized, most political and most costly IT project delays in Germany, ever. The problems seem to be a nightmarish combination of problems arising from in a huge project slammed together in a hurry and the blame must be given to both sides, the government and the industry partners. However, the result is absolutely disastrous for the already overstressed state budgets: German taxpayers are currently losing at least US$150 million (€130 million) a month just because of the project delays.

Monday, October 06, 2003 4:32:22 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [0] - Trackback
IT Strategy
 Saturday, October 04, 2003

So today was apparently the start of Dave Winer's BloggerCon. What a great idea. Put people who share an addicition to personal, chronological, hyperlinked content management and publishing into a room and let them chat about it. They even have a QuickTime live webcast. I watched that a little. BloggerCon redfines "relevant". Wow, I am so glad that I didn't go.

Saturday, October 04, 2003 9:46:04 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [0] - Trackback
Blog
 Friday, October 03, 2003

The reunited Germany celebrates its 13th birthday today - national holiday. Happy birthday to us, happy birthday to us, happy ...

But in all reality, German national holidays aren't days of great fanfare, parades and fireworks displays across the country. Germany is a country without any significant display or even sense of national pride and patriotism, except, maybe when it the national football (I mean the football that's played with the foot, get it?) team is playing at some international championships. Most of us grew up being taught that patriotism is equivalent to being a Nazi.

And even though the achievements in East Germany are absolutely amazing when we compare it 13 years ago, there's still so much work to do to get unemployment down, to keep the sky rocketing expenses for our social and health care systems under control, and to get the economy back on track that there's little to celebrate. The next national day of celebration is when the current administration gets booted.

Friday, October 03, 2003 4:04:10 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [1] - Trackback
Other Stuff
 Wednesday, October 01, 2003

I read on some blogs that people are confused about the trackback support in dasBlog. Trust me, I am confused myself. I have implemented version 1.1 of trackback, using HTTP POST instead of version 1.0's HTTP GET and neglected supporting the 1.0 variant. That may be part of the problem. Still, I freely admit that trackback is probably one of the worst tested features of the whole code base in general. Getting that to work properly is on my list. Pingback works.

Wednesday, October 01, 2003 11:56:29 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [2] - Trackback
dasBlog

It seems that Dare Obasanjo is getting ready to switch off the lights over in the BlogX workspace on GotDotNet or at least is about to drop the existing BlogX code base for good and replace it with the current build of dasBlog. In this comment here on this blog Dare is also hinting at moving all of the Microsoft blogger blogs on GotDotNet from BlogX to dasBlog.

I swear! A hostile takeover of BlogX wasn't part of the plan! It just happened! 

What's still an open discussion point is whether we'll have a logical second of synchronization between the two projects and from there, the newly dasblogged BlogX will move on its own while dasBlog will remain the cozy little project that it is or whether Dare will bring all of his 338 friends over to the dasBlog workspace.

Indepent of how that's going, both projects or the merged project will be under stricter project management than before. For instance, BlogX suffered massively from files being checked out for weeks or months. If that'd happen in the dasBlog workspace, it'd have a member less.

Wednesday, October 01, 2003 2:52:28 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [2] - Trackback
dasBlog

I am currently writing an article for a magazine about dasBlog and I am also covering a bit of the history of RSS and similar formats. While looking up some links on Google, I stumbled over a blog entry by Don Box that I hadn’t read or which at least didn’t stick.

Don had an outrageously retro idea back in May of which I understood the complete coolness only today. The reason why that didn’t click earlier for me until today was likely that Don simply didn’t use the right picture to go with that blog posting. So, Don, as a special service from a friend I’ll do that for you here:

Subscribe to Don Box’ Active Channel
Add Active Channel


Even if there’s a chance that someone (from the Windows shell team, maybe?) is going to hate me for it, I firmly plan to add Active Channel and even Active Desktop support to the next revision of dasBlog; every copy of Windows with IE4.0 or later has built in support for the exact stuff that Weblogs are. Let’s just use that.

(Update: I just noticed that I must have been living under a rock in May)

Wednesday, October 01, 2003 9:18:43 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [4] - Trackback
dasBlog | Weblogs

We just had a short discussion here at the office on the goodness and badness of using Reflection to cheat around private and protected and cases where it does and doesn't work (it's of course a System.Security.Permissions.ReflectionPermission thing). The discussion brought back memories of that old C/C++ hack that I've been using for almost any application back in my Borland C++ and OWL days:

#define private public
#define protected public
#include <owl.h>

 

Wednesday, October 01, 2003 6:43:34 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [0] - Trackback
Technology | CLR
 Tuesday, September 30, 2003

Javier Gonzalez sent me a mail today on my most recent SOA post and says that it resonates with his experience:

I just read your article about services and find it very interesting. I have been using OOP languages to build somewhat complex systems for the last 5 years and even if I have had some degree of success with them, I usually find myself facing those same problems u mention (why, for instance, do I have to throw an exception to a module that doesn't know how to deal with it?). Yes, objects in a well designed OOP systems are *supposed* to be loosely coupled, but then, is that really possible to completely achieve? So I do agree with u SOA might be a solution to some of my nightmares. Only one thing bothers me, and that is service implementation. Services, and most of all Web Services only care about interfaces, or better yet, contracts, but the functionality that those contracts provide have to be implemented in some way, right? Being as I am an "object fan" I would use an OO language, but I would like to hear your opinions on the subject. Also, there's something I call "service feasibility". Web Services and SOA in general do "sound" a very nice idea, but then, on real systems they tend to be sluggish, to say the least. They can put a network on its knees if the amount of information transmitted is only fair. SAOP is a very nice idea when it comes to interoperability, but the messages are *bloated* and the system's performance tend to suffer. -- I'd love to hear your opinions on this topics.

Here’s my reply to Javier:

Within a service, OOP stays as much of a good idea as it always was, because it gives us all the qualities of pre-built infrastructure reuse that we've learned to appreciate in recent years. I don't see much realistic potential for business logic or business object reuse, but OOP as a tool is well and alive.

Your point about services being sluggish has some truth to it, if you look at system components singularly. There is no doubt that a Porsche 911 is faster than a Ford Focus. However, if you look at a larger system as a whole, to stay in the picture let's take a bridge crossing a river at rush hour, the Focus and the 911 move at the same speed because of congestion -- a congestion that would occur even if everyone driving on that bridge were driving a 911. The primary goal is thus to make that bridge wider and not to give everyone a Porsche.

Maximizing throughput always tops optimizing raw performance. The idea of SOA in conjunction with autonomous computing networks decouples subsystems in a way that you get largely independent processing islands connected by one-way roads to which you can add arbitrary numbers of lanes (and arbitrary number of identical islands). So while an individual operation may indeed take a bit longer and the bandwidth requirements may be higher, the overall system can scale its capacity and throughput to infinity.

Still, for a quick reality check: Have you looked at what size packages IIOP or DCOM produce on the wire and at the number of network roundtrips they require for protocol negotiation? The scary thing about SOAP is that it is really very much in our face and relatively easy to comprehend. Thus people tend to pay more attention to it. If you compare common binary protocols to SOAP (considering a realistic mix of payloads), SOAP doesn't look all that horrible. Also, XML compresses really well and much better than binary data. All that being said, I know that the vendors (specifically Microsoft) are looking very closely at how to reduce the wire footprint of SOAP and I expect them to come around with proposals in a not too distant future.

Over in the comment view of that article, Stu Charlton raises some concerns and posts some questions. Here are some answers:

1) "No shared application state, everything must be passed through messages."  Every "service" oriented system I have ever witnessed has stated this as a goal, and eventually someone got sick of it and implemented a form of shared state. The GIT in COM, session variables in PL/SQL packages, ASP[.NET] Sessions, JSP HttpSession, common areas in CICS, Linda/JavaSpaces, Stateful Session Beans, Scratchpads / Blackboards, etc. Concern: No distributed computing paradigm has ever eliminated transient shared state, no matter how messy or unscalable it is.

Sessions are scoped to a conversation; what I mean is application-scoped state shared across sessions. Some of the examples you give are about session state, some are about application state. Session state can’t be avoided (although it can sometimes be piggybacked into the message flow) and is owned by a particular service. If you’ve started a conversation with a service, you need to go back to that service to continue the conversation. If the service itself is implemented using a local (load balance and/or failover) cluster that’s great, but you shouldn’t need to know about it. Application state that’s shared between multiple services provided by an application leads to co-location assumptions and is therefore bad.

2) "A customer record isn't uniquely identifiable in-memory and even not an addressable on-disk entity that's known throughout the system"  -- Question: This confuses me quite a bit. Are you advocating the abolishment of a primary key for a piece of shared data? If not, what do you mean by this: no notion of global object identity (fair), or something else?

I am saying that not all data can and should be treated alike. There is shared data whose realistic frequency of change is so low, that it simply doesn’t deserve uniqueness (and be identified by a primary key in a central store). There is shared data for which a master copy exists, but of which many concurrent on-disk replicas and in-memory copies may safely float throughout the system as long as there is understanding about the temporal accuracy requirements as well as about the potential for concurrent modification. While there is always a theoretical potential for concurrent data modification, the reality of many systems is that a records in many tables can and will never be concurrently accessed, because the information causing the change does not surface at two places at the same time. How many call center agents will realistically attempt to change a single customer’s address information at the same time? Lastly, there is data that should only be touched within a transaction and can and may only exist in a single place.

I am not abandoning the idea of “primary key” or a unique customer number. I am saying that reflecting that uniqueness in in-memory state is rarely the right choice and rarely worth the hassle. Concurrent modification of data is rare and there are techniques to eliminate it in many cases and by introduction of chronologies. Even if you are booking into a financial account, you are just adding information to a uniquely identifiable set of data. You are not modifying the account itself, but you add information to it. Counter example: If you have an object that represents a physical device such as a printer, a sensor, a network switch or a manufacturing robot, in-memory identity immediately reflects the identity of the physical entity you are dealing with. These are cases where objects and object identity make sense. That direct correspondence rarely exists in business systems. Those deal with data about things, not things.

3) "In a services world, there are no objects, just data". – […] Anyway, I don't think anyone [sane] has advocated building fine-grained object model distributed systems for quite a few years. […] But the object oriented community has known that for quite some time, hence the "Facade" pattern, and the packaging/reuse principles from folks such as Robert C. Martin. Domain models may still exist in the implementation of the service, depending on the complexity of the service.

OOP is great for the inner implementation of a service (see above) and I am in line with you here. There, however, plenty of people who still believe in object purity and that’s why I am saying what I am saying.

4) "data record stored & retrieved from many different data sources within the same application out of a variety of motivations"  --- I assume all of these copies of data are read-only, with one service having responsibility for updates. I also assume you mean that some form of optimistic conflict checking would be involved to ensure no lost updates. Concern: Traditionally we have had serializable transaction isolation to protect us from concurrent anomalies. Will we still have this sort of isolation in the face of multiple cached copies across web services?

I think that absolute temporal accuracy is severely overrated and is more an engineering obsession than anything else. Amazon.com basically lies into the faces of millions of users each day by saying “only 2-4 items left in stock” or “Usually ships within 24 hours”. Can they give you to-the-second accurate information from their backend warehouse? Of course they don’t. They won’t even tell you when your stuff ships when you’re through checkout and gave them you money. They’ll do so later – by email.

I also think that the risk of concurrent updates to records is – as outlined above – very low if you segment your data along the lines of the business use cases and not so much along the lines of what a DBA thinks is perfect form.

I’ll skip 5) and 6) (the answers are “Ok” and “If you want to see it that way”) and move on to
7) "Problematic assumptions regarding single databases vs. parallel databases for scalability" -- I'm not sure what the problem is here from an SOA perspective? Isn't this a physical data architecture issue, something encapsulated by your database's interface? As far as I know it's pretty transparent to me if Oracle decides to use a parallel query, unless I dig into the SQL plan. […]

“which may or may not be directly supported by your database system” is the half sentence to consider here as well. The Oracle cluster does it, SQL Server does it too, but there are other database system out there and there’s also other ways of storing and accessing data than RDBMS.

8) "Strong contracts eliminate "illegal argument" errors" Question: What about semantic constraints? Or referential integrity constraints? XML Schemas are richer than IDL, but they still don't capture rich semantic constraints (i.e. "book a room in this hotel, ensuring there are no overlapping reservations" -- or "employee reporting relationships must be hierarchical"). […]

“Book a room in this hotel” is a message to the service. The requirements-motivated answer to this message is either “yes” or “no”. “No overlapping reservations” is a local concern of that service and even “Sorry, we don’t know that hotel” is. The employee reporting relationships for a message relayed to an HR service can indeed be expressed by referential constraints in XSD, the validity of the merging the message into the backend store is an internal concern of the service. The answer is “can do that” or “can’t do that”.

What you won’t get are failures like “the employee name has more than 80 characters and we don’t know how to deal with that”. Stronger contracts and automatic enforcement of these contracts reduce the number of stupid errors, side-effects and the combination of stupid errors and side effects to look for – at either endpoint.

9) "The vision of Web services as an integration tool of global scale exhibits these and other constraints, making it necessary to enable asynchronous behavior and parallel processing as a core principle of mainstream application design and don’t leave that as a specialty to the high-performance and super-computing space."  -- Concern: Distributed/concurrent/parallel computing is hard. I haven't seen much evidence that SOA/ web services makes this any easier. It makes contracts easier, and distributing data types easier. But it's up to the programming model (.NET, J2EE, or something else) to make the distributed/concurrent/parallel model easier. There are some signs of improvement here, but I'm skeptical there will be anything that breaks this stuff into the "mainstream" (I guess it depends on what one defines as mainstream)...

Oh, I wouldn’t be too sure about that. There are lots of thing going on in that area that I know of but can’t talk about at present.

While SOA as a means of widespread systems integration is a solid idea, the dream of service-oriented "grid" computing isn't really economically viable unless the computation is very expensive. Co-locating processing & filtering as close as possible to the data source is still the key principle to an economic & performing system. (Jim Gray also has a recent paper on this on his website). Things like XQuery for integration and data federations (service oriented or not) still don't seem economically plausible until distributed query processors get a lot smarter and WAN costs go down.

Again, if the tools were up to speed, it would be economically feasible to do so. That’s going to be fixed. Even SOA based grids apparently sound much less like science fiction to me than to you.

Tuesday, September 30, 2003 8:51:47 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [5] - Trackback
Architecture | IT Strategy
 Monday, September 29, 2003

I just deleted a „direct marketing message“ for a lottery with the subject line: “[SPAM] category B winner”. The fact that a spammer labels his spam as [SPAM] is either funny, fair or exhibits an unprecedented case of idiocy. I still have to make up my mind.

By the way, my little experiment started August 8th, where I set up an unmonitored and unused mail account just to see how much spam it attracts by just “being out there” is starting to yield the expected result.

(Before you follow the above links, I recommend that you have a virus scanner running that monitors your web traffic; the “spamthisaccount” page has literal copies of the e-mails, including attachments. We are scanning for viruses and right now there’s nothing harmful in the content directory, but you never know when it hits ….)

Monday, September 29, 2003 3:30:51 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [0] - Trackback
Other Stuff
Stuff
About the author/Disclaimer

The content of this site are my own personal opinions and do not represent my employer's view in anyway. In addition, my thoughts and opinions often change, and as a weblog is intended to provide a semi-permanent point in time snapshot you should not consider out of date posts to reflect my current thoughts and opinions.

© Copyright 2008
Clemens Vasters
Sign In
Statistics
Total Posts: 717
This Year: 11
This Month: 0
This Week: 0
Comments: 1220
Themes
Pick a theme:
All Content © 2008, Clemens Vasters
DasBlog theme 'Business' created by Christoph De Baene (delarou)