rump13

rump13

Hi all,

I’m playing with designing a multi-tenant SaaS pet project using the Control Plane / Application Plane model. There will probably be two main web apps (control and application planes) in Elixir/Phoenix. The control plane will run on a single node (private network, not accessible from the internet, separate DB), while the application plane will be multi-node (accessible from the internet, separate DB).

The question I have is how to enable communication between these two planes/apps. Most examples I’ve found focus on microservice architectures based on HTTP APIs. Others suggest message queues or event buses. Given the strengths of BEAM, I’m wondering:

What are the options BEAM-native or preferred mechanisms for loosely coupled communication between two Elixir applications?

Looking forward to insights from anyone who has tackled something similar!

Showing Posts 1 to 7

cmo

cmo

Do you want the two planes clustered?

rump13

rump13 OP

Application plane will be a cluster. Control plane not and it will be on a separate node, separate subnet.

schneebyte

schneebyte

What are the options BEAM-native or preferred mechanisms for loosely coupled communication between two Elixir applications?

The only thing i can think of is messages between processes through distributed Erlang. But as soon as you connect your control plane node to the application nodes/cluster they will have full access to your control plane node.

cmo

cmo

If they’re not clustered, you’re outside of the BEAM native umbrella aren’t you? Then you can choose between HTTP, Websockets, grpc, etc.

I’ve used Phoenix channels to do multiple client to server connection using Slipstream. I wanted to know when they’re connected and channels provided the tools for that.

rump13

rump13 OP

Thank you for the ideas. I´m going to do my homework and investigate the Phoenix channels option. I’ll deploy in AWS, so SQS may be the best option to keep them completely decoupled.

dimitarvp

dimitarvp

As @schneebyte points out, you absolutely do NOT want your control plane node joining the cluster of the application nodes; the BEAM VM excels at many things but refined access controls is not one of them – that new node will have full access. From your description it seems you don’t want that so indeed go with SQS or any other external and decoupled message-passing solution.

— All posts loaded —

Where Next? Top

Trending in Questions Top

RSP87
I’m working on a project that simulates the bumbl example in the programming phoenix book. It acts almost like an email client. We have a...
New
nseaSeb
Hello, I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
RemyXRenard
I’m seeing that a list inside a Kino.DataTable will be interpreted as a charlist, even if the Kino.configure() is set to charlists: :as_l...
New
velrest
So my question is quite simple and i have found no conclusive answer on forum, google or AI. Should we use :erlang.float for Integer to ...
New
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
samoloth
Hi, I’ve just set up an application with ash_authentication. There is only magic link strategy for now, so there is no confirmation add o...
New
FlyingNoodle
If a change or preparation module uses Ash.Changeset.get_argument/2 or Ash.Query.get_argument/2 (or any of the other get_argument functio...
New

Other Trending Topics Top

mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Dmk
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
webofbits
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself. My main conc...
#ai
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews