|Service Oriented Enterprise
Saturday, June 14, 2003
Java BluePrints - Designing Web Services Draft chapters of the J2EE team's new BluePrints book.
Chapters 1, 2, 3, and 5 from the book:
Chapter 1 - Introduction (pdf, 172kb)
Chapter 2 - Standards and Technologies (pdf, 205kb)
Chapter 3 - Service Endpoint Design (pdf, 205kb)
Chapter 5 - XML Processing (pdf, 451kb)
http://java.sun.com/blueprints/guidelines/designing_webservices/ posted by jeff | 11:18 AM
Tuesday, June 10, 2003
Books I bought from Amazon (2002 & 2003) Amazon has a nice feature where you can view your entire purchasing history. Here is mine:
Order date June 08, 2003
1 of: OSS Essentials: Support System Solutions for Service Providers
Order date July 12, 2002
1 of: Dictionary of Insurance Terms (Dictionary of Insurance Terms, 4th Ed)
1 of: Insurance Technology Handbook
1 of: Business of Insurance: A Comprehensive Introduction to Insurance
It was interesting for me to see that I am using Amazon less than I used to. I think that I'm continuing to buy the same number of books as always - but, apparently I am now going to the bookstore, enjoying a cup of coffee (and getting out of the house). It is also interesting to see that for the last couple of years the books that I've purchased are more industry focused (Insurance, Telecom, etc.)
posted by jeff | 5:31 PM
Books I bought in 2001 (Amazon) 2001 was an interesting year - lots of reading on natural language, inference engines, distributed transactions, P2P and a variety of other AI mechanisms:
Order date September 23, 2001
1 of: Speech and Language Processing: An Introduction to Natural Language Processing, Computational Linguistics and Speech Recognition
1 of: Wordnet : An Electronic Lexical Database (Language, Speech and Communication)
1 of: Foundations of Computational Linguistics : Man-Machine Communication in Natural Language
Order date April 11, 2001
1 of: Principles of Distributed Database Systems
1 of: Data Replication : Tools and Techniques for Managing Distributed Information
Order date March 31, 2001
1 of: Peer-to-Peer : Harnessing the Power of Disruptive Technologies
Order date March 04, 2001
1 of: An Introduction to Kolmogorov Complexity and Its Applications (Graduate Texts in Computer Science)
1 of: Fluid Concepts & Creative Analogies : Computer Models of the Fundamental Mechanisms of Thought
1 of: Applying Case-Based Reasoning : Techniques for Enterprise Systems
Order date February 06, 2001
1 of: First Order Mathematical Logic
1 of: First-Order Logic
1 of: An Introduction to Support Vector Machines : And Other Kernel-Based Learning Methods
1 of: How to Solve It : Modern Heuristics
Order date January 21, 2001
1 of: The Tipping Point : How Little Things Can Make a Big Difference
1 of: Cognitive Science : An Introduction
1 of: Introduction to Neural and Cognitive Modeling
1 of: Common Lisp : The Language
Order date January 20, 2001
1 of: Artificial Intelligence: A Modern Approach posted by jeff | 5:28 PM
Books I bought in 2000 (Amazon) 2000 was also an interesting year. More readings on AI, parallel computing, video compression and interactive tv. You can also see some of the board of directors stuff sneak in there.
Order date December 18, 2000
1 of: The Channel Advantage : Going to Market With Multiple Sales Channels to Reach More Customers, Sell More Products, Make More Profit
1 of: The Channel Advantage: How Top Companies Connect with Their Customers
Order date October 26, 2000
1 of: Neural Networks for Pattern Recognition
1 of: Compilers : Principles, Techniques, and Tools
1 of: An Introduction to Genetic Algorithms (Complex Adaptive Systems Series)
Order date October 01, 2000
1 of: Introduction to Probability Models
1 of: Techniques and Standards for Image, Video, and Audio Coding
1 of: Foundations of Multithreaded, Parallel, and Distributed
1 of: Introduction to Parallel Algorithms (Wiley Series on Parallel and Distributed Computing)
1 of: Introduction to Data Compression, Second Edition
Order date September 16, 2000
1 of: Handbook of Image and Video Processing
1 of: Computer Vision and Applications: A Guide for Students and Practitioners (With CD-ROM)
1 of: Computer Vision and Human-Computer Interaction
1 of: Dynamic Vision : From Images to Face Recognition (Image Processing)
Order date August 16, 2000
1 of: Basic Physics : A Self-Teaching Guide (Self-Teaching Guide)
1 of: Perpetual Motion (New Canadian Library Series)
Order date July 02, 2000
1 of: Harvey Penick's Little Red Book : Lessons and Teachings from a Lifetime in Golf
1 of: Ben Crenshaw - The Art of Putting
1 of: The 8-Step Swing by Jim Mclean
Order date June 18, 2000
1 of: An Embedded Software Primer
1 of: The Cathedral and the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary (O'Reilly Linux)
Order date May 26, 2000
1 of: The Inside Story of Interactive TV and Microsoft Webtv for Windows
1 of: Residential Broadband : An Insider's Guide to the Battle for the Last Mile
1 of: Cutthroat : High Stakes & Killer Moves on the Electronic Frontier
1 of: OpenCable Architecture (Fundamentals)
Order date May 06, 2000
1 of: The Essential Guide to Digital Set-Top Boxes and Interactive TV
1 of: The Cluetrain Manifesto : The End of Business As Usual
1 of: Web Development with JavaServer Pages
Order date March 09, 2000
1 of: 21st Century Corporate Board
1 of: Your Roles and Responsibilities As a Board Member (Carverguide Series on Effective Board Governance, 2)
1 of: Chairpersons Role As Servant Leader to the Board
1 of: Planning Better Board Meetings (Carver, John. Carverguide Series on Effective Board Governance, 5.)
1 of: Board Assessment of the Ceo (Carverguide Series , No 7)
1 of: Strategies for Board Leadership (Carverguide Series on Effective Board Governance, 10)
1 of: Boardroom Basics: A Pocket Guide for Directors
Order date February 13, 2000
1 of: Building a Career Development Program : Nine Steps for Effective Implementation
Order date January 04, 2000
1 of: Essential Guide to RF and Wireless, The
1 of: Programming Applications With the Wireless Application Protocol : The Complete Developer's Guide
1 of: The Art of Systems Architecting (Systems Engineering Series)
1 of: The Cell Phone Handbook : Everything You Wanted to Know About Wireless Telephony (But Didn't Know Who or What to Ask) posted by jeff | 5:26 PM
Books I bought in 1999 (Amazon) 1999 looks like a pretty good mix between business and technology (Java & UML):
Order date December 14, 1999
1 of: Document Management for the Enterprise : Principles, Techniques, and Applications
Order date December 03, 1999
1 of: Solaris Guide for Windows NT Administrators
1 of: Sun Performance and Tuning: Java and the Internet
1 of: A Practical Guide to Solaris
Order date November 30, 1999
1 of: The Strategy and Tactics of Pricing : A Guide to Profitable Decision Making
1 of: Power Pricing : How Managing Price Transforms the Bottom Line
Order date October 17, 1999
1 of: The Return of Depression Economics
1 of: Business Cycles : Durations, Dynamics, and Forecasting
Order date September 07, 1999
1 of: Acts of War : The Behavior of Men in Battle
1 of: On Killing : The Psychological Cost of Learning to Kill in War and Society
1 of: Nineteen Stars : A Study in Military Character and Leadership
1 of: Follow Me I : The Human Element in Leadership
Order date June 27, 1999
1 of: Understanding and Deploying Ldap Directory Services (MacMillan Network Architecture and Development Series)
1 of: Implementing Ldap
Order date June 24, 1999
1 of: Inside Java 2 Platform Security: Architecture, API Design, and Implementation
1 of: Enterprise JavaBeans
Order date May 21, 1999
1 of: Enterprise Javabeans : Developing Component-Based Distributed Applications
Order date May 02, 1999
1 of: Practical Guide to Structured Systems Design (Yourdon Press Computing Series)
Order date April 25, 1999
1 of: Specification of Software Systems (Graduate Texts in Computer Science (Springer-Verlag New York Inc.).)
1 of: Gems of Theoretical Computer Science
Order date April 01, 1999
1 of: The Unified Modeling Language Reference Manual (Addison-Wesley Object Technology Series)
1 of: The Object Constraint Language : Precise Modeling With Uml (Addison-Wesley Object Technology Series)
1 of: The Unified Modeling Language User Guide (The Addison-Wesley Object Technology Series)
1 of: Rational Unified Process (Addison-Wesley Object Technology Series)
Order date March 30, 1999
1 of: Pattern Languages of Program Design 3 (Software Patterns Series)
1 of: Pattern Languages of Program Design
1 of: Pattern Languages of Program Design 2
Order date February 06, 1999
1 of: Pricing Strategy : An Interdisciplinary Approach
Order date January 04, 1999
1 of: The Pims Principles : Linking Strategy to Performance
1 of: The Economics of Strategy
1 of: Competitive Advantage : Creating and Sustaining Superior Performance posted by jeff | 5:21 PM
Books I bought in 1998 (Amazon) 1998 looks like it was mostly about business strategy with a bit of planning thrown in as well:
Order date December 02, 1998
1 of: The Mind of the Strategist : The Art of Japanese Business
1 of: Competitive Strategy : Techniques for Analyzing Industries and Competitors
1 of: Competitive Intelligence : How to Gather, Analyse, and Use Information to Move Your Business to the Top
Order date November 17, 1998
1 of: Cases in Competitive Strategy
1 of: Levers of Control : How Managers Use Innovative Control Systems to Drive Strategic Renewal
Order date October 29, 1998
1 of: Inside the Java Virtual Machine (Java Masters Series)
Order date October 17, 1998
1 of: The Rise and Fall of Strategic Planning : Reconceiving Roles for Planning, Plans, Planners
1 of: The Balanced Scorecard : Translating Strategy into Action
Order date September 16, 1998
1 of: The Art of Strategy : A New Translation of Sun Tzu's Classic, the Art of War
1 of: Developing Business Strategies
1 of: Contemporary Strategy Analysis : Concepts, Techniques, Applications
Order date September 08, 1998
1 of: Portfolio Management for New Products
Order date September 06, 1998
1 of: Say It With Charts : The Executive's Guide to Visual Communication
Order date August 29, 1998
1 of: Marketing Management : Analysis, Planning, Implementation, and Control (9th)
1 of: The Market Planning Guide : Creating a Plan to Successfully Market Your Business, Products, or Service
1 of: Advertising Campaign Planning : Developing an Advertising-Based Marketing Plan posted by jeff | 5:17 PM
The Best Book on Designing Web Services I've spent too much time in book stores looking for good books on software design (including SOA and web services design). Yet the one book that I find myself most frequently referencing has been on my bookshelf for years, it is:
"The Practical Guide to Structured Systems Design"
The first thing you'll note is that the book was published in 1988.
The second thing that you'll note is that the book never mentions web services, service oriented architectures, XML, etc.
What you will find is some clear, actionable information on modular design, cohesion, coupling and design strategies. Is it a bit dated? Sure - but many developers are designing modular services for the first time. The book clearly explains data coupling, stamp coupling, control coupling, common coupling and content coupling. Well done! posted by jeff | 5:08 PM
Sunday, June 08, 2003
Synchronicity and Coupling Are synchronous calls more tightly coupled than asynchronous? If so, why?
Consider this; in an asynchronous call I have to deal with an extra piece of information: a message correlation token (extra requirements adds to coupling). So, that's bad, right? Yes, it is - but it isn't a big issue - deal with it.
If I'm trying to keep the conversational requirements to a minimum, then wouldn't I be better off not stating a preference (agnostic synchronicity)? The very fact that I state a preference increases the coupling level, right? (additional requirements = higher coupling) Yes, it does - but convince the programmer to design an application where you don't know the synchronicity requirements. But all that shouldn't matter. The "ubiquitous protocol" stack (girthy as it may be) will abstract me from the considerations related to "protocol coupling" (correlation in the WS stack), right? Yes, the (semaphore / clock / correlation) issues will be factored into the protocol. Hence, we are having a moot discussion.
Ok, --- try this on: I reduce coupling (and increase flexibility) if I break up the transmission paths of a request/response message exchange pattern (mep). This is to say that I have stated that, "I don't care who sends me the result back". In a synchronous call, the implication is that the ultimate receiver doubles as the ultimate sender on the return path. Not so in an asynchronous conversation. Thus, I increased flexibility by stating that I don't care who sends me the return message. And you could argue that by adding to the **I don't care** attitude, I have decreased coupling.
Some might argue that long running transactions are facilitated by asynchronous calls. I believe that this is an implementation issue and not directly an issue of coupling. LRT's can be hydrated and dehydrated to maintain high performance. I will argue that synchronicity has very little impact on coupling. Now, I will also argue that synchronicity has a SIGNIFICANT impact on distributed computing performance. The ability to take a request and spawn it off to some other agent and have it return the results on your behalf is powerful (alternate return path). The ability to receive 1,00,000 request, sit on them for 72 hours (LRT's) and respond without your system blowing up is powerful as well. The ability to use SOAP over HTTP on the in-bound call and switch to SOAP over SMTP on the out-bound call is also powerful. All good things, but are they related to coupling?
I've been sitting on this blog for over a month now. The question I keep posing to myself is, "do synchronous calls increase coupling levels", and the answer that I keep coming back to is, "they do, but by such a small amount that you shouldn't care - however, synchronicity can DRAMATICALLY affect system performance and flexibility".
I've also landed on, "who cares". So what if synchronicity is a performance/flexibility issue and not a coupling issue. The point that people are making is that you have to strongly consider synchronicity in your distributed architecture. The real goal is to make your systems work with your business partners while not requiring a fleet of mainframes to make the system perform. I just don't want people to get in the habit of throwing too many things in the "coupling bucket", when they are actually more strongly related to other non-functional aspects of distributed systems design.
Am I right? Honestly - I'm still not sure.
posted by jeff | 6:35 PM
MS RTC and SOAP? Surely, Microsoft will use their new "Real-Time Communications Server 2003" at the heart of their office messaging infrastructure., see:
The RTC Server uses ietf standards like SIP for session control, SIMPLE for presence detection (am I sitting at the computer) and RTP for transmitting the data (most likely over UDP, potentially on top of TCP) and RTCP for controlling the flow.
What seems to be missing is the SOAP binding to RTP.
This seems a bit too obvious. Perhaps we will see an "enterprise" version that is shipped with the binding and resolves SIP addresses to WS-Addressing addresses. Don't know.... if anyone out there knows, shoot me a note.
MS has a good whitepaper on the technology.
posted by jeff | 2:52 PM
Prediction: Microsoft will Acquire BEA O.K. --- this one might seem like a stretch, but I'm going for it. Within 12 months, Microsoft will acquire BEA Systems.
1. MS isn't concerned about competing against IBM at the SMB level. IBM has never been able to compete in organizations under 1,000 employees and that isn't going to change soon. However, BEA does compete in this space - and they are a pain in the ass to MS.
2. MS doesn't care about languages or vm's. It's a moot point in the web service world. In MS-land, they want you to buy their service framework (personalization services, commerce services, content mgmt services, industry services (HL7, CPFR, etc) from MS. They really don't care what silly language the service was written in. Who cares about the language?
3. Well, the MS customers care about the language. Enterprises just trained thousand of employees in J2EE. MS is ok with this. Program your home-made extensions in Java, perl or whatever else. Expose them as web services and make them work with the new MS Service Framework.
Does it sound like the service oriented model is an "embrace & extend" play on the platform? It should. It is.
At the end of the day, MS is a money making machine. They don't let silly things like languages or platforms get in their way. They will find a way to do what their competition won't do. MS would be able to say, we have the best Java platform and the best .Net platform - - and, we've weaved them together with web services -- -- so, why would you buy from IBM??? It's about the customer, remember? posted by jeff | 12:37 PM
Is sForce a Web Service Provider? As I read through the sforce description (for the third time), I realized that Salesforce.com was attempting a hybrid WSP offering. In essence, they were going to offer:
1. ISP services (a hosted infrastructure, bundled)
2. WSP Extensions (Tooling like WebLogic and .Net services)
3. Horizontal WSP offerings (their SFA, plus partner offerings)
4. Horizontal WSP Service Framework (their base utility services)
What seemed missing from the sforce picture was the "base WSP" offering. That is, the whole infrastructure around creating a managed web services offering up. I'll have to dig deeper, but the initial documentation focuses on building custom applications (SFA-ish) using services.
After talking with some of the sForce partners, I got the feeling that they didn't really understand what sForce was all about. Personally, I think it's an interesting idea, but it seems like they missed the whole "common infrastructure" part of the problem. Perhaps they'll circle back?
posted by jeff | 12:14 PM
WS-EndpointResolution In the telecom world, people refer to the difficulties of getting high capacity lines (like fiber) to the home or neighborhood as the "Last Mile" problem.
In software messaging there is a similar problem. Often, there will be a need to send some message to a specific computer. This isn't a problem unless the address of that computer changes (due to DHCP, NAT, etc.) In this case, the address of the computer must be resolved at "received time" rather than at "delivery time". This is an old problem that peer-to-peer systems have had to overcome. However, the problem doesn't end there. In many cases, some application (X) will want to send a message to another application (Y) running on another computer. Using delayed addressed translation, we are able to make sure that the message gets to the right computer. But now, the message must be delived to the right application (MS Word, Excel, etc.) Further complicating the situation, I might have two instances of the same program running (e.g., Excel) - now I need to know which instance of the application the message was intended for.
This is one scenario that WS-EndpointResolution along with WS-Addressing hopes to remedy.
1. Getting the message to the right computer (The Last Meter)
2. Getting the message to the right application (The Last Centimeter)
3. Getting the message to the right instance of the application (The Last Millimeter)
The second scenario is the more general server-side scenario where you are using a dynamic addressing scheme to reroute messages for the purpose of scalability or security. This scenario is mostly handled under the WS-Addressing scheme. Together, WS-Addressing and WS-EndpointResolution will work together to move your SOAP messages to your intended receiver.
posted by jeff | 11:56 AM