Building a full cloud shell in elixir

Hey, we’ve been building Plural’s server tier in pure elixir for a year now, and recently found the need to implement a cloud shell experience. It was a pretty amazing case study in the power of pheonix channels and the BEAM’s actor model for implementing something that otherwise could be kind of a pain, and thought the broader community would find it interesting as well. High level the takeaways were

  1. It made creating a purpose-built WebSocket proxy API a joyful experience with no worries about scalability.
  2. Allowed us to leverage Elixir’s unique binary handling capabilities to handle a goofy protocol easily and present it in a Javascript digestible format to our browser client

But there’s a lot more interesting detail like needing to use terminal session management and other details. If you want to read more, check out our blog article here.

You can check our repo here: GitHub - pluralsh/plural: Multi-cloud, multi-prem application deployments for kubernetes in minutes.🚀 (there’s more cool things there you might find interesting, including a full GraphQl API implementation new absinthe devs could reference)