ในช่วงที่ผ่านมาได้มีการพูดถึง Go-kit กันพอสมควร
ทั้งในเรื่องของรูปแบบการเขียนที่ดี
ทั้งในเรื่องของชุดเครื่องมือสำหรับการพัฒนา Microservices
บางคนก็บอกว่าเหมือน Netflix เลย
บางคนก็บอกว่าเหมือน Finagle ของ Twitter เลย

แต่ไม่ว่าจะเหมือนอะไรก็ช่างมัน
เป้าหมายของ Go-kit ต้องการให้นักพัฒนาสนใจไปที่ business logic เท่านั้น
ส่วนเรื่องอื่น ๆ ที่ในแต่ละระบบ service ควรมีก็ให้ Go-kit จัดการให้
ยกตัวอย่างความสามารถที่ service ต่าง ๆ ควรมี

  • Rate limit การใช้งาน
  • Logging
  • Metric
  • Tracing
  • Circuit breaker
  • Service discovery
  • Serialization
  • Authentication

ดังนั้นเราลองมาเริ่มต้นทำความรู้จัก Go-kit กันหน่อย
เริ่มด้วยการเขียน code ดีกว่า
มาเริ่มกันเลย

ขั้นตอนที่ 1 ทำการสร้างส่วนการทำงานหลักหรือ business logic ก่อน

สิ่งที่ควรสร้างคือ กำหนด interface ของ service ก่อน
จากนั้นจึงลงมือในส่วนของ implementation ต่อไป
ตัวอย่างเป็น Counter Service สำหรับการบวกเลขง่าย ๆ
แน่นอนว่า ในส่วนนี้ไม่ได้ใช้อะไรเกี่ยวกับ Go-kit เลยดังนี้

ขั้นตอนที่ 2 สร้างส่วนของ Endpoint ของ service ที่สร้าง

ในส่วนของ Endpoint นั้น Go-kit ได้เตรียมไว้ให้ใช้งาน
สิ่งที่เราต้องกำหนดและสร้างขึ้นมาคือ
รูปแบบของ request และ response ของการใช้งาน Counter Service ที่สร้างไว้
รวมไปถึงการจัดการข้อมูลในรูปแบบ JSON
ดังนั้นจำเป็นต้องมีการ decode request และ encode response ด้วยดังนี้

ขั้นตอนที่ 3 ทำการสร้างส่วน Middleware

ในส่วนนี้จะทำการสร้าง web server ขึ้นมา
และสามารถใส่ความสามารถต่าง ๆ เข้าไป
ทั้ง endpoint
ทั้ง decode/encode
ดังนี้

ขั้นตอนที่ 4 ทำการทดสอบ service ที่สร้าง

ขั้นตอนที่ 5 ใส่ความสามารถต่าง ๆ เข้าไปยัง Middleware/Endpoint ของเรา

ยกตัวอย่างเช่น
การใส่ rate limit เข้าไป เพื่อกำหนดจำนวนการเรียกใช้ service
เช่นกำหนดให้เรียกใช้งานต่อนาทีเพียงครั้งเดียวเท่านั้น
ดังนี้

จากนั้นทดลองใช้งานจะเจอ error แบบนี้

เพียงเท่านี้เราก็สามารถสร้าง service ด้วย Go-kit ได้แล้วนะ

เหมือนกับการต่อ LEGO เลย
แต่ยังมีความสามารถอื่น ๆ อีกทั้ง

ขอให้สนุกกับการ coding ครับ

ตัวอย่าง source code ทั้งหมดอยู่ที่ Github::Up1