bytes को अपने API से होकर मत भेजिए। क्लाइंट presigned upload URL मांगे, बड़ी फाइलों के लिए multipart upload से सीधे object storage पर अपलोड करे, और फिर आपकी service को बताए, जो object की पुष्टि करके metadata दर्ज करे। content type और size की सीमाएं policy स्तर पर जांचें, फाइल के इस्तेमाल लायक होने से पहले उसे asynchronously scan करें, और downloads के लिए objects को public करने की जगह छोटी उम्र वाले signed URLs बनाएं।
इंटरव्यूअर यह क्यों पूछते हैं
यह डिज़ाइन सवाल एक साथ बहुत कुछ सामने ला देता है: streaming बनाम buffering, storage का चुनाव, सिक्योरिटी और asynchronous processing। इंटरव्यूअर चाहते हैं कि आप उस भोले डिज़ाइन से बचें जिसमें एक request thread दो गीगाबाइट पकड़े रहती है, और validation तथा resumability पर सोचें। सिक्योरिटी वाले follow up, presigned URL के दायरे और भरोसे लायक न होने वाली फाइल सामग्री पर, सावधान इंजीनियरों को उन लोगों से अलग कर देते हैं जिन्होंने बस चला भर दिया था।
अपना जवाब कैसे स्ट्रक्चर करें
- bytes को अपने एप्लिकेशन से बाहर रखें: सीधे object storage पर।
- flow बताएं: presign, multipart upload, पूरा होने का callback।
- validation, वायरस scanning और फाइल कैसे इस्तेमाल लायक बनती है, यह बताएं।
- downloads को छोटी उम्र वाले signed URLs और access जांच के साथ संभालें।
उदाहरण जवाब
पहला फैसला यह है कि फाइल कभी मेरे API से होकर नहीं जाएगी, क्योंकि दो गीगाबाइट request handler से गुज़ारने पर एक worker बंधा रहता है, bandwidth दो बार लगती है, और connection टूटते ही सब बिखर जाता है। तो क्लाइंट मेरी service से presigned upload URL मांगता है, जो एक ही key, एक ही content type और छोटी expiry तक कसकर सीमित होता है, और सीधे object storage पर अपलोड करता है। इस आकार की फाइलों के लिए मैं multipart upload लेता हूं, जिससे resumability मिलती है, क्योंकि नाकाम हुआ part ही दोबारा भेजा जाता है, पूरी फाइल नहीं। अपलोड पूरा होने पर क्लाइंट callback करता है, या इससे बेहतर, storage खुद एक event भेजता है, और मेरी service metadata लिखने से पहले जांचती है कि object मौजूद है और अपेक्षित आकार से मेल खाता है। फाइल pending स्थिति में शुरू होती है और asynchronous processing के बाद ही इस्तेमाल लायक बनती है: scanning, extension पर भरोसा करने की जगह bytes से असली content type जांचना, और जो thumbnails चाहिए वे बनाना। downloads authorization जांच के बाद जारी किए गए छोटी उम्र वाले signed URL से होते हैं, कभी किसी public bucket से नहीं, क्योंकि हैरतअंगेज़ रूप से बहुत से डेटा लीक वहीं से आते हैं।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- कोई presigned URL से कुछ और अपलोड न कर दे, यह आप कैसे रोकेंगे?
- जो क्लाइंट अपलोड के बीच में गायब हो जाए, उसे आप कैसे संभालेंगे?
- कमज़ोर मोबाइल कनेक्शन पर resumable uploads आप कैसे सपोर्ट करेंगे?
बैकएंड डेवलपर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें