UDDI Best Practices
UDDI Overview
What is UDDI? “The Universal Description, Discovery and Integration (UDDI) protocol is one of the major building blocks required for successful Service Oriented Architectures.” “UDDI creates a standard, interoperable platform that enables organizations and applications to quickly, easily, and dynamically find and use shared services over standard internet protocols such as HTTP. “ “UDDI is a cross-industry effort driven by major platform and software providers, as well as marketplace operators and e-business leaders within the OASIS standards consortium.” OASIS
Analogy Real world: Technology: Imagine the world without the yellow pages directory. How would you find a mover or a dry cleaner? Technology: UDDI is to Web Services as the Windows directory is to Windows. When you double click on Word how does Windows know that MS Word should open that file? UDDI represents the same level of transparency for Web Services & SOA…
UDDI: Key SOA Component Enable Register & Discover Coordinate & Compose Enable interoperability between applications Apps, App Servers, Legacy, MOM/EAI Scale the number of interoperable participants UDDI Create, link and adapt business rules and processes in a loosely coupled manner BPM & composite application development
Darryl Plummer, Gartner Group Why UDDI? Standards-based Flexible Wide variety of publish/discovery tools available Becoming widely adopted for “private usage” “UDDI is the de facto standard for building registries that house corporate enterprise services, and from which Web services can be accessed and consumed.” Darryl Plummer, Gartner Group
UDDI Basics
Conceptual Overview White Pages Yellow Pages Green Pages Basic contact information and identifiers about a company or service provider. Categorization of web services using taxonomies. Technical information describing a web service
Key Entities Description businessEntity Information about the entity who offers a service tModel Description of specifications for services 0..n Bindings contain references to tModels. These references declare the interface specifications for a service. businessService Descriptive information about a particular family of technical offerings 0..n 0..n bindingTemplate Technical information about a service entry point
Key Entities Example businessEntity publisherAssertion businessService Name: Acme Corp Desc: Purveyors of Fine Products URL: www.acme.com Contact: Joseph Kewl publisherAssertion From Key: Acme Corp. To Key: Nadir Corp. businessService Name: getPrice Desc: Accepts ACME product ID as a string. Returns product price as a double. bindingTemplate Access Point: http://soap.acme.com/getPrice Desc: SOAP endpoint for the getPrice service. tModel Name: getPrice Desc: WSDL for the getPrice service Overview Doc: http://soap.acme.com/getPrice/wsdl category wsdlSpec identifier E1-AA-09-F3
Categorizing Entities businessEntity Name: Acme Corp Desc: Purveyors of Fine Products URL: www.acme.com Contact: Joseph Kewl category Retail publisherAssertion From Key: Acme Corp. To Key: Nadir Corp. identifier DUNS: 123456 businessService Name: getPrice Desc: Accepts ACME product ID as a string. Returns product price as a double. category Pricing bindingTemplate Access Point: http://soap.acme.com/getPrice Desc: SOAP endpoint for the getPrice service. category V 1.1 tModel Name: getPrice Desc: WSDL for the getPrice service Overview Doc: http://soap.acme.com/getPrice/wsdl category wsdlSpec identifier E1-AA-09-F3
UDDI Best Practices
Getting Started Obtain a general understanding of UDDI capabilities OASIS UDDI Specifications at http://www.uddi.org Whitepapers from UDDI vendors Develop a detailed understanding of the use cases that drive the adoption of UDDI throughout the organization Design-time discovery Runtime binding Reporting
Getting Started Develop a general understanding of how UDDI will fit into a company-specific Web services strategy How will data and metadata be modeled? Who will be allowed to read and write? How will publications be audited? How will users learn to user the registry? How will UDDI be deployed?
Modeling UDDI entities Determine what constitutes a businessEntity businessEntity = service provider Business, business unit, organization, department, computer, application, program, project or person are common businessEntities Key consideration: businessEntities are the only type of entity that can be associated with contacts Also determine relationship among businessEntities (i.e. organizational chart)
Modeling UDDI entities Determine the types of services that can be published Do it for Web Services, but consider all of your IT assets and business services Define how those services will be represented in the registry Standardize on the access point for each service type (i.e. URL for web services, phone number for customer service) Determine what metadata will be provided with each service (i.e. XML schema, end user documentation, policies etc..)
Publishing WSDL to UDDI Follow version 2.0 of the UDDI technical note, “Using WSDL in a UDDI Registry” Ensures interoperability with application vendors for discovering WSDL-based services wsdl:portType and wsdl:binding elements map to uddi:tModel entities wsdl:service elements map to uddi:businessService entities wsdl:port elements map to uddi:binding Template entities
Publishing WSDL to UDDI Extend to enable better query capabilities Map operations and types into UDDI Categorization taxonomy to identify an entity as an operation or type Operation Reference taxonomy to associate a service with its operations Input and Output Type Reference taxonomy to associate an operation with its input and output types Create a tModel for each data type and each operation
Modeling UDDI entities Define a naming protocol for businessEntities and businessServices Should be intuitive and well understood as a common search pattern is based on these names Should be enforced as deviations from the scheme can cause confusion and lessen the effectiveness of the registry Take advantage of publisher-assigned keys More user-friendly: uddi:globalbank-com:maintaxonomy vs uuid:2CD3A773-874E-2539… Common search pattern is based on these keys Must guarantee uniqueness across all registries
Taxonomies Use taxonomies : key to promoting reuse Establish categorization schemes before deploying UDDI services and require their use when publishing The specification does define and include some canonical taxonomies, but these are general-purpose Build custom taxonomies that apply to your specific business or application to enhance the discovery of services What can be categorized UDDI v3 now supports categorization of a bindingTemplate Migrate previous v2 binding categorization strategies to take advantage of this
Custom Taxonomies Build from the bottom up Common starting points Begin at divisional or workgroup level Start simple; don’t attempt to “boil the ocean” Tackle enterprise taxonomies as necessary – enterprise taxonomies may be non-trivial Common starting points Geography Organization Business Function
Custom Taxonomies : An approach Step 1: Organize services according to a range of organizational and technical parameters Organization structure Service role Application type Visibility Deployment environment Version number Lifecycle Protocols QoS Authentication
Custom Taxonomies : An approach Step 2: Model the taxonomies Name Description Compatibility Check Current Valid Values Globalbank-com: Divisions Describes the divisions of the bank businessEntity businessService Yes CapitalMarkets, CommercialBanking, Consumer… Globalbank-com: application Type Describes the service by business function GeneralLedger, EquityTrading, CreditAnalysis… Globalbank-com:lifecycle Indicates where a service is at in its lifecycle bindingTemplate tModel Development, staging, production, retirement ….
Custom taxonomies: An approach Step 3: Apply to published entities businessEntity Name: Global-com:CreditCard Desc: Manages credit card retail business URL: www.globalbank.com/retail/ creditcard Contact: John Smith Globalbank-com: Divisions Consumer Globalbank-com: Divisions Consumer businessService Name: Global-com:creditCheck Desc: Checks credit rating of Potential new customer Globalbank-com: applicationType CreditAnalysis
Custom taxonomies: An approach Step 3: Apply to published entities Globalbank-com: version V2.0 bindingTemplate Access Point: http://soap.acme.com/getPrice Desc: SOAP endpoint for the getPrice service. Globalbank-com: lifecycle staging uddi-org: types wsdlSpec tModel Name: getPrice Desc: WSDL:type representing portType Overview Doc: http://soap.acme.com/getPrice/wsdl uddi-org:wsdl: types portTypes
Process and Procedural Considerations Standardize publications Ensures quality of data Minimizes “pollution” in the registry Establish publication guidelines Description and example of type of organization the provider represents Convention used to name businessEntities and businessServices Description of modeling approach and an example of service publication data structure. The names and descriptions of any categorization schemes that should be used
Process and Procedural Considerations Example publication guidelines All businessEntities must be based on organizational units within the company All businessEntities must contain a contact that includes a phone number and an e-mail address All businessServices must provide end user documentation provided as a tModel referenced from a bindingTemplate All businessServices must be categorized using the Global-com:applicationType categorization scheme All tModel entities that represent WSDL files must be categorized with the wsdlSpec value of the uddi-org:types taxonomy
Process and Procedural Considerations Enforce publication guidelines Implement multiple registries for staging and production Restrict publication rights to production Establish approval process for promoting entities from staging to production If possible, automate approval process to streamline publication Ensure ownership is preserved when promoting from staging to production
OASIS Technical Notes QoS mapping TN Versioning TN Performance & scalability information Versioning TN General purpose versioning API Resources mapping TN Publishing & discovery of XML, XSLT, XML Schema documents WSDL-to-UDDI TN Granular publishing