เห็นมีคนลองใช้งานกันเยอะ สำหรับ OpenGPT
จึงลองใช้งานดูบ้าง โดยสิ่งที่ต้องการประกอบไปด้วย
- สร้าง REST API ด้วยภาษา Go และใช้ Echo framework
- ทำการทดสอบในส่วนของ API
มาลองใช้งานกันดู
ขั้นตอนที่ 1 เริ่มด้วยการออกแบบ API ที่ต้องการก่อน
ถ้า input ดีแล้ว ก็จะทำให้ได้ผลลัพธืที่ดีขึ้น
โดยสิ่งที่ออกแบบและบอกให้ทำ เป็นดังนี้
ทาง ChatGPT จะตอบกลับมาด้วย code พร้อมคำอธิบาย ดังนี้
[gist id="e70dc1fd1cb777afa72b120df70dab1f" file="api.go"]จะเห็นได้ว่ามีการเรียกใช้ function doRegister() แต่ไม่มีการประกาศ
จึงต้องสั่งเพิ่มเติม ด้วยการให้สร้าง function นี้ด้วยการบันทึกข้อมูลลง MySQL database ก็แล้วกัน
จะได้ code อีกชุดมาดังนี้
[gist id="e70dc1fd1cb777afa72b120df70dab1f" file="db.go"]ขั้นตอนที่ 2 อยากให้เปลี่ยน web framework ไปใช้งาน Echo framework
ทาง ChatGPT ก็จัด code ให้และอธิบายเป็นขั้นตอนดังนี้
- ติดตั้ง library
- การใช้งาน middleware
- การเขียนในส่วน routing
ขั้นตอนที่ 3 ต้องทำ API testing ด้วย Echo framework ด้วยสิ ถึงจะครบสูตร
ก็จะได้ code ออกมา โดยแนะนำให้ใช้งาน testify library สำหรับการทดสอบอีกด้วย
[gist id="e70dc1fd1cb777afa72b120df70dab1f" file="api_test.go"]จากนั้นก็ถามไปว่า เราจะแยก database ออกจาก testing อย่างไร (isolate)
ก็แนะนำมาเยอะเลย
มาถึงตอนนี้ได้โครงสร้าง code ทำงานเกิน 50% เข้าไปแล้ว
เพิ่มเติมนิดหน่อย คือ การ isolate ระหว่าง routing กับ database ออกจากกันด้วย
interface และ struct เลยสั่งให้ช่วยทำหน่อย
ก็ได้ code ดังนี้มี
แล้ว test อย่างไร ก็เลย ถามต่ออีก
[gist id="e70dc1fd1cb777afa72b120df70dab1f" file="service_test.go"]สบายละงานนี้ !!!
ขั้นตอนที่ 4 ทำการสร้าง Dockerfile สำหรับ project นี้
จากที่บอกตรง ๆ ไปว่าให้สร้าง Dockerfile
จะใช้งาน go 1.16 มาให้
จึงต้องบอกแบบเฉพาะเจาะจงไปด้วย
ทั้ง version ของ go
และวิธีการสร้าง Dockerfile แบบ multi-stage build ด้วย
จะได้ตามที่ต้องการมากยิ่งขึ้น
สิ่งที่ได้เป็นดังนี้ พร้อมทั้งคำอธิบาย และ ขั้นตอนการ run ด้วย
[gist id="e70dc1fd1cb777afa72b120df70dab1f" file="Dockerfile"]ยังไม่พอ ขอให้สร้าง docker-compose.yml สำหรับ project นี้ และ mysql database
และของ mysql database แบบ master-slave ด้วย
จะได้ดังนี้
มาถึงตรงนี้ deploy ระบบงานดีกว่านะ
ขั้นตอนที่ 5 ทำการ deploy ไปยัง Digital Ocean เล่น
โดยจะทำการ provisioning server ขึ้นมาใหม่
และทำการ deploy ทั้ง app และ database ด้วย Terraform
เมื่ออธิบายไปให้ ก็จะทำการบอกขั้นตอนตั้งแต่การติดตั้ง การเขียน main.tf และ deploy กันเลย
[gist id="e70dc1fd1cb777afa72b120df70dab1f" file="main.tf"]เพียงเท่านี้เราก็ได้ code ที่พอจะทำงานและ deploy ได้แล้ว
ช่วยลดเวลาไปได้เยอะเลย
แต่จำเป็นต้องมีความรู้พื้นฐาน รวมทั้งความต้องการที่ชัดเจน
จะช่วยเราได้อย่างมาก