Thanks to everyone who attended. See Designing Web Services with the J2EE(TM) 1.4 Platform : JAX-RPC, SOAP, and XML Technologies for more information. Also, check out Dr. Dobb's SOA, Web Services and XML department.
Here's the Micro$oft PPT file: Web Services 8.ppt
Here's the Open-Office file: Web Services 8.odp
Also, here's a more useful thing: the actual contents.
Web Services
8 – Architecture
Steven F. Lott
Agenda
Nuclei around which architecture crystallizes
Architecture Design Patterns
Decision Nucleus
Interface-Driven Decisions
- External Interactions are typically web services
Several Implementations
- Heavyweight, SOAP document services
- Lightweight, RPC services
- Informal CGI and other HTTP services
Decision Nucleus
Data Model- or Processing- Driven Decisions
- Complex or Core data
- Can be accessed directly (through JDBC)
- Or indirectly through a web service
- Complex Processing
- Can be accessed through a web service as needed
- Or built as a batch job and run periodically
Business Focus is essential
Decision Nucleus
Mutability-Driven Decisions
- If the implementation will change,
- wrap it in an interface that won't change.
Special cases are often mutable
- So wrap them in a web service
Interim Solutions
- Best to wrap them in a service
- Replace the interim implementation with the final
Poor Choices for Web Services
Individual Data Entity Access
- Entity-Level services are too fine-grained
- Each CRUD operation has to be exposed
- It basically wraps the SQL, adding overhead
- With no measurable value
Technical Processes (ETL, for example)
- Moving "Customer" from system to system isn't what a service does
- No Business Focus – just data massaging
Service Design Questions
- Where's the system of record? Who's the keeper of the master data?
- What do other systems need this system to DO for them?
- The system of record may publish useful services
Data Movement/ETL
Single sources for Master Data?
- Then a single Service for this data
Duplicate sources – overlapping Master Data?
- System X source copied to System Y where extra attributes were added
- Coalesce into a single source, if possible
- Make multiple applications share a single, central service for the data – where possible
Multiple sources – multiple parts to the Master Data?
- System X has some records, System Y has other records
- Union of these two systems is the master data
- Hard to coalesce, but a Single Service can wrap multiple sources for consistency
The Java Blueprints Reference Application: Adventure Builder
See https://www.oracle.com/java/technologies/java-blueprints-guidelines.html
Adventure Builder
A J2EE application that presents an application to end-users
Consumes Web Services for a number of Back-end Operations
Suppliers and Finance are external interfaces
CRM is a shared data structure
Workflow is Process-driven
Order Receiver is a mixed bag
The Granularity Issue
Services which are too small ("chatty")
- Endless back-and-forth
- Too much SOAP overhead for the real value
Services which are too large
- Giant XML messages
- Long-running web services
In the middle is a balance
- This is more art than science
Business focus is key
Business Focus
It's all about Agility
It's all about Master Data
- One source for the data
- One source for the processing
It's all about Assignment of Responsibility
Important Questions:
- What is really happening?
- Is that business-related or is that a dumb technology work-around because of rubbish legacy software?
- MUCH of what passes for "business analysis" is really IT reverse engineering