LionOps

LionOps

Help with OTP and architectural design for a proxy MUD system

I’ve read the Mix & OTP section of the hex docs and semi-grok things. What I’m struggling with is how everything fits together in my use case, and advice/guidance is appreciated as I’m new to Elixir (and OTP).

I want to create a proxy system for a MUD. Normally, a mud client is used to make a telnet connection to a server; my system will sit in the middle acting as a pass-through while interpreting input from both the server and client.

There will only ever be one pair of connections, so at least for the socket management, I don’t need to worry about multiple simultaneous connections. (I think OTP will be useful for data processing where distribution makes sense.)

Using an umbrella project and wanting to have test coverage, does it make sense to have a telnet_client and telnet_server app? Combine them into a single proxy app? What OTP objects and strategies would you use?

Help is appreciated in how best to tackle this problem space and reason about it.

Marked As Solved

LostKobrakai

LostKobrakai

Deciding for multiple OTP applications should imo be made based on deployment circumstances and not code architecture decisions. There’s no real reason to go for multiple OTP applications if they don’t need to be independently deployed or shared between multiple systems – and things will be simpler if you have a single application. And you can always build the project in a way that spliting things up will be mostly moving files around and maybe a few search and replaces.

So unless you plan to deploy the server and client individually I’d suggest keeping things simple and put them in a single application – skip the umbrella.

As for what you’d use out of OTP’ish things I’d suggest looking at thousand_islands(/ranch) for the tcp server (with gen_tcp underneigh) and likely plain gen_tcp for the client side.

Also Liked

krasenyp

krasenyp

I’ve used umbrella applications both in personal projects, early in my career, and in professional setting. They’re almost never a good choice. I second Help with OTP and architectural design for a proxy MUD system - #2 by LostKobrakai.

Last Post!

krasenyp

krasenyp

I’ve used umbrella applications both in personal projects, early in my career, and in professional setting. They’re almost never a good choice. I second Help with OTP and architectural design for a proxy MUD system - #2 by LostKobrakai.

Where Next?

Popular in Questions Top

minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
hariharasudhan94
Lets say I have map like this fetching from my database %{"_id" => #BSON.ObjectId<58eb1a7a9ad169198c3dXXXX>, "email" => ...
New
lastday4you
I wanted to check elixir version in phoenix because i found that my elixir is 1.5 but when i use Enum.chunk_by it said the function is un...
New
Lily
In templates/appointment/index.html.eex: <%= for appointment <- @appointments do %> <tr> <td><%= appoi...
New
greenz1
I have a phoenix application from which a user can download multiple(5-6) files of size 1MB. I couldn’t find anything related to sending ...
New
aalberti333
As the title describes, I’m trying to run Enum.map() over a list of key/value pairs, where the value is a map. My data looks like this: ...
New
JorisKok
I have a server on AWS, and was running a load test using artillery. When looking at the Phoenix dashboard I see the Ports going to 100% ...
New

Other popular topics Top

minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
New
chrismccord
Phoenix 1.4.0 released Phoenix 1.4 is out! This release ships with exciting new features, most notably with HTTP2 support, improved deve...
688 31494 112
New
gausby
I asked this very same question on twitter and got some interesting feedback, but I thought it would be a good question to ask here as we...
1207 40042 209
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID<0.412.0> terminating ** (Postgrex.Error) FATAL...
New

We're in Beta

About us Mission Statement