ผมเชื่อว่าหลายคนในวงการไอทีคงได้ยินการพูดถึงทั้ง observability และ monitoring กันอย่างแพร่หลายใช่มั้ยครับ ตัวผมเองก็เช่นกัน ทีนี้มีใครทราบความแตกต่างระหว่าง Observability และ Monitoring ไหมครับ ว่าจริงๆแล้ว ความแตกต่างของทั้งสองสิ่งนี้คืออะไรกันแน่ ?
สิ่งที่สำคัญเมื่อเกิดปัญหาขึ้นที่แอปพลิเคชันคือ คุณต้องสามารถระบุปัญหาที่แท้จริง หรือต้นเหตุที่ก่อให้เกิดปัญหาได้ เพื่อให้แก้ไขได้อย่างถูกต้อง ถ้าหากแก้ไขไม่ทันแล้วส่งผลกระทบต่อลูกค้า แน่นอนว่าความโชคร้ายต้องมาเยือนอย่างหลีกเลี่ยงไม่ได้แน่นอน เพราะมันจะส่งผลกระทบต่อภาพลักษณ์ของธุรกิจของคุณครับ
Monitoring จะช่วยให้คุณรับรู้ถึงสถานการณ์ในขณะนั้น ส่วน Observability จะช่วยบอกให้คุณทราบว่าเกิดอะไรขึ้น และคุณควรจะทำอย่างไรกับสถานการณ์ดังกล่าว
เรามาทำความเข้าใจความแตกต่างระหว่าง Observability และ Monitoring ให้มากขึ้นกันก่อนดีกว่า แล้วหลังจากนั้นเราจะมาดูกันว่า คุณจะสามารถใช้ทั้งสองอย่างให้เกิดประโยชน์เพื่อผลลัพธ์ทางธุรกิจของคุณได้อย่างไร
ก่อนอื่นเลยครับ เรามากำหนดความหมายของ Monitoring และ Observability กัน
ความหมายของ Monitoring คืออะไร ?
Monitoring หากนิยามตามตำรา มันคือกระบวนการรวบรวม การวิเคราะห์ และใช้ข้อมูลเพื่อติดตามความคืบหน้าของระบบเพื่อการบรรลุวัตถุประสงค์ และเป็นแนวทางในการตัดสินใจ Monitoring เน้นไปที่การเฝ้าดู metrics เฉพาะ และ Logs จะให้ข้อมูลเพิ่มเติม แต่โดยทั่วไปจะดูแยกตามบริบทของระบบ
ความหมายของ Observability คืออะไร?
Observability คือ ความสามารถในการเข้าใจสถานะภายในของระบบด้วยการวิเคราะห์ข้อมูลที่ระบบได้สร้างขึ้นมา เช่น logs, metrics, และ traces ความสามารถของ Observability จะช่วยให้ทีมวิเคราะห์ได้ว่า เกิดอะไรขึ้นในสภาพแวดล้อมแบบ multi-cloud ซึ่งช่วยให้คุณสามารถตรวจจับและแก้ไขปัญหาดังกล่าวได้
เมื่อเราทราบความหมายของแต่ละตัวไปแล้ว เพื่อความเข้าใจที่มากยิ่งขึ้น เรามาดูความแตกต่างระหว่าง Observability และ Monitoring กันดีกว่าครับ
ความแตกต่างระหว่าง Observability และ Monitoring คืออะไร?
Monitoring เป็นกระบวนการเก็บรวบรวม และแสดงข้อมูล ในขณะที่ Observability สามารถจำแนกสถานะของระบบได้โดยการวิเคราะห์จากข้อมูลที่ระบบรับเข้าและส่งออก ยกตัวอย่างเช่น เราสามารถตรวจสอบ metric ที่มีการเปลี่ยนแปลงและแสดงให้เห็นว่า metric นั้นมีปัญหาเกิดขึ้นได้ – นี่ถือเป็นการ Monitoring ครับ ทีนี้ หากมีการสร้างข้อมูลที่เป็นประโยชน์เกี่ยวกับสถานะภายในของระบบ หรือเป็นสิ่งสำคัญในการกำหนดสาเหตุของปัญหา – นี่ถือเป็น Observability ครับ
ด้านบนเราเห็นถึงความแตกต่างไปแล้ว เรามาดูความเหมือนกันของ Observability และ Monitoring กันบ้างนะครับ ทั้ง Observability และ Monitoring มีแนวคิดและเป้าหมายที่ใกล้เคียงกันมากๆ นั่นก็คือการให้ข้อมูลเชิงลึกเกี่ยวกับประสิทธิภาพและการทำงานของระบบ โดยใช้เทคนิคการเก็บรวมรวมข้อมูล การวิเคราะห์ และการแสดงภาพ เพื่อดำเนินงานตรวจจับเชิงรุกและแก้ไขปัญหา ท้ายที่สุดแล้ว สิ่งเหล่านี้จะเป็นตัวที่ช่วยให้วิศวกรมีความมั่นใจในความน่าเชื่อถือของระบบ เพิ่มประสิทธิภาพการทำงาน และการใช้ทรัพยากรได้อย่างมีประสิทธิภาพ
แล้วระหว่าง Observability และ Monitoring อันไหนจะดีกว่ากัน และคุณจะรู้ได้อย่างไรว่าโมเดลใดเหมาะสมที่สุดสำหรับ environment ของคุณ ?
โดยทั่วไป Monitoring จะให้มุมมองของข้อมูลที่จำกัดโดยจะเน้นที่ตัวชี้วัด (metrics) ตัวใดตัวหนึ่ง
วิธีการนี้ช่วยให้เราเข้าใจได้ว่าระบบล้มเหลวเนื่องจากอะไร อีกทั้ง Monitoring มักเน้นไปที่ตัวชี้วัดสำคัญ เช่น อัตราการใช้งาน หรือจำนวนปริมาณงานที่เข้ามา
Monitoring จะทำให้เห็นประสิทธิภาพโดยรวมของระบบ เช่น เมื่อ monitor ฐานข้อมูล คุณต้องการทราบเกี่ยวกับ latency ในการเขียนข้อมูลลงดิสก์หรือการตอบสนองของกรองข้อมูล (query)
โดยเฉลี่ย ผู้ดูแลฐานข้อมูลที่มีประสบการณ์จะสามารถสังเกตเห็นรูปแบบที่อาจเป็นปัญหาที่พบบ่อย ตัวอย่างเช่น การเพิ่มขึ้นของการใช้ memory การลดลงของ cache hit ratio หรือการเพิ่ม CPU Utilization ปัญหาเหล่านี้อาจแสดงถึงกรองข้อมูล (query) ที่เขียนได้อย่างไม่ดีที่ควรถูกจัดการและแก้ไข
การวิเคราะห์ประสิทธิภาพฐานข้อมูลทั่วไปนั้นง่ายเมื่อเทียบกับสถาปัตยกรรมแบบ microservice ที่มีองค์ประกอบหลายตัวและมี dependencies มากมาย Monitoring จะเป็นประโยชน์อย่างมากเมื่อเรารู้ว่าระบบล่มได้อย่างไร ทีนี้เมื่อแอปพลิเคชันมีความซับซ้อนมากขึ้น การล่มของมันก็ซับซ้อนขึ้นเช่นกัน บ่อยครั้งที่เราไม่สามารถคาดการณ์ได้ว่าแอปพลิเคชันสถาปัตยกรรมแบบ microservice ล่มได้อย่างไร แต่หากเราทำให้ระบบสามารถ Observe ได้ คุณก็จะสามารถเข้าใจสถานะภายในของระบบ และบอกได้ว่าอะไรไม่ทำงานและเพราะอะไร
ความสัมพันธ์ระหว่างตัวชี้วัดไม่กี่ตัวอาจไม่เพียงพอในการวินิจฉัยเหตุการณ์ที่เกิดขึ้นในแอปพลิเคชันสมัยใหม่ อย่างไรก็ตาม แอปพลิเคชันที่ทันสมัยและซับซ้อนเหล่านี้ต้องการ การมองเห็น (visibility) สถานะของระบบที่มากขึ้น และคุณสามารถทำได้โดยผสมผสานความสามารถของเครื่องมือการ Observability และเครื่องมือ Monitoring เข้าด้วยกันเพื่อให้ได้ผลลัพธ์ที่ทรงพลังมากขึ้น
3 เสาหลักของความสามารถใน Observability บันทึกการทำงาน (logs) ตัวชี้วัด (metrics) และการติดตาม (traces)
ข้อมูลที่ผมได้กล่าวไปก่อนหน้านี้ Observability คือ การเข้าใจว่าเกิดอะไรขึ้นในระบบจากข้อมูลมีอยู่ ซึ่งรวมถึงบันทึกการทำงาน (logs) ตัวชี้วัด (metrics) และการติดตาม (traces) ระบบถือว่าสามารถสังเกตได้เมื่อมีการสร้างและเผยแพร่ข้อมูลประเภทที่ช่วยให้คุณประเมินสถานะของระบบได้
หลายองค์กรเริ่มต้นด้วย Monitoring และพบว่าเครื่องมือเหล่านี้ยังขาดข้อมูลเชิงลึก ที่เป็นสิ่งสำคัญในการเข้าใจว่าทำไมปัญหาเกิดขึ้น และมันจะมีผลกระทบต่อธุรกิจอย่างไร องค์กรจึงต้องมองหา Observability เพื่อให้ได้ข้อมูลที่จำเป็นสำหรับการวิเคราะห์แบบเชิงลึก โดยต้องมีความเข้าใจในปัญหา ทำให้พวกเขาสามารถหาสาเเหตุและผลกระทบที่เกิดขึ้นได้
DevOps ต้องพยายามบำรุงรักษาให้แอปพลิเคชันมีความพร้อมใช้งานสูง และสามารถขยายจากโครงสร้างเดิมที่มีได้โดยอัตโนมัติ นั่นเพราะความซับซ้อนของระบบที่ใช้สถาปัตยกรรมแบบ microservice ทำให้เมื่อเกิดปัญหาขึ้นทำให้เราไม่สามารถระบุถึงแหล่งที่มาหรือสาเหตุของปัญหาที่ชัดเจนได้ วิธีการและเครื่องมือที่ใช้งานได้เมื่อเราสร้างแอปพลิเคชันแบบโมโนลิธิกันอย่างง่ายไม่สามารถจัดการกับปริมาณข้อมูลที่ระบบที่ microservice สร้างขึ้นได้ พวกเขาไม่สามารถรับข้อมูลเพียงพอหรือให้ความเข้าใจในสถานะของแอปพลิเคชันเพื่อเข้าใจวิธีแก้ปัญหาอย่างรวดเร็ว อย่างไรก็ตาม โชคดีที่มีเครื่องมือและวิธีการที่จัดการกับปัญหาเหล่านี้ได้ครับ
อ่านมาถึงตรงนี้ผู้อ่านอาจจะสงสัยแล้วว่า มีเครื่องมืออะไรบ้าง ที่มีความสามารถทั้ง Monitoring และ Observability เพื่อนำมาช่วยเพิ่มศักยภาพให้องค์กรของคุณ
ซอฟต์แวร์อัจฉริยะอย่าง Dynatrace ที่จะสามารถเก็บรวบรวมและวิเคราะห์ข้อมูลที่มีการปรับขนาดได้อัตโนมัติเพื่อให้เข้าใจสภาพแวดล้อม multicloud ที่มีการแผ่กิ่งก้านสาขามากมายด้วยเครื่องมือปัญญาประดิษฐ์ (AI) ของ Dynatrace ที่ชื่อว่า Davis ก็จะช่วยคัดกรองข้อมูลจำนวนมหาศาลที่เข้ามาจากแหล่งข้อมูลหลากหลายแบบ มีความเร็วสูง และวิเคราะห์ข้อมูลเหล่านี้ผ่านอินเทอร์เฟซเดียวกัน การให้ข้อมูลมาจากแหล่งเดียว (single source of truth) จะช่วยลดปัญหาการมองเห็นข้อมูลแยกชิ้นกัน (information silos) ซึ่งปัญหานี้ทำให้ทีมไม่สามารถนำมาข้อมูลมาเข้าฟังก์ชันต่างๆได้อย่างอิสระ การรวมศูนย์(centralize) จะเป็นการกำจัดขั้นตอนที่ซับซ้อนนี้ และทำให้การหาปัญหาด้วยตนเองเปลี่ยนไปเป็นแบบอัตโนมัติ และทำให้การแก้ไขปัญหาเป็นไปอย่างราบรื่นมากขึ้นครับ สุดท้ายนี้ ผมหวังว่าจะช่วยให้ผู้อ่านเข้าใจถึงความแตกต่างความแตกต่างระหว่าง Monitoring (การตรวจสอบ) vs. observability (การสังเกตการณ์) มากขึ้นนะครับ
Comments