When enterprise software professionals architect a service oriented solution, whether taking a SOAP, REST or BEST based approach, these three imperatives must always be taken into account:
1. No service is forever
The first imperative is the reality that no single service technology will last forever. In our present, blissful age of automation, the mere fact that anyone is talking to us about new projects proves this to be true. With this in mind, the services we create must be designed to adapt to many types of technical change, and this means designing in flexible facades and configurable adapters from the onset, and not adding them in later as an afterthought.
2. Services get disrupted
The next imperative is that regulations and business agreements change, which means any single service can at any point in time disruptively be required to accommodate new formats, versions, and data types.
3. Services exist beyond their software shell
Finally, software architects need to understand that a service has little to do with any individual, isolated, module of code. In fact, when viewed from the eyes of a seasoned subject matter expert (SME,) a business service is understood to be a cooperative process, not just piece of software running on a server somewhere. Services are about satisfying business needs, not technical requirements. Good business services involve workflow, and when workflow is involved, service components that can cooperate with each other are the key.
These are the realities that subject matter experts in the field of service oriented development must understand and appreciate when developing viable and adaptable enterprise solutions, and by keeping these imperatives in mind, software architects and systems developers will be much more successful in developing adaptable endpoints and flexible mechanisms of data exchange that are capable of both anticipating and embracing the changes that all service oriented architectures will inevitably experience throughout their lifecycles.
Let us knowabout your best practices and philosophies for best approaching the development of service oriented systems.