Over the last couple of years I have been working on large enterprise projects for a large corporation. I am recognised at the company a leading web developer. I am being groomed to become an Enterprise Architect. One of the things that keeps me up at night is a convergence of a technology called Web Services.
Introduction to Web Services
Web services, for those of you who are not technically up on the topic, are basically web pages built for other web pages. You know how you go to a web site and there is an online form to fill out that control your access to the site, that control how you search for something, or they allow you to post a message to your friends. Well, web services are forms, but instead of them being for people to fill out, they are for other computers to fill out. So computer ‘A’ can talk to computer ‘B’ with carefully formed pages.
You can see this at work today with all sorts web sites. The easiest example to explain is www.weather.com. If you develop a web site you can get code from www.weather.com to put on your web site so that you display the weather at your house. Now your web site doesn’t know how to check the weather, but it does know your location. Your web site tells www.weather.com your location and gets the forecast. Your web site is talking to their web site.
Now of course this is a very easy and simple example. If you were to develop this into a standard you would want to build up some requirements. First off you would want to address security. You want to make sure that if web services were being used to look up your bank account balance that no one would be able to steal money from you. Additionally it would suck that if you told your bank to withdrawal some money and transfer it somewhere, and the bank missed that whole where to transfer it to part. You want some way to ensure that your message was completed and done and received. You need some quality assurance. Another thing to think about is that you might have a bunch of web services (say google) which all do the same thing, and if one goes out, you need it to fail over Finally there are major differences between computer hardware and software. If my server is IBM running Java, you want it to talk to a Linux server running PHP as well as a Macintosh running Perl.
I don’t want to get into all the nit-picky details but all these additional requirements make the whole mess of Web Services much more complex. They are the parts of the plumbing that is not all that sexy but are needed to do the cool parts.
Introduction to Computing Theory: or The Next Couple of Years
One important thing to think about with computer is that there are basically 3 parts of any computer. There is a display or output of information. There is a calculating of information. Finally there is some form of storage. So lets look at the computer I am writing this on. There is the 21inch monitor. That is out output. Another part of the computer is the CPU. The computer I have in front of me has a 2.1ghz Intel Dual Core 2. This is the calculating unit for this computer. Finally I have a 100GB hard drive and 3GB of ram. This is the data storage.
Today I am not seeing this model being used in web services. I think there is an opportunity to divide web services up into the following categories. The first would be Data Services for the storage and retrieval of data. The second type of web services would be calculation services. Finally we would have a web service for output.
Over the next couple of weeks, I will be filling in each of these and the requirements needed for each.