Почему Divvy использует Elixir вместо более популярных языков программирования.

Клинтон Де Янг, старший инженер-программист

Эликсир в Divvy

В Divvy мы создаем бизнес-ориентированную платежную платформу, которая помогает компаниям управлять своими бюджетами и расходами, исключает мошенничество и сокращает нерациональные расходы. Наши клиенты полагаются на Divvy в своем финансовом успехе; поэтому наше программное обеспечение должно быть надежным, безопасным, масштабируемым и доступным всякий раз, когда оно требуется нашим клиентам. Когда мы начали создавать наш сервис, мы знали, что нам нужен язык, который мог бы предоставить нам непоколебимую основу для нашего приложения и который мог бы легко масштабироваться вместе с нами по мере нашего роста. Чтобы удовлетворить наши потребности и потребности наших клиентов, мы решили развивать наш бизнес с помощью Elixir.

Ниже приведены некоторые особенности и преимущества, которые предлагает Elixir, которые способствовали нашему успеху.

Параллелизм

Elixir использует модель акторов для параллелизма. Эта модель в сочетании с функциональностью Elixir обеспечивает стабильность и простоту разработки. Разработчикам не нужно беспокоиться о защите состояния объекта, и они могут полагаться на функциональную парадигму Elixir, чтобы гарантировать, что при одинаковых входных данных выходные данные нашей системы останутся согласованными.

Благодаря выразительному и легко читаемому синтаксису Elixir использует легкие «зеленые» процессы, которые занимают значительно меньше памяти, чем другие языки, такие как Go. Эти процессы защищены друг от друга в частной памяти и невосприимчивы ко многим ошибкам, присущим системам, использующим общедоступную память для многопоточных приложений. Elixir также использует совместное планирование вместо упреждающего планирования, что означает, что всем процессам Elixir гарантируется заранее определенное окно выполнения. Это отличается от таких языков, как Go, в которых используется упреждающее планирование, в котором неконтролируемые процессы могут препятствовать запуску других процессов. Модель параллелизма Elixir позволила Divvy создать платформу, которая является быстрой и отзывчивой, а также предоставляет данные о клиентах из многих ошибок, приводящих к повреждению данных, которые возникают в других популярных параллельных языках.

Масштабируемость

Elixir и его библиотека OTP упрощают запуск программного обеспечения на нескольких серверах,

виртуальные машины или контейнеры; все безупречно общаются друг с другом. Elixir также эффективно использует ресурсы сервера. Это означает, что Elixir может выполнять те же задачи, что и такие языки, как Python, PHP и Ruby, используя примерно 1/5 инфраструктуры.

По мере роста Divvy относительно легко добавить больше серверов и увеличить нашу способность обслуживать постоянно растущую клиентскую базу. Возможность запускать нашу платформу на нескольких серверах в распределенной системе обеспечивает лучшую производительность приложений, а оптимизированное использование системных ресурсов Elixir позволяет нам обслуживать наших клиентов с меньшими накладными расходами.

Отказоустойчивость

Функциональная парадигма Elixir, частные процессы и деревья наблюдения делают его чрезвычайно отказоустойчивым. Настолько, что программисты Elixir следуют принципу «Пусть он рухнет!» философия. В других языках, таких как Java, сбой в одном потоке, вероятно, приведет к остановке всех других потоков, в которых в настоящее время выполняется тот же код, что потенциально может затронуть всех пользователей системы. Чтобы предотвратить это, программисты на Java должны использовать сложную систему обработки ошибок, чтобы гарантировать, что система может корректно справляться со сбоями. В Elixir сбой в одном процессе будет ограничен этим процессом, поэтому это затронет только одного пользователя. Более того, Elixir может перезапускать аварийные процессы, используя деревья наблюдения; это процессы, которые контролируют другие процессы и следят за тем, чтобы они оставались активными.

Используя Elixir, Divvy может гарантировать, что проблема с одним клиентом останется локализованной для этого клиента; не затрагивая других наших клиентов. В большинстве случаев система сможет «исцелить» себя и позволить этому клиенту продолжить свою работу.

Легкость и скорость разработки

Один из способов сохранить конкурентное преимущество софтверным компаниям - это скорость разработки. Elixir предоставляет выразительный, эффективный, чистый и удобный для чтения синтаксис, который помогает нам быстрее предоставлять новые функции.

Как упоминалось ранее, Elixir устраняет необходимость в обработке исключений и многих проблем, связанных с управлением состоянием. Elixir также поставляется со зрелым, хорошо продуманным инструментарием, который упрощает развертывание, помогает разработчикам моделировать новые функции и упрощает внесение изменений в базу данных.

Elixir позволяет разработчикам Divvy быстрее создавать и развертывать функции. Это делает нас более гибкими, чем если бы мы использовали более раздутые и многословные языки, такие как Java. Elixir позволяет нам своевременно удовлетворять потребности наших клиентов и позволяет нам оставаться впереди наших конкурентов.

Почему мы выбрали эликсир

Divvy выбрала Elixir, потому что мы хотим создавать лучшее и наиболее многофункциональное программное обеспечение, какое только можем; мы хотим создать впечатляющий и эффективный пользовательский интерфейс; мы хотим масштабироваться, чтобы удовлетворить потребности предприятий по всему миру, и мы хотим быть лидером на рынке платежей, ориентированных на бизнес. Elixir делает все это возможным.