เห็นกำลังนิยมคำนี้กันน่ะ คือย้อนไปเมื่อห้าเดือนที่แล้ว มีบริษัทญี่ปุ่นมาว่าจ้างให้ผมพัฒนาเวป eCommerce แนว Social Shopper โดยเปิดโอกาสให้ใช้ทุกอย่างที่อยากใช้เต็มที่ "เสร็จโจร"
นิสัยเสีย... ผมเริ่มจากอะไรที่เขาไม่ใช้กันอีกแล้ว ใช่ครับ Erlang เพราะปีกว่าๆ ที่ผ่านมาตาม Framework อยู่ตัวนึงชื่อ Chicago Boss (http://www.chicagoboss.org) Evan Miller คนพัฒนามีแนวคิดว่า Agile framework สุดเจ๋งอย่าง Rails มันมีข้อเสียในการ Deployment เรื่อง Scallability วุ่นวายแถมบริโภค resource เยอะเกินไป แกเลยใช้ Erlang พัฒนา Framework เลียนแบบ Rails ขึ้นมา
แต่อย่างที่รู้ Community ของ Erlang ไม่ได้ใหญ่โตอะไรมากนัก (นั่นแหละของโปรด) เท่าที่รู้สึกได้ คนที่มาช่วยเหลือโครงการนนี้น่าจะหลักหน่วย เมื่อเทียบกับ Rails แล้ว มันคนละเรื่องเลย
ผมกับน้องโปรแกรมเมอร์ (คนที่ใช้ Erlang ทำ Project จบ ป.โท) เราเริ่มใช้ CB ในการพัฒนาเวป eCommerce ที่ว่า กันประมาณหนึ่งเดือนเราพบว่า
- มันคือ Rails ดีๆ นี่เอง แต่เขียนด้วย Erlang แทน ใช้ RoR เป็นก็ใช้ ChicagoBoss เป็นนะ (แต่อาจยังเขียน Erlang ไม่เป็น แหะๆ )
- มี Abstract layer สนับสนุนฐานข้อมูลหลายตัว ได้แก่
- Tokyo Tyrant (แต่ไม่มี Kyoty Tycoon)
- Mnesia (Default database ที่ติดมากับ Erlang : ผมอ่านว่า เอ็มนีเซีย)
- MySQL (อะไร? ไม่รู้จัก)
- PostgreSQL (นี่ก็ไม่รู้จัก)
- MongoDB (อันนี้รู้จักดีเลย)
- Riak : อันนี้น่าสนใจมาก เป็น Key/Value server ของบริษัท Basho คนพัฒนา Rebar : Erlang management tool เดี๋ยวมีเวลาค่อยมาว่ากัน
- มี MQ ติดมาเลย (Highlight)
- มี SMTP module สำหรับ ส่งเมล์อัตโนมัติ มาให้
- ใช้ Rebar จัดการทุกส่วน : คิดง่ายๆ Rebar ก็เหมือน Gem + Bundler
- มี DTL (Django's Templating Library) รู้จักตอน "โดม" แนะนำให้ทำ Django ประมาณปี 2007
ข้อเสีย
- ทำอะไรเกินกว่าที่ให้มา ไม่ง่ายเลย
- เขียน OTP server module (Open Telecom Platform เป็น generic server module ของ Erlang ไว้เขียนเล่าให้อ่านว่า มันคืออะไรต่อไปนะครับ) ส่วนตัวไม่ได้ โครงสร้าง Folder ไม่เอื้ออำนวย (ยังไม่ได้ตามไล่ดู)
- พอ Community เล็ก จะหาอะไรมาเพิ่ม ก็ไม่ง่าย เช่น อยากได้การสนับสนุน OCI (Oracle Call Interface) ก็ไม่มี ต้องเขียนเอง (เขียนแล้วด้วย แต่ยังไม่เสร็จ)
- NoSQL แบบ Relational : บางคนอาจโอเค แต่ผมว่า มันไม่สุดว่ะ NoSQL มันน่าจะ Nested elements array ในตัว document มันเลย แต่ CB ทำได้แต่ Document Relational พอมีคำว่า Relational ปุ๊ป ขัดใจปั๊ป, แก้ปัญหาโดย Direct call MongoDB ก็ได้ ผ่าน Connection Pool.
สุดท้าย เราก็ตัดสินใจว่า ใช้ RoR เหอะ หาของง่ายกว่า อนาคตจะได้ไม่อยู่ในสภาพจมน้ำ แต่ก็ไม่วายจะใช้ CB สำหรับส่ง Mail ตอบรับการลงทะเบียน :)
เป็นอันว่า โครงการ eCommerce เวปที่ทำก็กลายเป็น RoR ไปแต่สิ่งที่ได้จาก CB คือ
- สำหรับ Erlang แล้ว Rebar นี่มันสุดยอดจริงๆ ทำ EUnit ได้ด้วย
- ใช้ CB ทำอะไรได้อีกเยอะ เช่น Mobile push services ที่รับ User ได้เป็นแสนๆ ใช้ MQ นี่แหละ
- Riak น่าสนใจมาก
- Tokyo Tyrant ก็น่าสนใจ
- แต่ Kyoto Tycoon น่าสนใจกว่า (เชื่อผม... เชื่อโดมด้วยก็ได้)
- ได้ลอง OCI กับ Erlang แล้ว วุ่นวายดีจัง (แล้วก็ได้เอามาใช้กับโครงการปัจจุบัน ไว้เล่าต่อไปครับ)
ต่อไปจะเล่าโครงการปัจจุบันที่ทำครัช (WebMachine + OTP Generic Server + OCI + MongoDB)
Erlangian is Erlanging
อ่านหัวข้อ...เออแรง....
ตอบลบแต่เนื้อหา Erlang