20 януари 2020 г.

Elixir е функционален и динамичен език за програмиране, издаден за първи път през 2011 г., така че все още е сравнително нов.

Оттогава той набира популярност, защото е изключително мащабируем, надежден и чудесен за микроуслуги и облачни изчисления. Нека разгледаме няколко компании от голямата лига, решили да въведат Elixir в своята архитектура и да видим какво са спечелили от промяната.

Elixir се основава на Erlang VM, 20-годишна виртуална машина, създадена да поддържа здрав, едновременен и разпределен софтуер. Заедно със своите Феникс Framework, можете да използвате Elixir практически във всяка индустрия и за всяко приложение. Напоследък той набира популярност като софтуер на ниво предприятие в:

  • телекомуникации
  • банкиране
  • електронна търговия
  • реклама
  • мигновени съобщения
  • IoT

Езикът е идеален за проекти, които трябва да поддържат едновременност и ниска латентност, да се справят с много трафик и да се мащабират лесно. Всъщност в предговора към „Програмиране на еликсир ≥ 1.6: Функционален |> Съвместен |> Прагматичен |> Забавен“, скорошна книга на Дейв Томас, създателят на езика, Хосе Валим, описва едновременността като гръбнака на Elixir, добавяйки, че най-голямата й стойност е „освобождаването на програмистите от остарели механизми за съвпадение“.

Предимствата на Elixir включват също висока толерантност към грешки, надеждност и подреден, модерен синтаксис. Доказано е, че е полезно за разпределени системи като Blockchain проекти, вградени системи, както и приложения в реално време, използващи незабавни съобщения, видео чатове или финансови приложения.

Освен това има множество допълнителни архитектури, услуги и рамки, които се основават на Elixir. Някои примери включват:

  • Phoenix - рамка за създаване на REST API и HTML приложения с Elixir
  • Ecto - обвивка на база данни и език за заявки за Elixir
  • ExUnit - вградените модули за тестване на Elixir
  • Mox - подигравателна библиотека за използване при автоматизирани тестове
  • Exq - библиотека за обработка на работа за Elixir.

Мислите да направите превключването сами? Разгледайте само няколко от най-видните примери за изключително успешни компании, които са използвали Elixir в големите си проекти през последните месеци - и резултатите, които са успели да постигнат с него.

Не съм сигурен дали трябва да изберете Elixir или Ruby за мащабиране или изграждане на софтуер?

1. Pinterest: половината от сървърите, 10 пъти по-малко код

Pinterest е една от най-големите онлайн компании, които успешно са използвали Elixir. През третото тримесечие на 2018 г. услугата имаше 250 милиона активни потребители, които прикачиха 175 милиарда елемента към своите дъски. Бързият им растеж може да има нещо общо с превръщането им в Elixir през 2014 г. Новият език за програмиране им помогна да ускорят работата на своята система за уведомяване, доставяйки 14 000 известия в секунда и намалиха броя на сървърите наполовина - от 30 на само 15 - в сравнение с времето, когато услугата разчиташе на Java.

Използването на Elixir също позволи на Pinterest да изчисти кода си, като го намали до около 1000 реда - десетократно намаление. Pinterest вече използва Elixir и за насочване на повече от 30 000 събития в секунда към вътрешния си механизъм за правила за предотвратяване на нежелана поща.

2. Moz: 63 пъти по-малко дисково пространство, 20 пъти по-бърз API

През 2016 г. Moz Pro, водещият инструмент за SEO и онлайн платформа, помагаща на компаниите да анализират и подобряват производителността на своята търсачка, реши да извърши основен ремонт на своята бекенд архитектура. Целите им бяха:

  • подобряване на скоростта и производителността,
  • помогнете за мащабиране на инструмента,
  • добавете нови функции, като избираеми периоди от време, пълна история на кампаниите, гъвкаво сегментиране на данни в приложението и персонализиращо филтриране на данни.

Те обясниха процеса и резултатите в своя блог за разработчици. Основният проблем, който трябваше да решат, беше фактът, че са надраснали инфраструктурата си за бази данни. В резултат на това архитектурата не се мащабира добре и спря да работи правилно, когато беше залята с големи набори от данни, което беше абсолютно ключово за нарастващия инструмент за SEO анализ.

Архитектурата ограничи дълбочината и гъвкавостта на данните, които трябваше да бъдат представени по различни начини. Проблемите, които те идентифицираха, включват не-мащабируемост, нестандартно използване на MySQL и ограничения на паралелността в Ruby.

Преминавайки към Elixir, те успяха да използват по-малки файлове с данни и в резултат на това използваха средно 63 пъти по-малко дисково пространство, отколкото при използване на таблици с класиране на MySQL. Те също така успяха да подобрят скоростта на своя API с 20 пъти в сравнение с предишния API, със средно време за реакция постоянно под 50 ms (в сравнение с 800+ ms). Като цяло, простото внедряване доведе до 30 пъти по-бързи скорости на изграждане.

3. Lonely Planet: по-добра производителност, мащабируемо съдържание

Lonely Planet е световен туристически сайт (и традиционен издател на пътеводители), обслужващ милиони уникални посетители всеки месец. Той публикува много богато съдържание, използвайки техния уебсайт, мобилно приложение и услуги на трети страни. Проблемът беше, че тяхното уеб съдържание остана зад Ruby on Rails приложения, екземпляри на Wordpress и различни други хранилища за данни.

Това, от което се нуждаеха, беше да могат да го обслужват по-бързо и в по-голяма степен на уеб и мобилни приложения. Това изискваше различен модел на данни, по-чист API и много по-мащабируема инфраструктура.

След няколко неуспешни опита, компанията нае екип от разработчици, който създаде няколко микроуслуги, някои от тях написани в Elixir. Единият беше микросървър на Elixir с под-услуга за API, използваща Phoenix Web framework, предназначена да обслужва наличните квартири от booking.com и HostelWorld. Друга микрослужба, написана в Elixir, обслужва техния опис на книги и електронни книги от персонализирана система за електронна търговия, подкрепена от Microsoft SQL сървър.

Според архитектите на новото решение те са успели да създадат стабилна архитектура, използвайки Elixir, с много по-висока производителност и по-ниски изисквания за памет.

4. Financial Times: лесен за научаване, бърз за мащабиране

"Файненшъл таймс" е уважавана новинарска публикация, създадена през 1888 г. Наред с традиционния си ежедневник, те също така управляват огромна онлайн услуга, която току-що обяви милион читатели, плащащи през април миналата година. Преди това те използваха микро-услуга REST API, но за да се справят с нарастващата онлайн читателска аудитория и да подобрят производителността на услугата, те се обърнаха към GrapQL API, базиран на Elixir.

Сега те също имат друго приложение, базирано на Elixir, и се наслаждавайте много по-малко използване на паметта в сравнение с Java. Според бившия старши разработчик на софтуер във Financial Times, Елис Причард, Elixir беше лесен за научаване от екипа за разработки - още едно предимство на езика.

5. Toyota Connected: мобилност в глобален мащаб

Toyota току-що пусна първата си глобална платформа за споделяне на автомобили. Услугата използва собствената глобална платформа за услуги за мобилност (MSPF) на Toyota и приложение, ориентирано към потребителите.

Toyota Connected използва Elixir като част от вътрешната система, която съставлява платформата за мобилност. Той осигурява API за мобилни и уеб приложения и обработва геообработката, напр. проверка дали дадено превозно средство е вътре или извън геозащита.

Плановете на компанията са повечето от новите й превозни средства да се продават в Северна Америка и Япония, изпращайки информация до облака си до 2020 г. Те планират да анализират моделите на трафик и поведението на водачите, да свържат драйверите с инфраструктурата и да създадат нови услуги и продукти.

За да научите повече за това как Toyota Connected използва Elixir, вижте беседата, която техният разработчик Пауъл Кини изнесе на конференцията Code Elixir LDN през 2018 г., където той обяснява проектирането за дълголетие с помощта на Elixir и Erlang/OTP.

6. Bleacher Report: 8 пъти повече трафик

Bleacher Report, подразделение на Turner Sports, е вторият по големина спортен уебсайт в света. Те получават до 1,5 милиарда показвания на страници на месец и изпращат повече от 3 милиарда push известия.

Първоначално Ruby on Rails се използваше за създаване на услугата, но нарастващият трафик в крайна сметка показа, че услугата вече не е мащабируема. Друго огромно предизвикателство включваше поддържане на едновременно поточно предаване в тяхното приложение Team Stream. Като се има предвид подхода на мобилния телефон в реално време, който компанията може да се похвали, те трябва да могат да се справят с огромни скокове в трафика в пиковите часове на мобилни устройства.

Техният екип за разработки изпробва различни опции, включително Node.js и Go, преди най-накрая да вземе решение за Elixir - това донесе значителни подобрения в производителността, докато синтаксисът му беше подобен на Ruby’s, което улесни ученето.

Ето как водещият инженер Бен Маркс обобщи предимствата на превключвателя:

Elixir се оказа толкова ефективен, че тестването на границите на нашите услуги се превърна в предизвикателство за себе си, което изисква инвестиции в нови инструменти и стратегии за сравнителен анализ. В неотдавнашен тест, например, нашата най-трафикирана услуга успя да обработи 8 пъти средното ни натоварване на трафика, без автоматично мащабиране, преди базата данни да се окаже пречка.

Други ползи от използването на Elixir включват:

  • по-чист код,
  • по-малък технически дълг,
  • увеличаване на скоростта на развитие,
  • впечатляващи подобрения в производителността.

7. Раздор: 11 милиона едновременни потребители

Discord е мощен инструмент за аудио/видео комуникация, който стартира като платформа за чат за геймърите, защото безпроблемно обработва аудио вход на хиляди гласови комуникационни канали наведнъж. В момента тя надхвърли обслужването на игралната общност и се превърна в инструмент за комуникация и сътрудничество по избор за много компании и организации.

компании
Източник: Раздори

Те използваха Elixir, за да създадат своята услуга и благодарение на това, през 2017 г. те успешно обработваха 5 милиона едновременни потребители и милиони събития в секунда. Както споменават в своя блог, „трябваше да направят много изследвания и експерименти, за да стигнат до тук“. През 2019 г. Discord използва Rust за решаване на проблема с неизменяемите структури от данни в Elixir и по този начин те могат да достигнат 11 милиона едновременни потребители. Те са публикували решението в GitHub.

8. PepsiCo: Базираният на Elixir клон за електронна търговия печели 2 милиарда долара

Компанията, която не се нуждае от представяне, PepsiCo, съобщи, че използва Elixir за техния инструмент за електронна търговия за продажба на потребителски опаковани стоки. През 2019 г. клонът спечели на PepsiCo 2 милиарда долара.

Джейсън Фертел, който управлява инструмента за автоматизация на маркетинга в PepsiCo Ecommerce, сподели причините за използването на Elixir в подкаста Devchat.tv.

Той обясни, че: "Еликсирът е мощен, прав напред и лесен за научаване. Той е ефективен и разполага с всичко необходимо от кутията."

Какво означава това за бизнеса?

В повечето случаи, споменати по-горе, преминаването към Elixir (или решението за вграждане в Elixir още от самото начало) доведе до приложения и услуги, способни да обработват много по-голям трафик. Това означава, че те се мащабират добре, могат да растат, без да губят надеждност, като същевременно подобряват цялостната производителност. В бизнес смисъл това означава повече потребители, клиенти и по-висока възвръщаемост на инвестициите.