radius-project / radius

Radius is a cloud-native, portable application platform that makes app development easier for teams building cloud-native apps.
https://radapp.io
Apache License 2.0
1.43k stars 86 forks source link

Serverless container runtimes #7648

Open willtsai opened 1 month ago

willtsai commented 1 month ago

Overview of feature request

Given the importance of serverless infrastructure in the modern application landscape, it is a priority for Radius to expand beyond Kubernetes and support serverless compute platforms. Not to mention, this feature is a common ask from potential enterprise customers who may operate tech stacks beyond Kubernetes containers.

Acceptance criteria

  1. Genericize the Radius platform to support deployment of applications on serverless (and other) compute platforms beyond Kubernetes.
  2. Enable developers to deploy and manage serverless containers in a way that is consistent with the existing Radius environment and application model.
  3. Make all Radius features (Recipes, Connections, App Graph, etc.) available to engineers building applications on Radius-enabled supported serverless platforms.
  4. Radius support for unopinionated or process-driven serverless container runtimes (e.g. Azure Container Instances, Azure Container Apps, AWS Elastic Container Service).

Scenario 1: Model Radius Environment, Application, and Container resources for serverless

Enable the ability to define and run serverless compute with necessary extensions in a Radius environment. Radius application definition for applications running on serverless compute platforms. Must be sure to include serverless platform specific customizations via a runtimes property, similar to how Kubernetes patching was implemented for containers.

Radius abstraction for a container resource that can be deployed to serverless compute platforms, leveraging the runtimes property. Must be sure to include serverless platform specific configurations via connections, extensions, and routing to other resources via gateways.

One idea to explore is whether we can we build extensibility via Recipes - i.e. allow Recipes for Containers, which themselves can be serverless containers.

Scenario 2: User interfaces for serverless--Radius API, CLI, Dashboard

Enable deployment and management of serverless compute resources via the existing Radius API and CLI commands. Serverless resources that are modeled in Radius should be available in the App Graph and Dashboard for visualization and management.

Scenario 3: Punch-through to platform-specific features and incremental adoption of Radius into existing serverless applications

Allow for platform-specific features to be used in Radius applications via abstraction "punch-through" mechanisms, similar to how Kubernetes-specific features are supported in Radius via base YAML or PodSpec patching functionalities.

Stretch goal: Ability to add Radius to existing serverless applications without requiring a full rewrite of the application, similar to how Radius can be added to existing Kubernetes applications via Kubernetes manifest or Helm chart annotations. Note: The Kubernetes/Helm support works because Kubernetes itself is extensible. Other systems like ACA are not extensible in the same way but we should explore if there are options to make this work.

Additional context

No response

Would you like to support us?

AB#12430

radius-triage-bot[bot] commented 1 month ago

:wave: @willtsai Thanks for filing this feature request.

A project maintainer will review this feature request and get back to you soon.

We also welcome community contributions! If you would like to pick this item up sooner and submit a pull request, please visit our contribution guidelines and assign this to yourself by commenting "/assign" on this issue.

For more information on our triage process please visit our triage overview

radius-triage-bot[bot] commented 1 month ago

:+1: We've reviewed this issue and have agreed to add it to our backlog. Please subscribe to this issue for notifications, we'll provide updates when we pick it up.

We also welcome community contributions! If you would like to pick this item up sooner and submit a pull request, please visit our contribution guidelines and assign this to yourself by commenting "/assign" on this issue.

For more information on our triage process please visit our triage overview