Last month, eBay released its open source site, http://www.eBayOpenSource.org, with a mission to open source some of the best of breed technologies developed within eBay Inc. to the community. The first open sourced project, code named Turmeric, is a comprehensive SOA platform for scalable development, deployment, management and monitoring of services.
Turmeric is being released under the Apache License (a copy is available here).
As with any first public release of an existing internal code base you may encounter some rough edges. If that happens, please help us make the project better by filing an issue or posting to a discussion forum!
What is Turmeric?
Turmeric is a comprehensive, policy-driven SOA platform that you can use to develop, deploy, secure, run and monitor SOA services and consumers. It is a Java based platform, follows the standards (SOAP, XML, JSON, XACML, etc.), and supports WSDL (SOAP style - Doc Lit wrapped mode) and REST styles. It supports a variety of protocols and data formats. Eclipse plugins help with the development of services and consumers. Other important features include:
- Quality of Service (QoS) features such as authentication, authorization, and rate limiting, which are controlled by defining respective policies
- Monitoring capabilities
- Type Library feature provides the ability to define and manage reusable schema type definitions across services, and hierarchically organizes them
- Error Library capability that lets you define and re-use error definitions across services
- Local binding lets you locally bind services to consumers as a deployment time option, for optimization, without loss of any generality or having to change code
- Policy Administration console
- Repository Service enables service registration and governance
- Assertions Service that enables automating WSDL validations
- Built-in REST mapping capabilities
The Turmeric platform is highly extensible and customizable. You can easily plug in additional protocol processors, data formats, handlers and various other capabilities. The platform is optimized for large scale environments.
What does the Turmeric platform include?
The Turmeric platform includes:
- Core runtime -- The core infrastructure library, based on a pipeline architecture, used to run services and consumers. You can customize, or create a plugin for, almost every aspect of the infrastructure. It is divided into three parts.
- The binding framework library is a flexible and customizable binding implementation. It provides XML, Binary XML, JSON, and Name-value bindings out of the box
- A server-side framework library, called Service Provider Framework (SPF)
- A client-side framework library, called Service Invocation Framework (SIF)
- Developer tools : Simple to use Eclipse plugins that help create services and consumers, manage reusable types across services via Type Libraries, and manage error definitions that are reused across services via Error Libraries
- Monitoring -- A comprehensive monitoring platform with multiple components:
- Runtime aggregation of various metrics on both the client and server side
- Configurable metrics
- Storage providers that push the aggregated data from each app server
- A monitoring service that provides aggregated metrics data across all nodes
- A monitoring console that lets you view metrics
- Security Services -- Everything in the platform is policy driven, and the policies follow the XACML structure and syntax. Various services, including authentication, authorization, rate limiting and group membership services, interact with the policy service and act as policy enforcement points
- Policy Admin Console -- Manages policy definitions
- Repository Service -- Service registration, dependency management and governance is a key aspect of the end-to-end platform. Repository Service is an abstraction of this functionality, which makes it agnostic to specific repository products. The actual supported capability depends on the capabilities of the underlying repository product
- WSDL Assertion Service -- As part of implementing a governance process and achieving consistency in an enterprise, you can define guidelines for the WSDL interface of a service. Using the assertions service, you can express these guidelines as XQuery assertions and validate them against WSDLs. This Assertion Service capability is also integrated into the eclipse plugin
Many of the services mentioned above are architected to have pluggable provider implementations, for example a username/password based authentication or a token based authentication for the authentication service. eBay specific providers are replaced with sample open source providers to demonstrate the capability and Turmeric users can develop their own providers and plug them in as appropriate.
Who is the target audience?
This platform is for anyone looking to adopt a SOA based, distributed computing strategy, and wants a simple way to develop, deploy and monitor services and applications on a scalable, tested platform that has all the end-to-end comprehensive capabilities described above.
As with all open source offerings, you are also encourage to contribute to the platform. I hope you choose to get involved and look forward to your questions and feedback!