การติดตามแบบกระจายคืออะไร
การติดตามแบบกระจายคือการสังเกตคำขอข้อมูลขณะที่ไหลผ่านระบบกระจาย สถาปัตยกรรมไมโครเซอร์วิสที่ทันสมัยมักมีส่วนประกอบอิสระขนาดเล็กมากมาย โดยองค์ประกอบเหล่านี้จะสื่อสารและแลกเปลี่ยนข้อมูลอย่างต่อเนื่องโดยใช้ API เพื่อทำงานที่ซับซ้อน นักพัฒนาสามารถใช้การติดตามแบบกระจายติดตามเส้นทางคำขอผ่านไมโครเซอร์วิสต่าง ๆ ได้ หรือจะติดตามด้วยสายตาก็ได้ การมองเห็นนี้ช่วยแก้ไขข้อผิดพลาดหรือแก้ไขข้อบกพร่องและปัญหาด้านประสิทธิภาพ
ข้อดีของการติดตามแบบกระจายมีอะไรบ้าง
นักพัฒนาซอฟต์แวร์สามารถใช้ระบบติดตามแบบกระจายในสภาพแวดล้อมแบบ Cloud-Native เกือบทุกรายการ รวมถึงบันทึกการติดตามแบบกระจายที่แอปพลิเคชันระบบคลาวด์สร้างขึ้น นอกจากนี้ เครื่องมือติดตามยังรองรับภาษาการเขียนโปรแกรมและสแต็กคซอฟต์แวร์จำนวนมาก ทำให้ทีมซอฟต์แวร์สามารถตรวจสอบและรวบรวมข้อมูลประสิทธิภาพสำหรับแอปพลิเคชันต่าง ๆ บนแพลตฟอร์มเดียวกัน
ทีมพัฒนาใช้การติดตามแบบกระจายเพื่อปรับปรุงข้อมูลการสังเกต ตลอดจนแก้ปัญหาประสิทธิภาพที่เครื่องมือการตรวจสอบและการแก้ไขข้อบกพร่องทั่วไปไม่สามารถช่วยได้
รายการต่อไปนี้เป็นประโยชน์เพิ่มเติมของการติดตามแบบกระจาย
เร่งการแก้ไขปัญหาซอฟต์แวร์
แอปพลิเคชันที่ทันสมัยจะใช้ไมโครเซอร์วิสจำนวนมากเพื่อแลกเปลี่ยนข้อมูลและตอบสนองคำขอบริการในระบบแบบกระจาย การแก้ไขปัญหาประสิทธิภาพในสถาปัตยกรรมที่ใช้ไมโครเซอร์วิสนั้นมีความท้าทายมากกว่าในแอปพลิเคชันซอฟต์แวร์แบบโมโนลิทิกอย่างมีนัยสำคัญ สาเหตุหลักของปัญหาซอฟต์แวร์เฉพาะอาจมองเห็นได้ไม่ชัดเจน ซึ่งแตกต่างจากแอปพลิเคชันแบบโมโนลิทิก โดยปฏิสัมพันธ์ที่ทับซ้อนกันและซับซ้อนระหว่างโมดูลซอฟต์แวร์หลายโมดูลอาจทำให้วินิจฉัยปัญหาได้ยาก
ด้วยการติดตามแบบกระจาย ทีมซอฟต์แวร์สามารถตรวจสอบข้อมูลที่ผ่านเส้นทางที่ซับซ้อนซึ่งเชื่อมต่อไมโครเซอร์วิสและพื้นที่เก็บข้อมูลต่าง ๆ ทีมซอฟต์แวร์จะติดตามคำขอและแสดงภาพเส้นทางการแพร่กระจายข้อมูลด้วยความแม่นยำโดยใช้เครื่องมือการติดตามแบบกระจาย ทีมซอฟต์แวร์สามารถแก้ปัญหาประสิทธิภาพได้อย่างรวดเร็วและลดการหยุดชะงักของบริการ
ปรับปรุงการทำงานร่วมกันของนักพัฒนา
นักพัฒนาหลายคนมักมีส่วนร่วมในการสร้างแอปพลิเคชันคลาวด์ โดยแต่ละคนจะรับผิดชอบไมโครเซอร์วิสหนึ่งแห่งหรือหลายแห่ง กระบวนการพัฒนาซอฟต์แวร์จะช้าลง หากนักพัฒนาไม่สามารถติดตามข้อมูลที่แลกเปลี่ยนโดยไมโครเซอร์วิส นักพัฒนาสามารถใช้ระบบการติดตามแบบกระจายเพื่อทำงานร่วมกันได้โดยการจัดหาข้อมูลทางไกล เช่น บันทึกและร่องรอยสำหรับทุกคำขอบริการที่ไมโครเซอร์วิส ทำ นักพัฒนาสามารถตอบสนองต่อข้อบกพร่องและปัญหาซอฟต์แวร์อื่น ๆ ที่ค้นพบในระหว่างการทดสอบและการใช้งานจริงได้อย่างแม่นยำ
ออกสู่ตลาดได้เร็วขึ้น
องค์กรที่ใช้แพลตฟอร์มการติดตามแบบกระจายสามารถปรับปรุงและเร่งความพยายามในการเปิดตัวแอปพลิเคชันซอฟต์แวร์สำหรับผู้ใช้ปลายทาง ทีมซอฟต์แวร์จะตรวจสอบร่องรอยแบบกระจาย เพื่อดูข้อมูลเชิงลึกที่เร่งการพัฒนาซอฟต์แวร์ ลดต้นทุนการพัฒนา ทำความเข้าใจพฤติกรรมของผู้ใช้ และปรับปรุงความพร้อมของตลาด
การติดตามแบบกระจายประเภทต่าง ๆ มีอะไรบ้าง
ทีมซอฟต์แวร์ใช้เครื่องมือติดตามแบบกระจายเพื่อตรวจสอบ วิเคราะห์ และเพิ่มประสิทธิภาพของแอปพลิเคชัน
การติดตามโค้ด
การติดตามโค้ดเป็นกระบวนการซอฟต์แวร์ที่ตรวจสอบโฟลว์ของซอร์สโค้ดในแอปพลิเคชันเมื่อดำเนินการฟังก์ชันเฉพาะ ช่วยให้นักพัฒนาเข้าใจโฟลว์เชิงตรรกะของโค้ดและระบุปัญหาที่ไม่รู้จัก ตัวอย่างเช่น นักพัฒนาใช้การติดตามโค้ดเพื่อตรวจสอบว่าคำขอบริการได้เรียกดำเนินการขั้นตอนในการสืบค้นฐานข้อมูล หากฟังก์ชันซอฟต์แวร์บางอย่างไม่สามารถตอบกลับได้ ระบบติดตามจะรวบรวมสถานะข้อผิดพลาดที่เหมาะสมและดึงดูดความสนใจไปที่เวลาตอบสนอง
การติดตามโปรแกรม
การติดตามโปรแกรมเป็นวิธีการที่นักพัฒนาสามารถตรวจสอบที่อยู่ของคำแนะนำและตัวแปรที่เรียกใช้โดยแอปพลิเคชันที่ใช้งานอยู่ เมื่อแอปพลิเคชันซอฟต์แวร์ทำงาน ระบบจะประมวลผลโค้ดแต่ละบรรทัดที่อยู่ในพื้นที่หน่วยความจำที่จัดสรรเฉพาะ นอกจากนี้ แอปพลิเคชันยังประมวลผลตัวแปรที่จัดเก็บไว้ในหน่วยความจำเครื่อง การตรวจสอบการเปลี่ยนแปลงในหน่วยความจำโปรแกรมและข้อมูลเป็นเรื่องท้าทาย หากไม่มีเครื่องมืออัตโนมัติ ด้วยการติดตามโปรแกรม ทีมซอฟต์แวร์สามารถวินิจฉัยปัญหาด้านประสิทธิภาพแบบดีปรูท เช่น หน่วยความจำโอเวอร์โฟลว์ การใช้ทรัพยากรมากเกินไป และการปิดกั้นการทำงานเชิงตรรกะ
การติดตามแบบครบวงจร
ด้วยการติดตามแบบครบวงจร ทีมพัฒนาจะสามารถติดตามการเปลี่ยนแปลงข้อมูลตามเส้นทางคำขอบริการ เมื่อแอปพลิเคชันเริ่มต้นคำขอ ระบบจะส่งข้อมูลไปยังส่วนประกอบซอฟต์แวร์อื่น ๆ เพื่อประมวลผลต่อไป นักพัฒนาจะใช้เครื่องมือติดตามเพื่อติดตามและรวบรวมการเปลี่ยนแปลงต่อข้อมูลสำคัญตั้งแต่ต้นจนจบ ซึ่งจะให้มุมมองคำขอที่มีโฟลว์ผ่านแอปพลิเคชันโดยมีแอปพลิเคชันเป็นศูนย์กลาง
การติดตามแบบกระจายแบบครบวงจรทำงานในสถาปัตยกรรมไมโครเซอร์วิสอย่างไร
เมื่อใช้แอปพลิเคชัน ผู้ใช้จะเริ่มคำขอบริการ และส่วนประกอบต่าง ๆ ของแอปพลิเคชันจะประมวลผลคำขอ
พิจารณาผู้ใช้ที่ทำการจองตั๋วในแอปพลิเคชันการจองภาพยนตร์ทางออนไลน์ ผู้ใช้ป้อนรายละเอียดการติดต่อ รายละเอียดภาพยนตร์ และข้อมูลการชำระเงิน และเลือก จองตอนนี้ มีการสร้างคำขอที่ไปที่:
- ไมโครเซอร์วิส A ที่ตรวจสอบข้อมูลที่ผู้ใช้ป้อน
- ไมโครเซอร์วิส B ที่นำข้อมูลจาก A และสร้างระเบียนในฐานข้อมูลลูกค้า
- ไมโครเซอร์วิส C ที่รับข้อมูลจาก B และตรวจสอบการชำระเงิน
- ไมโครเซอร์วิส D ที่รับข้อมูลจาก C จัดสรรที่นั่ง และสร้างข้อมูลตั๋วภาพยนตร์
- ไมโครเซอร์วิส E ที่นำข้อมูลจาก D และสร้างไฟล์ PDF ของตั๋วที่มีการจัดรูปแบบ
จากนั้นคำตอบที่มีไฟล์ PDF ของตั๋วจะถูกส่งกลับไปยังห่วงโซ่ไมโครเซอร์วิสจาก E ถึง D ถึง C ถึง B ถึง A จนกระทั่งถึงผู้ใช้ในที่สุด ตัวอย่างข้างต้นเป็นเรื่องง่าย คำขอมักจะส่งผ่านไมโครเซอร์วิสหลายสิบรายการและแม้แต่ห่วงโซ่ของส่วนประกอบซอฟต์แวร์ของบุคคลที่สามภายนอกแอปพลิเคชัน ขั้นตอนนี้ทำให้กระบวนการซับซ้อนมากขึ้น
ระบบการติดตามแบบกระจายจะติดตามปฏิสัมพันธ์เหล่านี้ของคำขอบริการกับไมโครเซอร์วิสและส่วนประกอบซอฟต์แวร์อื่น ๆ ในสภาพแวดล้อมการประมวลผลแบบกระจาย การติดตามแบบกระจายแสดงถึงไทม์ไลน์และการดำเนินการทั้งหมดที่เกิดขึ้นระหว่างการสร้างคำขอและการรับการตอบกลับ ทีมซอฟต์แวร์ใช้การติดตามเพื่อติดตามการเคลื่อนไหวของข้อมูลผ่านไมโครเซอร์วิสหลายรายการที่คำขอเริ่มต้นโต้ตอบด้วย
Span
เมื่อประมวลผลคำขอบริการ แอปพลิเคชันอาจดำเนินการหลายอย่าง การดำเนินการเหล่านี้แสดงเป็น Span ในการติดตามแบบกระจาย ตัวอย่างเช่น Span อาจเป็นการเรียกใช้ API การรับรองความถูกต้องของผู้ใช้ หรือการเปิดใช้งานการเข้าถึงพื้นที่จัดเก็บ หากคำขอเพียงครั้งเดียวส่งผลให้มีการดำเนินการหลายอย่าง Span เริ่มต้น (หรือรายการหลัก) อาจแบ่งออกเป็น Span ย่อยหลายรายการ เลเยอร์ที่ซ้อนกันของ Span หลักและย่อยเหล่านี้ทำให้มีตัวแทนเชิงตรรกะอย่างต่อเนื่องของขั้นตอนที่ดำเนินการเพื่อให้บรรลุคำขอบริการ
ID ติดตาม
ระบบการติดตามแบบกระจายจะกำหนด ID ที่ไม่ซ้ำกันให้กับทุกคำขอเพื่อติดตาม แต่ละ Span จะสืบทอด ID ติดตามเดียวกันจากคำขอเดิมที่เป็นอยู่ นอกจากนี้ ยังมีการติดแท็ก Span ด้วย ID Span ที่ไม่ซ้ำกันซึ่งช่วยให้ระบบติดตามรวมข้อมูลเมตา ข้อมูลบันทึก และตัวชี้วัดที่รวบรวม
การเก็บรวบรวมตัวชี้วัด
เมื่อแต่ละ Span ผ่านไมโครเซอร์วิสต่าง ๆ จะมีการผนวกตัวชี้วัดที่ให้ข้อมูลเชิงลึกที่แม่นยำและลึกซึ้งเกี่ยวกับพฤติกรรมซอฟต์แวร์แก่นักพัฒนา คุณสามารถรวบรวมอัตราข้อผิดพลาด ประทับเวลา เวลาการตอบสนอง และข้อมูลเมตาอื่น ๆ ด้วย Span หลังจากการติดตามเสร็จสิ้นวงจรทั้งหมด เครื่องมือติดตามแบบกระจายจะรวมข้อมูลทั้งหมดที่รวบรวม
ตัวอย่างเช่น การเรียกใช้ API ได้รับการประเมินด้วยเวลาตอบสนอง สถานะข้อผิดพลาด และการแบ่งแยกฟังก์ชันรองที่ดำเนินการโดยบริการของบุคคลที่สามหลายรายการ เครื่องมือติดตามจะเปลี่ยนข้อมูลให้เป็นรูปแบบภาพ โดยเน้นตัวบ่งชี้ที่สำคัญและสรุปประสิทธิภาพ ด้วยวิธีการนี้ วิศวกรด้านความเสถียรของไซต์งานสามารถระบุข้อผิดพลาดได้อย่างรวดเร็ว ตรวจสอบองค์ประกอบข้อมูลที่สำคัญ และทำงานร่วมกับทีมพัฒนาเพื่อแก้ไขปัญหาด้านประสิทธิภาพ และตรวจสอบให้แน่ใจว่าสอดคล้องกับข้อตกลงระดับการให้บริการ (SLA)
มาตรฐานการติดตามแบบกระจายคืออะไร
มาตรฐานการติดตามแบบกระจายให้เฟรมเวิร์กร่วมกันและเครื่องมือซอฟต์แวร์สำหรับนักพัฒนา มาตรฐานเหล่านี้ตรวจสอบ แสดงภาพ และวิเคราะห์คำขอบริการในสภาพแวดล้อมของแอปพลิเคชันที่ทันสมัย ด้วยการกำหนดมาตรฐานของเวิร์กโฟลว์การติดตามแบบกระจาย ทำให้ทีมซอฟต์แวร์สามารถใช้เครื่องมือการติดตามคำขอโดยไม่ต้องมีการล็อกของผู้ขาย
ส่วนต่อไปนี้อธิบายถึงมาตรฐานที่แนะนำเพื่อเปิดใช้งานการทำงานร่วมกัน เมื่อทำการติดตามแบบกระจาย
OpenTracing
OpenTracing เป็นมาตรฐานการติดตามแบบกระจายแบบโอเพนซอร์สที่พัฒนาโดย Cloud Native Computing Foundation (CNCF) OpenTracing มุ่งเน้นไปที่การช่วยให้นักพัฒนาสามารถสร้างการติดตามด้วย API ของเครื่องมือวัด สิ่งนี้ช่วยให้นักพัฒนาสามารถสร้างการติดตามแบบกระจายจากส่วนต่าง ๆ ของฐานโค้ด ไลบรารี หรือการอ้างอิงอื่น ๆ
OpenCensus
OpenCensus ประกอบด้วยไลบรารีหลายภาษาที่สามารถแยกเมตริกซอฟต์แวร์และส่งไปยังระบบแบ็กเอนด์เพื่อทำการวิเคราะห์ นักพัฒนาสามารถใช้ API ที่ให้ไว้เพื่อจัดการวิธีการสร้างและรวบรวมการติดตามได้ ทั้งนี้ นักพัฒนาจะทำงานกับ OpenCensus จากที่เก็บโครงการเดียวแทนฐานโค้ดและไลบรารีแต่ละแห่ง ซึ่งแตกต่างจาก OpenTracing
OpenTelemetry
OpenTelemetry รวมทั้งระบบ OpenTracing และ OpenCensus ซึ่งรวบรวมคุณสมบัติที่ดีที่สุดของทั้งสองมาตรฐาน เพื่อมอบเฟรมเวิร์กการติดตามแบบกระจายที่ครอบคลุม OpenTelemetry มีชุดพัฒนาซอฟต์แวร์ที่ครอบคลุม API ไลบรารี และเครื่องมืออื่น ๆ สำหรับการใช้งานการติดตามแบบกระจายได้อย่างง่ายดายยิ่งขึ้น
อะไรคือความแตกต่างระหว่างการติดตามแบบกระจายและการบันทึกข้อมูล
การบันทึกข้อมูลเป็นแนวทางปฏิบัติในการบันทึกเหตุการณ์เฉพาะที่เกิดขึ้นเมื่อแอปพลิเคชันทำงาน เครื่องมือบันทึกข้อมูลจะรวบรวมเหตุการณ์ที่มีประทับเวลา เช่น ข้อผิดพลาดของระบบ การโต้ตอบกับผู้ใช้ สถานะการสื่อสาร และตัวชี้วัดอื่น ๆ เพื่อช่วยให้ทีมพัฒนาตรวจจับความผิดปกติของระบบ โดยทั่วไป การบันทึกข้อมูลมีสองประเภท:
- การบันทึกข้อมูลแบบรวมศูนย์รวบรวมกิจกรรมที่บันทึกไว้ทั้งหมดและจัดเก็บไว้ในตำแหน่งที่ตั้งเดียว
- การบันทึกข้อมูลแบบกระจายจัดเก็บไฟล์ข้อมูลบันทึกไว้ในตำแหน่งที่ตั้งที่แยกต่างหากบนระบบคลาวด์
วิธีการบันทึกข้อมูลทั้งสองวิธีให้ภาพรวมแบบคงที่ของเหตุการณ์ที่แสดงให้นักพัฒนาเห็นว่าเกิดอะไรขึ้นในแอปพลิเคชัน ในทางตรงกันข้าม การติดตามแบบกระจายจะมอบเส้นทางการตรวจสอบที่ชี้แจงถึงสาเหตุของการเกิดเหตุการณ์โดยการเชื่อมโยงข้อมูลการวัดระยะทางไกลต่าง ๆ ที่รวบรวมตลอดระยะเวลาของคำขอบริการ การติดตามแบบกระจายอาจใช้การบันทึกข้อมูลและวิธีการเก็บรวบรวมข้อมูลอื่น ๆ สำหรับการติดตามคำขอบริการเฉพาะ
ความท้าทายของการติดตามแบบกระจายคืออะไร
การติดตามแบบกระจายช่วยลดความพยายามของนักพัฒนาในการวินิจฉัย การแก้ไขข้อบกพร่อง และการแก้ไขปัญหาซอฟต์แวร์ อย่างไรก็ตาม ความท้าทายต่อไปนี้ยังคงอยู่ตรงจุดที่ว่า ทีมซอฟต์แวร์ต้องพิจารณาอย่างถี่ถ้วนเมื่อต้องเลือกเครื่องมือการติดตาม
เครื่องมือวัดแบบแมนนวล
เครื่องมือติดตามบางอย่างต้องการให้ทีมซอฟต์แวร์ประมวลผลโค้ดของตนเองเพื่อสร้างการติดตามที่จำเป็น เมื่อนักพัฒนาแก้ไขโค้ดเพื่อติดตามคำขอ จะเกิดความเสี่ยงต่อข้อผิดพลาดในการเขียนโค้ดที่มีผลต่อรุ่นการใช้งานจริง ยิ่งไปกว่านั้น การขาดระบบอัตโนมัติทำให้การติดตามเกิดความซับซ้อน ส่งผลให้เกิดความล่าช้าและอาจมีการรวบรวมข้อมูลที่ไม่ถูกต้อง
ความครอบคลุมด้านหน้าที่จำกัด
นักพัฒนาอาจไม่สามารถกำกับดูแลปัญหาประสิทธิภาพได้อย่างสมบูรณ์ หากเครื่องมือติดตามของพวกเขาถูกจำกัดอยู่กับการวิเคราะห์แบ็กเอนด์ ในบางกรณี ระบบติดตามแบบกระจายจะเริ่มรวบรวมข้อมูล เมื่อบริการแบ็กเอนด์แรกได้รับคำขอ ซึ่งหมายความว่า นักพัฒนาไม่สามารถตรวจจับและตรวจสอบปัญหาที่เกิดจากบริการด้านหน้าในระหว่างเซสชันผู้ใช้ที่เกี่ยวข้อง
การสุ่มตัวอย่างแบบสุ่ม
เครื่องมือบางอย่างไม่อนุญาตให้ทีมซอฟต์แวร์จัดลำดับความสำคัญในการติดตาม โดยการจำกัดข้อมูลการสังเกตเฉพาะการติดตามที่มีการสุ่มตัวอย่างแบบสุ่ม ด้วยข้อมูลตัวอย่างที่จำกัด องค์กรจึงต้องการแนวทางการแก้ไขปัญหาซอฟต์แวร์เพิ่มเติมเพื่อระบุถึงปัญหาที่สำคัญที่หลีกหนีจากเครื่องมือติดตาม
AWS สามารถช่วยข้อกำหนดการติดตามแบบกระจายของคุณได้อย่างไร
AWS X-Ray เป็นแพลตฟอร์มการติดตามแบบกระจายที่ช่วยให้นักพัฒนาซอฟต์แวร์ติดตามคำขอของผู้ใช้และระบุปัญหาการติดขัดในแอปพลิเคชันบนระบบคลาวด์ของพวกเขา องค์กรต่าง ๆ ใช้ X-Ray เพื่อแสดงภาพเมตริกแอปพลิเคชันและปรับปรุงความพร้อมใช้งานของเวิร์กโหลด ด้วย AWS X-ray คุณจะสามารถ:
- ผสานรวมกับแอปพลิเคชันทั้งหมดที่ทำงานบน Amazon Elastic Compute Cloud (EC2), Amazon EC2 Container Service (Amazon ECS), AWS Lambda และ AWS Elastic Beanstalk
- ตั้งค่าอัตราการสุ่มตัวอย่างที่เหมาะสมเพื่อมอบความสามารถในการมองเห็นแบบครบวงจรสำหรับการติดตามต่าง ๆ
- แสดงภาพข้อมูลที่รวบรวมด้วยแผนที่บริการ โดยแสดงเมตริกที่สำคัญ เช่น ความล่าช้าและอัตราความล้มเหลว
เริ่มต้นใช้งานการติดตามแบบกระจายบน AWS โดยการสร้างบัญชีฟรีวันนี้