CAST Imaging is a collection of different "services" that function as one. Below is an illustration of these services:

Click to enlarge

Imaging exporter

This component works independently and is based on Python programming language. It is used to export data from CAST Analysis schema and store all the data related to Transactions, Objects, Links, Modules, Architecture model, Data Call Graphs, etc. It converts the extracted data into CSV format which can then be used by the ETL service for further processing and storage in another database called Neo4j.

Click to enlarge

Proxy(Nginx)/Imaging Web (Imaging Front-End)The user interface which interacts with the login component for authentication for every user request. It is a React framework based application deployed through the Nginx web server.
Login serviceEach request from the front-end to the back-end services passes through the login service which authenticates the user's request validity. The Login component talks to all the three services, Imaging service, ETL service and Source code service as per the request of the users. The login service is a Spring MVC based application. It provides various modes of Authentication such as local, LDAP, SAML and Active Directory.
Imaging serviceImaging service is created using "go" language. It interacts with Neo4j to fetch, save and update all the graph-related data and the data related to the users and the user license.
ETL serviceExtract, Transfer and Load (ETL) service also uses the "go" language and is used to import and remove applications for a user. It uses the data extracted by Imaging Exporter and store it in a Neo4j database using the bolt protocol.
Source Code serviceThe Source code service is written using the Spring Boot framework. It is used to fetch the source code for a particular object from the SQL database through the HTTP/HTTPS protocol.
Neo4jNeo4j is a graph database management system. It stores all the Imaging graph related data and various other information about the user and license.