1

I'm working on a multi-tenant SaaS app that integrates with customer on-prem systems over Minimal Lower Layer Protocol on TCP/IP. As the name suggests, MLLP does not support any encryption, so typically security is implemented by configuring a VPN between the hosts.

The SaaS App runs on an EC2 instance and provisions a new listening port for each new tenant. The connection is bidirectional, so the SaaS App listens/receives messages from the customer on-prem system, as well as sends messages to the customer on-prem API endpoint.

                                                                 +-----------------+
                           VPN-1 /---------------------\         | SaaS App Server |
                                 |                     |         |                 |
[Customer1 on-prem API]==========|====[]   <->   []====|========== :3001           |
                                 |                     |         |                 |
                                 \---------------------/         |                 |
                                                                 |                 |
                           VPN-2 /---------------------\         |                 |
                                 |                     |         |                 |
[Customer2 on-prem API]==========|====[]   <->   []====|========== :3002           |
                                 |                     |         |                 |
                                 \---------------------/         |                 |
                                                                 |                 |
                           VPN-N /---------------------\         |                 |
                                 |                     |         |                 |
[CustomerN on-prem API]==========|====[]   <->   []====|========== :N              |
                                 |                     |         |                 |
                                 \---------------------/         |                 |
                                                                 +-----------------+

Is it possible to configure multiple VPNs to a single host or service, so that customers have secure, isolated connections and I can run a single App Server / service?

All of the examples I have found for multiple VPNs (eg Site-to-Site VPN single and multiple connection examples) are for the classic use case of pooling VPNs withing the same organization (ie New York office, LA office, etc).

I am open to using anything in the AWS toolkit (VPCs, Nat Gateways, Network Load Balancers, etc) and can configure services dynamically as I provision new customers.

If the answer is: No, it's more trouble than it's worth, you are better just running one EC2 per Customer that would be good to know too.

simj
  • 11
  • 1
  • This architecture doesn't seem like it's going to scale easily. You can use the AWS VPN features, or you could set up two EC2 servers (for redundancy) running some kind of software that terminates VPN connections that way rather than using the AWS features - this might be easier to scale from a people and process view. One EC2 server per customer sounds worse to me. – Tim Aug 28 '22 at 08:19

0 Answers0