[แปล] เรื่องราวการ Adopt มาใช้ Elixir ที่ PagerDuty

Pongsatorn Paewsoongnern
Norze Code
Published in
2 min readJun 28, 2018

แปลมาจากบทความ Elixir At PagerDuty
ส่วนตัวแล้วผมชอบมาก เลยอยากแปลให้เพื่อนๆได้อ่านกันครับ

ปล. จะเป็นการแปลแบบย่อๆนะ

.
.
.
.

[บทนำ]

“development speed was of the essence”

- Ruby / Rails ตอบโจทย์ได้ดีในเรื่อง development speed
- ใช้ไปใช้มา อ้าวเจอคอขวด limitation ต่างๆนาๆ

- ทีมที่ทำมาแต่แรกๆเลย เริ่มมองหาตัวอื่นมาใช้แทน
- ภาษาแรกที่จะลองเอามา adopt คือ Scala

- แต่เดี๋ยวก่อน! ช่วงแรกที่ adopt พบปัญหาใหญ่อยู่. . .
- gap ของภาษา ระหว่าง Ruby กับ Scala มันใหญ่เกินไป
- gap นั้นคือสิ่งที่ community ให้ความสำคัญกับตัวภาษา

- Ruby / Rails community ให้ความสำคัญกับ developer experience เหนือสิ่งอื่นใด
- แต่ Scala โฟกัสกับ academic และ formalistic อีกทั้งยังพยายามไซโค user ให้ใช้ตามด้วย

- อ๊ะ แต่จริงๆ ก็ชอบ code base ของ Scala ช่วง initial มาก
- เพราะมันทำให้เห็นสิ่งหนึ่งแทบจะทันทค คือการจะเขียน Scala code ที่ “clean” และ “maintainable” นั้นยากมาก

- คิดไปคิดมา เลยนึกขึ้นได้ว่าเคยทำงานเกี่ยวกับ Telecom มาก่อน
- ณ ตอนนั้นถ้าพูดถึง Telecom กับ Programming language ทุกคนต้องนึกถึง Erlang
- อย่าว่ายังงั้นยังงี้เลย คือยังไงก็ไม่อยากเขียน Erlang อะ
- “I looked at Erlang before but the language never appealed to me”

- เทแม่งเลยละกัน ไม่ทงไม่ทำละ กลับไปทำงานต่อดีกว่า

- 2 -3 เดือนต่อมา อยู่ๆก็มี “Elixir” เข้ามาอยู่ในหัว
- พอลองดูคร่าวๆแล้ว ก็คิดเลยว่า “languages to learn this year”

.
.
.
.

[เริ่มใช้]

- มันค่อนข้างยาก และต้องเสีย cost เยอะในการเอาเทคโนโลยีใหม่เข้ามาใช้
- ดังนั้นเราจึงต้อง make sure ว่ามันจะโอเคจริงๆนะ
- สิ่งที่ทำได้ก็คือ การลองเริ่มใช้เลย แล้วดูว่าผลลัพท์จะออกมาเป็นยังไง

- ซึ่งมันก็คือการทำ Pilot project นั่นแหละ โดยมันต้อง complex ในระดับนึง
- เพื่อที่จะทำให้มั่นใจว่าเราสามารถ rewrite โค๊ดชุดเดิมใหม่ได้ทั้งหมด

- ในเมื่อตัดสินใจเลย เราก็กระโดดเข้าไปฟัดกับมันเต็มที่
- หลายอาทิตย์ต่อมา เราก็กลับมาพร้อมกับ service ตัวใหม่
- ที่จริงๆแล้ว มันควรต้องการ tuning และ optimize อย่างมาก
- แต่ Elixir ทำให้ไม่จำเป็นต้องทำอะไรพวกนั้นเลย
- มันคือก้าวแรกที่สำคัญมาก

- เราไม่สามารถพูดว่า “เททุกอย่างแล้วเขียนใหม่ด้วย Elixir” ได้
- เราค่อยๆช่วยกัน adopt ไปใช้กับทีมอื่น โปรเจคอื่น
- มีการจ้างคนที่ชอบ Elixir เข้ามาร่วมงานด้วย
- มีดการจัด Elixir meetup เพื่อให้ local community เข้าถึงกันง่ายขึ้น
- “slowly but steadily”

- ทีมแล้วทีมเล่า เริ่มเปลี่ยนมาใช้สิ่งที่เราได้เริ่มต้นขึ้นมา
- ทุกวันนี้ เรามีหลายทีมที่พร้อมสำหรับกับ Elixir
- ทีมที่กำลังฟัดไปกับมัน
- ทีมที่กำลังรอโปรเจคแรกที่จะทำให้พวกเราพูดได้ว่า “We’ll do this one in Elixir.”

- Elixir ขายตัวมันเองได้อย่างดีเลย เช่น
- อยู่บน Platform สุดเทพอย่าง Erlang
- Code เข้าใจง่ายมาก เพราะ community ไม่ชอบ / ไม่อยากให้มี “magic” ทั้งหลายเช่นใน Rails
- เริ่มต้นเรียนรู้ได้ง่าย เพราะ basic ตัวภาษาไม่ได้กว้างมาก

- ปีนี้เราหวังไว้เยอะมากกับการ ย้าย major function จาก legacy stack มาเป็น Elixir
- โดยเราไม่กังวลเลยว่ามันจะรองรับ traffic ขนาดใหญ่ที่เราเจออยู่รึป่าว

- ตั้งแต่จุดเริ่มต้นของการ adoption จนถึงการใช้งานใน production เต็มรูปแบบ
- มันทำให้เราหวังว่าวันหนึ่ง “we’ll only have to deal with Elixir code”

.
.
.
.

ส่วนตัวเราเห็นด้วยทั้งหมดเลยนะ เท่าที่ลองเล่นมาคือชอบมากๆ แบบ First impression ที่ดีสุดๆไปเลย
ยกเว้นตอน Deploy ที่คิดถึงความง่ายตอน Golang 555555+

CREDIT / ORIGINAL BLOG
https://www.pagerduty.com/blog/elixir-at-pagerduty/
A lot of thanks to PagerDuty for great article

--

--