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
- 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.
3 Comments
Unknown User (ofira)
From the diagram/text in this page it is not clear where the DBs of Xray are located.
Arturo Aparicio
In the Overview, we talk about the "services of each product", meaning the microservices and also the "Additional external JFrog Services", meaning Xray, JFMC, Distribution. We should be consistent with our usage of services/microservices/products.
Prasanna Raghavendra
Router should be added as a micro service under Artifactory. we may need support bundle from router - so better to introduce it from the beginning.