Open utterances-bot opened 1 year ago
Great summary, thanks for sharing, Tim!
One question, if customers can all deploy their own local product, how could the cases of data need to transfer/share among different customers be dealt with? Should there still be a global service to orchestrate among different customers to connect to each other somehow.
But definitely, I also heard a lot about self-hosted deployment of the cloud products request for the data sovereignty concerns.
The customers deploy the product themselves but it is still hosted by a cloud provider accessible over the internet. Sharing of data between instances works the same way as sharing data between tenants in saas applications like ACC. The only difference is that tenants are identified by URL rather than by GUID.
Yes, and suppose the public accessible URL/domain will be different from each customer as they deploy their own product. Then, 1) how one customer can easily discover the other customer's public endpoint/domain to interact with? 2) what if one user (e.g. a consultant type of user) has accounts in different customer's product, and how that user can easily list all his/her accounts from different customer's products?
1) There has to be some kind of invite/authorization process. Kicked off by one customer sending the other an email with an invite link. 2) Will need an external mechanism like browser bookmarks, keeping a copy of your invite emails, browser history/auto-complete. Same things you would do if each customer was using a different product (ACC, Procore, Aconex, ....)
Great article, Tim! I always enjoy reading your blogs. One aspect that can be challenging in the "deploy in customer account" model is a simple strategy to push updates to your binaries. And if your solution allows some kind of way for the customer to build customizations or extensions on it, then the problem becomes even more tricky.
Glad you're enjoying them @monmohan. Yes, I need to figure out how to make initial deployment and later updates as simple as possible. First step will be a basic pipeline using AWS tools triggered from GItHub actions. I need that for my own development and demos. First question is whether a customer could use that? i.e. Clone repo, update config file, deploy, ... How many manual steps will that involve? How complex is it to set up DNS and AWS auth?
Other things to look at are tying into AWS marketplace, or AWS console or building some automation that cuts down the number of manual steps needed.
Modern SaaS Architecture
Last time we looked at the evolution of multi-tenant architectures. So, what does the architecture of a modern multi-tenant SaaS product look like? Well, for a start, its a microservice architecture deployed on one of the big three cloud providers (most commonly AWS).
https://www.thecandidstartup.org/2022/11/28/modern-saas-architecture.html