BS ==
so, to encourage myself to remain grounded in issues that are relevant to developers, whom I hope will some day be working with me, I'm going to paraphrase certain articles that I read from high-level business rags - translating them from business-speak into something that actually makes sense. with my continual forays into BS ("business speak" or "bull shit," interchangably), I have finally become disillusioned with the practice, and view it only as a necessary evil when analyzing or discussing the business effects of technical (real) progress.
that last paragraph would translate to:
I want to be the boss of some programmers, so I'm going to explain how BS ideas affect programmers.
article number 1 translates:
a decision-maker for IT projects must decide either to buy, build, or re-write programs to fit requirements. this is no different for SOA projects.
but, SOA requirements are not just code, they are largely in configuration.
one analogy would be the way cartoons are animated. if animators took a "just code" approach to building cartoons, they would draw each frame of a cartoon in its entirety, which is an inflexible and wasteful way of doing things. better to draw the background, props, and characters separately on translucent sheets, and then configure interactactions to arrange a scene. each component provides a defined contribution to the over-all objective. back in software...instead of building every application with just code for every feature, you focus on configuring components, or services, with well-defined features to get results.
so, the question is, do you build, buy, or re-write those services?
building...
when building services, remember that you have to create the application logic AND the interface for how it will be used in larger systems. and if the system is a big-deal SOA, much of the logic and other technicals should be put on the interface part. it's very much a top-down approach, where the architecture dictates what the input/output of the service is, and the service restricts its logic to getting that done, not how it will be called or where it fits in with everything else - that's part of the interface setup.
for smaller components - usually basic data queries, calculations/transformations - the app logic is the easiest part. the real important and challenging thing is to build the big system that coordinates them all and glues it together. that big system needs to line up with the way the business operates. but even that bigger system could be a component of a much larger system.
so, since business services rely heavily on figuring out the what and how of the components' interactions, in-house development option gets better as the system's scope is larger, because no-one knows better than the business itself how those things should GSD (get shit done).
re-writing...
a big part of SOA is about re-using services in different systems. but at first, you have to think about features that exist in your current systems. to start out with, you'll probably be exposing functionality from your current systems as services, until you have most of your functionality available as a service, then a lot of development will be about using those services in different configurations. so maybe instead of building all new services, you'd rather find out what code you have that would be useful as a service, and then put a service layer on it.
but it's still better to go with a top-down approach first - design the architecture of the processes, then chunk it up into bite-size pieces, then identify which of those bite-size pieces already exist in your system(s), then either wrap or re-write those. if you just start re-writing all your code as small services, you may never get away from them to a larger SOA, which is what you really benefit from.
recognize that the stuff you already have written was probably not written with any kind of focus on separating the interface from the app logic, as mentioned above. so the biggest work will not be changing app logic, which will probably be identical. the biggest work will be defining those interfaces for the app to the rest of the SOA system.
buying...
because SOA systems are composed of all kinds of services, some of which are small and big, and because these systems mostly just involved composing and configuring those services into a process that matches what your business needs to do, you can buy some or even most of the services from 3rd party providers. there will still be considerable work in making the SOA system match the business logic. smaller services are better to buy than larger ones, and make sure those services you buy are easy to fit into your bigger SOA system.
is it possible that business will want to buy some of those bigger service systems? it's really not a technical issue, it's more of a business issue, since doing so will essentially be out-sourcing a part of your business operations to another company. if you don't want that part of your business outsourced, then buying that larger service system is a bad idea.
and on medium-sized services, you may have different requirements for security, and process fit than a 3rd party provides. the most you can expect is to get a way to simply create and manage the criteria, but you won't have complete control over those. this really means that purchasing services is best for very small fine-grained services, or for outsourcing entire processes. the in-betweens are tricky to get from a 3rd party.
conclusion...
all of the above approaches can be used, and should be used in the most appropriate places. the most important thing is to contstruct a good SOA that matches the business operations. if you've got that, you've got a much easier time of using any of the above to add services to your SOA system.</div>
actual progress is being made
mine has a few key differentiating factors, which I think will make it a great service.
1. built on top of a solid SOA. this is still in progress, but with a proper SOA, keeping up with all the different carriers' online functionality should not be a problem, and developers can be assigned to certain carriers, and to implement the carriers' functionality into the larger shipping management product that we are building. In addition, SOA based on WS-* standards will allow our offering to be incorporated into BPEL processes, which many larger companies will undoubtedly be using in the future.
2. low cost. we use open-source technologies, which makes our software costs approx. 0. I'm almost positive, should demand go as high as I'd like it to, to deploy on Zend Platform, or ActiveGrid, and to use commercial licenses of MySQL, Linux, etc. besides just the software licensing, the popularity of the OS technologies means there will be a huge number of developers as potential employees.
3. relating to a project Matt has going, I will also work on a RAD framework with him that will, hopefully, be built with consideration of allowing developers to quickly and easily set up communications with services such as the one we'll be offering. if that really is the case, then popularity of that framework will only help to accellerate the demand for our service.
4. federated identity. I don't know a LOT about this (yet), but the concept sounds great, and it's one of the differentiating factor that the Rearden group uses. hopefully Rearden will eventually be one of our customers. =)</div>
IBM method for SOA'ing yourself
in any case, with IBM's new partnership with Zend, it would be interesting to find out if IBM would ever be offering these assessment services to small businesses, and if they might pitch the Zend Core (including PHP) as an SOA platform. I, of course, think it's possible, but un-proven. and will hopefully move it into the "proven" column for my own sake, and it wouldn't hurt Zend and/or IBM to follow my lead! ;) man, that would be sweet.
however, I would hope that Zend and/or IBM is as open to an SOA platform that uses MySQL as opposed to the Cloudscape database in Zend Core. don't get me wrong, I think Cloudscape is a great project and I really like that IBM is promoting it. I just have a soft spot for MySQL.</div>
repeat article?
in any case, if I didn't already say so, I'd like to change the label from "The Killer...App" to "A Killer...App." I'm with Bezos when he says that we are only just seeing the beginning of these kinds of substantial new software programs that utilize the internet for base functionality and expand upon that base functionality for their app, which can be utilized in turn.
what I'm interested in finding out is what kind of platforms that killer app runs on. I can imagine that there is a case for a similar business that would be based on a LAMP stack and could thereby keep costs lower, and thereby offer similar or better services at a lower price.
also, I'm pretty sure I need to figure out a way to run said business while playing video games all day.</div>
visa does a lot of transactions
when I first started reading, I thought it would be insane if those thousands of transactions per second were web services transactions, because those would be some pretty fat message stacks and I wouldn't even want to imagine the infrastructure required to keep them going at that pace.
in any case, the dispute-resolution scenario seems very conducive to a web services approach. and it made me think of the WS standards in a different perspective - outsourcing. essentially, Visa, member banks, and everyone else that uses the various WS standards is outsourcing the development of their internet-capable communication infrastructure.
I thought of it this way...
without WS standards, if Visa were to accomplish the same thing, they would need to spend time and money developing a method by which all of their member banks could communicate, via the internet, to their backend system for the dispute-resolution process. however, with WS standards, they can settle on the publicly-available HTTP, SOAP, REST, FTP, etc standards.
the article did not go so far as to say whether or not they were using things like BPEL4WS to model/manage the business processes involved in the entire procedure of dispute-resolution, but if they do, then that is yet another methodoly/platform that they did not have to develop in-house.
obviously, for those companies that pay to help develop these standards, it's not entirely free. however, it does help the standards-developers stay focused on their standards, rather than having to worry about this or that implementation of the standard.
that is all for now, though I'm still reading a few more articles, so another post may yet happen.</div>