เขียนบรีฟการออกแบบ VPN ที่ใครบางคนสามารถรีวิวได้จริง
การออกแบบที่ตรวจสอบได้ระบุโฟลว์ เจ้าของ และสัญญาความล้มเหลว การตรวจสอบหกข้อเปลี่ยนคำถามที่คลุมเครือให้เป็นคำถามที่ใครบางคนตอบด้วยการตัดสินใจได้
การรีวิวการออกแบบส่วนใหญ่ติดอยู่ที่คำถามแรก เพราะคำขออธิบายผลิตภัณฑ์ไม่ใช่การตัดสินใจ บรีฟที่ระบุโฟลว์ เจ้าของ และพฤติกรรมเมื่อล้มเหลวสามารถตอบได้ในการประชุมครั้งเดียว บรีฟที่บอกว่าให้สร้าง VPN ที่ปลอดภัยตอบไม่ได้เลย ทำงานผ่านการตรวจสอบหกข้อด้านล่างก่อนส่งสิ่งใด และการรีวิวจะกลายเป็นการเปรียบเทียบแทนการโต้เถียง
ข้อแรก คำถามคือการตัดสินใจหรือความปรารถนา
การตัดสินใจมีทางเลือกและการสังเกตที่จะเลือกทางใดทางหนึ่ง หากคุณระบุไม่ได้ว่าจะดูสิ่งใดเพื่อเลือกทางหนึ่ง คำถามยังคงเป็นความปรารถนา เขียนทางเลือกก่อน แม้รายการจะมีเพียงสองรายการ จากนั้นเขียนการแลกเปลี่ยนที่แยกทางเลือกเหล่านั้น
ความปรารถนามักซ่อนผู้ฟังด้วย บอกว่าใครต้องอนุมัติการออกแบบ เพราะบรีฟเดียวกันถูกอ่านต่างกันโดยเจ้าของเครือข่าย ผู้ตรวจสอบความปลอดภัย และผู้อนุมัติการเงิน
หยุดตรงนี้ถ้าคำตอบคือไม่มีใคร เพราะการตัดสินใจที่ไม่มีเจ้าของจะถูกทำใหม่โดยคนที่บ่นดังกว่าคนอื่น นั่นเป็นปัญหาการกำกับดูแลไม่ใช่ปัญหาการออกแบบ
ข้อสอง ระบุโฟลว์และการปฏิเสธ
ระบุแหล่งต้นทาง ปลายทาง และแอปพลิเคชันสำหรับทุกโฟลว์ที่ต้องทำงาน จากนั้นระบุโฟลว์ที่ต้องล้มเหลวต่อไป เพราะการออกแบบที่อนุญาตโฟลว์เหล่านั้นอย่างเงียบ ๆ ได้เปลี่ยนข้อกำหนดโดยไม่บอก การทับซ้อนของที่อยู่และการเข้าถึงต้นน้ำอยู่ในรายการนี้ในฐานะข้อจำกัดไม่ใช่ความประหลาดใจ
เจาะจงเรื่องทิศทาง ไซต์ที่เริ่มการเชื่อมต่อไปยังสำนักงานใหญ่ได้เป็นการออกแบบที่ต่างจากไซต์ที่รับการเชื่อมต่อเหล่านั้นได้ และความแตกต่างจะปรากฏในทุกกฎที่คุณเขียนหลังจากนั้น
บันทึกไคลเอนต์และสถานะการจัดการด้วย เพราะอุปกรณ์ที่จัดการโดยมีเอเจนต์สามารถทำสิ่งที่ไม่สามารถทำได้จากแล็ปท็อปที่พกมาเอง
ทำให้รายการสั้นพอที่จะทดสอบได้ สิบโฟลว์ที่ตรวจสอบได้ดีกว่าสี่สิบโฟลว์ที่ตรวจสอบไม่ได้
การตรวจสอบ 3: แยกข้อเท็จจริงออกจากสมมติฐาน
ทำเครื่องหมายทุกข้อความที่คุณตรวจสอบแล้ว และทำเครื่องหมายข้อความที่ยังไม่ได้ตรวจสอบ การกำหนดที่อยู่สาธารณะ ปริมาณงานที่ใช้ได้ และการเข้าถึงของผู้ดูแลระบบเป็นสามสมมติฐานที่มักเปลี่ยนคำตอบ หากหนึ่งในนั้นไม่เป็นที่รู้จัก บอกว่าการออกแบบเปลี่ยนอย่างไรเมื่อปรากฏไปทางใดทางหนึ่ง
เครือข่ายตัวอย่างใช้ได้ตราบเท่าที่มีป้ายกำกับ ปัญหาคือสาขาสมมติที่ได้รับลิงก์ต้นน้ำที่สองหรือบล็อกที่อยู่สาธารณะที่มันไม่เคยมีอย่างเงียบ ๆ
ตรวจสอบสมมติฐานที่คุณตรวจสอบได้ก่อนการรีวิว เพราะข้อเท็จจริงที่วัดได้หนึ่งข้อลบทั้งสาขาของการอภิปราย
ip route get 10.50.0.10
traceroute -n -m 6 10.50.0.10
nc -vz 10.50.0.10 443ข้อสี่ เขียนสัญญาความล้มเหลว
บอกว่าเกิดอะไรขึ้นเมื่ออุโมงค์ล่ม และชัดเจนเกี่ยวกับคำสัญญาสองข้อที่ต่างกัน การคืนค่าการเชื่อมต่อใหม่หลังการเชื่อมต่อใหม่เป็นเรื่องง่ายที่จะสัญญา การรักษาเซสชันที่สร้างไว้แล้วให้ผ่านความล้มเหลวไปได้เป็นข้อกำหนดที่แข็งแรงกว่ามาก และจำกัดการเลือกเทคโนโลยี
จากนั้นตัดสินใจทางเลือกสำรอง: บล็อกทราฟฟิก ส่งผ่านเส้นทางอื่นที่ได้รับอนุมัติ หรือทำสิ่งที่ต่างกันในแต่ละแอปพลิเคชัน การย้อนกลับไปยังเส้นทางตรงอย่างเงียบ ๆ เป็นการตัดสินใจออกแบบแม้ไม่มีใครเขียนไว้
เพิ่มเป้าหมายการกู้คืนด้วยภาษาธรรมดา เช่น ไซต์สามารถทำงานในสถานะเสื่อมได้นานเท่าใด และใครประกาศเหตุการณ์
การตรวจสอบ 5 และ 6: เลือกตะเข็บและบันทึกการเปลี่ยนแปลง
เลือกตะเข็บหนึ่งจุดเพื่อโต้แย้ง เพราะการรีวิวที่พยายามตัดสินทุกอย่างไม่ตัดสินอะไรเลย การกำหนดเส้นทาง การอนุญาต และการเข้ารหัสเป็นตะเข็บที่ต่างกันสามจุด และบรีฟควรบอกว่าคำถามเกี่ยวกับตะเข็บใด RFC 4301 เป็นเครื่องเตือนใจที่มีประโยชน์ตรงนี้ เพราะแยกการตัดสินใจเชิงนโยบาย ทราฟฟิกที่ได้รับการป้องกัน และสมาคมความปลอดภัยออกจากกันแทนที่จะถือเป็นวัตถุเดียว
จากนั้นบันทึกว่าอะไรเปลี่ยนไปหลังการตัดสินใจ รวมถึงสมมติฐานที่แก้ไขแล้ว บันทึกนั้นคือสิ่งที่ทำให้การรีวิวครั้งถัดไปสั้นลง
git diff --stat design/vpn-brief.md
grep -n 'assumption' design/vpn-brief.md
ip route get 10.50.0.10บรีฟที่ผ่านการตรวจสอบทั้งหกข้อสร้างคำถามที่มีคำตอบ: การออกแบบตรงตามโฟลว์ที่ระบุและสัญญาความล้มเหลว หรือข้อจำกัดที่ระบุไว้ขัดขวาง เมื่อข้อจำกัดเปลี่ยนในภายหลัง บันทึกจะแสดงว่าการตัดสินใจใดต้องทบทวนใหม่และใดคงอยู่ได้ นั่นคือสิ่งที่ทำให้แบบฝึกหัดนี้ใช้ซ้ำได้ไม่ใช่การโต้เถียงครั้งเดียว