Rust usage for telecom; distributed mobile apps middleware


#1

Greetings. I wonder if anybody have any info about tryouts in using Rust for developing telecom related solutions. Same question - mobile apps servers (client-server) or middleware (three-tier) in Rust.

Regards
Ivan


#2

Hi Ivan, I have used Rust to develop a number of small systems within the packet core network of a few telecoms. Traditionally I use erlang for these types of system because it gives me predictable latency, easy concurrency and primitives for building robust and distributed systems. I have used rust in solutions that require more throughput than available from erlang. For example currently working on a DDoS/Network analysis tool for 10-40 Gb/s networks. Rust gives me all the tools I need to build low lotancy high throughput single node systems. It lacks libraries and primitive for building robust distributed systems (I mean in the sense Joe Armstrong talked about in his thesis “Making reliable distributed systems in the presence of sodware errors”).

What kind of information are you looking for? If you don’t have the need for super performance I would still recommend Erlang for server/middleware type systems. But you can certainly do it in Rust if you wanted - there are libraries such as the tokio-rs project that can help with these types of projects.


#3

Thanks for your reply, Joseph. Would be glad if you could email me, so I could discuss details.

I am unsure about options to use Rust applications under high load since telecom considered variable network pool. So I would be glad if that would not be Erlang. Main tasks for such apps would be a predictive connectivity for collaboration mobile apps, optimized data transfer (RDBMS, noSQL, message broker) depending on predictive network channel capabilities, specific data delivery schemas, integral fault-tolerance. I might consider cluster instances for high availability (fiberchannel inter-connectivity) with external wireless access to instances of a cluster, for mobile app connectivity.


#4

Wow! That’s a pretty hard core environment! I was of the impression that Rust hadn’t yet penetrated much into those niches, due to young-ness and extreme risk-aversity (five-nines uptime, and all…)
I’d love to read more about that; any writeups or repositories you can point us at?

Also: is your work represented in the friends of rust page?


#5

I work in this environment too. I can tell you that choice of a compiler / language does not make much (if anything at all) influence on uptime. Distributed architecture and various real time failover mechanisms and extreme level of system testing are more influential factors. I have seen tests when racks were hard reset powered off/on one by one several thousands times, and it was sanity level of test. Pre-production tests are even harder. Once individual pieces are written and conform to the architecture and pass tests, programming language becomes irrelevant. The other thing that some languages make it easier to achieve these and other requirements (like throughput and ease of maintenance are other important factors in telecom) and some languages make it impossible in any reasonable time. I think, Rust has got good chances to play big role in these environments, once libraries become available or companies develop proprietary or wrap existing C libs.


#6

I can see Telenor mentioned on friends-of-Rust page. I wonder where do they use it, for what purpose…


#7

You should give Elixir a go along with your Erlang!