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, and follows the standards (WSDL, SOAP, XML, JSON, XACML, etc.). Eclipse plugins help with the development of services and consumers. Other important features include:
- Various Quality of Service (QoS) features such as authentication, authorization, and rate limiting, which you control by defining respective policies.
- Monitoring capabilities.
- A Repository Service that enables service registration and governance.
- The Type Library, which provides the ability to define and manage reusable schema type definitions across services, and hierarchically organizes them.
- The Error Library, another useful capability that lets you define and re-use error definitions across services.
- Local binding, which lets you locally bind services to consumers as a deployment time option, for optimization, without loss of any generality or changing code.
The Turmeric platform is highly extensible and customizable. For example, you can easily plug in additional protocol processors, data formats, handlers and various other capabilities. The platform is also highly optimized for large-scale environments. eBay uses this platform internally. Most parts of it are now open source, replacing functionality dependent on commercial products with equivalent, open-source implementations. It also has new package names to match the open-source spirit. This is the first version of the open-source release of Turmeric, and might have some rough edges, so please provide feedback and contribute as you see fit.
The Turmeric platform includes:
- Core runtime--The core infrastructure library, based on a pipeline architecture, used to run services and consumers. 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.
- The server-side library is called Service Provider Framework (SPF).
- The client-side library is called Service Invocation Framework (SIF).
|You can customize, or create a plugin for, almost every aspect of the infrastructure.|
- Eclipse plugins--Simple to use 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 the aggregated metrics data across all the nodes.
- A monitoring console that lets you view the 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 underlying repository product.
- WSDL Assertion Service--As part of implementing a governance process in an enterprise, you can define guidelines for services to follow for the WSDL interface. You express these guidelines as XQuery assertions and validate them against WSDLs. This Assertion Service capability is part of the Eclipse plugin.
- End-to-end comprehensive platform.
- Plugable data formats and protocols.
- Low-latency overhead.
- Multiple protocols and data formats can invoke the same service, without any intermediate transformations.
- Local binding.
- Definition, re-use and management of schema types and errors.
- Eclipse tooling.
- Built-in monitoring, including a console.
- Policy-drive QOS, including a console.
- Repository abstraction.
Anyone who is looking for adopting SOA-based, distributed computing, and wants a simple way to develop, deploy and monitor services and applications on a scalable, time-tested platform.
If you fit that profile, you should definitely check this out and provide your valuable feedback.