Taming Development Complexity in Service-Oriented e-Infrastructures
By P. Pagano, F. Simeoni, M. Simi and L. Candela, CNR-ISTI
e-Infrastructure is the term coined for innovative research environments that provide modern scientists with seamless access to shared, distributed and heterogeneous resources. Within this domain, service-orientation is a common assumption where it provides a common abstraction to hardware, data and even application services as shareable resources.
This approach, however, complicates resource management, since deployment, configuration, staging, scoping, monitoring and secure operation of services become fully dynamic and a responsibility of the infrastructure.
To fulfill this responsibility, infrastructures must be clear as to the description and run-time behaviour of services. This adds to the complexity typically associated with service development, whether generically related to distributed programming (e.g. concurrency, performance-awareness, and tolerance to partial failure) or specifically introduced by open technologies (e.g. reliance upon multiple standards, limited integration and documentation of development tools). This complexity challenges the operation, maintenance, evolution and thirdparty extension of the infrastructure, ultimately threatening its adoption.
gCube in DILIGENT and D4Science
DILIGENT and D4Science, two grid-based e-infrastructures for sharing resources within Virtual Research Environments (VREs), have faced these complexity issues. Both the infrastructures promote applications – the VREs – whose constituents are dynamically borrowed from the infrastructure, bound (and deployed) instantly, just at the time and for the period they are needed.
These infrastructures operate under the control of gCube, an open platform of about 140 software components (services and associated software libraries) for interactive inclusion and orchestration within VREs. gCube manages its services dynamically and offers a range of solutions to reduce the costs induced by its requirements. Most noticeably, support concentrates in the “gCore Distribution for gCube”, or gCore for short. gCore includes a sophisticated Java-based service framework entirely dedicated to the development of gCube Services, a dedicated container providing a runtime environment for gCube services, and the minimal sets of gCube components required to operate in a gCube infrastructure. Built as an extension of Globus technology, the gCore Framework (gCF) aims to simplify and standardise all systemic aspects of service development, as well as promote the adoption of best practices in multiprogramming and distributed programming.
In particular, gCF:
• manages the entire lifecycle of gCube services, engaging in autonomous interactions with the infrastructure and local environment, and allowing customisation of deployment, initialization, activation and failure response;
• enforces the scoping and security rules associated with shareable resources, handling the acquisition and renewal of service credentials, the delegation of caller credentials, and the propagation of scope and credentials from incoming to outgoing service calls;
• implements Web Services Resource Framework standards for publication, access, and notification of change to service state, offering a rich set of abstractions for modelling it, governing transparently its full lifetime, and managing its persistence on different storage media, including its recovery from remote media upon service migrations;
• standardises the use of systemic faults within service interfaces and implementations, transparently supporting retry-same and retryequivalent semantics and converting faults into equivalent lighter-weight exceptions at service boundaries;
• mediates access to configuration resources on classpath and local file system, redirecting read failures to backups created prior to write operations and exposing object bindings for all aspects of service and container configuration;
• simplifies resource discovery via object bindings, templating, and XPath inspection for a range of queries to the information services of the infrastructure;
• simplifies multiprogramming via arbitrary combinations of event-based synchronisation, scheduling, parallelisation, and sequencing of local processes;
• simplifies distributed programming through the customisation of best-effort discovery and interaction strategies with stateless and stateful services.
Widely adopted within gCube infrastructures, the gCF guarantees a uniform quality of systemic behaviour across all its services, as well as a convenient basis for infrastructural evolution. As requirements for gCube compliance stem from a general model of shareable resources, we believe that the support offered by gCF can be exported to other infrastructures that make a similar commitment to service-orientation.
This work is partially funded by the European Commission in the context of the D4Science (FP7) project.
