sandstorm
sandstorm copied to clipboard
Question: shared database by many users
Hi,
I am searching for a simple solution (from developer context) for hosting apps for small teams. The apps would be all very similar in functionality - from traditional point of view: db, backend, frontend. My idea is, that I would run the infrastructure (only few users => one server/desktop is enough), on that infrastructure some app management system would run - sandstorm? which I would use for hosting apps. It needs some user management - create users, set permisions - what user has access to what apps. Simplicity means that me, as a developer, I dont want to deal too much with the infra stuff, nor with coding user management system, etc.. I would like to run some hosting system and then use its CLI for uploading individual apps and also its admin dashboard for setting the user permissions, etc..
Now, is this possible with sandstorm? Ive read all the information on sandstorm's website, but it still isnt clear to me. Is it possible to have an app with db accesible to all users (of that) app? That means, let say, image editor app, where all users of that app (in some org) would have access to the same one database, and if a user uploads a new image, all org members have that image available in their image editor instance. Is this possible? And is such user management system (for orgs) part of sandstorm?
Thank you very much for clarifying this to me.
PS: if sandstorm is not the answer, do you have suggestion for other opensource solution? I was looking at cloud foundry, which has different (and old from you point of view) architecture, where everything is a microservice, it is based on k8s, etc.. Which is all good for me. But the website only speak of developers. Not mentioning anything about user management, admin dashboard, authentication, etc.. Any other ideas, please?
Again, thank you very much.
Cli admin tools are currently a bit lacking, see e.g. #1647, #2586, #3379.
There are some differences between Sandstorm's model and the workflow it sounds like you're envisioning, though it sounds like it may still be able to meet your needs. You'll have to be the judge.
In particular, rather than having singleton instances of an app, with an associated database for the whole app, Sandstorm spins up separate containers for each "grain" -- which might roughly be considered a "document" for apps like word processors & spreadsheets, but it's ultimately up to the app what a grain means for that app. You can play with it on http://demo.sandstorm.io to get a feel.
This sounds like it runs counter to your "one db for the whole app" notion, but if that's really what you're after you can just package your app in such a way where one grain has everything you want in it; your image editor app could treat each grain as a collection of images. Another approach would be to use the collections app to group multiple grains so you can share them as a unit.
You can share grains with others via the sharing button at the top of the Sandstorm UI. There's also a collections app that allows you to aggregate grains, so you can share them as a unit. There's a "see who has access" button in the sharing dialog that allows you to view, revoke, and change the permissions associated with existing shares.
From the app developer's perspective, you define what permissions exist in your app package definition, and then at runtime sandstorm passes you a header telling you what permissions the user has -- Sandstorm handles the rest.