Difference between revisions of "Accounting"
(→Key Features) |
m |
||
Line 66: | Line 66: | ||
In this layer we found not only the accounting consumer which retrieve information related to collected data (e.g. [[Accounting Portlet]]) but also all the component which collect data and use accounting-lib to persist in a common pattern. | In this layer we found not only the accounting consumer which retrieve information related to collected data (e.g. [[Accounting Portlet]]) but also all the component which collect data and use accounting-lib to persist in a common pattern. | ||
+ | |||
+ | == Client Lib == | ||
+ | |||
+ | == Installation == |
Revision as of 18:09, 27 May 2016
Overview
GCube Accounting allows to collect information of the infrastructure usage and expose them for the interested consumer.
Key Features
- highly modular and extensible architecture
- the entire subsystem comprise a large number of components clearly separating the functional constituents
- diverse options for storage
- the subsystem can rely on an array of diverse solutions for actually storing records
Design
Architecture
The following picture shows the gCube Accounting architecture, that is logically divided in three different layers:
Moreover, a fourth layer (which is not gCube-based) exist to take care of the storage of the collected information:
All the developed component must respect this architecture. In particular, the design and the implementation has to respect the following rules:
- Each enabling layer has its own correspondent back-end implementation.
- Each back-end implementation must be dynamically discovered at run-time. This allow to decouple the deployment of a different back-end from the development of the enabling layer. In other word each component on the enabling layer MUST NOT have any dependency over a certain back-end implementation.
The only entitled software to depend to the back-end component are:
- bundles (e.g. smartgear-bundle, portal-bundle)
- provisioning script
Accounting Enabling Layer
- Accounting Lib is responsible of collecting, harmonizing and storing Accounting data. Accounting Lib is mainly based and developed on top of facilities provided by Document Store Lib
- Accounting Analytics is responsible of exposing a common access point interface to query the collected Accounting data.
- Accounting Aggregator is responsible of aggregating the collected Accounting data.
Accounting Storage Layer
This layer is not developed by gCube. Rather it relies on a technology guaranteeing HA (High Availability). In the current settings, it is implemented by relying on CouchDB. MongoDB, OrientDB and CouchBase have been investigated. CouchBase has been selected as next storage for accounting Data.
Accounting Backend Layer
- document-store-lib-BACKEND (implementations available: document-store-lib-couchdb, document-store-lib-couchbase, document-store-lib-mongodb)
- accounting-analytics-persistence-BACKEND (implementations available: accounting-analytics-persistence-couchdb, accounting-analytics-persistence-couchbase is under development see [1])
- accounting-aggregator-persistence-BACKEND (e.g. accounting-aggregator-persistence-couchdb)
Each component in this layer has been explicitly developed over a certain storage technology. Each component MUST NOT rely on IS to discover the information needed to connect to the underling storage. In other words the component MUST NOT have an hard-cabled connection information or a local configuration files. To retrieve the storage connection information the following parameter must be part of the query:
- underlying storage technology
- enabling component
The first constraint allow to switch to different storage avoiding to switch all nodes together (two underling storage can co-exist). The second allow to keep separated the connection information for each component. This allow to provide create different access policy for different component (e.g. write only for accounting-lib connection and read only for accounting-analytics).
Accounting Consumer Layer
In this layer we found not only the accounting consumer which retrieve information related to collected data (e.g. Accounting Portlet) but also all the component which collect data and use accounting-lib to persist in a common pattern.