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

Restate CLI #888

Open
8 of 14 tasks
tillrohrmann opened this issue Nov 17, 2023 · 6 comments
Open
8 of 14 tasks

Restate CLI #888

tillrohrmann opened this issue Nov 17, 2023 · 6 comments
Assignees
Labels
cli ops-ex Restate operational experience umbrella

Comments

@tillrohrmann
Copy link
Contributor

tillrohrmann commented Nov 17, 2023

In order to provide a better user experience for our users we believe that a CLI is required. The CLI should enable our users to effectively interact with a Restate deployment. This includes among other things:

  • Obtaining cluster information (ingress, REST endpoints)
  • Interacting with service endpoints
    • Registering new endpoints
    • Inspect endpoints
  • Interacting with services
    • Inspect services
    • Obtain versioning information
  • Interacting with invocations
    • Inspection of invocations and service state
    • Repairing of state
    • Detection of stuck invocations
    • Killing/Cancellation of invocations

Ideally, we can evolve the Restate CLI also into a CLI used by our managed service.

Tasks

Preview Give feedback
  1. api-devex cli
    AhmedSoliman slinkydeveloper
  2. api-devex cli
    AhmedSoliman
  3. api-devex cli
  4. api-devex cli
    AhmedSoliman
  5. api-devex cli
  6. api-devex cli
    slinkydeveloper
  7. cli enhancement good first issue opsex
  8. cli
  9. jackkleeman
  10. needs-refinement
  11. tillrohrmann
  12. cli
@tillrohrmann tillrohrmann added umbrella api-devex Restate user facing Development model cli labels Nov 17, 2023
@slinkydeveloper
Copy link
Contributor

For the prototype we had build a cli tool https://github.com/restatedev/cli which did a number of things, we could also take some ideas from there (not necessarily code)

@AhmedSoliman
Copy link
Contributor

The CLI can be a one-stop shop for developers and operators using restate, I imagine a cli that guides users through the getting started journey for any new project and to be a close companion in development and production time.

@tillrohrmann
Copy link
Contributor Author

@AhmedSoliman feel free to add the next steps for how to extend the current CLI to this umbrella issue (e.g. template project creation, introspection of state and journal, etc.).

@tillrohrmann
Copy link
Contributor Author

tillrohrmann commented Dec 11, 2023

Latest update on the plan:

  • Ship the basic "catalog" experience of the CLI before EOY. (tier 1 features)
    • The catalog experience includes discovery, list/describe services, basic status info of services (keyed and unkeyed), and same for endpoints, finding invocations that are not making progress and killing/cancelling them.
  • The goal is to provide users with the basic tools they need to get through some of the potentially frustrating bits of their day0-1 experiments. Why is my invocation stuck, what's happening with a service, how busy is a service key, etc.
  • not tackle the state/data introspection or patching in this iteration.
  • Tentatively add support for "invoke" through the CLI, time permitting.
  • Tier 2 features that might not make the cut line in this iteration are:
    • Introspection of schema types and methods
    • State/data introspection and patching
    • Restate doctor: Runs a set of internal checks and runbooks to detect common gotchas and report to the user (dead locks, endpoint health, etc.)
    • Restate inspect: Takes any id, service name, or grpc message type and prints information about it. This requires uniform internal ID schema (possibly the one proposed here)
  • Before EOY, need support by adding or improving the set of datafusion/sql tables to support the CLI and we accept that the CLI will absorb the complexity of stitching information from various sources/queries to visualize.
  • We agreed that the path for the future is a dedicated gRPC service "Cluster Admin Server" that provides high-fidelity APIs that supports CLI operations, and also acts as the SQL query server for the cluster. The SQL interface will be provided through the gRPC service as well. That said, this will not happen before EOY and the CLI will not wait for it, but its availability in the future is expected to dramatically improve the CLI experience by providing richer information that reduces CLI complexity.

@slinkydeveloper
Copy link
Contributor

Can we close this @tillrohrmann @AhmedSoliman and just rely on the single issues?

@tillrohrmann
Copy link
Contributor Author

I am fine with closing this issue and moving the open issues into a follow-up umbrella issue.

@slinkydeveloper slinkydeveloper added ops-ex Restate operational experience and removed api-devex Restate user facing Development model labels May 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cli ops-ex Restate operational experience umbrella
Projects
None yet
Development

No branches or pull requests

3 participants