[แปล] เรื่องราวการ Adopt มาใช้ Elixir ที่ PagerDuty
แปลมาจากบทความ 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