[Ur] Multitenancy

steenuil steenuil.owl at gmail.com
Sun May 13 10:02:46 EDT 2018


I think that might be better handled in the server configuration, you could use the same binary but spin up different processes using a different URWEB_PQ_CON for each subdomain. Adding a new school would just be a matter of creating a new DB on postgresql and updating the server's configuration file, I think.

On May 13, 2018 3:48:27 PM GMT+02:00, Simon Van Casteren <simon.van.casteren at gmail.com> wrote:
>I considered it briefly as I was doing some research on the topic. It's
>the
>first time I'll be running and deploying a SaaS app myself (I've so far
>always been on the programming side only) so it felt more natural to me
>to
>keep everything inside a single application. Running the application
>right
>now consists of me ssh'ing into a Linode and running the exe by hand.
>If I
>want to split this into one application per database (which does
>guarantee
>data security better, that's really nice) then deployment seems to
>become
>much more complicated.
>
>But let's say I do go that route. Is using one of the new deployment
>tools
>a good idea for a just-started scenario? I appreciate how ur/web uses
>very
>basic and simple tools, eg: Using curl in the Worldffi project to do
>HTTP
>requests, not having editor tooling but having the compiler use
>standard
>error formatting so emacs picks it up automatically. This is in strong
>contrast to the javascript community where I normally reside, which
>likes
>to re-implement things a lot. So I'd like to know what advice the
>community
>has on the right tools for setting up a new application and database
>automatically (probably via the C FFI?) and then running and updating
>them
>together. I would like to note that adding and running new clients
>without
>any manual work is strongly preferred.
>
>Because I don't have any idea of how I would handle this adding and
>deploying of clients, I can't weigh the two alternatives: Complicating
>the
>app with tenantIds, or complicating the deployment with seperate apps.
>
>2018-05-13 15:31 GMT+02:00 Adam Chlipala <adamc at csail.mit.edu>:
>
>> Can you explain why you don't want to run separate applications with
>> separate databases?
>>
>>
>> On 05/13/2018 05:50 AM, Simon Van Casteren wrote:
>>
>> Hi,
>>
>> I'm in the process of making a new application for music schools,
>using
>> ur/web for front and backend. I'm at the point where I have two
>customers
>> and am starting to implement support for multiple clients/tenants in
>one DB
>> (postgres). I've been planning to implement multitenancy from the
>start,
>> but haven't had the time yet.
>>
>> Has anyone implemented a form of multitenancy in ur/web before?
>>
>> I see two areas that need consideration.
>>
>> 1. Deciding which user belongs to which tenant. Ideally I'd have a
>> seperate url for each tenant that I can give out to my clients (=the
>> schools), do some dns magic to send them all to the same exe, extract
>the
>> tenantname from the url and save the tenantId in a cookie. Also
>ideally,
>> the user's url would not change, ie. All urls should go to
>> myschool.coolschools.be during a session, not getting redirected at
>all.
>> This is all in an ideal situation of course.
>>
>> 2. Database access: I'll have tenantId columns in all tables +
>foreign
>> keys and indexes on these columns. I'm a bit afraid I'll forget
>adding
>> tenantId = cookie.tenantid somewhere, so I was thinking I could make
>a
>> function that takes a sql_exp and a tenantId and adds these clauses
>to all
>> tables involved. Not 100% sure that will work but I think it's
>possible, I
>> haven't had to dive into the internals of sql_exp yet. Secondly, I
>wonder
>> if I can somehow declare my endpoints to be tenantdepandent (all but
>the
>> most general will be) maybe via newtyping the transaction datatype
>and then
>> allowing the execute only sql queries that have the above function
>applied.
>> Just dreaming out loud here.
>>
>> I'd be very interested in any ideas or examples!
>>
>> Simon
>>
>>
>>
>> _______________________________________________
>> Ur mailing list
>> Ur at impredicative.com
>> http://www.impredicative.com/cgi-bin/mailman/listinfo/ur
>>
>>

-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.impredicative.com/pipermail/ur/attachments/20180513/e6eda50f/attachment.html>


More information about the Ur mailing list