<aside>
❗ PRIVATE AND CONFIDENTIAL - Applies to all subpages and links.
</aside>
This page describes the various back-end services internally known as atlas and how their code is structured. We start first by providing an overview of the architecture and then describe each service’s code in turn.
Table of Contents:
Architecture
The back-end is split into multiple services. Each service has its own docker image and thus can be deployed independently. The services and respective responsibilities are:
- Front-end (FE) service: main responsibility is to act as the gateway between the FE and the remaining services; currently, it also is responsible for executing the repository import/refresh logic
- Git service: reads and synchronizes git bare repositories, which are stored in disk; it implements all the logic specific to git repositories
- Core service: reads from/writes to a PostgresSQL database, which persists all the information imported from the code hosts and some cached semantic analyses
- Hosts service: acts as the mediator between all the remaining services and the code hosts api; in addition to reading from those APIs, it also implements host specific logic such as checks computation
- Orchestrator service: acts as the master service for controlling all semantic analyses
- Diff service: responsible for implementing semantic diffs
- Semantic service: implements analysis over generic language (AST)
The semantic service is written in Rust. All the remaining services are written in Golang.
Very high-level slides here.
Services
Front-end
Git