![]()
![]()
ในช่วงที่ผ่านมาได้มีการพูดถึง
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 เลยดังนี้
[gist id="a4006a1925e1bb2a61c0039318cafb4e" file="service.go"]
ขั้นตอนที่ 2 สร้างส่วนของ Endpoint ของ service ที่สร้าง
ในส่วนของ
Endpoint นั้น Go-kit ได้เตรียมไว้ให้ใช้งาน
สิ่งที่เราต้องกำหนดและสร้างขึ้นมาคือ
รูปแบบของ request และ response ของการใช้งาน Counter Service ที่สร้างไว้
รวมไปถึงการจัดการข้อมูลในรูปแบบ JSON
ดังนั้นจำเป็นต้องมีการ decode request และ encode response ด้วยดังนี้
[gist id="a4006a1925e1bb2a61c0039318cafb4e" file="counter_endpoint.go"]
ขั้นตอนที่ 3 ทำการสร้างส่วน Middleware
ในส่วนนี้จะทำการสร้าง web server ขึ้นมา
และสามารถใส่ความสามารถต่าง ๆ เข้าไป
ทั้ง endpoint
ทั้ง decode/encode
ดังนี้
[gist id="a4006a1925e1bb2a61c0039318cafb4e" file="main.go"]
ขั้นตอนที่ 4 ทำการทดสอบ service ที่สร้าง
[gist id="a4006a1925e1bb2a61c0039318cafb4e" file="1.txt"]
ขั้นตอนที่ 5 ใส่ความสามารถต่าง ๆ เข้าไปยัง Middleware/Endpoint ของเรา
ยกตัวอย่างเช่น
การใส่
rate limit เข้าไป เพื่อกำหนดจำนวนการเรียกใช้ service
เช่นกำหนดให้เรียกใช้งานต่อนาทีเพียงครั้งเดียวเท่านั้น
ดังนี้
[gist id="a4006a1925e1bb2a61c0039318cafb4e" file="main2.go"]
จากนั้นทดลองใช้งานจะเจอ error แบบนี้
[gist id="a4006a1925e1bb2a61c0039318cafb4e" file="2.txt"]
เพียงเท่านี้เราก็สามารถสร้าง service ด้วย Go-kit ได้แล้วนะ
เหมือนกับการต่อ LEGO เลย
แต่ยังมีความสามารถอื่น ๆ อีกทั้ง
ขอให้สนุกกับการ coding ครับ
ตัวอย่าง source code ทั้งหมดอยู่ที่
Github::Up1