Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

Goals

Cinnamon Reporting has been newly implemented with the following goals

Goal

Description

Example

“Web-first”

  • using JavaScript technologies and libraries allows for isomorphic code that can run on the server as well as in the user’s browser

  • chart engine is based on d3.js / vega.js and all charts are rendered exactly the same way for online reports (in the brower) as for PDF reports (on the server)

  • Cinnamon’s reporting logic (segmentations, translations) is written in TypeScript and therefore can be run both on the server and in the browser as well

Scalability

  • using node.js as our server platform allows for scalability

  • our reporting services are designed to run as microservices

    • separating the services for general reporting productions, word/pdf rendering and portal services

    • use of streaming software to decouple services

  • use of caching for all data sources to improve performance

  • PM2 or kubernetes clusters

  • redis streams

  • redis caching

Open source

  • all features are based on open-source libraries (where enterprise-grade is available)

  • only mandatory comercial software is Aspose.Words for PDF-reporting

  • node.js, express.js

  • redis

Independence of data source technologies

  • main access to data sources is via REST API’s

  • preference for document databases as data/document store

  • mongoDB

Overview

List of Cinnamon Reporting Services and Components

Service / Component

Description

Technologies

Report Production Service

  • Mass-customisation of reports through flexible report types defined on the basis of intelligent, re-useable building blocks & powerful parametrisation

  • Supports business users to manage report types, translations, product/client group parameter profiles, etc. via diverse UI’s

Node.js based microservices leveraging vast universe of open source packages:

Multiple options for document / object persistency:

Code-base in TypeScript allows sharing code between backend and browser:

Scalability through streaming and caching:

Scheduling Service

  • Data-driven report scheduling (based on availability of required data quality in data sources)

  • Can be triggered by external job scheduler

Portal Services

  • User security & session handling

  • User specific report catalog dynamically built from matching report executions

  • No labels