Pergunta

I have already built a nodejs webapp that I want to make available as a service, but I don't know the next steps to automate the whole thing given the following steps :

  1. people come to my website and create an account for a free trial by providing what could possibly be the domain name for their version of my app ( what will become a subdomain on my server)

  2. an image of the app is automatically set up and launched on provideddomain.mywebsite.com

  3. they log to their account to start configuring their version of my app

  4. if they like the app they can purchase or transfert a domain so that their version of the app can be accessible from provideddomain.mywebsite.com to newdomain.com

Basically, I wish to offer a platform where my customers can use an image of my app ( behind the fomain namr of their choosing domain).
I think I can use containers and kubernetes to have something like a paas, but I don't know if they are the right tools for achieving what I'm looking for.

I already know how to deploy an app on openshift (containers) and I figured there must be a way to automate the whole process. Much like what WordPress does when you create an account and have a subdomain and everything, ready for you to use.

Can anyone point me to the right resources ?
any other tips, hints on some steps I didnt mention will also be greatly appreciated.

Foi útil?

Solução

A container per client is great if there's ever a chance they'll download it and run it elsewhere. Otherwise, consider a multi-tenant architecture and save the containers, VMs, etc for adding resources to your platform.

  • To start, you'll need a master client data store. You'd need this anyway, so it's no big change. Use this data store to track your clients, their service level/billing, and which application node/cluster is serving them.
  • When a prospect signs up, add them to the client data store and assign them to an appropriate app cluster. (An app cluster is some combination of web servers, service endpoints, and data stores.) If your architecture is truly multi-tenant, there's no need spin up a new database or container on the cluster. It'll already be ready for application data. The client can immediately start experimenting -- their data is logically partitioned (could be physically partitioned as well, but that's another topic).
  • Application configuration is likely stored on the app cluster, though you'll want billable features tracked in the master data store as well.
  • If the client wants their own domain, it's a simple matter to add the host to your web servers and route requests as appropriate. If you want to get fancy, you could register domains on their behalf. Again, that's probably another topic.
  • This setup doesn't change the need to add resources as you grow. It just makes the need for a new container, data store, or VM a choice about your growth and not something you have to do each time a client signs up.

Other resources:

Licenciado em: CC-BY-SA com atribuição
scroll top