Data Model ========== |nuc_short| represents assets in a hierarchical, tree-like structure. To an end user it looks just like a familiar file tree - with directories and files inside them. Files can be uploaded, downloaded, and moved around; directories created, deleted, and listed. |nuc_short| utilizes a single file tree similar to Unix systems, with a "path" to a file being a forward-slash (:code:`/`) separated string of "nodes": * :code:`/Users/awesome_me/` * :code:`/Users/awesome_me/myfile.usd` While |nuc_short| itself does not care what kind of files are in there (one can upload anything to |nuc_short| as if it was a traditional file server), the most common data formats used across |omni| are ``USD`` (Universal Scene Description),``MDL`` (Material Definition Library), various kinds of images (``.jpg``, ``.png``), and similar. .. _nuc_overview_arch: Architecture ============= |nuc_short| is a collection of services that avail themselves on a network and allow Client applications to connect to those services. Note that Clients can be desktop, user manipulated, applications (i.e., CAD or content creation software), as well as microservices - automated processes (rendering, content manipulation and generation), or whatever you may desire. .. image:: overview/principal_arch.png Within |nuc_short|, there are a number of components, each one communicating with multiple others. The most important of those communications are shown on the diagram, and some lines are omitted for clarity. One example of such an omission would be the ``Tagging Service`` using ``Authentication Service`` to generate a ticket for later communication with ``Nucleus Core``. Externally, some of those services expose API endpoints (open ports) for Clients to talk to them directly. Those ports and endpoints would depend on your :ref:`distribution `. One notable feature is :doc:`Caching <../prod_utilities/cache/overview>` - Clients can (and should) be configured to utilize at least one Cache to optimize downloads of heavy assets. Comprehensive information on |nuc_short| Cache can be found :doc:`here <../prod_utilities/cache/overview>`. Services ++++++++ |nuc_short| Core ---------------- At the center of |nuc_short| is its *Core* - a set of services for storing and retrieving data (files). |nuc_short| Core is exposed to other parts of |omni| via its API, over HTTP and Websockets connections. On the backend, it utilizes a data directory configured by an administrator to store its data. This directory is opaque to the user, and does not represent the actual file tree in |nuc_short|. |nuc_short| Core consists of the following components: * **Nucleus Core API Responder**: the primary component exposing |nuc_short| Core API * **Nucleus Core LFT (Large File Transfer) Service**: in Enterprise deployments, exposes an HTTP endpoint for upload and download of files of larger sizes. (The LFT Service can be scaled to run more than one instance.) * In Enterprise Nucleus Server installations, Core includes extras for exposing metrics, processing and rotating logs, etc. Discovery --------- The Discovery service rides "alongside" |nuc_short| and enables *other* services to register and advertise themselves to Clients. Auth and User Management Service -------------------------------- This service and its configuration and operation is explained in greater detail. Click :doc:`here ` to learn more. |nuc_short| Navigator --------------------- |nuc_short| Navigator makes it easy to browse the data stored in |nuc_short| using a web browser, from |nuc_short| tab within the |omni| Launcher, or by using the standalone |nuc_short| Navigator application. Click :doc:`here` to learn more about |nuc_short| Navigator. Utility Services ---------------- Other services included in |nuc_short| are: * **Search Service**: indexes items in |nuc_short|, and provides API for searching them * **Thumbnail Service**: creates thumbnails for data formats it supports * **Tagging Service**: exposes API to allow users to tag files in |nuc_short| file tree .. _nuc_overview_assumptions: Client Assumptions and Expectations +++++++++++++++++++++++++++++++++++ All |omni| components that connect to |nuc_short| make the following assumptions: * |nuc_short| Core API is available on port :code:`3009` * |nuc_short| Discovery is available on the *same host* on port :code:`3333` If an Enterprise |nuc_short| Server is deployed with an :doc:` SSL/TLS gateway (ingress) ` in front of it, Clients will make the following assumptions when told to connect to :code:`host` (where :code:`host` is the desired DNS hostname of the |nuc_short| Server): * If port is specified when connecting, connections will be made via HTTPS and WSS on that host and port * If no port is specified, an HTTP connection to port :code:`80` and HTTPS connection to port :code:`443` will be attempted. The former is necessary for supporting of redirects. SSL/TLS +++++++ If transport security is desired, an Enterprise |nuc_short| Server allows SSL/TLS to be implemented as a standard gateway we call *Ingress* - a basic HTTPS termination endpoint - that acts as a reverse proxy. Clients talk SSL/TLS to the Ingress Gateway, and the Ingress Gateway uses standard HTTP/Websockets to talk to |nuc_short| Services. For additional information about SSL/TLS configuration, click :doc:`here`. .. _nuc_overview_distros: |nuc_short| Distributions ========================= |nuc| is the database and collaboration engine of |omni|. With |nuc_short|, teams can have multiple users connected together live with multiple applications all at once. This fosters users to use the application(s) they are the most comfortable and quickest with and allows for rapid iteration. |nuc_short| offers a set of fundamental services that allow a variety of client applications, renderers, and microservices all to share and modify representations of virtual worlds together. |nuc_short| operates under a publish/subscribe model. Subject to access controls, |omni| clients can publish modifications to digital assets and virtual worlds to the |nuc_short| database or subscribe to their changes. |nuc_short| can be installed in multiple ways to suit your needs: on an individual workstation, on-premises using an Enterprise |nuc_short| Server, or in your preferred Cloud Service Provider. |nuc_short| Workstation +++++++++++++++++++++++ .. image:: /content/images/install-guide_section-head_workstation.png |nuc_short| Workstation provides a comprehensive set of services to evaluate |nuc_short|. It is intended for those who want to try |omni| locally and collaborate with a small number of users. |nuc_short| Workstation supports both Linux and Windows and supports all essential features of |nuc_short|, and can be connected to by |omni| Client applications. Enterprise |nuc_short| Server +++++++++++++++++++++++++++++ .. image:: /content/images/install-guide_section-head_nuc-on-prem.png Enterprise |nuc_short| Server is intended for Enterprise deployments in both on-premises or in your preferred Cloud Service Provider. It includes and supports all services and features available including: - **Caching**- |omni| Cache speeds up your users by keeping the data close to them and avoiding the need to download files. - **Enterprise backup and restore functionality**- Sample scripts are provided as part of the Enterprise |nuc_short| Server for you to craft your own custom backup tooling to suit your requirements. - **Advanced authentication and security features**- Including :doc:`Single Sign On (SSO) ` and :doc:`SSL/TLS `. Currently, Enterprise |nuc_short| Server is provided as :doc:`Docker Compose ` artifacts, however Kubernetes artifacts are planned for the future.