-
Notifications
You must be signed in to change notification settings - Fork 14
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
Conversation
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>
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 |
resources/resource-extensbility/2024-06-resource-extensibility-feature-spec.md
Outdated
Show resolved
Hide resolved
There was a problem hiding this 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!
resources/resource-extensbility/2024-06-resource-extensibility-feature-spec.md
Outdated
Show resolved
Hide resolved
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. | ||
|
There was a problem hiding this comment.
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/
resources/resource-extensbility/2024-06-resource-extensibility-feature-spec.md
Outdated
Show resolved
Hide resolved
resources/resource-extensbility/2024-06-resource-extensibility-feature-spec.md
Outdated
Show resolved
Hide resolved
resources/resource-extensbility/2024-06-resource-extensibility-feature-spec.md
Outdated
Show resolved
Hide resolved
resources/resource-extensbility/2024-06-resource-extensibility-feature-spec.md
Outdated
Show resolved
Hide resolved
resources/resource-extensbility/2024-06-resource-extensibility-feature-spec.md
Outdated
Show resolved
Hide resolved
resources/resource-extensbility/2024-06-resource-extensibility-feature-spec.md
Outdated
Show resolved
Hide resolved
resources/resource-extensbility/2024-06-resource-extensibility-feature-spec.md
Outdated
Show resolved
Hide resolved
resources/resource-extensbility/2024-06-resource-extensibility-feature-spec.md
Outdated
Show resolved
Hide resolved
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>
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. |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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>
| 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. |
There was a problem hiding this comment.
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' | ||
} |
There was a problem hiding this comment.
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) |
There was a problem hiding this comment.
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) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
another broken link
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
```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. |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
Address feeedback Signed-off-by: Reshma Abdul Rahim <61033581+Reshrahim@users.noreply.github.com>
Signed-off-by: Reshma Abdul Rahim <reshmarahim.abdul@microsoft.com>
This PR adds the feature spec document for User defined types
Roadmap item - radius-project/roadmap#14