One of the major changes for us is to change the way that we manage inter-application communications. We are moving towards a more formalized version of SOA which involves a greater number of web services which interoperate via distinct messages over HTTP. As we retire old systems and replace them with newer ones, we will undoubtedly take the time to modernize and move more of our communications into the newer way we do things.
All change uncovers challenges that can cause pain and will likely see us stumble. This, is an inevitable side-effect of changing, of moving from one place to another. It is also a great opportunity to learn new things and as such it presents a good vehicle for personal development and growth.
To simplify the job of capturing and communicating the knowledge that we gain from our excursion down the enterprise SOA path, I have identified 4 key subject headings that act as boundaries for different knowledge areas. They are described as the ABCDs of SOA knowledge base.
A is for Accessing (Authentication and Authorization)
- Standards based protocols for managing access and trust (WS-*).
- How to use our technology to implement those standards (.NET, WCF, Https).
- What technology to choose when we are dealing with services (e.g. WCF Web API, ADO.NET Data Services, WCF, etc)
- How the respective technologies work
- Designing RESTful architectures
- Browser security policies for accessing remote origins
- Libraries for making AJAX calls
- Working with JSON and XML in the consumer
- Consuming HTTPS with untrusted certificates
- Composing SOAP messages from the consumer
- Composing oData formatted queries from the consumer
- Configuring SSL
- Designing a homogeneous environment for hosting application services
- Configuring application endpoints and security accounts
It's the sum of all this (and more) knowledge that goes into having a successful services-based application environment. Internalizing the knowledge gained and feeding that into process and culture change will be a real but hopefully rewarding challenge.