dotnet / tye

Tye is a tool that makes developing, testing, and deploying microservices and distributed applications easier. Project Tye includes a local orchestrator to make developing microservices easier and the ability to deploy microservices to Kubernetes with minimal configuration.
MIT License
5.29k stars 520 forks source link

Defining and Running Multiple Tye "Apps" #1504

Open a-shoemaker opened 1 year ago

a-shoemaker commented 1 year ago

What should we add or change to make your life better?

Ability to define and run multiple "apps". Currently, the paradigm is a single "app" that can contain any number of services. An "app" being a collection of services that fall under the same namespace.

A new or changed schema and subsequent ability to run and deploy (or at least configure), selectively, any number of "apps" would allow for a larger platform definition and be more flexible for the local development story. Changes to the dashboard would be needed for a hierarchy (e.g., two levels for app and then it's services).

Ideally, I believe, you would be able to define a service once that could be used in multiple "apps".

Why is this important to you?

Our desired unit of deployment is an "app", we'll call a "microservice". This is a collection of component services. There may be other microservices which have their own version of a particular component service. Say, for example, there is an API layer which is it's own unit of deployment and namespace which calls into a "microservice". We want to be able to run this API and microservice at the same time. Additionally, a schema with this higher order ability should also allow for less duplicated configuration.

This is something we are looking to do and curious really if this would be helpful for others or even if others have solved this problem in a different way.

razvangoga commented 1 year ago

Tye already supports adding taggs to services (https://github.com/dotnet/tye/blob/main/docs/reference/commandline/tye-run.md -> see tags) and pulling in another tye.yaml in your current one (https://github.com/dotnet/tye/blob/main/docs/reference/multirepo.md#reference-to-another-tyeyaml).

You could have a tag for all the services that belong to your app for examaple.

a-shoemaker commented 1 year ago

Tye already supports adding taggs to services (https://github.com/dotnet/tye/blob/main/docs/reference/commandline/tye-run.md -> see tags) and pulling in another tye.yaml in your current one (https://github.com/dotnet/tye/blob/main/docs/reference/multirepo.md#reference-to-another-tyeyaml).

You could have a tag for all the services that belong to your app for examaple.

Thanks for the suggestion, that's exactly what we are planning to do, use tags. We've created our own tool which will generate a single tye yaml from our own specification file with everything. Subsequently will utilize tags for the developer loop to run just what is wanted.