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

สวัสดี Go-kit ชุดเครื่องมือสำหรับพัฒนา Microservices ด้วยภาษา Go

$
0
0

ในช่วงที่ผ่านมาได้มีการพูดถึง 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

Viewing all articles
Browse latest Browse all 1997

Trending Articles