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.

Let's Build Something Together

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.

Elixir logo software programming
Phoenix logo. Orange circle on transparent background

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.

Elixir on green street signs at split in road. Purple mountains in background. Illustration.
Fastlane

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.

Monitoring phoenix
Team insights

Elixir and Phoenix Learnings

Graphql logo in pink on black background revelry blog post

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…

Illustration of caucasian man in shorts climbing a mountain sign at top says phoenix liveview native

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…

Revelry engineering blog header image lightbulb twil this week i learned. Chalkboard style

#RevTWIL: Elixir Patterns, React Hook Form, BitWarden

At Revelry, we believe in sharing and learning from one another (beliefs that are rooted in our Core Values). Among the many things we…

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
Fillogic software development project in elixir by revelry