A programming stack designed to scale
Elixir / Phoenix
There’s truly no limit to how far and wide Elixir and Phoenix can grow, and Revelry’s software engineers have been using it since the beginning.
What is Elixir?
Elixir is a functional, general-purpose programming language built on Erlang OTP to handle large data volumes concurrently with low latency. Elixir is a feature-complete language making it a top choice among developers for new product development.
First introduced in 2014, Elixir creator José Valim created it to improve extensibility and productivity in the Erlang virtual machine, BEAM. He wanted to explore concurrency in programming, which allows multiple computations to happen in parallel. Elixir takes advantage of multi-core processors in most computers today. This approach means processing can scale to use all available resources on a machine automatically.
Another unique characteristic of Elixir is that it uses pattern matching, which allows for matching simple values, data structures, and functions. Think of pattern matching as a very advanced if statement or switch case statement, a potent tool.
Elixir also has extensive libraries to efficiently implement solutions to complex everyday tasks.
What is Phoenix?
Introduced in 2015, Phoenix is now the go-to framework for creating web applications with Elixir. Like Rails, Phoenix uses a server-side model-view-controller (MVC) pattern and builds on Elixir’s developer productivity and speed philosophy.
Phoenix has several key features that improve product execution, including:
- Cowboy: the default webserver
- Ecto: a language for reading and writing databases.
- LiveView: a way to easily implement real-time updates of server-side rendered HTML pages.
- Components: a way to have a server-side rendered HTML page with component architecture similar to React to better support SPA (single page applications).
- Plug: a way to achieve easy guards for controllers and implement a robust permissions system.
- Built-in Channels: a way to quickly implement real-time communication with and between millions of connected clients
An Easy-to-Learn and Efficient Choice
The engineering team at Revelry adopted Elixir early on due to its benefits and versatility. We prefer it because of its speed and efficiency, which allows for replicating common elements of applications. Developers can keep using the same language over many different project types.
Many experienced engineers with a Ruby on Rails background find learning Elixir and Phoenix relatively simple due to similar controllers, routers, templates, and database models. Additionally, the pattern matching feature of Elixir makes for cleaner code. Each process runs independently, so if something goes wrong with one process, then it doesn’t take everything down.
Eliminating Software Bugs Faster
From a technical standpoint, functional programming languages like Elixir are inherently easy to write tests for, and the apps can be horizontally scaled naturally. For us, more testing means fewer bugs and a more scalable codebase, which allows the app to grow with less refactoring and maintenance work.
Elixir, Phoenix, and LiveView perform so well at serving pages that we find ourselves writing less front-end JavaScript to make the page feel snappy and responsive.
A Supportive Community for Engineers
The community of engineers who work in and maintain Elixir is supportive, approachable, and collaborative, making finding resources and answers easier. Elixir has also created an environment for engineers to change and deploy applications quickly, and the community is dedicated to making it better.
Perhaps one of the best strengths of Elixir is that it is a language that engineers truly love to use. There are annual conferences in the US and Europe that host thousands of people, with growing attendance each year. Elixir can be a perfect choice for your next project given the importance of employee retention and job satisfaction.
Team insights
Elixir and Phoenix Learnings
Build a game in Phoenix LiveView without JavaScript
I woke up one morning with a thought: “What if I wrote a web game without writing any Javascript?” Here at Revelry, we love…
Exploring GraphQL
As a software engineer, I’ve always been fascinated by the tools and technologies that help us build better applications more efficiently. Recently, I’ve been…
Building a Phoenix LiveView Native App
Note: This post reflects my experience working in LiveView Native before the recent (official) 0.3.0 release. I recently tried my hand at creating a…
Designed to Scale
Elixir and Phoenix have first-class build and release tools, package management, project scaffolding, testing, and documentation that are all available out of the box. Beyond app development, Elixir is also an excellent choice to provide a backend framework or API that can be accessed and used by programs built in any language.
Elixir is designed to scale so that hundreds of thousands of machines can talk to each other. There’s truly no limit to how far and wide Elixir can grow. Let’s build together.
Our work
Elixir in Action: A Development Case Study
Read how we partnered with logistics company Fillogic to support the digital transformation of its physical retail ecosystem to meet the demand and expectations of modern consumers.
Read the case study