การประมาณการแบบ Back-of-the-Envelope เป็นทักษะที่สำคัญใน System Design Interviews ซึ่งเกี่ยวข้องกับการคำนวณอย่างรวดเร็วเพื่อประเมินความสามารถหรือประสิทธิภาพของระบบ
บทนำ
การประมาณการแบบ Back-of-the-Envelope เป็นทักษะสำคัญในการสัมภาษณ์ออกแบบระบบ มันเกี่ยวข้องกับการคำนวณอย่างรวดเร็วเพื่อประเมินความสามารถหรือประสิทธิภาพของระบบ ตามที่ Jeff Dean Google Senior Fellow กล่าว การประมาณการเหล่านี้ช่วยประเมินว่าการออกแบบตรงตามข้อกำหนดหรือไม่ผ่าน Thought Experiments และ Common Performance Benchmarks
1. แนวคิดหลัก
Power of Two
การเข้าใจปริมาณข้อมูลในแง่ของ Powers of Two เป็นพื้นฐาน ความรู้นี้ช่วยในการคำนวณ Storage และ Bandwidth ที่แม่นยำ
ตัวเลข Latency ที่ทุก Programmer ควรรู้
ตัวเลข Latency แสดงถึงเวลาที่ใช้สำหรับ Operations ต่างๆ ในระบบคอมพิวเตอร์
| Operation | Latency (2020) |
|---|---|
| L1 Cache Access | 0.5 ns |
| L2 Cache Access | 7 ns |
| Main Memory Access | 100 ns |
| SSD Random Read | 150 µs |
| HDD Random Seek | 10 ms |
| Round-Trip in Data Center | 500 µs |
| Inter-Region Data Center | 150 ms |
- Memory เร็ว, Disk ช้า
- หลีกเลี่ยง Disk Seeks ทุกครั้งที่ทำได้
- บีบอัดข้อมูลก่อนส่งผ่าน Internet เพื่อประหยัด Bandwidth
2. ตัวเลข Availability
High Availability (HA) ทำให้ Downtime น้อยที่สุด Availability แสดงเป็น Nines
| Availability | Downtime ต่อปี |
|---|---|
| 99% (Two Nines) | ~3.65 วัน |
| 99.9% (Three Nines) | ~8.8 ชั่วโมง |
| 99.99% (Four Nines) | ~52 นาที |
| 99.999% (Five Nines) | ~5.3 นาที |
| 99.9999% (Six Nines) | ~31.56 วินาที |
Cloud Providers เช่น Amazon, Google และ Microsoft มุ่งเป้า SLA (Service Level Agreements) ที่ 99.9% หรือสูงกว่า
3. ตัวอย่างการประมาณการ - Twitter QPS และ Storage Requirements
สมมติฐาน
- 300 ล้าน Monthly Active Users (MAU)
- 50% เป็น Daily Active Users (DAU)
- Tweets เฉลี่ยต่อผู้ใช้ต่อวัน: 2
- 10% ของ Tweets มี Media
- เก็บข้อมูล: 5 ปี
การประมาณการ
1. Query Per Second (QPS):
- DAU = 300M × 50% = 150M
- Tweets QPS = 150M × 2 tweets / 24 ชั่วโมง / 3600 วินาที = ~3500
- Peak QPS = 2 × 3500 = ~7000
2. Media Storage:
- ส่วนประกอบของ Tweet Size:
tweet_id: 64 bytestext: 140 bytesmedia: 1 MB
- Media Storage ต่อวัน: 150M × 2 × 10% × 1MB = 30TB ต่อวัน
- Storage 5 ปี: 30TB × 365 × 5 = ~55PB
4. เคล็ดลับสำหรับการประมาณการที่มีประสิทธิภาพ
1. การปัดเศษและการประมาณ
ความแม่นยำไม่สำคัญมาก; มุ่งเน้นที่กระบวนการ ใช้ตัวเลขกลมๆ เช่น:
- 99987 / 9.1 สามารถประมาณเป็น 100,000 / 10 = 10,000
2. เขียนสมมติฐาน
บันทึกสมมติฐานอย่างชัดเจนเพื่ออ้างอิงในอนาคต
3. ระบุหน่วย
หลีกเลี่ยงความกำกวมโดยระบุหน่วย (เช่น 5 MB แทนที่จะเป็น 5)
4. สถานการณ์การประมาณการทั่วไป
- QPS (Queries Per Second): วัดความเข้มข้นของ Traffic
- Peak QPS: คำนึงถึง Traffic Spikes
- Storage Requirements: ประมาณความต้องการข้อมูลทั้งหมด
- Cache Requirements: ประเมินความต้องการ Memory สำหรับ Caching
- Number of Servers: คำนวณความต้องการ Hardware ตาม Workload
สรุป
การประมาณการแบบ Back-of-the-Envelope เป็นทักษะที่จำเป็นสำหรับ System Design Interviews ช่วยให้คุณ:
- ประเมิน Feasibility ของการออกแบบอย่างรวดเร็ว
- ระบุ Bottlenecks ที่อาจเกิดขึ้น
- สื่อสาร Trade-offs กับผู้สัมภาษณ์
- แสดงความเข้าใจเกี่ยวกับ System Scale
เนื้อหานี้อ้างอิงจาก ByteByteGo - System Design Interview - An Insider's Guide