- In this blog entry I try to collect my experience defining SOA services. (This blog entry will be under heavy changes). Feel free to post me any comments.
If you build a service, keep always in mind that you have a lot of stakeholders in mind:
(1) service consumers
- which are interested in only the functionality they have to provide
- focued on a specific programm language (e.g. Java)
(2) architecture, which is mainly focused on
- reusability
- continuity
- versioning
- accessibility of services (repository, registry)
(3) service providers
- which are focused in reducing complexitiy
- which are focued on a specific programm language (e.g. Cobol)
(4) Business, interested in
- bussiness value
- continuity
(1)The Service consumer View
Focused on their particular problem
(2)The architecture view:
- Lego approach, composable services
- Versioning
- Lifecycle
(3)The architecture view:
- Reducing complexity. Reducing input and building constraints to reduce complexity of programming and testing
(4) Business
- The business is mainly interested into shareholder value
The goals on a timeline looks like this
(1) Service Consumers (goals are within project time)
(2) Service Producers (Services should survive different projects)
(3) Business (mid term goals)
There are a lot of conflicts:
(1) and (3): How to find a naming
(4)Architecture (long term gols)
convention which fullfill different programming approaches
(1 - 4) How to fullfill the different time scopes? --> Versioning,
Distinguish between
(a) Bulk-Services (File-Import)
(b) Messaging Services (e.g. Webservices)
(a) Bulk Services (Func. and non func. req)
- Define Character Format
- Define Output Format (Fixed-Length, Comma-Separated, ....)
- Define all attributes precise (especially years, currency, ...) e.g. DDMMYYYY, XXXX.YYYY and Currency ISO 4217
- Specify timezones for dates
- Define Periodicity (Exportdates)
- Availability
- Security Classification
- Response Time
- Size of the Export (e.g. 10 GB)
- Destination/Protocol (e.g. ftp://myFileserver)
- Logging
- When should service go in to Integration Test, Production, ...
- Versioning
(b) Messaging Services (Func. and non func. req)
- Availability
- Response Time
- Invocation Frequency
- Specify timezones for dates
- Define all attributes precise (especially years, currency, ...) e.g. DDMMYYYY, XXXX.YYYY and Currency ISO 4217
- Peak
- Loggin
- Caller Auth.
- Security Classification
- When should service go in to Integration Test, Production, ...
- Versioning
Versioning of the servicedefinition is crucual. Important is that you write every change, ore even better also the reason (and responsible) for the change in the servicedefinition or a separate document.