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

  • สร้าง REST API ด้วยภาษา Go และใช้ Echo framework
  • ทำการทดสอบในส่วนของ API

มาลองใช้งานกันดู

ขั้นตอนที่ 1 เริ่มด้วยการออกแบบ API ที่ต้องการก่อน

ถ้า input ดีแล้ว ก็จะทำให้ได้ผลลัพธืที่ดีขึ้น
โดยสิ่งที่ออกแบบและบอกให้ทำ เป็นดังนี้

ทาง ChatGPT จะตอบกลับมาด้วย code พร้อมคำอธิบาย ดังนี้

จะเห็นได้ว่ามีการเรียกใช้ function doRegister() แต่ไม่มีการประกาศ
จึงต้องสั่งเพิ่มเติม ด้วยการให้สร้าง function นี้ด้วยการบันทึกข้อมูลลง MySQL database ก็แล้วกัน

จะได้ code อีกชุดมาดังนี้

ขั้นตอนที่ 2 อยากให้เปลี่ยน web framework ไปใช้งาน Echo framework

ทาง ChatGPT ก็จัด code ให้และอธิบายเป็นขั้นตอนดังนี้

  • ติดตั้ง library
  • การใช้งาน middleware
  • การเขียนในส่วน routing

ขั้นตอนที่ 3 ต้องทำ API testing ด้วย Echo framework ด้วยสิ ถึงจะครบสูตร

ก็จะได้ code ออกมา โดยแนะนำให้ใช้งาน testify library สำหรับการทดสอบอีกด้วย

จากนั้นก็ถามไปว่า เราจะแยก database ออกจาก testing อย่างไร (isolate)
ก็แนะนำมาเยอะเลย

มาถึงตอนนี้ได้โครงสร้าง code ทำงานเกิน 50% เข้าไปแล้ว

เพิ่มเติมนิดหน่อย คือ การ isolate ระหว่าง routing กับ database ออกจากกันด้วย
interface และ struct เลยสั่งให้ช่วยทำหน่อย
ก็ได้ code ดังนี้มี

แล้ว test อย่างไร ก็เลย ถามต่ออีก

สบายละงานนี้ !!!

ขั้นตอนที่ 4 ทำการสร้าง Dockerfile สำหรับ project นี้

จากที่บอกตรง ๆ ไปว่าให้สร้าง Dockerfile
จะใช้งาน go 1.16 มาให้
จึงต้องบอกแบบเฉพาะเจาะจงไปด้วย
ทั้ง version ของ go
และวิธีการสร้าง Dockerfile แบบ multi-stage build ด้วย
จะได้ตามที่ต้องการมากยิ่งขึ้น

สิ่งที่ได้เป็นดังนี้ พร้อมทั้งคำอธิบาย และ ขั้นตอนการ run ด้วย

ยังไม่พอ ขอให้สร้าง docker-compose.yml สำหรับ project นี้ และ mysql database
และของ mysql database แบบ master-slave ด้วย
จะได้ดังนี้

มาถึงตรงนี้ deploy ระบบงานดีกว่านะ

ขั้นตอนที่ 5 ทำการ deploy ไปยัง Digital Ocean เล่น

โดยจะทำการ provisioning server ขึ้นมาใหม่
และทำการ deploy ทั้ง app และ database ด้วย Terraform

เมื่ออธิบายไปให้ ก็จะทำการบอกขั้นตอนตั้งแต่การติดตั้ง การเขียน main.tf และ deploy กันเลย

เพียงเท่านี้เราก็ได้ code ที่พอจะทำงานและ deploy ได้แล้ว
ช่วยลดเวลาไปได้เยอะเลย
แต่จำเป็นต้องมีความรู้พื้นฐาน รวมทั้งความต้องการที่ชัดเจน
จะช่วยเราได้อย่างมาก

ตัวอย่าง code และ instruction