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

[feature-request] create an engine playground #202

Open
campoy opened this issue Nov 21, 2017 · 9 comments
Open

[feature-request] create an engine playground #202

campoy opened this issue Nov 21, 2017 · 9 comments

Comments

@campoy
Copy link

campoy commented Nov 21, 2017

The best way to get people to try your technology is to reduce time to first "whoa" moment.
In order to do so @eiso created a Dockerfile that allows you to run the engine in a very straightforward way. The only problem I see with this is we require people to install docker and download a pretty large image.

I'd like to create an Engine Playground (à la play.golang.org) that will provide shells into an engine instance running on one of our projects.

advantages:

  • reduced time and friction for users to try our technology
  • hides complexity of setup until it's necessary
  • more inclusive to non-devops
  • can easily track impact visitors/time etc

concerns

  • abuse: can it be used for bitcoin mining?
  • security: can it be use to access resources that should be secret?
  • privacy: could people somehow leave PII we don't want?
  • others: could people upload illegal content to these servers?
  • money: we need to pay for this, obviously
@eiso
Copy link
Member

eiso commented Nov 21, 2017

We're half way there. Right now @rporres is able to do this, and we use them (they are based on the current Dockerfile at the root of this repo). However we manually provision these to people who request them, see here

Since they are provisioned on demand (since we use a new GCP instance per user), we would need a small frontend like Docker.com does with their trial and automated provisioning (should be relatively straight forward to do):

screenshot-2017-11-21-16 45 25

I'd like to create an Engine Playground (à la play.golang.org) that will provide shells into an engine instance running on one of our projects.

Want to make something more fancy or use the Jupyter notebooks?

/cc @marnovo @mcuadros

@eiso
Copy link
Member

eiso commented Nov 21, 2017

Another alternative is having cached data for a (limited) set of queries, this way, we could 'mock' an engine environment.

@eiso
Copy link
Member

eiso commented Nov 21, 2017

To learn more about how @src-d/infrastructure does it today: https://github.com/src-d/infrastructure/tree/master/engine-jupyter-demo

@rporres
Copy link

rporres commented Nov 21, 2017

I doubt the current approach can scale properly... Most likely we would need to use something like Jupyter Hub to manage a multiuser setup...

@eiso
Copy link
Member

eiso commented Nov 21, 2017

From what I understand about Spark we'd need to also move away from Derby (src-d/sourced-ce#192) to allow multiple Spark sessions and a we'd need heavy caching across all sessions.

@bzz
Copy link
Contributor

bzz commented Nov 22, 2017

Hosted playground is a nice idea, esp as simple Jupyter UI with Python or Scala can be exposed.

BTW if we are using a container-per-user model, why would multiple Spark sessions be needed?

@eiso
Copy link
Member

eiso commented Nov 22, 2017

@bzz because of @rporres's comment of how feasible it is to scale with individual instances (not containers) per user.

@rporres since they are temp containers, could we do something like launch a container per user not an instance and have them time-out after x hours of idleness? Just a simple bash script that checks the logs of the container and kills the container if a certain command was not used for x hours?

@erizocosmico
Copy link
Contributor

Is this still being worked on or can we close the issue?

@eiso
Copy link
Member

eiso commented Mar 21, 2018

This will open up again once gitbase is ready, right now it's on pause till performance is where it needs to be.

@smola smola added the blocked label Aug 13, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants