Information System

Introduction

The AppDB Information System is a solution to collect, correlate, manage, and provide information gathered from a number of services related to the EGI infrastructure, such as the AppDB portal, the GOCDB portal, ARGO, etc., and serves as a Top-BDII for cloud sites, as per the GLUE2.1 information schema.

It consists of three tiers:

  • The ISCollector services which collect information from external services.
  • A couchdb cluster of primary and replicated instances which store and distribute the information.
  • The ISPublisher services which publish the information to the public

image800

The service exposes five public HTTP endpoints:

GraphQL interface

GraphQL is a query language for APIs and a server-side runtime, for executing queries by using a custom-defined type system for our domain model.

GraphQL is typically served over HTTP via a single endpoint which expresses the full set of capabilities of the service. This is in contrast to REST APIs which expose a suite of URLs, each of which exposes a single resource.

GraphQL provides specific advantages to the final solution:

  • Only the content that is needed by the client is returned, so we eliminate over/under fetching of data
  • No client API coordination is needed due to the single endpoint access
  • The whole schema is available to the client tools
  • Highly-related, strict data schema
  • Ease of external service integration

REST interface

This endpoint provides a RESTful interface on top of GraphQL, in order to help users who want to avoid including a new query language to their workflow. It provides a predefined set of fields for each entity, along with a paging and filtering mechanism. If accessed with a web browser, it provides a list of all the available REST endpoints, along with testing functionality (Swagger UI).

CouchDB interface

This endpoint acts as a proxy to a couchdb HTTP interface. It forwards requests with read-only credentials to the actual HTTP interface.

An external service can use any couchdb client to perform read-only operations. If no specific couchdb client is available then performing simple HTTP GET/POST actions can work as well.

NOTE: Using this interface for data acquisition should be discouraged, as the data schema is subject to frequent and unexpected changes

Tooling and Documentation interfaces

The GraphiQL and Voyager tooling endpoints provide documentation and visualisation for the GraphQL schema. The GraphiQL tool may be used to interactively test queries during development of third party tools which want to integrate with the AppDB InfoSys