วันพฤหัสบดีที่ 12 ธันวาคม พ.ศ. 2556

ซ้าย ขวา หน้า หลัง Erlang หมดเลย....

ย้อนกลับไป เมื่อปี 2007 ผมรู้จัก Erlang ครั้งแรก จาก blog สนธนาที่ไหนสักแห่ง ตอนนั้น ต้องเขียน Server Game Online โดยมีเป้าหมายว่า ต้องรับคนได้แบบไม่จำกัดจำนวน คือต้องสามารถ Scale แนวนอน ไปได้เรื่อยๆ (เพิ่มเครื่องเพิ่ม connection)

ตอนแรกว่า จะใช้ Python เพราะตอนนั้นมี Game Casual ของเกาหลีเขามาเสนอขายในไทย ใช้ Python เขียนทั้ง Client และ Server เลย แต่ก็มาสะดุดที่ Erlang อาจเพราะ.... ไม่มีคนใช้มั๊ง ไม่ขอบทำอะไรตามใคร แต่ชอบทำอะไรตามอำเภอใจ สุดท้าย น้องๆ ในทีม ที่ผมกำหนดให้เขียน Server ทั้งหมด 4 คน (รวมผมเป็น 5 คน) หลังจากเขียน Erlang กันไปได้พักใหญ่ ผลคือ ลาออกหนึ่งคน สองคนไม่น่าจะได้อะไรมาก อีกคนนึงเอา Erlang ไปทำ Project จบ ป.โท ลาดกระบังเป็นที่เรียบร้อย <<ตอนส่ง Project ตอบอาจารย์ว่า ใช้ Erlang ทำ Server (ทำเกม หมากฮอสออนไลน์) อาจาย์ตอบว่า ภาษาอะไร? มีภาษานี้ในโลกด้วยเหรอ?>>

Source code อยู่นี่ครับ https://github.com/nanusorn/SMO

พอแยกย้ายไม่ได้ทำ Game online ต่อ เคยคิดจะเอา Erlang มาทำอะไรเปรี้ยวๆ เล่น เหมือนกันเช่น เอา ETS, DETS Mnesia มาทำ memory database อ้าวทำเป็นเล่นนะครับ ตอนนั้น ยังไม่มี Couchbase เลย แต่ก็ต้องไปทำอย่างอื่นก่อน

พอปี 2011 กลับมาทำ Facebook game ก็คิดจะเอา Erlang มาทำ Server อีกเหมือนกัน แต่เวลากระชั้นมาก น้องในทีมเลยใช้ PHP แทน (เห้อ...)

ข่าวการใช้ Erlang แทบไม่มีให้เห็นในไทย แม้แต่ต่างประเทศ ผู้คนใน Community เองก็บ่นๆ กันว่า โดน Node.JS ดึง Developer ไปเยอะ แน่ล่ะ JavaScript เข้าใจง่ายกว่าเยอะนี่

จนปีนี้ ในที่สุด ความสุขสันต์ก็มีจริง มีโครงการที่สามารถใช้ Erlang ได้ และที่สำคัญ ผมลองเสนอ Erlang เข้าที่ประชุม ที่ประชุมเห็นด้วยกับการใช้ เสียด้วยสิ ทั้งๆ ที่บอกก่อนแล้วนะ Erlang คือ Prolog นะครับ เขาตอบกลับมาว่า "ผมชอบ Lisp คุณป้อลอง Clojure เลยไม๊" (แนวกว่าเราอีกอะ)

ผมกลับมาอยู่กับ Erlang ได้หลายเดือนแล้ว โครงการนี้ ใช้ Erlang ในแนวทางที่ผมไม่เคยใช้มาก่อน เช่น

  • WebMachine สำหรับ HTTP protocol
  • MongoDB สำหรับ เก็บ Transaction LOG
  • XML parser (เรื่องใหญ่โฮ๊ก) Parse incoming transaction log
  • OCI Oracle C Interface สำหรับ เก็บ data ของ Transaction 
  • Rebar Tools สุดเจ๋งสำหรับ จัดการทุกๆ ส่วนของ Erlang

ทำให้ได้เรียนรู้อะไรใหม่ๆ มากกว่าที่เคยเห็น เลยคิดจะเขียนเป็นบล็อคเก็บไว้เผื่อจะมีประโยชน์กับผู้ต้องการศึกษา Erlang


ผมจะทะยอย Blog ประสบการณ์ Erlang ให้มากที่สุดและบ่อยที่สุดต่อไป

Erlangian is Erlanging

9 ความคิดเห็น:

  1. ถึงผมจะไม่รู้เรื่อง แต่ผมก็ติดตามบล็อกพี่ครับ อะฮิๆ

    ตอบลบ
  2. มาตามอ่าน
    ยังไม่รู้เรื่องอะไรเลย 5 5 5

    ตอบลบ
  3. พี่ป้อเขียนบล๊อกแล้ว!
    รอติดตามด้วยใจระทึกพลันนะครับ

    ตอบลบ
  4. แอร๊ยยยย ERL เออแรง เออเร่อ ~

    ตอบลบ
  5. แวะมาเจิม...

    พูดซะอยากเขียน Erlang เลย แต่ความรู้เรื่อง functional มันเป็นศูนย์

    ตอบลบ