AWS Serverless เพิ่มประสิทธิภาพการทำงานให้ทีม Developer อย่างไร?

32
32

Credit: SurveyGuy

ทักทายและเกริ่นนำ

          สวัสดีครับผู้อ่านทุกท่าน ในบทความนี้เราจะมาดูกันเกี่ยวกับหัวข้อหนึ่งที่เป็นอีกหนึ่ง Talk of the Town ในชุมชนคลาวด์คอมพิวติ้งมาระยะหนึ่งแล้ว นั่นก็คือ “Serverless” นั่นเอง ว้าวววว แล้วเจ้า Serverless มันคือมีสำคัญอย่างไร (นอกเหรือจากชื่อเท่ ๆ ของมัน) แล้วจะมาช่วยให้การทำงานบนคลาวด์ของเรานั้นมีประสิทภาพที่เพิ่มขึ้นได้อย่างไร เรามาดูกันเลย

Serverless – เหนือเซิร์ฟเวอร์คือไรเซิร์ฟเวอร์

Serverless เป็นการผสมคำว่า Server + Less => Severless ซึ่งเป็น adverb ที่แปลตรงตัวได้ง่าย ๆ คือ ไร้เซิร์ฟเวอร์ หรือไม่มีเซิร์ฟเวอร์นั่นเอง โดยไอเดียของ Serverless ก็คือการที่เราสร้างและเรียกใช้แอปพลิเคชันโดยไม่ต้องคำนึงถึงเซิร์ฟเวอร์ ถ้าคิดง่าย ๆ ก็คือ ทุกคนลองนึกภาพตามเวลาที่เราดูหนังจีนกำลังภายในนะครับ เวลาที่พระเอกของเรากำลังฝึกวิชานั้น มักจะมีเคล็ดลับกระบวนท่าที่มักจะได้ยินกันก็คือ เหนือกระบี่คือไร้กระบี่ นั่นคือเราจุดสูงสุดของวิทยายุทธคือเราไม่ต้องใช้อาวุธอีกต่อไป ซึ่งก็คล้าย ๆ กันกับ Serverless ครับว่า การที่เราไม่มีเซิร์ฟเวอร์นั้นดีที่สุด เพราะเราไม่ต้องมาเสียเวลาจัดการกับส่วนอื่น ๆ ของเซิร์ฟเวอร์นั่นเอง ฮ่า ๆ

Credit: Sysfore

AWS นำเสนอเทคโนโลยีสำหรับการเรียกใช้งานโค้ด การจัดการข้อมูล และการผสานรวมการทำงานของแอปพลิเคชันทั้งหมดโดยไม่ต้องมีการจัดการเซิร์ฟเวอร์ เทคโนโลยีแบบไร้เซิร์ฟเวอร์ประกอบด้วย Auto Scaling ความพร้อมใช้งานในตัวที่สูง และรูปแบบการเรียกเก็บค่าบริการตามการใช้งานจริงเพื่อเพิ่มความคล่องตัวและความคุ้มค่าต่อต้นทุน เทคโนโลยีเหล่านี้ยังช่วยกำจัดงานด้านการจัดการโครงสร้างพื้นฐานอย่างการเตรียมความจุและการแพตช์ คุณจึงสามารถให้ความสำคัญกับการเขียนโค้ดเพื่อให้บริการลูกค้าของคุณได้ แอปพลิเคชันแบบไร้เซิร์ฟเวอร์เริ่มจาก AWS Lambda ซึ่งเป็นบริการประมวลผลที่ขับเคลื่อนด้วยเหตุการณ์ที่ผสานการทำงานแบบเนทีฟกับบริการของ AWS อื่นๆ มากกว่า 200 รายการและแอปพลิเคชันการให้บริการซอฟต์แวร์ (SaaS)

โดยในปัจจุบันนั้นนักพัฒนาได้มีการใช้งาน Serverless Computing เป็นที่แพร่หลายอย่างมากขึ้น เนื่องจากช่วยให้นักพัฒนาลดความยุ่งยากในการดูแล Infrastucture พื้นฐานลงไปได้ ด้วยการใช้บริการ Serverless บนผู้ให้บริการ Cloud หลายๆราย ทำให้นักพัฒนาสามารถใช้เวลาพัฒนาซอฟต์แวร์ของตนเองได้อย่างเต็มที่ ล่าสุด Datadog เผยผลสำรวจการใช้งานเทคโนโลยี Serverless Computing พบว่ามีการใช้งาน Serverless Computing ภายในองค์กรทั่วไปเพิ่มขึ้นถึง 3 เท่า โดยส่วนใหญ่แล้วเป็นการใช้งานบนผู้ให้บริการ Cloud ชั้นนำอย่าง AWS Lambda, Azure Functions และ Google Cloud Functions

จุดเด่นของ Serverless คือ

  1. เปลี่ยนไอเดียให้พร้อมเข้าสู่ตลาดได้เร็วยิ่งขึ้น

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

  1. ลดต้นทุน

ด้วยรูปแบบการเรียกเก็บค่าบริการตามประโยชน์ที่ได้ การใช้ทรัพยากรจะได้รับการปรับให้มีความเหมาะสมโดยอัตโนมัติและคุณจะไม่ต้องชำระค่าบริการสำหรับการจัดเตรียมที่เกินความจำเป็น

  1. ปรับได้ในทุกขนาด

ด้วยเทคโนโลยีที่ปรับขนาดโดยอัตโนมัติจากศูนย์จนถึงความต้องการใช้งานสูงสุด คุณจึงสามารถปรับตามความต้องการของลูกค้าได้อย่างรวดเร็วยิ่งกว่าที่เคย

  1. สร้างแอปพลิเคชันที่ดียิ่งขึ้นได้ง่ายกว่าเดิม

แอปพลิเคชันแบบไร้เซิร์ฟเวอร์มีการผสานรวมบริการในตัว คุณจึงสามารถให้ความสำคัญกับการสร้างแอปพลิเคชันแทนที่จะมัวจัดการกับการกำหนดค่าได้

สำหรับบริการ Serverless บน AWS ตัวที่ได้รับความนิยมมากที่สุดนั้นก็คงจะหนีไม่พ้น AWS Lambda อย่างแน่นอน!

AWS Lambda คืออะไร ?

Credit: AWS ตัวอย่างของระบบที่เชื่อมต่อระหว่าง Amazon Lambda และ amazon DynamoDB (ฐานข้อมูล)

ตอบแบบสั้น ๆ ได้ใจความเลยก็คือ AWS Lambda คือบริการหนึ่งของ AWS ที่ทำให้เราสามารถรันโค้ดแบบ Serverless ได้ครับ ว่าง่ายๆคือเราเขียนโค้ดโดยที่ไม่ต้องเซ็ตอัพอะไรเกี่ยวกับเซิฟเวอร์เลยครับ แค่เขียนโค้ดแล้วอัพโหลดขึ้นไปก็สามารถใช้งานได้เลยครับ

ข้อดีของ AWS Lambda

ถ้าเจ้า Lambda ไม่มีข้อดีที่แบบว่าดีสุด ๆ มันก็อาจจะไม่สามารถโน้มน้าวให้คนไปใช้งาน Lambda ได้ใช่ไหมครับ ซึ่งข้อดีของ Lambda เลยก็คือมันช่วยเราตัดขั้นตอนอะไรบางอย่างออกไปแบบดื้อ ๆ เลย อธิบายง่าย ๆ ด้วยตัวอย่างดังนี้ ปกติแล้วโค้ดของเราจะต้องถูกรันอยู่บนเซิฟเวอร์ใช่ไหมครับ ซึ่งเราก็ต้องมีความรู้ในการเซ็ตอัพเซิฟเวอร์ ในขณะที่ AWS Lambda สามารถให้เราอัพโหลดโค้ดขึ้นไปได้เลย ตัดปัญหาเรื่องเซิฟเวอร์ไปได้เลยครับ

จุดขายอีกอย่างหนึ่งที่ไม่พูดไม่ได้เลยคือ AWS Lambda นั้นสามารถ trigger event ของ AWS service ตัวอื่นๆได้ครับ เช่น การ trigger เมื่อมีการอัพโหลดรูปภาพลงบน S3, เมื่อ database มีการเปลี่ยนแปลง, หรือเมื่อมี http request เข้ามาผ่าน API Gateway ทำให้เราสามารถเขียนโค้ดเพื่อเล่นกับอีเว้นท์ต่างๆได้เยอะเลยครับ

ค่าใช้จ่าย

เรื่องค่าใช้จ่ายนี่ก็สำคัญครับ หลายคนอาจจะถามว่า AWS Lambda มีค่าใช่จ่ายที่แพงไหม จริง ๆ แล้วมันไม่ได้แพงเลยครับ นั่นก็คือเพราะว่า AWS Lambda จะคิดราคาตาม compute time ครับ ว่ากันง่าย ๆ คือ ถ้าโค้ดนี้ไม่ถูกรันก็ไม่ต้องจ่ายเงินครับ ต่างกับแบบเดิมที่เราต้องตั้งเซิฟเวอร์ ถึงแม้โค้ดเราจะไม่ถูกใช้งานแต่ก็ต้องเสียเงินตามเวลาใช้งานเซิฟเวอร์อยู่ดี

ค่าใช้จ่ายเท่าไหร่ ?

สำหรับคนที่เพิ่งสมัคร account ของ AWS ใหม่ จะมี AWS Free Tier ให้เราสามารถใช้บริการของ AWS ได้ฟรีในระดับนึงเป็นเวลา 1 ปีครับ สำหรับ AWS Lambda เราสามารถใช้ได้ 1 ล้าน request ต่อเดือนครับ ซึ่งเยอะมากเลยนะสำหรับคนที่อยากจะมาใช้ในการศึกษาแบบทั่วไปเพื่อทำความเข้าใจและเรียนรู้เจ้า AWS Lambda ครับ

มาลองใช้งาน AWS Lambda ฟังก์ชันกัน

          เอาล่ะครับ อ่านมาถึงหัวข้อนี้แล้วถ้าเราเรียนรู้กันแต่ทฤษฎีและไม่มีตัวอย่างให้เราดูเลยมันก็อาจจะเห็นภาพยากใช่ไหมครับ เรามาดูตัวอย่างการใช้งาน AWS Lambda กันครับ ซึ่งตัวอย่างที่เราจะมาดูกันก็คือการใช้ AWS S3 ในการเรียกใช้งานหรือไปดึง AWS Lambda Function ครับผม แค่ชื่อก็ตื่นเต้นแล้ว เรามาดูขั้นตอนการทำกันเลยดีกว่า 🙂

เริ่มต้นเลยเราต้องสร้าง S3 Bucket กันก่อน

  1. เปิด Amazon S3 console
  2. เลือก Create buket
  3. กำหนดชื่อของ bucket และเลือก region หรือพื้นที่ของ AWS Datacenter ที่เราต้องการสร้าง
  4. เลือกสร้าง bucket

หลังจากที่เราสร้างแล้วให้เราทำการอัพโหลดไฟล์ตัวอย่าง เช่น ไฟล์เอกสารอะไรก็ได้เข้าไปใน bucket ครับ

ลำดับถัดมาเราจะมาสร้าง Lambda Function กัน โดยทำได้ดังนี้

  1. ปิดหน้า Lambda Console ขึ้นมา
  2. เลือกสร้างฟังก์ชัน (Create function)
  3. เลือก Use a blueprint
  4. เลือก configure
  5. ภายใต้ Basic information ให้กำหนดชื่อฟังก์ชันและ Executation role
  6. เลือก S3 trigger และเลือก bucket ที่เราได้สร้างไว้ก่อนหน้านี้

สำหรับโค้ดตัวอย่างด้านล่างสำหรับคนที่อยากใช้ command line ก็สามารถใช้ในการสร้าง Lambda Function ได้เหมือนกันครับ 🙂

Credit: รังสิมันต์ เกษแก้ว (ผู้เขียน)

          สำหรับการทดสอบนั้นสามารถทำได้โดยไปที่ Bucket ของเราและเลือกอัพโหลดข้อมูลพร้อมกับเลือกฟังก์ชัน Lambda ที่จะถูก triggered และเราสามารถทำการมอนิเตอร์ได้โดยใช้ Amazon CloudWatch นั่นเอง

อ่านมาจนถึงจุดนี้แล้วถ้าหากผู้อ่านมีความสนใจในบริการของ AWS โดยเฉพาะถ้าอยากจะปรึกษาเกี่ยวกับการใช้งานเทคโนโลยีแบบใหม่ที่ชื่อว่า Serverless ก็สามารถติดต่อ Cloud HM ได้โดยตรงเลยครับ เพราะเรามีการให้บริการ Cloud Platform ครบวงจร ทั้ง Domestic Cloud และ Global Cloud เพื่อตอบสนองความต้องการรอบด้านของลูกค้าครับ

— Cloud HM