lablup / lablup/backend.ai

Persistent AppProxy Port (Elastic Port)

Open
#4,615 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
670
Forks
183
Avg merge
17h 7m
Merged PRs (30d)
358

Description

## Motivation  

Allocating pool of AppProxy ports to each user, which later will be used to model service or session app to start the app, will let users have their own persistent port - just like AWS do with elastic IP.

## Objective

- Bundle interactive app’s handshake

- [Backend.AI](http://Backend.AI) entity to manage elastic ports
- Maximum number of ports occupied at once must be tolerated by user resource policy.
- When asked to occupy range of ports, [Backend.AI](http://Backend.AI) manager will then ask AppProxy to occupy the actual ports. AppProxy should return series of ports (or subdomains) as well as a unique token referencing each slots.
- [Backend.AI](http://Backend.AI) Manager should keep track of both ports and tokens and later send token to the client so that it can communicate with AppProxy.
- Interactive App Management
- Before calling `/session/start-service` API, client should associate the designated elastic port with the session (the API to achieve this will be addressed later on manager sub-issue). The association API will then return the ID generated by AppProxy.
- Interactive apps associated with elastic port will have infinite lifetime - the app will not be closed regardless of the idleness.
- Elastic port’s disassociation will be completed either when session is terminated or
-
- Inference App (Model Service) Management
- For inference apps, elastic port decouple will be achieved only by removing the model service.
-

##

JIRA Issue: BA-1512

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.