Comment avoir une database séparée pour les clients tout en maintenant le contrôle sur le code?

J'ai une application SAAS hébergée sur AWS EC2 et RDS. nous utilisons django et Postgres pour la stack

Ce que nous avons fait, c'est que nous avions le schéma public contenant l'information du locataire, mais datatables spécifiques au locataire sont contenues dans un schéma individuel dans la même database

Récemment, nous avons demandé à certains clients d'héberger le logiciel dans leurs propres locaux car ils veulent avoir un contrôle total sur datatables.

Cela signifie que nous avons perdu le contrôle sur le code source et plus il est plus difficile de déboguer et de déployer un code hébergé sur place plutôt que sur un nuage.

Il est possible qu'ils soient satisfaisants avec nous en le déployant sur leur count AWS. C'est donc leur ec2 et leur rds.

Cela nous a donné une idée.

Est-il possible de déployer le code source sur notre AWS ec2 et leurs données seront dans leur AWS rds?

Ce que nous devons accomplir, c'est que:

  1. Nous n'avons aucun moyen de lire leurs données
  2. Ils n'ont aucun moyen de lire notre code
  3. Pourtant, nous pouvons facilement effectuer des changements de code et des changements de schéma (probablement via les migrations de Django)

Comment pouvons-nous accomplir cela avec les services AWS? J'ai besoin d'un plan approximatif.

Jusqu'à présent, mes idées sont

A. Code sur nos données ec2 dans leur rds (Assure 2 & 3 not 1)

B. Code sur leur ec2 et leurs données dans leur rds (Assure 1 not 3 & 2)

Ou y a-t-il une solution impliquant le réglage A ou B?

La première question que je poserait, si vous le pouvez, est-ce que nous devrions autoriser cela en tant qu'entreprise, ce qu'ils proposent défait le but du logiciel en tant que service.

Maintenant, si vous souhaitez vendre des versions de votre logiciel comme une solution déployable sur le terrain, comme une OVA, semblable à l' entreprise github ,

Vous pouvez configurer un rôle de count croisé pour vos deployments du logiciel SaaS, vous pouvez toujours contrôler la base de code sur l'instance EC2 et leur donner un access en lecture au niveau de la database.

Implémentez un IAM qui déploie votre logiciel dans leur count et le lance sur le marché AWS

Permettez-leur d'accéder à un vidage de données / export des données du client pour faire ce qu'ils veulent avec leurs données sur place, comme le fait le réseau d'action ou SalesForce

Vous pouvez en faire un ou plusieurs d'entre eux, selon qu'ils correspondent à l'architecture et au deployment de votre logiciel et au model commercial que vous essayez d'offrir.