Each JFrog product can be deployed with 1 or more nodes. Each node has its microservices and a local router (service discovery and API gateway). All microservices of the same product are deployed on the same node/host.
The JFrog Artifactory service contains the following microservices:
| Additional external JFrog services are:
| Outside the JPD:
|
JFrog Xray Service
The Xray service contains the following microservices:
- Indexer - Responsible for the indexing process, including:
- Recursively extracting artifacts and builds
- Collecting artifact metadata from accompanying files
- Building an artifact components graph representation
- Persist - Responsibilities include:
- Matching the given components graph with the public component information
- Completing component naming
- Storing graph data and component metadata in PostgreSQL
- Analysis - Responsible for enriching component metadata such as vulnerabilities, licenses and versions.
- Server - Responsibilities include:
- Generating violations by matching analysis data with watches and policies
- Hosting the API and UI endpoints
- Running scheduled jobs such as the database synchronization process
- Router - Responsible for communication between all the microservices and cross-product.
JFrog Mission Control Service
The Mission Control service contains the following microservices:
- Mission Control - Core Mission Control service
- Insight - Handles insight related data management and API functions
- Scheduler - Manages scheduling for different internal Mission Control tasks
- Executor - Executes tasks to collect data from services
- Router - Responsible for communication between all the microservices and cross-product.
JFrog Distribution Service
The Distribution service contains the following microservices:
- Distribution - Responsibilities include:
- Hosting the API and UI endpoints
- Sending distribution tasks via Redis to the Distributor
- Syncing the other Distribution nodes with changes
- Distributor - Responsibilities include:
- Processing distribution tasks
- Communicate with Artifactory edge nodes
- Communicate with the source Artifactory
- Router - Responsible for communication between all the microservices and cross-product.
JFrog Pipelines Service
The Pipelines service contains the following microservices:
- API - Responsible for hosting the API endpoints.
- Cron - Responsible for running internal jobs on intervals, including timing out steps and calculating statistics.
- HookHandler - Processes resource webhooks received by API.
- Logup - Transfers console logs from steps from the database to Artifactory as steps complete.
- Marshaller - Responsible for starting build nodes in dynamic node pools.
- Nexec - Responsible for running scripts on auto-initialized build nodes.
- PipelineSync - Reads the YML files in the pipeline source and updates the pipelines and resources with any changes.
- RunTrigger - Responsible for creating runs when a run is triggered manually or through a resource update.
- StepTrigger - Determines which waiting steps are able to run and queues them to be picked up by the build nodes.
- WWW - Hosts Pipelines UI pages that are supplemental to the JFrog Platform, including Pipeline History and Run Logs.
- Router - Responsible for communication between all the microservices and cross-product.