-
Notifications
You must be signed in to change notification settings - Fork 521
State of Tye #1459
Comments
It would be very interesting to understand what is the future for the Tye, as some of the PRs are hanging for more than a year. |
Gonna tag @jkotalik @rynowak @philliphoff and @davidfowl for visibility. |
We're currently looking at moving the last of our apps over to containers (likely to be hosted w/ AWS Fargate) and I threw Tye out there as something we should look at as a lot of its goals and features we'd benefit from greatly. I think we may just jump onto the .NET 7 container publishing if it's flexible enough for us, just to get these app containerized and running on Linux; but then we miss out on Tye features like service discovery (hardcoding our app ports right now, and Windows likes to take them!) 😞 |
Tye was an experiment from the .NET team and it's not dead but it's definitely not actively being work on at the moment. We're working on figuring out how these fits into our cloud native tooling story. I do believe this approach is one we want to take, at least for the developer experience, I'm not sure about the deployment story (though there's no harm in having something like that for toy scenarios). Stay tuned... |
To give some input: The developer story is what at least me, my team, as well as companies I consult tend to really care about. For deployment, we tend to use Tye to at least build and push containers to our registry. This works very well from CI pipelines. This is however where Tye usage stops as pretty much everyone prefers to develop and maintain a helm chart for deployment. It would be interesting to see what ways deployment could be handled, but right now the yaml generation that tye does is not flexible enough to be used for most scenarios. Always around to discuss what I have seen and discussed with others. Pretty much everyone has been happy with how Tye handles development. |
Just popping by to +1 the developer story usage of Tye. Personally I've never seen the benefits of the deployment parts, but the "docker compose" like functionality is awesome. It's working well and I'm using it daily. It could however benefit from a couple of smaller improvements (like being able to start/stop individual services without restarting Tye completely). I would love to see a future where Tye could support other types of projects, not only .NET and containers. Maybe it could be extensible in a way that one could write their own plugins or general tasks for other types. Go Tye! 😄 |
If you're using Tye, make sure you fill out the survey, all of that feedback helps us make decisions about what to prioritize. |
I'm guessing it's this one: https://www.surveymonkey.com/r/RWHQYL7 |
I vote incorporate the ability to run multiple apps at once into the dotnet CLI.. Honestly that's the most important thing to me, being able to run all the apps/dependencies from a single command |
The inference Im making reading the comments that tye will not die and wirse case it will be folded into other tools? One concern is if it dies all our work to get our projects to support its configuration will be wasted? So we should not worry about this? |
Survey filled. I would really like to see the development of Project Tye resumed. I use it on all my projects, and all the sample codes for my talks. Also, I have started collecting some usage samples into a GitHub repository - https://github.com/miroslavpopovic/tye-and-docker-compose-samples. |
Is there potentially any process that this can just get turned over to the community in some official capacity? Or is there anything perhaps coming in the immediate future about rolling in somewhere else (Dapr or official dotnet project)? |
+1 on this one and on the developer story. |
Turn it over? Anyone can fork it. |
From a tooling story we are looking at the principles that Tye offered and seeing where we can take this within the bigger story and support more the .NET, reduce dependencies and as David mentioned, making the cloud native story as best as possible. The deployment story was specifically targeted at Kubernetes, and with many other container host options available; integration with GitHub Actions, DevOps and a part of the developer experience without cognitive overload and complicated configuration is also key. |
Love the tool. Blogged about it, my customers love to use it because it makes it extremely easy to run multiple applications at once, even mixing them with containers. I don't particularly care for Kubernetes integration because I deploy mostly to AWS ECS. The tool needs some QoL improvements but it works nicely already now. Yet, I'm curious to see where it can go. My posts about Tye:
I already filled in a survey around 0.6, is the survey a new one? |
Also it makes running dapr applications much easier.. |
@Kralizek these blog posts are amazing. I'd love to also hear about the way tye is being used. The original intent was distributed applications and microservices but is anyone using tye as a local orchestrator (or in prod?)? |
@davidfowl what do you mean by local orchestrator? My customer uses Tye to start around 15 ASP.NET Core services (GRPC and classic REST) together with a container for local DynamoDB, ElasticSearch and OpenTelemetry. All works great because the services are able to talk to each other and consume the containers all retaining debugging and quick reload capabilities. I guess this is what you would call local orchestration. In production, we pass envs that follow the schema of the Tye Configuration extensions. The values are calculated by Terraform and fed into the ECS Task definition. Some QoL I'd love to see:
|
I'm going to be reviewing and merging PRs on Tye again (yay down to 14 at time of writing). I'll also be looking at fixing some of the issues that are long standing paper cuts. |
Currently we use the same way @Kralizek does - with similar amount of services (although we rarely start all the services, tags functionality helps a lot to quickly start only needed set of services). |
Can't you control the host names by changing the service name? Can you show what you mean? |
@davidfowl I think I can't use dots in service name.
That allows us to forward requests for example from api.twilio.com to our container for mocking.
|
@dziedrius I see, please file another issue with these details. |
Oh, another small QoL: when in |
Yea, that's QOL but requires some big design changes. |
Awesome blog posts @Kralizek , the one about LocalStack could be really useful for us as we're getting to that point now where shared queues and whatnot are a problem across the team. We also use ECS, so Kubernetes support isn't relevant to us for now. We'll be jumping onto Tye in the NY, mostly for local orchestration if I understood the meaning correctly (we need service discovery so we're not hardcoding ports mostly). Some local, some remote Debugging The VS Code extension seems to be more fully fledged, but most of us I imagine would be running VS. I saw a few VS extensions that seemed useful. Here.
Summary |
I use Tye in every project I come across these days, and even go so far as use it to run live automation tests in pipelines (probably a no no, but hey it's a container so why not :D) Do you think it should be a part of dotnet, or should we just keep the project alive with a community call or something? maybe we could get some good value out of it by making a module to deploy to Azure Container Apps from tye. |
Reading between the lines would it be reasonable to say that the project is effectively dead and the tool experiment was a success and will be released perhaps in a different form. There appears to be new updates in 2023. |
@lefig it might not have active development, but it still works and I think that's the beauty of it! It's simple, and pluggable and over the last few years that I've used it I have had almost no trouble in getting it to work with my dotnet 3.1 -> 7 projects. |
@Phiph I agree with you, it works. But some features are still missing (environment variable manipulation for one). Also, if it focused only on the inner development cycle, it should support better some use cases like frontend applications. My hope is for an arrangement like the one for CoreWCF: a community led project with supervision by Microsoft. |
@Kralizek I haven't come across the environment variable manipulation problem, what's the challenge? For my front end apps I tend to point at a container, which isn't ideal, but gets me somewhere! |
You can kinda sorta launch an npm app, not very cross-platform friendly though; - name: your-service
executable: "%ProgramFiles%/nodejs/npm.cmd"
args: start
bindings:
- port: 5050
protocol: http |
@onionhammer this is also the approach I'm using. The container suggested by @Phiph makes it uncomfortable for frontend developers who are used to work with the hot reload. There are few issues opened regarding environment variables manipulation. I'm from the phone right now. I'll add some links and comments tomorrow. |
Ahhh good point - it just shows how much front end dev I do in anger! don't worry I scrolled up and found your issue - #377 (comment) Is there a Discord, or community around tye? If not should we set one up? |
Gonna tag @jkotalik @rynowak @philliphoff and @davidfowl for visibility. |
Does anyone have nodejs front end + backend samples with tye? |
@davidfowl I just worked with it at work so private projects. Maybe I can write some boilerplate using Tye with mixed node and .net services in free time |
Here is what I got running right now name: sample
services:
- name: web
executable: cmd
args: '/c npm run start --prefix Web'
bindings:
- protocol: http
env:
- name: BROWSER
value: none
- name: legacy
executable: '%PROGRAMFILES(x86)%\IIS Express\iisexpress.exe'
args: '/path:%LegacyAppPath% /systray:false /port:29213'
bindings:
- protocol: http
port: 29213
- name: api
project: Backend/src/API/API.csproj
bindings:
- protocol: http
- name: database
image: mcr.microsoft.com/mssql/server:2022-latest
bindings:
- containerPort: 1433
connectionString: Server=${host},${port};Database=sample;User Id=sa;Password=${env:MSSQL_SA_PASSWORD};TrustServerCertificate=True
env:
- name: ACCEPT_EULA
value: Y
- name: MSSQL_SA_PASSWORD
value: yourStrong!Password
volumes:
- target: /var/opt/mssql/data
source: data/database/data
- target: /var/opt/mssql/log
source: data/database/log
- target: /var/opt/mssql/secrets
source: data/database/secrets
tags:
- db
ingress:
- name: ingress
bindings:
- protocol: http
port: 11470
rules:
- path: /api/v1
service: api
- path: /api
service: legacy
preservePath: true
- path: /services
service: legacy
preservePath: true
- path: /
service: web
preservePath: true Here I have:
Major pain points with this setup:
A tiny bit OT: |
Yeah, looks something like this name: c2c-app
services:
- name: c2c-app-frontend
executable: "%ProgramFiles%/nodejs/npm.cmd"
args: start
bindings:
- port: 5050
protocol: http
- name: c2c-app-graphql
include: ../../tye.yaml Not the best, or cross-platform ready, you can either start tye in the root (which skips starting frontend) or start tye in the src/Frontend folder, which also includes the root tye project |
Anyone setting up emulators for storage, eventgrid or other systems instead of using containers? Have a sample? |
I wrote a blog post about using LocalStack with Tye, maybe that could be of help? https://renatogolia.com/2022/07/21/using-localstack-with-microsoft-tye/ |
I guess Aspire is the new Tye 🤔 |
Ya know I really wanted to tell you all, but now I think we can say it since everything is public 😄. Aspire is a superset of tye. The orchestration pieces are usable in a standalone manner if you just want to use that. |
Why not just continue to develop Tye as a "v2.0" and evolve it in the open instead of creating a replacement? |
One thing I'm looking forward to understand how it works is the replacement for the I'm deploying my services to AWS and with the Tye library I could craft the configuration values so that the services could talk to each other once deployed as well. I guess I have to go and look in how the new AddServiceDiscovery method works. Edit: I guess I shouldn't be writing while the panel is ongoing 🫣🫣🫣 |
https://learn.microsoft.com/en-us/dotnet/aspire/service-discovery/overview |
I just want to say thanks @davidfowl as well as to everyone on the Aspire team, it seems like you guys listened well to the needs that those of us working on cloud native distributed apps have, and that you guys came up with a good solution. I'm excited for the future of Aspire and where it could go! 😁 |
I just heard about Aspire today, this is great news. We use Tye with Dapr and heard about project Radius yesterday, are the two related? |
We literally started using tye on a project a couple of weeks ago. I guess it's now time to migrate to Aspire! 😀 |
Thank you all for the support, usage and feedback. Please dive into https://github.com/dotnet/aspire as the we will not be doing any further work in this repository. |
@davidfowl one last question pertaining Tye. I understand Tye is as much as in beta as Aspire is. My question is, is Aspire ready for primetime or is it better to wait few releases before migrating from a tool that has more or less been working for the last years. Are there features supported in Tye that have been willingly put on a lower priority when working on Aspire? I haven't had the time to play with Aspire yet (damn timezone 😛) so bear with me if my questions have trivial answers. A great deal has been given to "hiding" port numbers and connection strings. But sometimes you want to be able to grab the connection string to the database and use it to access the database from mssql management studio or rider/datagrip. Is there a way to access it? Another thing I didn't see any mention during the panel is an equivalent to the That being said: great work and see you on the other side! |
That's up to you. Now that you know for a fact that Tye won't get any updates it'll be your choice to make. I'd suggest trying it an evaluating if it works well enough for you or if you can't use it for some reason and file issues or discussions.
It works much like tye but is a bit more auto-magic because we're using C# and can actually do software composition with abstractions yay! Aspire uses the idiomatic connection string configuration (ConnectionStrings__name), so you can grab it at runtime like normal. Same with the data provided for service discovery. Once you start using it, it'll make sense.
This is no ingress and this isn't something we're going to bring back. I'd recommend people just make a project with YARP which didn't exist when we did tye.
Can't wait! |
Development of Tye seems to have slowed in recent times, so I want to get a gauge on what the current status of the project and what future plans may be.
.NET is starting to evolve to contain better tooling for building containers which is fantastic, is this the start of making container and microservice development easier directly in the SDK? Are there plans to make features in Tye directly available in the .NET SDK? If so do we have any timelines for this?
What is the plan for Tye as it stands now? A 4 week release cycle is listed in the readme but dropped off after 0.10.0 in September of last year. We have only had one release since then back in February. Is there a lack of developers to support working on this and more maintainers are needed? I'm sure integrating with the new .NET 7 container build tooling as well as some other open issues such as #1013 are desirable. As it currently stands Tye is falling behind capabilities in the SDK.
It would be sad to see Tye slowly die off, as it really is a useful tool. I hope there is some future in it as either Tye as it stands or its features migrated into the .NET SDK.
The text was updated successfully, but these errors were encountered: