การออกแบบ Browser Profile Leases สำหรับ Multi-Worker Automation
Stale lock คือปัญหาด้านการกู้คืนระบบ (recovery problem) Profile lease คือปัญหาด้านการออกแบบระบบขณะทำงาน (runtime design problem)
คนส่วนใหญ่มักคิดว่าการใช้ lock file เพียงพอแล้วที่จะป้องกันไม่ให้ worker สองตัวเปิด browser profile เดียวกัน แต่นั่นคือความผิดพลาดเมื่อคุณต้องขยายระบบ (scale)
Lock บอกคุณได้แค่ว่า profile นั้นกำลังถูกใช้งานอยู่หรือไม่ แต่มันไม่ได้บอกว่า profile นั้นปลอดภัยที่จะนำมาใช้งานต่อหรือไม่
หาก worker เกิด crash ระหว่างการ login สถานะของบัญชีจะไม่สามารถทราบได้ worker ตัวถัดไปอาจเริ่มทำงานในหน้าที่ไม่ถูกต้องหรือมีคุกกี้ที่เสียหาย สิ่งนี้ทำให้เกิด silent failures ที่ยากต่อการ debug
Lease เป็นมากกว่าแค่ lock มันคือข้อตกลง (contract) ระหว่าง scheduler, worker และ profile ของคุณ
Lease ที่ดีควรตอบคำถามเหล่านี้ได้:
- ใครเป็นเจ้าของ profile นี้ในขณะนี้?
- การรัน (run) ครั้งไหนที่กำลังใช้งานอยู่?
- สิทธิ์การเป็นเจ้าของนี้จะหมดอายุเมื่อไหร่?
- จะเกิดอะไรขึ้นหาก worker หายไป?
บันทึก lease ขั้นต่ำควรประกอบด้วย: • profile_id และ account_id • worker_id และ run_id • proxy_id • heartbeat_at (เพื่อตรวจสอบว่า worker ยังทำงานอยู่หรือไม่) • last_safe_step (เพื่อตรวจสอบสถานะล่าสุดที่ทำงานได้ปกติ) • release_policy
อย่ามองว่าการหมดอายุของ Time To Live (TTL) คือคำสั่งให้ลบ lock Lease ที่หมดอายุคือจุดจบที่ยังไม่ได้รับการแก้ไข (unresolved ending) การ release ที่สะอาดคือจุดจบที่สามารถอธิบายได้ (explainable ending)
หาก worker หยุดส่ง heartbeat อย่าเพิ่งนำ profile นั้นกลับมาใช้ใหม่โดยอัตโนมัติ แต่ควรย้าย profile ไปยังสถานะกักกัน (quarantine state) แทน
ใช้สถานะเหล่านี้สำหรับ profile ของคุณ:
- Available: พร้อมใช้งาน
- Leased: กำลังถูกใช้งาน
- Stale: Worker หยุดรายงานสถานะ; ไม่ทราบสถานะที่แน่ชัด
- Review Required: ต้องใช้คนตรวจสอบ
- Quarantined: ไม่ปลอดภัยที่จะใช้งานจนกว่าจะได้รับการตรวจสอบ
- Disabled: ถูกระงับการใช้งาน
Quarantine ไม่ใช่การลงโทษ แต่เป็นกลไกเพื่อความปลอดภัย คุณควรนำ profile ไปไว้ใน quarantine หาก:
- Worker หยุดทำงานระหว่างการส่งฟอร์ม (form submission)
- ไม่ทราบ URL สุดท้าย
- Proxy เปลี่ยนแปลงระหว่างการรัน
- มีการแจ้งเตือนด้านความปลอดภัยปรากฏขึ้น
Lock ช่วยปกป้อง profile จากการเข้าถึงพร้อมกัน Lease ช่วยปกป้อง profile จากการนำกลับมาใช้ใหม่ที่ไม่ปลอดภัย
เลิกปฏิบัติกับ browser profile เหมือนเป็นโฟลเดอร์ที่ใช้แล้วทิ้ง แต่จงปฏิบัติกับมันเหมือนเป็นสภาพแวดล้อมของบัญชีที่ต้องมีการจัดการ (managed account environments)
Source: https://dev.to/web4browser/designing-browser-profile-leases-for-multi-worker-automation-1bfa