ขั้นตอนการพัฒนา Zipkin service เป็นดังนี้
ทำการสร้าง Zipkin Service ด้วย Spring Boot
[gist id="0dc2fa11d8cf397b33a105faa24f99ab" file="1.java"]
จากนั้นทำการ package และ run service
โดยค่า port default ของ service คือ 8080
เข้าใช้งานดังนี้ ซึ่งบอกว่า Zipkin server พร้อมใช้งานแล้ว
2. สร้าง Service 2
ความต้องการของ service 2 คือ
พัฒนา service ด้วย Spring Boot
มี endpoint ชื่อว่า /sleep/[time]
ขั้นตอนการพัฒนา Service 2 เป็นดังนี้
ขั้นตอนที่ 1 สร้าง Service
จะมี annotation NewSpan สำหรับกำหนดให้สร้างกลุ่มการทำงานใหม่
ที่จะจัดเก็บใน Zipkin
จากตัวอย่างถ้าไม่กำหนดชื่อ จะเป็นชื่อของ service คือ service2 นั่นเอง
[gist id="0dc2fa11d8cf397b33a105faa24f99ab" file="2.java"]
ขั้นตอนที่ 2 ทำการ configuration URL ของ Zipkin server ในไฟล์ application.properties
[gist id="0dc2fa11d8cf397b33a105faa24f99ab" file="2.properties"]
และกำหนดชื่อของ service ไว้ในไฟล์ bootstrap.properties
[gist id="0dc2fa11d8cf397b33a105faa24f99ab" file="bootstrap2.properties"]
จากนั้นทำการ package และ run service
เมื่อเราทำการเรียกใช้งาน endpoint ของ service 2 แล้ว
ข้อมูลการทำงานถูกส่งไปยัง Zipkin service ด้วย
ผลการทำงานเป็นดังนี้
เข้าไปดูรายละเอียดของแต่ละกลุ่มของ request หรือ Span
ในรายละเอียดของแต่ละ Span มันลงรายละเอียดของการทำงานเลยทีเดียว
ทั้ง class และ method
3. สร้าง Service 1 เพื่อเรียกใช้งาน Service 2
ความต้องการของ service 1 คือ
พัฒนา service ด้วย Spring Boot
มี endpoint ชื่อว่า /service1/
ขั้นตอนการพัฒนา Service 1 เป็นดังนี้
ขั้นตอนที่ 1 สร้างส่วนการเรียกใช้งาน service 2 ผ่าน Feign Client
[gist id="0dc2fa11d8cf397b33a105faa24f99ab" file="Service2Client.java"]
ขั้นตอนที่ 2 สร้าง Service
[gist id="0dc2fa11d8cf397b33a105faa24f99ab" file="service1.java"]
ขั้นตอนที่ 3 ทำการ configuration URL ของ Zipkin server ในไฟล์ application.properties
[gist id="0dc2fa11d8cf397b33a105faa24f99ab" file="2.properties"]
จากนั้นทำการ package และ run service
เมื่อเราทำการเรียกใช้งาน endpoint ของ service 1 แล้ว
ข้อมูลการทำงานถูกส่งไปยัง Zipkin service ด้วย
ผลการทำงานเป็นดังนี้
เข้าไปดูรายละเอียดของแต่ละกลุ่มของ request หรือ Span
ในรายละเอียดของแต่ละ Span มันลงรายละเอียดของการทำงานเลยทีเดียว
ทั้ง class และ method
เพียงเท่านี้เราก็ได้ระบบ tracing ของ service ต่าง ๆ
ที่พัฒนาด้วย Spring Boot แล้วนะ
น่าจะช่วยทำให้นักพัฒนาเห็นการทำงานที่ชัดเจน รวมทั้งหาปัญหาได้ง่ายขึ้น
ตัวอย่าง source code อยู่ที่ Github:Up1
ขอให้สนุกกับการ coding ครับ