จากบทความเรื่อง Delivering social change with Elixir at Change.org นั้น
อธิบายการย้ายระบบ messaging จากใช้ software อื่น ๆ 
เปลี่ยนมาเป็นระบบที่พัฒนาด้วยตนเอง โดยใช้ภาษา Elixir
มีเป้าหมายเพื่อลดค่าใช้จ่ายและความยืดหยุ่น
เพื่อรองรับความต้องการของระบบที่หลายหลายมากขึ้น

โดยในบทความจะอธิบายถึงปัญหาที่พบเจอ
เหตุผลว่าทำไมถึงเลือก Elixir ?
วิธีรองรับ email มากกว่า 1,000 ล้าน email ต่อเดือนกันอย่างไร ?

จาก requirement และการทำงานของระบบ Change นั้น

จะได้รับ event ต่าง ๆ จากการใช้งานในระบบมากมาย เช่น

  • Event ของ campain ต่าง ๆ
  • Event ของการร้องเรียน ต่าง ๆ
  • มีการส่ง email ไปยังส่วนต่าง ๆ ที่เกี่ยวข้องหรือสนใจ

ทีมพัฒนามองหาระบบที่สนับสนุนพวก Event-driven มาจัดการ
ต้องรองรับการใช้งานพร้อม ๆ กันจำนวนมาก
รวมทั้งเรื่องของ fault-tollerance อีกด้วย

ก่อนที่จะเลือกก็ต้องทำ PoC (Proof of Concept) ก่อน

โดยมี 4 ตัวเลือกที่นำมาทดลอง ประกอบไปด้วย

  • JRuby
  • Akka Stream
  • Node.js
  • Elixir

เป้าหมายของการทดลองเพื่อ 
ดูเรื่องของ performance ของการทำงาน ว่าไหวไหม
ประสบการณ์ในการพัฒนา ว่าเป็นอย่างไร
ดูเรื่องของ community ว่า
สามารถสนับสนุนหรือตอบโจทย์ใน use case ต่าง ๆ ที่เจอหรือไม่
รวมทั้งเรื่องของการแก้ไขปัญหาต่าง ๆ
โดยที่ทุก ๆ ทางเลือกต้องทำการประมวลผลข้อมูลประมาณ 100K message
เพื่อนำมาเปรียบเทียบกัน
เป็นวิธีการเลือกที่ดีมาก ๆ แต่หลาย ๆ บริษัทมักจะไม่ทำกัน !!  

โดยหลังจากที่ผ่านการทดลองมาแล้วได้เลือก Elixir นั่นเอง
ที่น่าสนใจคือ ทีมพัฒนามีจำนวนเพียง 3 คน
มีเวลา 18 เดือนในการพัฒนาและนำมาแทนที่ของเดิม

แนวทางในการเรียนรู้ Elixir ของทีม

ทีมที่มีอยู่นั้นไม่มีความรู้หรือประสบการณ์กับ Elixir เลย
ยกเว้นคนใหม่ที่เข้ามาที่เคยพัฒนามา
แต่ทีมก็ได้ความช่วยเหลือต่าง ๆ จาก community ของ Elixir
รวมทั้งมีหนังสือออกมาที่ช่วยได้มาก เช่น Adopting Elixir

ส่วนการ migrate นั้น ก็จะค่อย ๆ ทำไปในแต่ละส่วนงาน
ค่อย ๆ ย้ายมาในแต่ละ use case
เพื่อทำให้มั่นใจว่า สามารถทำงานได้ถูกต้องและมีประสิทธิภาพ เช่น

  • ระบบจัดการ email
  • ระบบ analytic

โดยการ migrate ระบบต่าง ๆ มายังระบบใหม่นั้น ใช้เวลาประมาณ 1 ปี

ส่วนการรองรับผู้ใช้งานจำนวนมาก ๆ

พบว่าสามารถรองรับได้มาก โดยที่ใช้จำนวนเครื่องลดลง
จาก 8-10 เครื่อง เหลือเพียง 2 เครื่องเท่านั้น

Library ที่ใช้งาน ประกอบไปด้วย

ตัวอย่างของ service ที่พัฒนา

ในตอนนี้ Elixir คือ
ภาษาโปรแกรมหลักของการพัฒนาระบบ  backend ของ Change
โดยปัจจุบันมีมากกว่า 20 project ที่พัฒนาไปแล้ว