Quantcast
Viewing all articles
Browse latest Browse all 2063

สรุปการแบ่งปันเรื่อง พื้นฐานของการพัฒนาระบบด้วยภาษา Go

Image may be NSFW.
Clik here to view.

Image may be NSFW.
Clik here to view.

สองวันที่ผ่านมา มีโอกาสไปแบ่งปันเรื่อง
พื้นฐานสำหรับการพัฒนาระบบงานด้วยภาษา Go
เพื่อช่วยทำให้รู้และเข้าใจเกี่ยวกับภาษา
เพื่อช่วยให้รู้ว่า ตัวภาษานั้นมีเครื่องมือช่วยในการพัฒนาและ deploy อย่างไรบ้าง

เริ่มด้วยการเข้าใจเรื่องพื้นฐานของภาษา Go

โดยผมมักจะเริ่มด้วย How to write Go code ?
เป็นเอกสารสำหรับการเริ่มต้นเขียน code รวมทั้งสิ่งต่าง ๆ ที่สำคัญต่อการพัฒนา เช่น

  • Go module ทั้งการใช้งาน การสร้าง และ publish ให้ใช้งาน
  • การ run, build, install และ testing

สิ่งที่ชอบแนะนำคือ ไปเริ่มต้นด้วย Go Tour กันด้วย

ต่อมาว่าด้วยเรื่องของ Development workflow

โดยภาษา Go เตรียมเครื่องมือต่าง ๆ ไว้ให้ใช้งานครบครัน
รวมทั้งการใช้งานร่วมกันเครื่องอื่น ๆ เป็นดังนี้

  • Editor ที่ใช้งานการพัฒนาคือ VS Code และ extension
  • การจัดการ format ของ code ด้วย go fmt
  • ทำการตรวจสอบ code และเรื่องของ check style ต่าง ๆ ด้วย go lint, go vet เป็นต้น
  • ทำการ build และ install ด้วย go build และ go install สำหรับการส่งมอบระบบงานในรูปแบบ binary file
  • ในการ build นั้นก็ใช้ร่วมกับ go environment ด้วยเช่น GOOS และ GOARCH เป็นต้น
  • ทำการทดสอบด้วย go test ซึ่งมี benchmark และ code coverage มาให้ใช้งานด้วย รวมทั้งเรื่องของการตรวจสอบ race condition
  • การทำงานร่วมกับ Docker และ Docker compose รวมทั้งการสร้าง Dockerfile แบบ multi-stage build

ความรู้พื้นฐานที่ควรจะต้องรู้และเข้าใจ

ประกอบไปด้วย

  • Repository, module และ package
  • การใช้งาน variable และเรื่องของ type system
  • Array, Slice และ Map ซึ่งเป็น data structure พื้นฐาน
  • พวก control flow ต่าง ๆ ทั้ง if-else, switch-case, for เป็นต้น
  • เรื่องสำคัญคือ Pointer, Struct, Interface

เพิ่มเติมก็คือ เรื่องของ Dependency Injection และเรื่องของ Testale code

ต่อมาทำการเริ่มพัฒนา REST API ด้วยภาษา Go

ซึ่งมี library ให้ใช้งานหลากหลาย ประกอบไปด้วย

  • net/http package
  • Gin
  • Echo
  • Fiber

โดยเน้นไปที่ของ performance และ development productivity

ในส่วนนี้จะเน้นไปที่การพัฒนาระบบงาน

  • การกำหนด router ของ API
  • การสร้าง handler/controller ของการทำงาน
  • การจัดการกับ configuration ต่าง ๆ ของระบบงาน
  • แบ่งการทำงานออกเป็นส่วน ๆ หรือพูดคุยเรื่องของ project structure ในรูปแบบต่าง ๆ ทั้ง flat, layer, module/domain, clean architecture เป็นต้น
  • การพัฒนาระบบให้เป้นไปตามที่ต้องการ รวมทั้งเรื่องของ การดูแลรักษา พัฒนาและ testable อีกด้วย
  • การทำงานร่วมกับ depednency ต่าง ๆ เช่น database เป็นต้น ซึ่งได้พูดคุยและลงรายละเอียดของ Dependency Injection
  • การทดสอบก็จะมีการใช้งาน library เพิ่มเติมชื่อว่า Testify

จากนั้นก็ลงมือทำ workshop เพื่อช่วยทำให้เข้าใจมากยิ่งขึ้น

ลองฝึก ลงมือทำ
จากนั้นย้อนกลับมาดูสิ่งที่ทำลงไปว่า
มีข้อดีข้อเสียอย่างไรบ้าง
จากนั้นเรียนรู้กับมันต่อไป


Viewing all articles
Browse latest Browse all 2063

Trending Articles