TheCandidStartup / TheCandidStartup.github.io

The Candid Startup Blog
https://www.thecandidstartup.org
BSD 3-Clause "New" or "Revised" License
0 stars 0 forks source link

2022/11/28/modern-saas-architecture #11

Open utterances-bot opened 1 year ago

utterances-bot commented 1 year ago

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

Wayne82 commented 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.

timwiegand commented 1 year ago

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.

Wayne82 commented 1 year ago

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?

timwiegand commented 1 year ago

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, ....)

monmohan commented 1 year ago

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.

timwiegand commented 1 year ago

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.