Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

ว่าง ๆ ลองให้ ChatGPT เขียน code สำหรับพัฒนาและทดสอบระบบงาน

$
0
0

เห็นมีคนลองใช้งานกันเยอะ สำหรับ 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


Viewing all articles
Browse latest Browse all 1997

Trending Articles