Domino Data Science Platform consists of several services that provide the features that data scientists consume. The major services that make up an instance of Domino Data Science Platform include:
- Domino API server—The server exposes the Domino API and handles API requests.
- Docker registry—The Docker registry is used to store and distribute Docker images. Domino Data Science Platform uses the Docker registry to store images that are built for Domino environments and model APIs.
- Dispatcher—The Domino dispatcher handles orchestration of workloads on compute nodes. The dispatcher launches new compute pods, connects results telemetry to the Domino application, and monitors the health of running workloads.
- Executor environments—Environment images consist of a base image container that Domino Data Science Platform provides and any additional customizations that are required for a specific project or workflow. Generally, a Domino environment has several images available for data scientists to select. For example, there might be separate executor images available that contain configurations necessary to access specific data sources or network resources. Domino Data Science Platform tracks revisions to ensure model compatibility through iterations. Executor runs occur on the compute grid.
- Front-end services—Front-end services power the Domino web interface with Nginx HTTP web and reverse proxy server, which requires load balancer.
Kubernetes nodes that run the Domino Data Science Platform are assigned to either platform or worker function and are referred to as platform nodes and worker nodes:
- Platform nodes—Platform nodes run the services that make up the Domino Data Science Platform. A specific platform node is designated as the build node. The build node is responsible for turning the environment definitions into container images.
- Worker nodes—Worker nodes run the executor images that Domino users and the Model as a Service (MaaS) deployments consume. These nodes make up the “compute grid.” Worker nodes are assigned to pools with Kubernetes node labels. When users request an environment, they can specify the pool in which to run it. An administrator can restrict users to specific pools. Pools also define the availability of different hardware accelerators such as GPUs or local NVMe storage.