เห็นมีคนลองใช้งานกันเยอะ สำหรับ OpenGPT จึงลองใช้งานดูบ้าง โดยสิ่งที่ต้องการประกอบไปด้วย
สร้าง REST API ด้วยภาษา Go และใช้ Echo framework ทำการทดสอบในส่วนของ API
มาลองใช้งานกันดู
ขั้นตอนที่ 1 เริ่มด้วยการออกแบบ API ที่ต้องการก่อน
ถ้า input ดีแล้ว ก็จะทำให้ได้ผลลัพธืที่ดีขึ้น โดยสิ่งที่ออกแบบและบอกให้ทำ เป็นดังนี้
[gist id="e70dc1fd1cb777afa72b120df70dab1f" file="1.txt"]
ทาง 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
[gist id="e70dc1fd1cb777afa72b120df70dab1f" file="api2.go"]
ขั้นตอนที่ 3 ต้องทำ API testing ด้วย Echo framework ด้วยสิ ถึงจะครบสูตร
ก็จะได้ code ออกมา โดยแนะนำให้ใช้งาน testify library สำหรับการทดสอบอีกด้วย
[gist id="e70dc1fd1cb777afa72b120df70dab1f" file="api_test.go"]
จากนั้นก็ถามไปว่า เราจะแยก database ออกจาก testing อย่างไร (isolate) ก็แนะนำมาเยอะเลย
[gist id="e70dc1fd1cb777afa72b120df70dab1f" file="2.txt"]
มาถึงตอนนี้ได้โครงสร้าง code ทำงานเกิน 50% เข้าไปแล้ว
เพิ่มเติมนิดหน่อย คือ การ isolate ระหว่าง routing กับ database ออกจากกันด้วย interface และ struct เลยสั่งให้ช่วยทำหน่อย ก็ได้ code ดังนี้มี
[gist id="e70dc1fd1cb777afa72b120df70dab1f" file="service.go"]
แล้ว 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 ด้วย จะได้ดังนี้
[gist id="e70dc1fd1cb777afa72b120df70dab1f" file="docker-compose.yml"]
มาถึงตรงนี้ deploy ระบบงานดีกว่านะ
ขั้นตอนที่ 5 ทำการ deploy ไปยัง Digital Ocean เล่น
โดยจะทำการ provisioning server ขึ้นมาใหม่ และทำการ deploy ทั้ง app และ database ด้วย Terraform
เมื่ออธิบายไปให้ ก็จะทำการบอกขั้นตอนตั้งแต่การติดตั้ง การเขียน main.tf และ deploy กันเลย
[gist id="e70dc1fd1cb777afa72b120df70dab1f" file="main.tf"]
เพียงเท่านี้เราก็ได้ code ที่พอจะทำงานและ deploy ได้แล้ว ช่วยลดเวลาไปได้เยอะเลย แต่จำเป็นต้องมีความรู้พื้นฐาน รวมทั้งความต้องการที่ชัดเจน จะช่วยเราได้อย่างมาก
ตัวอย่าง code และ instruction