สรุปสั้น ๆ
จากงาน Microsoft Ignite ปีนี้ Microsoft ได้ออกมาอัปเดตว่า Azure App Service ที่เป็นบริการเอาสำหรับโฮสต์เว็บแอปพลิเคชัน, เว็บ API หรือ Mobile Backend ได้มีการอัปเดตว่าเค้าได้มีการรองรับภาษา Go เพิ่มมาแล้วนะ
แล้ววิธีการ Deploy Go Application ไปยัง Azure App Service จะมีวิธีอย่างไรไปดูกัน 🚀
เขียนโดย
Sirasit Boonklang (Aeff)
Tech and Coding Consultant
บทความนี้ตีพิมพ์ และ เผยแพร่เมื่อ 20 มกราคม 2566
สิ่งที่เราต้องมีก่อน
- Azure Account และ ทำการ Activate Subscription ให้เรียบร้อย หากใครยังไม่มีก็สามารถสร้าง account ก่อนได้ที่ https://azure.microsoft.com/en-us/free/?ref=microsoft.com&utm_source=microsoft.com&utm_medium=docs
- Go ที่มีเวอร์ชันมากกว่า 1.18 ติดตั้งในเครื่องให้เรียบร้อย
มาสร้างตัวอย่าง Go Application อย่างง่าย ๆ กัน
- ไปที่ Visual Studio Code แล้วใช้คำสั่ง `go mod init ตามด้วยชื่อ module`
โดยคำสั่ง go mod init มันจะสร้างไฟล์ go.mod มาให้ แล้วการที่เราใส่ path ด้านหลังนั้นเพื่อให้จัดการ และ เรียกใช้ง่ายขึ้น เช่น เวลาที่ต้องการนำโปรเจกต์นี้ไปทำเป็น package ของตัวเองก็สามารถเรียกใช้จาก Github ได้เลย เจ้าไฟล์ go.mod มีหน้าที่เก็บพวกชื่อ package และเวอร์ชันของ package ต่าง ๆ ที่ใช้กับโค้ดเราและเวอร์ชัน Go ที่โค้ดเราใช้
- สร้างไฟล์ชื่อ main.go
- ต่อมาเราจะมาเขียนไฟล์ที่เป็นโค้ดการทำงานของภาษา Go โดยเริ่มจากสร้างไฟล์ main.go ที่เป็นไฟล์การทำงานหลักของภาษา Go (แต่จริง ๆ แล้วในการรัน Go สามารถตั้งชื่ออื่นนอกจาก main ก็รันได้นะ)เมื่อเรารู้จักกับไฟล์ main.go แล้วเราไปดูโค้ดตัวอย่างกันครับ
โค้ดนี้จะประกอบไปด้วย 4 ส่วน
3.1 ประกอบ package main ว่าเป็น package หลัก
3.2 ส่วนในการเรียกใช้งานโมดูลที่เกี่ยวข้อง ในโปรเจกต์นี้จะมี fmt (fmt มันย่อมาจาก formatted เป็น package เอาไว้เรียกใช้งานตัวจัดการ input และ output) และ net/http (เป็น package ที่มี HTTP Client และ Server มาให้ใช้ เราสามารถเรียกใช้ method Get, Head, Post และ PostForm ได้)
3.3 ฟังก์ชัน HelloServer
ฟังก์ชัน HelloServer รับพารามิเตอร์สองตัว ได้แก่ ResponseWriter และ Request ResponseWriter ใช้เพื่อรอรับ Responese และ HTTP Request โดยการทำงานในฟังก์ชันจะมีการใช้ fmt.Fprintf ถูกเรียกใช้ด้วย ResponseWriter (ในที่นี่อยู่ตัวแปร w) และตามด้วยข้อความ Hello และ %s ที่เอาไว้แสดงข้อมูลที่เป็น String โดยตอนนี้ข้อมูลที่จะมาแสดงนั้นเป็น Path ของ URL ของ Request
3.4 ฟังก์ชัน main ซึ่งจะเป็นฟังก์ชันการทำงานหลัก Go จะรันได้ต้องมีฟังก์ชัน main เท่านั้น โดยในฟังก์ชันนี้จะมีการเรียกใช้ แพ็คเกจ “net/http” ใช้ HTTP Client และ Server โดยฟังก์ชัน “http.HandleFunc” จะทำการ Register HandleFunc สำหรับกำหนดตัวจัดการ Request เข้ามาใน Path (“/”) และ ฟังก์ชัน “http.ListenAndServe” จะทำการเริ่มรัน HTTP Server ด้วย โดยในที่นี้จะใช้เป็นพอร์ต :8080
- หลังจากเขียนโค้ดเสร็จก็ลองรันกันน ด้วยคำสั่ง go run main.go
- หากเราต้องการให้ Hello แล้วตามด้วยข้อความเพิ่มเติม สามารถลองใส่ / แล้วตามด้วยข้อความเพิ่มไปได้ เช่น http://localhost:8080/Azure%20App%20Service
- เมื่อเรารันตัวอย่างได้แล้ว ต่อมาเป็นขั้นตอนการ Deploy หากใครยังไม่มี Azure Subscription แล้วต้องการทำตามบทความนี้ แอดก็เอาแหล่งในการ Activate Sandbox ของ Microsoft Learn ที่สามารถไปใช้ฟรี ๆ ได้ 4 ชั่วโมงสำหรับการทำแลปนี้ โดยไปที่ ลิงก์นี้ แล้วกด Activate Sandbox ได้เลย
- เมื่อ Sandbox ถูก Activate แล้วให้ไปที่ Visual Studio Code ดาวน์โหลด Azure App Service extension มา
- แล้วไปที่ Azure App Service extension แล้วคลิกขวา เลือก Create New Web App
- ทำการตั้งชื่อเว็บแอป โดยชื่อนี้จะไปอยู่ใน URL ด้วยนะ
- เลือก Runtime เป็น Go ตอนนี้จะมีให้เลือก 2 เวอร์ชัน คือ 1.19 และ 1.18
- Plan หรือ ระดับของบริการ หากใครต้องการแพลนฟรี สำหรับ Dev/Test ให้เลือกเป็น F1
- เมื่อ Azure App Service ของเราสร้างเสร็จแล้ว สร้างคลิกขวาที่ App Service ของเราแล้วกด Deploy to Web App ..
- เลือกโฟลเดอร์ที่ต้องการจะ Deploy แล้วกด Deploy ได้เลย
สำหรับขั้นตอนในการ Deploy เราสามารถมาดู Log ระหว่าง Deploy ได้ที่ OUTPUT ด้านล่าง
เมื่อการ deployment completed แล้วให้ไปที่ App Service ของเรา คลิกขวาแล้วกด Browse Website ได้เลย
เพิ่งเท่านี้เราก็สามารถเอาเว็บตัวอย่างของเรา Deploy ขึ้นไปบน Azure App Service ได้แล้ว เย้ 🎉
หากใครที่จะเริ่มต้นเรียนรู้ภาษา Go และเรียนรู้การใช้งาน Azure App Service อยากจะบอกดังๆว่า เรามีคอร์สฟรีที่ไม่ควรพลาด
ระบบฝึกทักษะ การเขียนโปรแกรม
ที่พร้อมตรวจผลงานคุณ 24 ชั่วโมง
- โจทย์ปัญหากว่า 200 ข้อ ที่รอท้าทายคุณอยู่
- รองรับ 9 ภาษาโปรแกรมหลัก ไม่ว่าจะ Java, Python, C ก็เขียนได้
- ใช้งานได้ฟรี ! ครบ 20 ข้อขึ้นไป รับ Certificate ไปเลย !!