เจาะเครื่องมือ
Python / Tools
wrapture ไลบรารี monkey patching ที่คน Python ยังไม่ค่อยพูดถึง แต่ควรจับตามอง
ของใหม่จาก Graham Dumpleton ที่ทำได้ทั้งเทสต์โค้ดและส่องการทำงานจริงในเวลาเดียวกัน
ทีมข่าว เอไอไทย.com
⏱ อ่าน 4 นาที
เครื่องมือดีๆ บางทีก็ไม่ได้ดังเพราะไม่มีคนพูดถึง แต่เพราะคนยังไม่รู้ว่ามันแก้ปัญหาอะไรได้บ้าง
ถ้าคุณเป็นคนเขียน Python แล้วเคยรู้สึกว่าเวลาไล่หาว่าโค้ดทำงานยังไงจริงๆ มันช่างเป็นงานที่ปวดหัวเหลือเกิน — ต้องมานั่งเดาว่าฟังก์ชันนี้ถูกเรียกตอนไหน ใครเรียก แล้วทำไมมันช้าจัง — wrapture คือแพ็กเกจที่อาจทำให้คุณเลิกปวดหัวกับเรื่องพวกนี้ไปเลย
wrapture เป็นไลบรารี monkey patching ตัวใหม่จากฝีมือของ Graham Dumpleton ที่เปิดตัวเมื่อวันที่ 31 สิงหาคมที่ผ่านมา และจุดที่น่าสนใจคือมันทำงานได้สองโหมดในตัวเดียว คือใช้สำหรับการทดสอบโค้ด (testing) และใช้สำหรับการเฝ้าดูการทำงานของระบบ (observability) แบบที่เครื่องมือ tracing สไตล์ New Relic ทำนั่นแหละ
Dumpleton โพสต์บทเรียนใหม่ๆ แทบจะทุกวันตั้งแต่เปิดตัว ซึ่งบอกได้เลยว่าเขาจริงจังกับโปรเจกต์นี้มาก และเนื้อหาที่ปล่อยออกมาก็ครอบคลุมตั้งแต่การใช้งานพื้นฐานไปจนถึงของขั้นสูง
ทดสอบโค้ด
ใช้งานแทน unittest.mock ได้เลย ใช้สำหรับเทสต์แบบเดียวกับที่คน Python คุ้นเคย
บันทึกการเรียกฟังก์ชัน
เก็บประวัติการเรียก method เป็น timeline แล้วประมวลผลแสดงผลออกมาเป็นโครงสร้างต้นไม้
ปรับพฤติกรรมแบบเป็นเฟส
ตั้งค่าให้ method ที่ถูก patch เปลี่ยนพฤติกรรมไปเรื่อยๆ ตามจำนวนครั้งที่ถูกเรียก
ส่องการทำงานสดๆ
trace แอปที่รันอยู่จริงเพื่อดูว่ามันทำงานยังไง หรือจะตั้งค่าผ่านไฟล์ TOML โดยไม่แตะโค้ด Python เลยก็ได้
หาโค้ดที่ช้า
เครื่องมือบันทึกข้อมูลเรื่อง timing ทั้งแบบเดี่ยวและแบบรวมหลายๆ ครั้งเข้าด้วยกัน
ที่เจ๋งกว่านั้นคือมีแพ็กเกจแยกชื่อ wrapture-instrumentation ที่ช่วย instrument แอปพลิเคชันได้แบบสำเร็จรูป รองรับตั้งแต่ Flask, Django, FastAPI, Starlette ไปจนถึง requests, httpx, SQLAlchemy, gRPC และอื่นๆ อีกเพียบ
อีกอย่างที่ต้องพูดถึงคือเรื่อง OpenTelemetry — wrapture export trace ไปที่ OpenTelemetry ได้ด้วย ซึ่งถ้าใครทำงานสาย observability อยู่แล้วก็คงรู้ว่านี่คือมาตรฐานที่วงการกำลังไปทางนั้น
wrapture ยังอยู่ในสถานะ alpha อยู่ แต่อย่างที่เจ้าของบอก มันใช้งานได้จริงแล้ว โดยเฉพาะจุดที่คุณสามารถตั้งค่าและลองใช้ผ่านไฟล์ TOML ได้โดยไม่ต้องแก้โค้ด Python สักบรรทัด — อันนี้คือจุดขายที่ทำให้มันต่างจากเครื่องมือ tracing ทั่วไป
Dumpleton ยังมี workshop แบบอินเทอร์แอกทีฟให้ลองเล่นด้วย ทำเป็น JupyterLab notebook ให้คนที่อยากลงมือทำจริงๆ ได้ลองกัน
ผมเห็นด้วยกับประโยคนั้นของ Simon Willison เต็มๆ — wrapture ให้ความรู้สึกเหมือนมีดพกสวิสที่พอเรียนรู้จนคล่องแล้ว มันจะแก้ปัญหาได้สารพัดแบบไปอีกหลายปี ซึ่งนี่คือสิ่งที่เครื่องมือในฝันของนักพัฒนาควรเป็น
ที่น่าแปลกคือมันยังไม่ค่อยมีคนพูดถึงมากนัก ทั้งที่ Dumpleton เป็นคนที่ทำ mod_wsgi มาก่อน ระดับฝีมือไม่ต้องห่วงเลย บางทีอาจเพราะมันเป็นเครื่องมือที่ต้องลองใช้เองถึงจะเห็นคุณค่า ไม่ใช่แค่ดู demo แล้วร้องว้าว
ถ้าคุณเขียน Python แล้วยังไม่เคยลอง wrapture บอกเลยว่าตอนนี้คือจังหวะที่ดีที่สุด เพราะมันยัง alpha แต่ก็พร้อมใช้งานจริง และการได้เรียนรู้เครื่องมือตั้งแต่ต้นแบบนี้มักให้ผลตอบแทนคุ้มกว่าการรอให้มันดังแล้วค่อยตาม
ที่มา: Simon Willison's Weblog — อ่านต้นฉบับ
ความคิดเห็น 4
กำลังโหลดความคิดเห็น...