Product that i am creating can either be self hosted on client's premise or can be used as regular saas hosted by me.How do i make sure that version on clients premise is limited to the number of seats they have purchased? Anyone else providing this kind of service how did you solve this problem? in addition to this what if they want to scale up or down on premise seats how is this usually handled? any ideas?
I worked on an app for a little while that had on-premise for a large part of its income. What the founder did had at least two parts. One was a private docker repository that he access gated. Another part was that the app required signed (as in crypto signed) licenses to run and the licenses were associated with a particular number of users and a particular range of time.
interesting approach, thanks for sharing.
Interesting problems to ponder about. I'd recommend checking out Mike Perham's blog (https://www.mikeperham.com). He runs one of the most successful self-hosted software I have ever seen.
From an engineering perspective, I think each instance bought by your customers will have to communicate with a system on your side for you to have such control and make such management.
Customers that run your software in a private Network will have to allow your IP to reach their instance.
yes i have thought of two options
Use coginto by aws for user registration and authentication in saas version as well as premise version that way i can use same code flow and binary for both cases.
Create two versions one for saas and other hosted with hosted version stripped of user management code additional code for getting token from saas server this will lead to additional maintenace overhead.
so wondering how it is usually done and if someone is having different approach that is getting used in production.
If you want you could with a simpler approach: Provide license key file, that during validation, which should happen once, will contact a service to receive an OK. That file could contain the metadata you think is relevant.
That file alone cannot be falsified because its validator is your own server, and it doesn't need to be something very sophisticated.
This posts talks about a different problem, but I still recommend due to the simplicity on Mikes approach: https://www.mikeperham.com/2016/05/17/commercial-gems/