jan/adr/adr-001-jan-deployable-cloud-native.md
2023-10-09 22:48:54 +07:00

2.2 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

References