If an error happens, the Erlang process crashes and is then restarted by a special process called a supervisor. Surely you can find solutions to handle that many concurrent connections with your favorite language… But all these solutions will break down in the next few years. Firstly because servers don’t get any more powerful, they instead get a lot more cores and memory. This is only useful if your application can use them properly, and Erlang is light-years away from anything else in that area.

  • It enables you to generate code and build the prototype quickly.
  • The Ruby programming language has long been considered the standard for developing enterprise apps because it is well-built and has a great framework, but it has also been aging.
  • It’s also a good choice if you have a highly skilled team and need ultra-quick development.
  • MySQL, Microsoft SQL Server, PostgreSQL, MariaDB all these are examples of popular relational databases.
  • By the end of the book, you’ll have the information you need to build a basic web service and get it running.
  • Each thread runs a different process, and the Erlang VM schedules these processes.

Erlang developers thus have no need to fear unhandled errors, and can focus on handling only the errors that should give some feedback to the user and let the system take care of the rest. This also has the advantage of allowing them to write a lot less code, and let them sleep at night. They send each other data contained within messages and then continue running without needing a response. They tend to spend most of their time inactive, waiting for a new message, and the Erlang VM happily activate them when one is received. The Web is soft real time because taking longer to perform an operation would be seen as bad quality of service. The Web has large userbases, and the Erlang platform was designed to work in a distributed setting, so it is a perfect match.


Basho/merge_index – MergeIndex is an Erlang library for storing ordered sets on disk. It is very similar to an SSTable (in Google’s Bigtable) or an HFile . Strange/erlang_v8 – Run JavaScript from Erlang in an external OS process.

erlang web applications problem design solutions

Nick Gerakines is a software developer and technologist in the Ohio. At Mattel, he leads the connected products platform team. Previous companies include Colibri, Blizzard Entertainment, Electronic Arts, and Yahoo. He is the author of the book “Facebook Application Development” (John Wiley & Sons, Inc, published 2008). Thanks to the quote/unquote functionality, it’s first-class, as opposed to tricky metaprogramming in Erlang. Some practical and ingenious usage of Elixir’s metaprogramming can be seen in the unicode.ex module of Elixir’s standard library.

Connect with Baxter

It’s a good fit for you if you have to build large applications. Elixir has been designed to be extensible, letting developers naturally extend the language to particular domains, in order to increase their productivity. Check our getting started guide and our learning page to begin your journey with Elixir. Or keep scrolling for an overview of the platform, language, and tools.

In software engineering, this pattern is very popular and it has existed for a long time. This architecture can be used in desktop, web, or mobile applications. In MVC we separate the whole application logic into three components.

Erlang is a functional programming language with a focus on concurrency and high availability. Phoenix boasts real-time streaming technology which allows engineers to build interactive apps facilitating including real-time chat, messaging apps, streaming via mobile app and more. It is used to create modern web applications that are scalable and maintainable. Many of its concepts and components are similar to other web frameworks like Django and Ruby on Rails.

Custom elements and actions can be packed and re-used in different projects as Nitrogen Plugins. It is important to note that it has a testing framework. With a nationwide staff, we’ve got consultants in key markets across the U.S., including Seattle, San Francisco, Denver, Chicago, Dallas, Atlanta, and New York. Erlang is the power that drives Elixir’s capabilities. It’s a battle-tested, 30-year-old language originally meant to handle global telecom systems but with several future-forward abilities. Think zero downtime with self-healing capabilities built in, and the ability to handle in-place upgrades of an application while it’s running in production.

What sort of applications is Erlang particularly suitable for?

It comes with distribution and replication, just the way any application ever needed it. You can add servers or remove servers,at run-time and the entire system just keeps re-balancing itself. It also comes with memcached built in for caching, so for the IN-Memory part you were talking about, caching will do everything for you.

erlang web applications problem design solutions

The first implementation of Erlang was a meta-interpreter written in Prolog. Therefore, Erlang is basically a functional programming language. The resulting language is a milestone in programming language development.

For peer-to-peer web apps, for instance, P2P distributed search engine or for P2P Live TV radio service you can choose JavaScript protocols like DAT and IPFS. For example, an audio-video streaming app like Spotify, Netflix, or any kind of messaging application. Relational databases are best suited for the applications where your applications deal with the transactions or comply with the ACID properties. For these applications, data consistency is extremely important. If your apps receive a high amount of traffic and the traffic is expected to be increased exponentially in the future then microservices architecture is good.

Write and Publish on Leanpub

This way, predicted failure is always contained and the system keeps running. Cascading failure can either be contained by a subsystem restart, based on how the OTP hierarchy is structured in the application. No failure should prevent the system as a whole from being in an operating state. Valim wanted to enable higher extensibility and productivity for use in building large-scale sites and apps. For this, he turned to the older Erlang programming language. Erlang was built as a telecom solution with massive concurrency and the ability to handle millions of phone call connections.

Offload from the database tier and client tier boost the performance. Choosing a microservice architecture where the different features/tasks are split into individual respective modules/codebases. Below is a very web design solutions simple architecture view for such an application. Ngerakines/erlang_mysql – A GitHub mirror of the native Erlang MySQL client library. Tonyg/erlang-ircd – A pluggable IRC daemon application/library for Erlang.


At GenUI, we’ve used Elixir to great success both for internal projects and to help solve customer challenges. You can add more machines/CPUs to handle traffic or add more cores to the existing CPUs. Client-server architecture is a network architecture and it follows the request-response model. Here the client can be any device such as a PC or workstation on which users run applications. These clients send the request to the server for some information. Servers are powerful computers dedicated to managing disk drives , printers , or network traffic .

Who uses Erlang for product development?

Everything comes together to make your own fast dynamic web site. The Internet is intensely competitive and treacherous. Clients demand ever more features with ever tighter deadlines. Popular sites must scale to handle unpredictable traffic spikes. If you’re looking for help with Elixir code, GenUI can work with you on everything from planning a successful product strategy to lending the brainpower of our Elixir experts. Contact us today to learn about how it can be part of your recipe for visionary software.

Erlang is a programming language that appeared in 1986. Originally it was designed to be used in telecom applications development but nowadays it is used in different spheres like instant messaging, ecommerce, computer telephony, banking. Erlang is effective when the system has to be soft, real-time, scalable with high availability. Concurrency, distribution and fault tolerance is supported by Erlang’s runtime system. OTP includes a distributed database, tools for debugging and release handling. Elixir is a dynamic, functional language designed for building scalable and maintainable applications.

Francois Scharffe, Antoine Zimmermann and Jerome Euzenat introduced a language- independent expressive mapping language to link entities and relate equipol- lent ontologies. Flexibility, scalability, and speed — reaching and maintaining these optimal performance attributes require something proven that doesn’t present a significant risk. Elixir — built on top of Erlang, a platform already used by multi-billion-dollar corporations — is just that.

Product information

Cake PHP is great at ensuring a tertiary level of security; its codebase has been audited through Mozilla Secure Open Source program. It enables you to generate code and build the prototype quickly. With its search engine indexing feature, ROR allows search engines to automatically index all the pages of your application. Daniel “Cache” Merrill is a multiple exit entrepreneur and has served as CTO, a Tech Co-founder, Advisor and Partner in technology companies over the past 20 years. Other examples include using Elixir to write SQL queries, compiling a subset of Elixir to the GPU, and many more.

When the server receives the request, it processes that request and sends the response back to the client. Facebook, Twitter, Skype, banking applications, and almost all social media companies follow this architecture. I want to talk about the web server as being part of the middle ware. You will need a very stable Web server, depending on the load, and being that you want to use Erlang, i suggest yaws web server and learn to do RESTFUL services with it using appmods. Using Proxies sunch as Nginx infront of a cluster of web servers may help in load management.