Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add features spec for Resource extensibility #58

Merged
merged 136 commits into from
Oct 8, 2024

Conversation

Reshrahim
Copy link
Contributor

@Reshrahim Reshrahim commented Jul 30, 2024

This PR adds the feature spec document for User defined types

Roadmap item - radius-project/roadmap#14

Reshrahim and others added 19 commits June 14, 2024 12:59
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Co-authored-by: Will <28876888+willtsai@users.noreply.github.com>
Signed-off-by: Reshma Abdul Rahim <61033581+Reshrahim@users.noreply.github.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
@rynowak
Copy link
Contributor

rynowak commented Jul 30, 2024

Can you update this to follow the directory structure we use for images/assets. See: https://github.com/radius-project/design-notes?tab=readme-ov-file#creating-a-pull-request

Copy link
Contributor

@rynowak rynowak left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is off to a great start!

We need to enable the open-source community to build and experiment with imperfect things. We need to provide an extensibility model that supports “Bring your own technology”, define and use it with Radius. This will help us to meet the community where they are and enable them to experiment and leverage their work as open-source contributions.

One of the high value extensibility points in Radius is Recipes. We have received interests to create custom resource types, define Recipes for the custom resource types and use it in the Radius application. Today Radius Extenders helps in creating custom resource types, but they are untyped and have limitations. The goal of providing resource extensibility is to empower developers or infrastructure operators to author and run their applications with custom resource types seamlessly in Radius and use all the other features such as Recipes, connections and app graph with ease and flexibility.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if I shared this with you, but there's plenty of good context here as well: https://tag-app-delivery.cncf.io/whitepapers/platform-eng-maturity-model/

Reshrahim and others added 7 commits August 5, 2024 13:21
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <61033581+Reshrahim@users.noreply.github.com>
Reshrahim and others added 5 commits September 30, 2024 13:54
Signed-off-by: Reshma Abdul Rahim <61033581+Reshrahim@users.noreply.github.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <61033581+Reshrahim@users.noreply.github.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>

## Summary

Radius is a core component of the internal developer platform for enterprises building cloud native applications. Many enterprises use a wide range of technologies together for achieving their cloud-native strategy. For any technology that’s a newcomer and helps solve a problem in the cloud native landscape, users look for an easy and seamless way to integrate their existing tools and technologies and incrementally adopt the new technology to their strategy. For Radius, we have heard requests from our users/community to support technologies that their applications are tightly coupled with E.g.: an internal messaging service or a technology they absolutely love E.g.: PostgreSQL/Kafka. Today, Radius provides [`Applications.Core/extenders`](https://docs.radapp.io/guides/author-apps/custom/overview/) to model any kind of service in an untyped way but they pose limitations for sophisticated enterprises in terms of guardrails and validation that platform engineers want to impose on their developer platform.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would run this through a grammar check in Word. There is a lot little nits that Word would pickup real quick.

1. Deb uses the rad CLI to scaffold a template typespec definition

```bash
rad resource-provider init Contoso.Messaaging --template-kind typespec
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: .Messaging

```
A sample yaml file is created in the application folder.

1. Amy authors the schema for plaid in typespec format

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TypeSpec → YAML

Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
| OpenAPI YAML/JSON | More common and standard format across the open-source communities ; K8s CRDs follow the structure of Open API | Managing versions and ensuring backward compatibility is challenging |
| Typespec | Developer friendly; Maintenance and upgrades are easier; Errors and guidance violations at development time | Microsoft developed language; May not be widely adopted by the cloud-native communities ; Yet another language to adopt |

First, we will create a custom YAML format that requires basic user inputs to define the schema for the user defined type in Radius for users to start using the feature. Following that, we will implement the Typespec authoring experience to provide users with more guidance and validation when authoring the schema.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should change 'will' implement to 'may' implement Typespec authoring. If we don't get customers asking for it I assume we won't do it...

properties: {
name : 'postgresql'
sku : 'standard'
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this brace is extra


1. VSCode Type spec extension warns Amy on the errors and warnings as he types

![alt text](2024-06-resource-extensbility/errors.png)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

broken link


1. Amy uses auto-completion for the schema and properties

![alt text](2024-06-resource-extensbility/autocompletion.png)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

another broken link

Copy link
Contributor Author

@Reshrahim Reshrahim Oct 4, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do see the images rendered in markdown view... anything I am missing?
image

```bash
rad resource-provider init Application.Datastores --template-kind typespec
```
Radius scaffolds a typespec project for the resource provider `Application.Datastores` with individual typespec files for the resource types.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this a future feature? Or did I misunderstand the discussion during the design review where we decided we weren't going to build typespec. If it's a future feature, can you make that clear in the text? thanks

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes this is future feature. Ill add that clarification

Reshrahim and others added 2 commits October 3, 2024 20:30
Address feeedback

Signed-off-by: Reshma Abdul Rahim <61033581+Reshrahim@users.noreply.github.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
@lakshmimsft lakshmimsft merged commit ea8c477 into radius-project:main Oct 8, 2024
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.