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 87 forks source link

Refactor Code to Enable Easy Integration of Cloud Providers #7560

Open hivanov opened 2 months ago

hivanov commented 2 months ago

Area for Improvement

Currently, the code is sprinkled with if statements that switch between Azure and AWS. The same paradigm is in place in almost all cli commands. It's very hard to reason about the code and where to start implementing a new cloud provider.

Can you please:

  1. Extract generic cloud provider interfaces.
  2. Implement the generic interfaces for Azure and AWS?

The idea behind the project is very cool, and would benefit a lot from having multiple providers in place. We would like to implement a new cloud provider for STACKIT cloud, but just looking at the code, we see that there are a lot of implementation-specific paradigms in all of the commands' logic (if azure, if aws, etc.)

We are willing to help. Please contact me directly on this, but we would like to get an estimate and possible roadmap on how we can get this done.

Observed behavior

No response

Desired behavior

  1. Generic cloud provider interfaces for: 1.1. Authentication 1.1. Services' list 1.1. Recipes list (both terraform and bicep) 1.1. Cloud-specific configs (for things that do not fit the general configuration) 1.1. Services' provisioning (either via Terraform or Bicep)
  2. Example implementation 1.1. For AWS 1.1. For Azure

Proposed Fix

No response

rad Version

RELEASE VERSION BICEP COMMIT 0.33.0 v0.33.0 0.33.0 6ffdc9980420c00f7af35b024dd0e62e598efef2

Operating system

MacOS Sonoma

Additional context

No response

Would you like to support us?

AB#12241

radius-triage-bot[bot] commented 2 months ago

:wave: @hivanov Thanks for filing this issue.

A project maintainer will review this issue 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

youngbupark commented 2 months ago

This proposal is also related to the work to support multiple cloud platform for serverless compute. cc/ @rynowak @willtsai

radius-triage-bot[bot] commented 2 months 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

radius-triage-bot[bot] commented 2 months ago

We've prioritized work on this issue. Please subscribe to this issue for notifications, we'll provide updates as we make progress.

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

willtsai commented 2 months ago

@hivanov - first off, thank you for submitting this very detailed request and being willing to help us on this effort. The Radius maintainership team has reviewed your submission and view this as a high-value item that not only may enable your team in integrating Stackit Cloud with Radius, but also pave the way for future integrations such as GCP (https://github.com/radius-project/roadmap/issues/38).

We'd love to work with you to learn more about the Stackit Cloud integration and figure how we can get this accomplished! What's the best way to get in contact with you? Are you in the Radius Discord server (https://aka.ms/Radius/Discord)?

Thanks, -Will