What is Elixir Phoenix ?

What is Phoenix Framework ?

Elixir is a functional programming language built on top of the Erlang programming language. It compiles to Bytecode and executes on Erlang BEAM virtual machine.

Phoenix is a Web framework written in the Elixir language. As an MVC framework, it is conceptually similar to Spring MVC(Java), ASPNET Core MVC(.Net), Django(Python), and Rails (Ruby) etc.

Phoenix is a great fit for applications that have high scalability requirements. One of the most notable features includes the LiveView, which is used to create super fast Realtime applications without writing clients-side code.

Key features of the Phoenix framework

The Phoenix web framework offers productivity and performance at the same time. Below are some of the key features of the Phoenix framework.

Increased developer productivity

Since Phoenix is written in Elixir, a pure functional language, it offers the benefits of functional programming. With Phoenix, applications are quick to build.

Great for Real time Apps

Phoenix is designed for creating real time apps as it has built-in technologies like Channels and Presence. It is very easy to know about the all the connected users across multiple nodes.

Highly Scalable

Phoenix uses Erlang BEAM for its concurrency and real time system. The Erlang BEAM VM has been battle tested in the Telecom Industry since the 80’s, and has been used to create massively scalable and concurrent systems. Highly popular apps, like WhatsApp, rely on Erlang for its scalability and stability-- phoenix brings all these Erlang VM capabilities to the application.

Production ready tools

Instrumentation is built-in to Phoenix. All important metrics about the application and Server are available via a nice Dashboard. Elixir has great toolchain as well.

Sample Phoenix controller

Like other MVC frameworks, there are Controllers, Views, and super fast templates in Phoenix. The example below demonstrates a simple controller (UserController), which renders the index.html template.

defmodule PhoenixWebApplication.UserController do
  use PhoenixWebApplication, :controller

  def index(conn, _params) do
    render conn, "index.html"
  end
end

Cons

  • While Elixir has a clean syntax, it may be hard to grasp for beginners.

  • It is not very easy to find libraries for your requirements since the Elixir and Phoenix community is small compared to the Java or Node.js ecosystem.

  • It is, again, difficult to find developers proficient in Elixir and Phoenix.

Free Resources