jan/adr/adr-001-jan-deployable-cloud-native.md

2.3 KiB

ADR #001: Jan deployable cloud-native

Changelog

  • 23.10.03: Initial unfinished draft

Authors

  • @nam-john-ho
  • @louis

Context

Status Quo

Decision

  • This ADR aims to outline design decisions for deploying Jan in cloud native environments such as: Runpod, AWS, Azure, GCP in a fast and simple way.
  • The current code-base should not change too much.
  • The current plugins must be reusable across enviroments (Desktop, Cloud-native).
  • Simple authentication (username/password) must be supported.

Key Design Decisions

Key Design

Why middleware

  • The /web codebase needs to operate in both browser and electron environments
  • The /web codebase needs to route plugin routes accordingly, either to /server or /electron
  • Middleware takes care of this
  • We will have a /server codebase that takes care of routing to plugins

Unsuitable Alternatives

  • Not possible to just run electron headless
  • /web is on a different chromium window
  • Does not have all the electron handlers
  • Does not have the IPC handler

Detailed Design

FE

  • Middleware:
  • Httpserver: TBD
  • Custom build for httpweb/electron: TBD
  • IPC
  • Electron imports in plugins

Devops:

  • Allow to pass username/password as environment variables
  • Assign a Public IP to the instance
  • Customize instance types on-demand.
  • Runpod: TBD
  • AWS: TBD
  • Azure: TBD
  • GCP: TBD

Alternative Approaches

Separated server process runs along side with electron. 6005409a94

Considerations

  • In the first version, all current plugins will be loaded in the web version by default, and users will not be allowed to add, remove, or update plugins.

References