การติดตามแบบกระจายคืออะไร

การติดตามแบบกระจายคือการสังเกตคำขอข้อมูลขณะที่ไหลผ่านระบบกระจาย สถาปัตยกรรมไมโครเซอร์วิสที่ทันสมัยมักมีส่วนประกอบอิสระขนาดเล็กมากมาย โดยองค์ประกอบเหล่านี้จะสื่อสารและแลกเปลี่ยนข้อมูลอย่างต่อเนื่องโดยใช้ 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 โดยการสร้างบัญชีฟรีวันนี้

ขั้นตอนถัดไปบน AWS

ลงชื่อสมัครใช้บัญชีฟรี

รับสิทธิ์การเข้าถึง AWS Free Tier ได้ทันที

ลงชื่อสมัครใช้งาน 
เริ่มต้นการสร้างในคอนโซล

เริ่มต้นสร้างในคอนโซลการจัดการของ AWS

ลงชื่อเข้าใช้