- Compiler Explorer ในช่วงแรกใช้วิธี เก็บสถานะทั้งหมดไว้ใน URL โดยตรง
- เมื่อ URL ยาวเกินไป จึงนำ บริการย่อ URL goo.gl ของ Google มาใช้ ซึ่งทำให้โครงสร้างซับซ้อนจากการต้องผ่านรีไดเร็กต์หลายครั้ง
- ตั้งแต่ปี 2018 ได้เปลี่ยนมาใช้โครงสร้างที่อาศัย สตอเรจของตนเองบน S3 และ DynamoDB เนื่องจากปัญหาข้อจำกัดความยาวของ URL และความยากในการบำรุงรักษา
- แต่เมื่อ Google จะยุติบริการ goo.gl ในเดือนสิงหาคม 2025 ก็ทำให้ต้องมารับผิดชอบความคงอยู่ของลิงก์ย่อเก่า ๆ ด้วยตนเอง
- จนถึงตอนนี้ได้ กู้ลิงก์แบบเลกาซี มาแล้วมากกว่า 12,000 รายการ ซึ่งสะท้อนให้เห็นถึงความสำคัญของ การอนุรักษ์ความรู้ด้านการเขียนโปรแกรมและการดำเนินบริการอย่างยั่งยืน
ประวัติและการรับประกันความคงอยู่ของลิงก์ Compiler Explorer
แนวทางออกแบบช่วงแรกและที่มาของการนำ goo.gl มาใช้
- ในปี 2012 Compiler Explorer ได้นำโครงสร้างที่ เข้ารหัสสถานะของคอมไพเลอร์ทั้งหมดลงใน URL โดยตรง มาใช้
- เมื่อข้อมูลสถานะมีมากขึ้น ก็เกิดปัญหา URL ยาวเกินไป
- เพื่อทำให้ URL สั้นลง จึงเริ่มใช้ บริการย่อ URL goo.gl ของ Google ในปี 2014
- ให้ลิงก์ย่อในรูปแบบ
goo.gl/abc123 และเมื่อคลิกก็จะรีไดเร็กต์ไปยัง URL แบบยาวเดิมเพื่อกู้คืนสถานะ
- Stack Overflow ออกมาตรการห้ามใช้ลิงก์ย่อในปี 2016 ทำให้แนวทางเดิมมีข้อจำกัด
- ลิงก์ที่อิงกับ goo.gl ทั้งหมดได้รับผลกระทบ เพราะมีความเสี่ยงในการซ่อนลิงก์อันตราย
- เนื่องจากไม่ต้องการเก็บข้อมูลผู้ใช้ จึงสร้างเส้นทางของตนเองแบบชั่วคราวในรูป
godbolt.org/g/abc123
- เมื่อเข้าผ่าน
godbolt.org/g/abc123 จะรีไดเร็กต์ไปยัง goo.gl/abc123 อีกครั้ง
- จากนั้นจึงกลับไปยัง URL แบบยาวของ
godbolt.org ในท้ายที่สุด
- การเกิดรีไดเร็กต์หลายต่อทำให้โครงสร้างซับซ้อน
- ต่อมามีการใช้ Google API เพื่อทำให้ขั้นตอนรีไดเร็กต์บางส่วนง่ายขึ้น
การนำสตอเรจของตนเองมาใช้และการจัดการลิงก์
- ตั้งแต่ปี 2018 เป็นต้นมา ปัญหา ข้อจำกัดความยาวของ URL และความไม่สะดวกของการบีบอัดข้อมูลเริ่มเป็นประเด็นบ่อยครั้ง
- จึงได้ สร้างโครงสร้างจัดเก็บของตนเองด้วย S3 และ DynamoDB
- นำค่าอินพุตไป แฮช แล้วเก็บใน S3 ในรูปแบบ เอกสาร JSON
- เมื่อเข้าผ่านลิงก์สั้น (
godbolt.org/z/hashbit) จะไปค้นหาแมปปิงใน DynamoDB
- หากค่าแฮชมีคำหยาบหรือคำไม่เหมาะสม จะมีฟังก์ชันตรวจสอบเพื่อหลบเลี่ยงด้วยการเพิ่มองค์ประกอบแบบสุ่ม
- มีการแก้ปัญหาความไม่เหมาะสมของลิงก์แบบแฮชและเคยพบบั๊กที่เกี่ยวข้อง (เช่น issue #1297)
- ปัจจุบันยังคงรองรับรูปแบบที่อยู่
godbolt.org/g/abc123 อยู่
- แม้ Google จะประกาศอย่างเป็นทางการแล้วว่า goo.gl เปลี่ยนเป็นโหมดอ่านอย่างเดียว และจะปิดตัวสมบูรณ์ในเดือนสิงหาคม 2025
- ลิงก์ย่อที่อิงกับ goo.gl จะไม่สามารถตีความได้อีกต่อไป
- แต่รูปแบบ
godbolt.org/g/abc123 สามารถ ยืดอายุการใช้งานได้ด้วยการดูแลเองโดยตรง จึงมีการดำเนินงานกู้ลิงก์เหล่านี้อย่างเป็นระบบ
การรวบรวมลิงก์เลกาซีจำนวนมากและงานจัดเก็บถาวร
- ช่วงหลังมีการครอว์ลิงและทำฐานข้อมูลของลิงก์เลกาซีจากทุกแหล่งที่เป็นไปได้ (การค้นหา, data dump, weblog ฯลฯ)
- Google Web Search API
- GitHub API
- เซิร์ฟเวอร์ล็อกของตนเอง
- Stack Overflow data dump จาก archive.org
- ข้อมูลหน้าเว็บที่ Archive.org จัดเก็บไว้
- กู้ลิงก์ย่อกลับคืนมาได้สำเร็จประมาณ 12,298 รายการ
- ภายในระบบได้เริ่มใช้ฐานข้อมูลลิงก์ของตนเองแทน goo.gl แล้ว (PR ที่เกี่ยวข้อง: #7724)
- ต่อจากนี้ก็มีแผนจะเก็บรวบรวมและสำรองลิงก์
godbolt.org/g/abc123 ที่ยังไม่ถูกค้นพบต่อไป
- หากชุมชนยังมีลิงก์ที่ยังไม่ได้ลงทะเบียน สามารถเข้าใช้งานโดยตรงหรือแจ้งผู้ดูแลเพื่อขอเสริมข้อมูลในฐานข้อมูลได้
ปรัชญาของโครงการและความสำคัญของการเป็นเจ้าของโครงสร้างพื้นฐาน
- กรณีนี้แสดงให้เห็นถึง ความเสี่ยงของการพึ่งพาความต่อเนื่องของบริการภายนอก (เช่น Google) สำหรับโครงสร้างพื้นฐานสำคัญ
- การจัดการลิงก์ย่อและโครงสร้างแบ็กอัปเป็นเพียงทางแก้ชั่วคราว และหากจะ รับประกัน URL แบบถาวรอย่างแท้จริง ก็จำเป็นต้องดูแลทั้งบริการด้วยตนเอง
- ในกระบวนการกู้ลิงก์เลกาซีเก่า ๆ ราวกับเป็นโบราณคดีดิจิทัล ก็ได้ตระหนักว่าลิงก์แต่ละรายการคือ ร่องรอยของการแบ่งปันความรู้ คำถาม และการอธิบายแนวคิดของใครบางคน
- การจัดเก็บและอนุรักษ์นี้ยังเชื่อมโยงโดยตรงกับ การทำหน้าที่เป็นคลังประวัติศาสตร์ของชุมชนโปรแกรมมิง
- หากคุณพบลิงก์ Compiler Explorer เก่า ๆ การลองกดเข้าไปดูแม้ตอนนี้ก็ถือเป็นการช่วยอนุรักษ์ความรู้บนอินเทอร์เน็ต
- ครั้งนี้ การพึ่งพา โครงสร้างพื้นฐานที่ควบคุมได้โดยตรงแทนบุคคลที่สาม ทำให้สามารถทำตามคำมั่นเรื่องความคงอยู่ได้จริง
Disclaimer
- บทความนี้เขียนโดยมนุษย์ และมีการใช้ LLM ในกระบวนการแนะนำลิงก์และตรวจไวยากรณ์
1 ความคิดเห็น
ความคิดเห็นใน Hacker News