Elixir: язык программирования большой картины

1666126823 elixir yazyk programmirovaniya bolshoj kartiny

от CityBase

Elixir делает программистов лучше в работе, а также улучшает их работу

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

CityBase привлек меня и по другим причинам. Мне всегда было интересно улучшить работу сложных систем. Благодаря государственным технологиям перед нами стоит задача сделать так, чтобы некоторые из самых сложных систем работали более эффективно для людей в огромных масштабах и имели огромное влияние.

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

UtGCPFkJSMeNlcix48URAs-F-7-YIhJyx8mf
(Фото: Кевин, Unsplash)

Новый язык с проверенными корнями

Elixir – это новый язык, созданный в 2011 году. Она построена на основе принципов Erlang, система, разработанная в 1986 году для телекоммуникационной отрасли. Из-за Erlang ваш телефон никогда не отключается на техническое обслуживание. Он отвечает за гибкость аппаратного обеспечения и масштабируемость, поэтому вы можете заменить телефон и оставить свой аккаунт так же, а также добавить новые телефонные линии, не влияя на производительность.

Несмотря на то, что Elixir относительно молод, он опирается на проверенную виртуальную машину (VM) Erlang под названием BEAM и ее принципы высокой доступности, адаптивности и масштабируемости. Эти функции чрезвычайно важны в приложениях govtech, где фундаментальные услуги, предоставляемые технологиями, должны быть доступны всем.

Язык программирования программиста

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

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

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

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

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

Язык, устойчивый к ошибкам

Как смерть и налоги, еще одна уверенность в жизни состоит в том, что все уйдет не так.

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

Ошибка типа 1

Редкие проблемы обычно появляются при производстве, и по определению их труднее проверить. Например, подключение (если служба не работает или длится дольше, чем ожидалось) между сторонней службой или системным ресурсом, например базой данных.

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

Elixir работает на виртуальной машине Erlang BEAM, которая сконфигурирована как мини-ОС поверх серверной ОС. Виртуальная машина отвечает за связь между серверами и узлами. Узел будет сообщен, когда другой узел не работает, и система будет действовать в ответ.

Ошибка типа 2

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

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

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

Чтобы это работало бесперебойно, Erlang VM использует так называемый принцип наблюдения:

  • Процессы структурированы на основе идеи, что в данной программе встроены модули «работник» и «смотритель».
  • Работники производят вычисления, а руководители контролируют работников.
  • Если что-то пойдет не так, супервизор может перезапустить воркер в исходное действительное состояние.

Принцип супервидения связан с изоляцией процесса, когда один модуль может работать в одном изолированном процессе. Это гарантирует, что ошибки в одном модуле не повлияют на другие части программы, и вы можете перезапустить этот модуль изолированно.

Язык, модульный и созданный для масштабирования

Elixir — это модульный язык, означающий, что вы можете изменять самодостаточные части, не беспокоясь о влиянии на другие, не связанные части. Микросервисы работают параллельно. Все эти действия, основанные на коде, играют роль в большей программе, которую вы создали, но задачи распределяются таким образом, что они не зависят друг от друга. Это усиливает преимущества быстрой неудачи – вы удаляете одного неисправного игрока, а игра продолжается.

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

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

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

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

В этом кластере серверы общаются с помощью протокола на основе Erlang, вместо того чтобы имплементировать или использовать любой протокол программы, например HTTP, и выбрать параметр сериализации/десериализации данных, таких как JSON или буферы протоколов. Это означает, что вам не нужно ничего внедрять для передачи данных между службами на разных серверах/узлах. Это огромное с точки зрения сложности логики общения.

Язык, не имеющий ниши

По-видимому, я фанат Elixir. У него многое, от проверенной инфраструктуры до масштабируемости. Но, пожалуй, самое крутое в этом языке, что он не зависит от отрасли. Его уже принял ряд компаний для различных целей: WhatsApp, Bleacher Report, Netflix, Pinterest, Postmates и несколько сайтов .gov — все они используют Elixir или Erlang.

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

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

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

• • •

Педро Ассумпкао, ведущий инженер ПО CityBase

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *