Our bold choices of programming
We will always be bold and consider alternative languages if it makes us better and faster.
Choosing a programming language
At Upptec, we strive to be bold in our choices. That motto has made us continuously reevaluate our technologies used in many situations to find the tool best suited for the task. Our choice of programming language is one of those – in our early startup days, we used C#, but after some years we found it quite time-consuming and needing lots of boilerplate code.
About ten years ago Ruby on Rails was a big thing, and it suited our needs at that time. The friendly community, speed of development, and for the time, an excellent web framework in Rails was a driving factor when we chose Ruby to create new functionalities. After a couple of years, both our amount of data and the number of requests grew exponentially, and some challenges were hard to solve using the Ruby stack.
Why did we choose Elixir?
Elixir is a modern, functional programming language with clean syntax, which makes it a pleasure to use for developers, which in turn increases productivity, readability, and shortens maintenance times. It has a welcoming community of developers and a world-class web framework in Phoenix, capable of sub-millisecond responses. Elixir is running in the BEAM, the rock-solid Erlang virtual machine, that is developed and maintained at Ericsson for close to three decades.
Elixir makes use of all the processor cores in the server or computer, unlike most other programming languages which only run on one or two. Computer processors manufacturers have come to a point where it starts becoming difficult to produce faster processors. Instead of making faster and better processors, they are putting several processor cores together into a multicore processor.
This is the trend that computer hardware is heading towards, and has been for the last decade. This means that if your Elixir program runs fine on a quad-core notebook computer, it is going to run even better on several 36-core production servers without any further issues.
Leveraging the power of more processor cores and scaling your application across multiple servers is difficult and bug-prone to do in other programming languages and platforms and requires a higher number of engineers for maintenance. With Elixir and the built-in support for distributed computing, this is a breeze that doesn’t require additional maintenance or engineers. Thanks to this and other smart features in Elixir, scalability is not an issue, since it is designed for extreme scalability from the very beginning. Elixir is very productive, extremely scalable, stable, and high-performance.
Are we alone?
No, definitely not! About 90% of the internet traffic will travel through routers and switches running Erlang for example, and Cisco ships 2 million devices per year that have Erlang inside.
Elixir and Erlang is a popular choice within the FinTech companies and includes private and public blockchain, payment, and credit card gateways, banking APIs, and more traditional infrastructure management. It is quite likely that you will find a BEAM-based team in all the major banks and financial institutions.
How we are using Elixir
As early adopters, we have used Elixir in production starting with version 1.0 that was released late in 2014. The migration path was in small steps. Since we already were using microservices, we could migrate one small project at a time from Ruby to Elixir when needed. Nowadays, all of our internal and external web and APIs are running Elixir with Phoenix Framework. This makes it easy to deliver the latest web technologies for both outstanding performance and a great user and developer experience. Elixir has made it easy to run a multitude of stable background microservices crunching all kinds of incoming and outgoing data.
“Elixir is (still) the future, which makes it the obvious #1 choice for Upptec. Thanks to Elixir, the engineers at Upptec can spend more time inventing innovative cutting-edge solutions instead of spending time implementing and maintaining systems. But we will always be bold and consider alternative languages if it makes us better or faster.” – Lars Krantz, Technical co-founder of Upptec.