เมื่อ Android Developer ไปเขียน Backend ด้วย Node.js บน AWS Lambda

KhunGames
SkillLane
Published in
2 min readJul 6, 2018

ตั้งแต่ช่วงต้นปีที่ผ่านมางานทางฝั่ง web ก็เพิ่มพูนมหาศาล จากที่ปกติผมเขียนแต่ Android เลยต้องลงไปโชว์ฝีมือ แย่งงาน kasidesh และ Chatthana Janethanakarn ทำด้วย

แรกพบ AWS

ด้วยความที่ได้ยินชื่อเสียง Amazon Web Services (AWS) มามาก ประกอบกับ Jeff bezos เจ้าของ Amazon นั้นเป็นคนที่รวยติดอันดับโลก ผมจึงคาดหวัง(ไปเอง)ว่าตัว code ของมันจะสามารถเปร่งแสงออร่าออกมา ทำให้เว็ป AWS นี่สวยงาม ใช้งานได้ง่าย มีความเร็วระดับสุดยอด เมพสุดๆ

แต่ผลปรากฏว่า …

ใช้งานก็โคดยาก…

หน้าเว็ปก็ไม่สวย…

เว็บก็โหลดอย่างช้า…

ผลการค้นหารูปภาพสำหรับ jeff bezos สฟีเ้
คนที่รวยที่สุดในโลก

แต่นอกจากข้อเสียเหล่านั้นแล้ว AWS ถือเป็น cloud ที่ดีๆมาก โดยทาง kasidesh
ได้ให้ข้อดีของ AWS มาดังนี้

  • มีความเสถียรอย่างมากกกกกกก โดยมี SLA 99.9999999 %
  • มีความปลอดภัยสูง ตามมาตราฐานสากล
  • High Performance
  • มีหลาย serviceให้เลือกใช้ ครอบคลุมทุกอย่าง(แต่ดีหรือไม่ดี เป็นอีกเรื่องนึง)
  • service หลายๆตัวทำงานต่อเนื่องกันได้ เช่น อัพ file ขึ้น s3 แล้วให้ lambda มาอ่าน จากนั้นเขียนลง dynamo เสร็จแล้วก็ทำ Api อ่าน dynamo ด้วย lambda+Api gateway
  • มี node อยู่หลาย Region มากๆ ครอบคลุมการใช้งานทั่วโลก
  • เป็น platform ที่รองรับการทำ serverless ที่มีรายละเอียดเยอะสุด
  • หาคนมาทำต่อ/ช่วยทำ ได้ง่าย
  • ราคาของ service บางอย่างนั้นถูกมากๆ (เน้นย้ำคำว่า บางอย่าง)
AWS มี SLA 99.9999999 % , ส่วนบริษัทรถไฟฟ้าแห่งหนึ่งมี SLA เพียง 99.5 %

คนเขียนเว็บไม่มี Editor ดีๆใช้กันเหรอ ?

ด้วยความที่ใช้ Android studio มานานทำให้ผมเคยชินกับการ

  • กดปุ่มทีเดียวมันก็รันเสร็จละ
  • พิมพ์ผิดเดี๋ยวมันก็แจ้งเตือน
  • ไม่ต้องคิดชื่อตัวแปร เดี๋ยวมันก็ suggest มาให้
  • พิมพ์ไม่กี่ตัวเดี๋ยว auto complete ก็ขึ้นมาละ
  • ฯลฯ

เสพติดความสบาย…

แล้วพอมาใช้ vs code ก็แบบว่านี่มันอะไรกัน ไม่มีอะไรสักอย่าง นี่พวกนายทนใช้ไปได้ยังไงกัน ขนาด setting ยังเป็น json เลย GUI ก็ไม่มี !! จะรันก็ต้องพิมพ์ command line, ลืม npm -i อีก…

ตัวอย่างของ อินเตอร์เฟส ที่แสนน่าเกลียด ซึ่งใช้กันมาตั้งแต่ยุค 1960s

นี่มันปี 2018 แล้วยังต้องใช้จอดำๆกันอยู่อีกเหรอ

เลยดั้นด้นไปใช้ WebStorm อยู่แปปนึงแต่ก็รู้ว่ามันไม่ค่อยจะดีกว่ากันซักเท่าไหร่ แถมมันเสียตังด้วย เลยยอมๆทนกลับมาใช้ vscode ต่อไป

พอๆใช้ไปสักพักก็เริ่มเห็นถึงข้อดีของ vscode ก็คือมันเร็วมากๆ มีความเสถียรในระดับสุดยอด และมันสามารถลง Extenions เพิ่มเติมได้ ทีนี้ละความสะดวกสบายก็เริ่มกลับมา 555+

AWS Lambda & Serverless

serverless คือ ?

ทำ backendโดยไม่ต้องไปเซ็ตอัพ server อะไรให้วุ่นวาย แถมมันจะดูแลเรื่อง auto scaling ให้เราด้วย สิ่งที่เราต้องทำก็แค่เขียนโค้ดเท่านั้น

อ่านเพิ่มเติม

lambda คือ ?

บริการทำ serverless ของ AWS โดยรองรับหลายภาษาเช่น C#, java, node.js, phyton

Serverless Framework

การใช้ lambda โดยปกติแล้วมันยังไม่เป็น codebase 100% บางอย่างเราต้องไปนั่งคลิกๆ ตั้งค่าใน AWS อยู่ ทีนี้ถ้าเราจะทำหลายๆ environment มันก็จะเกิดปัญหาว่าเราต้องไปคลิ้กๆ ตั้งค่าใหม่ทุกครั้ง แล้วถ้าเราลืมตั้งค่าบางอย่างไปละ server ก็บึ้มสิครับ

แต่ Serverless Framework จะมาช่วยแก้ปัญหาทั้งหมดนี้ได้

ข้อดีของ Serverless Framework

  • เก็บค่า config ต่างๆไว้เป็น code ทำให้ง่ายต่อการใช้งาน
  • รองรับหลาย Provider ทำให้ในอนาคตเราย้ายไปใช้ตัวอื่นได้
  • รองรับหลายภาษาโปรแกรมมิ่งใน project เดียวกันได้เลย
  • deploy ได้ง่ายและรวดเร็ว
  • มีตัวอย่างและเอกสารมากมาย

เอาไว้เดี๋ยวจะมาเขียนเรื่องวิธีใช้งานเจ้า serverless อีกทีนะครับ

Hello world node.js

เนื่องจากผมเคยเขียน node.js เมื่อนานมาแล้ว ก่อนกลับไปเขียนอีกรอบก็ต้องใช้เวลารื้อฟื้นอยู่แปปนึง แต่ไม่ค่อยนานนักเพราะด้วย javascript นั้นเป็นภาษาที่เขียนง่าย ที่ต้องเรียนรู้หลักๆก็คือ ES6 ซึ่งผมก็ได้คอร์สนี้ช่วยไว้

คอร์สนี้จะอธิบายฟีเจอร์หลักๆของ ES6 ให้เข้าใจได้ง่ายผมใช้เวลาเรียนไม่นานก็เข้าใจทั้งหมดแล้ว และที่สำคัญ

เป็นคอร์สฟรีด้วยครับ

node.js นั้นถือว่าเป็นภาษาที่ดีมั้กมาก รันไว สร้าง object ได้ง่าย high order function ก็มี และที่ชอบมากๆก็คือ promise มันช่วยให้ code เป็นระเบียบและลด callback hell ไปได้ มี่ learning curve ไม่สูงนัก เขียนเพลินจนลืม android ไปเลยครับ

สรุป

กว่า 6 เดือนที่มาทำ serverless และ node.js ผมก็ได้เรียนรู้การทำ backend มากขึ้น เหมือนได้อัพสเตตัสให้สมดุลมากขึ้น(จากแต่ก่อนที่ android อย่างเดียว) ได้มีการเปิดมุมมองต้องการพัฒนาซอร์ฟแวร์มากขึ้น ทำให้เวลาที่ API พังเราก็จะเห็นใจคนทำมากขึ้น(เพราะเราก็ทำมันพังมาบ่อย ฮาๆ)

--

--

KhunGames
SkillLane

Software Engineer@skilllane ผู้ชื่นชอบ ประวัติศาสตร์ การเมือง สังคม และ ไอที