Signing Off
I recently gave my resignation at Sun. Jan 19th will be my last day. I have learned so much in my time at Sun and had the opportunity to work with some brilliant people. I started at Sun in Jan 2001 in the Java Center practice of Sun Professional Services, where I had the opportunity to work directly with Sun's clients such as CVS Pharmacy and Toyota Motor Sales USA. Here I got to work with some amazing developers and architects in the Java Center and made some great friendships and professional contacts in my 3 years of travelling. After that I took a job in Services Enginnering which later moved into Software as Customer Network Services and even more recently, SysNet. Here I worked on products like the Online Service Center, SunSolve, Sun Update Connection, and the Sun Connection Architecture. Again, I was lucky enough to get to work with some of our industries brightest minds and most dedicated engineers. The amount of technical, business and personal lessons I learned in my 6 years at Sun never ceases to amaze me and I know that my time here has taken my career to a place that would not have been possible elsewhere. I am truly thankful to all of you out there that I had the opportunity to work with and for and look forward to working with you again in the future. Keep in touch with me by connecting with me on LinkedIN or by checking out my new blog. Signing off, Mike Davis Posted by mikedav ( Jan 05 2007, 10:43:43 AM PST ) [Listen] PermalinkAn AJAX framework Review - NextApp Echo2
I've been doing a lot of prototype work recently for some new products that we are building within the new SysNet organization of Sun Software. I've taken this as an opportunity to expand my horizons a bit in a few different areas by using some new frameworks and technologies as part of the prototype work. In particular, I've been using the latest version of the Spring Framework (Spring AOP, MVC, Data Access, and Web Services), and have been digging into a number of the new AJAX frameworks. I figured I should write up my experiences around these as I go, so this is the first installment of that. Here I'll discuss my experiences using the NextApp Echo2 Web Framework.
First an overview (snippet from their website):
Echo2 unifies AJAX technology with a practical server-side framework to create a next-generation web application platform. For web application developers, Echo2 provides a familiar and powerful component-oriented framework that promotes event-oriented design similar to traditional thick-client user interface toolkits like Java Swing or Eclipse SWT. Echo2 leverages AJAX technology to deliver rich internet applications that create a user experience normally reserved for desktop-based applications.
It was the component-oriented and event-oriented and Java Swing-esque model that really drew me to this framework. I am not a Website developer, nor am I a web designer. If you've seen any websites I've built you would know that immediately! So to be able to program a website (containing lots of JavaScript especially) using the familiar Java language and pre-built components and a solid event model was intruiging to me.
The task that I decided to use this framework for was to build a prototype viewing UI for demo purposes. The majority of my current prototype is pretty boring to demo, it all runs in memory and does its thing. There is the verbose logging that you can watch scroll by to know that something is happening, but that is a bit difficult to make heads or tails of what is happening. The prototype makes use of 3 memory based backing stores that are essentially state machines that track the state of different objects representing systems and software products that register, get enabled, and invoke services. Each of these state machines is fronted by a web service which provides an functional abstraction on top of them. So the deom UI that I wanted to build using Echo2 would integrate with the functional services to access the state store and display the dynamic state of all objects. This seemed like it has a perfect AJAX, dynamic updating, web UI potential.
To get started I added the 3 Echo2 jar files to my project. The Echo2_App jar is the main framework for building an application. It provides things like the main ApplicationInstance, which is the mother of all objects in an application; all of the UI type objects like windows, layouts, tables, labels, fonts, etc., a lot like AWT classes (in fact in the little context popups while coding in my IDE, the classes were typically available as java.awt and nextapp.echo2.app); and the thing that I wanted the most, the task related objects which allow you to build the dynamic updating features into your webpages using this framework. The next jar was the Echo2_WebContainer which provides things like generic servlet implementations and the ability to control client interaction with the server side objects. Finally, there is the Echo2_WebRenderer jar that provides the basics for rendering html, I didn't really have to use any of this though.
With the basic implementation I created this framework was pretty simple. I had a simple, dynamically updating web page up within minutes. The rest of my time was spent with the layouts of the page s that I could display the data that I really wanted to in a nice looking format. This proved to be more of a pain than I had anticipated. Although I did get it working, I wouldn't claim that it looks pretty still! (I am also not a Swing programmer, in fact I am not a UI person at all.) The pain really comes in the fact that there is an object for every aspect of a UI. I first create a window, then a layout, then a table, then a table cell, then a label for the table cell, then I add formatting objects to everything, etc.. A simple html for this might look like:
<html>
<head><title>My Web page</title><head>
<body bgcolor="white">
My Data!
<table border="1" width="50%">
<tr>
<td cellspacing="5" cellpadding="5">data</td>
<td cellspacing="5" cellpadding="5">data</td>
<tr>
</table>
The took me 20 seconds to type out. This looks more like this in the code from echo2:
Window window = new Window();
window.setTitle("M Web page");
ContentPane contentPane = new ContentPane();
window.setContent(contentPane);
Grid fullWindowGrid = new Grid();
fullWindowGrid.setId("FullWindowGrid");
contentPane.add(fullWindowGrid);
Label clientAreaLabel = new Label("My Data");
TableModel model = new ClientTableModel();
Table table = new Table(model);
table.setId("ClientTable");
table.setDefaultRenderer(Object.class, new GenericTextRenderer());
table.setBorder(new Border(1, Color.BLACK, Border.STYLE_GROOVE));
table.setWidth(new Extent(50, Extent.PERCENT));
contentPane.getComponent("FullWindowGrid").add(clientAreaLabel);
contentPane.getComponent("FullWindowGrid").add(table);
And this doesn't even include the TableRenderer class and the TableModel class which give me the actual data to put in each cell and how that cell should look.
My overall conclusion was that it was relatively difficult to create a nice looking layout using this framework, although that is something that would probably be more natural to a Swing developer, and there are a lot of things that could easily be done to create the layout based on xml files and stylesheets (this framework does have support fo stylesheets although I did not use that feature). Once you have a layout that works it is extremely nice and very powerful to have a full event based model that you are in complete control of. It is also blindingly easy to get dynamic updates on a webpage and have those be efficient. Instead of refreshing a whole page or large sections of the page, the framework makes it simple to refresh individual components like a label, or the background color of a table cell, or anything like that, all based on incoming events and notifications.
So there's good and bad to this framework. I think I would consider using it again for applications that don't have overly complex UI layouts. This would be very difficult to use if working with a designer that was handing off designs that were in a state of flux. It does not easily allow for that separation of roles that J2EE was trying for with JSP, EJB, etc. It works great for quick prototypes, but there seem to be some easier toolkits out there. One other thing that concerns me about this framework is that it seems like it would be difficult to utilize some of the other AJAX UI component toolkits out there, like the Google toolkit and others that provide client side components.
One final note on this framework, is that NextApp does have some sort of GUI designer tool that I did not try out. It presumably makes a lot of the layout issues I talk about here, moot. Posted by mikedav ( Sep 15 2006, 10:27:10 AM PDT ) [Listen] Permalink
Integrating with Industry
I've talked here about the group I work in at Sun and how we build common components and services. Most of what we do allows external customers to integrate with Sun's services to manage their hardware and software that they get from Sun. All of those things require the user to authenticate using a Sun Online Account. Sun has a long history with our online accounts and the systems that have handled this type of authentication. Needless to say there has been a lot of evolution in this space. The most recent of which is attempting to expose public webservices to get at the functionality. This latest attempt is something that follows the same history of identity systems at Sun, it is a completely proprietary implementation of webservices around identity creation, management, and validation that makes interoperability somewhat painful. This does use the latest version of Sun's Identity Management suite but does not expose any of the Identity Federation standards available there.
Since I've had to deal with integrating with many of these back end identity systems at Sun in my time, it always interests me to see what the rest of the industry is doing in this space. So when a friend of mine sent me a link to this ZDNet article I found it pretty interesting. Essentially Google is creating their own pseudo identity federation implementation and opening up the api's to get at it for anybody to use. Now Sun has their own set of users, but what if we were to say that we were going to just start deploying all of our services as Google services and just start using this new authentication mechanism. We could get completely out of the business of managing customer identites as well as potentially a lot of other things. We could even leverage the infrastructure that Google is building out (read GooglePlex) and save a ton of money on data center space by delivering our services through them.
Before you rip this apart with all the potential problems, like alienating other vendors (Yahoo, etc), privacy issues, delivery issues, quality of service, etc, etc, etc..... just know that I realize that. I'm trying to make a point, which runs through a lot of my blog entries, that inter company integration can greatly benefit a lot of things. Why don't we let the people who do things the best do them and quit trying to do a half ass job at them ourselves? Also, some of these companies are doing some really cool things, and they have gone out of their way to make it blazingly easy to integrate with what they are doing, why? because it benefits them too. Take a look at these developer pages at Amazon, Google, Salesforce.com, Intuit, Yahoo, and I'm sure tons more. If we wrote service applications to service Sun's hardware and software and deployed them through integrations like these, there seems like there is so much potential. Probably everything we would need isn't available, so we build the missing pieces. But the value and potential of integrating with these things is endless, and the cross sell opportunities are endless as well.
So why don't we quit duplicating effort? Let's quit following the industry and figure out where we can best lead and where we have the best opportunity to innovate.
Bibliography:
- ZDNet article on Google Auth API
- The Google Auth API pages
- Amazon Web Services
- Google Code
- Salesforce.com Developer Exchange
- Intuit Developer Network
- Yahoo Developer Network
Posted by mikedav ( Jun 29 2006, 09:57:06 AM PDT ) [Listen] Permalink
TalkR
Following a link from Rich Burridge's blog and have added TalkR to my blog. You can now listen to the any blog entry via the "listen" link at the end of the blog.Happy Listening!
Posted by mikedav ( Jun 27 2006, 01:42:54 PM PDT ) [Listen] Permalink
Innovation Happens Elsewhere?????
I just finished watching an online lecture by Geoffrey Moore talking at Microsoft Research about how his new book, Dealing With Darwin - How Great Companies Innovate at Every Phase of Their Evolution relates to Microsoft. It is clearly applicable to any large technology company, and I couldn't help thinking about how it directly relates to what we are doing within Customer Network Services, a group within Sun Software. On an internal engineering call today, a Vice President repeated the comment that "Innovation Happens Elsewhere", I think that is a great perspective for Sun's tools development groups (who are trying to help developers innovate with our tools) and some of the opensource strategy (which is trying to give a platform for innovation to happen on top of, more on that later), but for my group (Customer Network Services), innovation MUST happen here.
Moore talks about different types of innovation within the product life cycle. At the beginning of a product or industry's life there is disruptive innovation. This is the type of innovation that causes true differentiation and changes markets. Moving on from truly disruptive innovation we get into application innovation, which is where an established technology is brought into a new market. An example of that is how Amazon used the WWW to sell stuff. Next is product innovation, where someone takes an established product and does it better. The example here being Google making search better. Then there is platform innovation, where a company opens their platform to others and new products are built on top of that platform. This is what Amazon, Google, Salesforce.com, and many others are trying to do by opening up their api's so that developers an build on top of their produts. CNS is trying to do this to some extent with the services that we are offering by building a platform that others can build additional add on services on top of. The problem with this is that platform innovation requires that the platform is ubiquitous, an advantage that CNS and Sun do not currently enjoy.
These types of innovation are somewhat rare, especially the succesful ones. But there are other areas of innovation that are possibly eve nmore important. Moore breaks these up in the Mature Market portion of a products lifecycle. They consist of the Customer Intimacy Zone and the Operation Excellence Zone. In Customer Intimacy its really about how a product differentiates itself that provides value. There are different types of innovation here as well, but the key to all of them is that the Customer's experience is king and tailoring the software to that is what drives these types of innovation. I truly believe the in CNS we are simply trying to play catch up even in this area by providing services that will make a customer's experience better. The area of innovation I think that we have the most potential in is the Operational Excellence Zone. This is where some of our new products can truly differentiate Sun as a whole. Through innovations in the area of Integration where we are working to eliminate complexity of disparate systems. Also through innovation in the area of Process where we can leverage productivity gains from changing the business practices of how people manage their systems.
One serious issue with Innovation that Moore touches on is that there has to be alignment across organizations towards a common innovation. "When each team strives to be unique in its own way, the net result is little to no overall differentiation." I fear that there are too many innovation vectors that we are trying to take and it is leading us towards a net sum of zero. So what do we do about it? Moore gives three steps: 1) Analyze the environment (what are we good at? where are sompetitors focusing? what competing products do we need to neutralize, and where can we differentiate ourselves?); 2) We need to pick an area to focus on; and 3) Everyone needs to align around that focus. The goal of innovation is not to play catch up, but to differentiate ourselves, it is to gain a competitive separation. I believe that CNS is one of the few groups in Sun that has the ability to truly differentiate our products and services from our competitors. I only hope that we can have enough focus to deliver on that.
Bibliography:
- The Online Lecture
- Dealing With Darwin - How Great Companies Innovate at Every Phase of Their Evolution
- Dealing With Darwin Website
- More Microsoft Research Online Lectures - Some very interesting ones.
LinkedIn as a leading indicator
I've been using LinkedIn for a few years now to manage contacts of colleagues that I work with or have worked with. It's mainly a way to keep in contact with a network of people that might be able to help with a job search should the need arise. Recently (the past 3-4 months), a current colleague of mine (mon collègue français préféré) and I have noticed a significant increase in the LinkedIn activity of people at Sun. We see this by the number of people that ask us to join their network, or once you're in someone's network, you can see the number of new people that they add to their network on an ongoing basis. With the publicly announced layoffs at Sun the traffic on LinkedIn has hit a crescendo.
Not only do you see these upturns in traffic when layoffs are eminent, but when a group of people, say a particular organization is unhappy with how things are going and do not feel confident in the direction that things are headed. I believe that LinkedIn could sell this type of data! They could sell it to directors and VP's to be able to gauge the response to recent changes and directions that they are taking their organizations. They could sell it to wall street analysts who want to gauge the employee confidence in the company that they work for. They could sell the data to recruiters who want to know where new recruits or new position openings may be coming from. Wow, there are virtually unlimited possibilities of cool, but likely useless things you could do with that date.
Anyhow, join my LinkedIn Network to help throw the data off.
Posted by mikedav ( Jun 22 2006, 05:49:40 PM PDT ) [Listen] Permalink Comments [3]
Extension and Versioning for Service Oriented Architectures
As I mentioned in a previous post here, my team has been struggling with some issues around extending and versioning of services. The problem manifests itself in having very incomplete and short sighted requirements for one application that in no way meet the requirements of the next application and then trying to force a common service that both applications use as a blackbox. There are a few problems that, in my opinion, are the root cause of this struggle: the lack of a versioning strategy for WSDL's and document schemas; our inability to understand how our clients are utilizing our services; and the technology used by our clients to integrate with our services which causes them to be tightly coupled to the service.
So we have no versioning strategy! What this has caused is that changes we make to services are next to impossible to get to be backwards compatible, we're no where near thinking about forwards compatibility..... An old W3C draft document talks in depth about how to create versionable xml documents. Some of the most useful pieces of this article discuss the need to begin to implement Must-Understand and Must-Ignore constraints in the XML documents and to design these documents in a way so that they have clear points of extension which will not break clients when new elements are added at the extension points. Also discussed, is the need to version documents at different level, sometimes even down to the element level. All of that is a lot to bite off at one time, so to begin with I believe that introduing Must-Understand and Must-Ignore constraints into the documents will make a huge step forward. Must Understand is essentially a Big Bang approach, the client is forced to understand new elements, if they don't understand an element, abort and fail. This would be used in situations when a new required element is being used. Must Ignore differs in that if the client doesn't understand a new element then they are allowed to ignore it without failing. This would be used in cases where new elements are optional, which is what we should attempt to default all new elements to. This goes the other way as well, if we are removing an element, then instead of completely removing it we can begin by making it optional with a Must-Ignore constraint. This would be similar to the beginning of deprecating a Java element. Eventually, as clients move to newer versions (and we understand what they are using), we are able to completely remove the unused element.
What makes our lack of a versioning strategy so painful is that we have no idea how clients are actually using the services. What elements, port types, attributes, etc are really being used, and which are essentially sitting idle? We do not know this answer. This is really the core of what I blogged about recently here. Basically we need to move to a Consumer Driven Contract model which essentially just means that we will document the direct use of the services to the element, atteibute and port type level. This simply gives us insight into how clients are utilizing our services.
Even if we intimately understand how clients are integrating with our services and have the world's best versioning strategy in place and follow it to the letter, our hands will still be tied due to the way that clients are integrating with web services. The typical (anti-)pattern I see for web service integration using Java, is to download the Web Services Developer Pack, then start by getting the WSDL and running wscompile on that to generate the client stubs. What this essentially does is pretty tightly couple the client to the particular WSDL. There are few changes that we are now able to make that will not require that client to re-run wscompile and re-generate the entire set of client stubs and likely the entire set of transfer objects that were created. Even if we modify the WSDL and the schemas in a compatible way it is highly likely that it will force a recompile for the clients. This violates the whole tenant of SOA which strives to be a loosely coupled grouping of services which any client can integrate with and the service can be modified in a compatible way without the knowledge of the clients. So how do we fix this? We have to begin moving client integrations to a less coupled integration mechanism. Tools like Schematron can help to decouple clients from services by looking only for the specific elements and attributes that the client needs in a document as opposed to consuming the entire document even though only part may be needed. That allows the service to change more fluidly without worry of breaking all clients.
So, to wrap this up, ya we have some issues that we're dealing with, but there are solutions to solve them. We just need to take a methodical approach to this, first putting a basic verisoning strategy in place, then understanding how current and new clients are utilizing our service, then we can address how those clients are integrating with us so that they are not so tightly coupled to our services making themselves brittle and unable to handle even simple modifications. Once we get these seemingly simple things in place, we can begin to move forward with truly reusable services that are able to evolve over time to better meet the needs of more consumers.
Links referenced in this article or where info was used from:
- My previous blog post
- W3C draft document on XML Versioning
- Consumer Driven Contract article
- Schematron tool
- Article on extending XML
- MSDN article on Designing Extensible, Versionable XML Formats
Posted by mikedav ( Jun 22 2006, 04:16:20 PM PDT ) [Listen] Permalink
Strengthen and Protect the Magnuson-Stevens Act
Ok, so accuse me of being an environmentalist, but I care about the issues that impact the places and sports I enjoy the most. This particular topic is a care of mine because of my love for the ocean. How can that be since I live in Colorado you ask??? Well I grew up on Guam, in the middle of the nowhere ocean, and my wife and I spend a fair amount of time on Oahu each year. I love surfing, scuba diving, snorkeling and kayaking. So when Patagonia took on "Ocean's as Wilderness" as their latest environmental campaign, I was quite interested. I always look for the things that I can do to get involved in the causes that matter to me, and so here is one that I've been reading about recently.
------- Excerpt -------
The Magnuson-Stevens Fishery Conservation and Management Act (MSA) is the primary law governing management of our nation's ocean fisheries. Ocean fisheries have significant effects on ocean ecosystems and are integral to national and coastal economies. That's why these activities have to be carefully managed. In recent years, two national commissions have recommended strengthening the MSA. Instead, the U.S. House of Representatives is currently considering a bill that would dangerously weaken the conservation and management of our ocean fish.
Rather than building on the strengths of the current law, the proposed bill would weaken longstanding safeguards and increase serious environmental threats to ocean fish and marine ecosystems. The bill would also limit public involvement and access to information about the way the federal government manages ocean fish.
Congress needs to know that we care about the health of our oceans and want them to oppose efforts to rollback critical environmental protections.
------- Excerpt -------
Want to check it out or get more information? See http://www.democracyinaction.org.
Posted by mikedav ( Jun 22 2006, 02:51:09 PM PDT ) [Listen] Permalink
Stop the Colorado Xcel Energy Windsource Price Increase
In Colorado most people get their electric power for Xcel Energy. Xcel is like any other big Electric Utility in the US, they are more against change to the current way of doing business than about any business out there. It's understandable, they have a captive customer base that has no other option, and thay customer base only thinks about electricty when it is NOT available. So they want to just keep things running, and they know their way of doing that. Well Xcel has been experiementing with Wind Power for awhile, but really hasn't wanted to commit to wind as much more than 3-5% of their energy load. As part of this experimentation Xcel started a program for its customers called Windsource. It is a voluntary program where I can purchase energy from Wind power in $5 blocks. When I started this it meant that my bill was $10 more per month (I bought 2 blocks).
Well recently what has happened is that the cost of Coal and Natural Gas has skyrocketed causing the price of that energy to go way up for consumers. However, the cost of Wind Power stays constant, we don't have to pay more to get the wind to blow and all the infrastructure expenses are pretty well set for a Wind Farm. So what has been happening recently, is those of us who purchased WindSource have had that percentage of our energy remain constant which has meant that our bills have been lower than they would be if we would be just buying the ordinary power from Xcel. So Xcel has decided that in order to offset the cost of Coal and Natural Gas, they would raise the rates of WindSource. I guess in their minds it's not fair that those of us that think about the econimics of WindPower should get a discount. There was a recent article in the Denver Post about this.
This is all very bogus. Windsource should only be premium priced to the extent that wind energy costs more than Xcel's other resources. This is not the case right now and unfortunately Xcel feels the need to punish environmentally concious consumers. If Xcel would put more of an emphasis on alternative energy generation they would be able to keep a larger portion of their energy load at a lower cost. Most utilities in the country are decreasing their prices for green power programs. Xcel representative Bill Grant was quoted in North American Windpower magazine stating that wind power purchases helped Xcel Energy save its Colorado customers $4.21 million in fuel costs in 2004 and a whopping $9.75 million in 2005 and "The wind we've added has been very economically beneficial to us". So why are they trying to turn this around now?
If you're on this progam and or were thinking of joining but are wondering if you should now, but you want to support wind energy, you do have other options see www.cogreenpower.org.
If you want to do something about this make a phone call to Xcel (800-824-1688) and to the Public Utilities Commission (303-894-2070) and write letters to the editor about Xcel's proposal to increase the price of Windsource.
Posted by mikedav ( Jun 19 2006, 08:28:18 AM PDT ) [Listen] Permalink Comments [1]
Instant Messenger Byoms
Ok, I spend too much time reading and trying new stuff out. But I was recently reading an article in MIT's Technology Review about Instant Messanger Bots. There is a pretty interesting company called Kozoru that has a product called Byoms. You can create a IM Bot really easily. So of course I had to try it out and what better way to try it than to create one for a CNS project. Well the new Sun Knowledge Center requires authentication to get any data out of it and Byoms has no way to provide credentials to a site collection, so I went with the Sun Knowledge Center's predecessor SunSolve. I created a IM Bot using AOL Instant Messenger named "SKCByoms". Go ahead and try it! just add a new buddy to your IM with the SKCByoms screenname and then try asking it a question, something like "How do I create a Solaris zone?".You can also try clicking on this button and it should add this bot to your IM client.....
Sun Knowledge Connection and Google???
I was recently reading the blog of Mike Harding, the VP of Customer Network Services, and he had an entry on the Sun Knowledge Connection Early Access release. Since we had a recent "innovation day", I was playing around with some of the Google developer tools that they have and was able to pretty quickly create a Google gadget for the Sun Knowledge Connection search.
If you use the Google Personalized home page you are able to add little gadgets to the page to read news, check sports, check stocks, view weather, and now search the Sun Knowledge Connection! Anyhow, below is a screen shot of my the SKC gadget (I didn't integrate the login yet so you have to already be logged into SKC, minor quirk).
It's not as pretty as the real Sun Knowledge Connection, but I'm not quite the UI expert either. You can click here to just add this to your Personalized Google Page.

Consumer Driven Contracts for SOA
I work in Customer Network Services, a group in the Software organization at Sun. The team that I lead is tasked with developing "Common Components and Services" for the rest of our organization. One of the things that we have been struggling with (among many other struggles) is defining common, reusable services that are easily extensible without breaking all of the clients that are using them. Of course, in order to know if you are going to break the clients that are using the service, you first have to know who is using the service and how they are using it. We have a relatively large organization, and although we work closely with each team integrating with our common services, we have quickly lost track of all the ways that teams have integrated with our services. Short of digging through all of the code over the past 2 years, we have no way of finding out either. So, how do we fix this going forward for the new services that we are building? That's what I've been trying to figure out lately.
I was reading an interesting paper today by Ian Robinson titled "Consumer-Driven Contracts: A Service Evolution Pattern" that proposes something so simple, yet is a radical shift to how we develop services within our group now. "The underlying assumption here is that services, by themselves, are of no value to the business; their value is in being consumed. By specifying services closer to where they are being used - by consumers - we aim to exploit business value in a lean, just-in-time fashion." [Robinson]. Makes sense. The idea behind consumer driven contracts for a service oriented architecture is to let the consumer of a service define the contract for the service that the producer publishes. That seems like just basic common sense. But, not only in my current team, but in numerous projects across Sun and in my past, I see the service producer attempting to create this perfectly reusable service by abstracting everyone's requirements into something that isn't capable of evolving without even the most minor modifications breaking everyone. We keep coming up with service versioning strategies that never seem to work as well as we hope, and that is primarily because we are unable to clearly articulate the exact dependencies that are on a service so we are unable to determine what it means to be backward compatible.
In order to get us moving in the right direction, I am proposing that we begin to follow a consumer driven contract approach for our service definitions. As Ian notes in his paper, this won't solve our evolutionary problems, but it will allow us to understand how we can evolve our service. That is one better than we have now. Not only does this allow us to understand the dependencies on our services better, but it also helps us to better focus our services on providing business value. Instead of driving towards the ideal of Reuse Based Software Engineering we should be focusing our efforts on providing tangible value.
We currently have a reusable asset library which documents all of our services and components. I plan to add a section to each service for the consumer driven contract. This will document:
- the consumers of the service;
- what functions and elements (the schema use and interface use) that the consumer is using;
- specific conversational state expected by consumers;
- and finally policies and quality of service needs of each consumer.
Bibliography
- Robinson, Ian. Martin Fowler's Blog. 12 Jun. 2006. Thought Works. 16 Jun. 2006. http://martinfowler.com/articles/consumerDrivenContracts.html
quote of the day
Find a way to be happy where you are or you'll never be happy where you are going. Posted by mikedav ( Oct 18 2005, 09:33:51 PM PDT ) [Listen] Permalink Comments [1]CEC Me
Well I just finished attending Sun's Customer Engineering Conference (CEC) 2005 in San Francisco, CA. In Jonathan's keynote address he challenged everyone to 1) read his blog daily, and 2) start blogging. So here I am with a new blog!
CEC was a great event. I got to see how many of our internal engineering applications are being utilized by the field engineers who are working with customers on a day to day basis. I was able to get a good feel for what the desperate needs were of these people that my team could help to provide. In addition to this, it's always exciting to get to hear people like Scott McNealy, Jonathan Schwartz, and Greg Papadopoulos speak. They have a great ability to instill that sense of the eminent world domination by Sun Microsystems that makes it cool to be a part of a company like this.
So since this is my first blog entry, a little about me: My name's Mike Davis. I currently work for the Customer Network Services (CNS) group within the Software organization at Sun Microsystems. I am a technical team lead for the platform portal and shared services team. Our main goal is to provide common, reusable components and services to all of the other engineering teams within the CNS group. I've recently been working on helping to define an organization wide architecture for a common platform on which to build connected customer applications. If you're a customer of Sun's you should be expecting to hear a lot more about the Connected Customer initiatives and applications that Sun will be delivering soon!
Prior to joining the Software organization at Sun I worked with the Sun Java Center group which is a part of the Professional Services organization. I was a software architect at numerous customer accounts helping the customers to architect, design and build large scale, distributed software applications. Posted by mikedav ( Feb 28 2005, 10:45:48 PM PST ) [Listen] Permalink Comments [2]

