Skip to main content

Architecture

The AI App Store is a core component of H2O AI Cloud (HAIC) and can only be used as a direct part of the HAIC platform. It is a turnkey platform that streamlines the process of developing, deploying, and using analytical ML software applications based on the H2O Wave development framework. The App Store server communicates with the Kubernetes API to schedule Wave apps, and it also authorizes and proxies all the traffic that comes through the Wave apps.

From an architectural perspective, App Store can be described as a replicated server that handles the following tasks:

  • Handles the Wave app repository (that is, the list of available apps) and displays pictures and metadata related to apps.
  • Instantiates those apps as running workloads on Kubernetes using scheduling. Uses Helm as an abstraction layer to communicate with the Kubernetes API.
  • After apps are scheduled, they can be described as small containers that run Waved (the Wave server), the application Python code, and HAIC Launcher (a booster binary that ensures that the containers starts and operates correctly).
  • Apps are accessed through the router component of the App Store server.
  • The App Store server uses the Kubernetes API to store information about running apps. This means that HAIC is unable to distinguish between different methods used for manipulating apps (for example, if an app is started with Helm from the command line), which makes HAIC difficult to break even when different methods for manipulating apps are used. This applies to tasks like starting, updating, and deleting apps.
  • The metadata database contains app metadata including locations of relevant icons, how should the app be started, and who owns the app.
  • Metadata database (PostgreSQL):
    • Stores app metadata including tags and pointers to Blob Storage.
    • Doesn't store instance metadata.
    • Stores browser session data.
  • It uses Blob Storage (S3/Azure Blob Storage/GCS) or Persistent Volume to store the app bundles (that is, .wave archives and extracted static app assets including icons and screenshots). Since Blob Storage allows for higher scalability and reliability, it is preferred over Persistent Volume whenever possible.
  • Router:
    • Performs instance access authorization.
    • Routes requests to the relevant instance K8s service.
    • Consults scheduler to find the relevant K8s service.
  • Scheduler:
    • Manages app instances through Helm client.
    • All instance metadata is stored in K8s API through Helm.
  • Wave app instance:
    • 1-pod deployment with clusterIP service and optional PVC(s). The pod runs a single generic container with HAIC Launcher as the main process.
    • HAIC Launcher takes care of downloading the app code, installing its dependencies, starting Waved, and starting the app.

For more details about the architecture of the rest of the HAIC platform, see HAIC architecture.


Feedback