ধাপ ৪ - উপসংহার (Wrap up)
এই অধ্যায়ে, আমরা প্রথমে একটি ভালো ক্রলারের বৈশিষ্ট্যগুলো নিয়ে আলোচনা করেছি: স্কেলেবিলিটি, ভদ্রতা, এক্সটেনসিবিলিটি এবং রোবাস্টনেস। তারপর, আমরা একটি ডিজাইন প্রস্তাব করেছি এবং মূল উপাদানগুলো নিয়ে আলোচনা করেছি। একটি স্কেলেবল ওয়েব ক্রলার তৈরি করা কোনো তুচ্ছ কাজ নয় কারণ ওয়েব বিশালভাবে বড় এবং ফাঁদে ভরা। যদিও আমরা অনেক বিষয় কভার করেছি, তবুও আমরা অনেক প্রাসঙ্গিক আলোচনার বিষয় মিস করি:
- সার্ভার-সাইড রেন্ডারিং (Server-side rendering): অসংখ্য ওয়েবসাইট চলমানভাবে লিংক তৈরি করতে JavaScript, AJAX ইত্যাদির মতো স্ক্রিপ্ট ব্যবহার করে। যদি আমরা সরাসরি ওয়েব পেজ ডাউনলোড এবং পার্স করি, তবে আমরা গতিশীলভাবে তৈরি করা লিংকগুলো পুনরুদ্ধার করতে পারব না। এই সমস্যা সমাধান করতে, আমরা একটি পেজ পার্স করার আগে প্রথমে সার্ভার-সাইড রেন্ডারিং (যাকে ডাইনামিক রেন্ডারিংও বলা হয়) সম্পাদন করি [12]।
- অবাঞ্ছিত পেজ ফিল্টার আউট করা: সীমিত স্টোরেজ ক্ষমতা এবং ক্রল রিসোর্স নিয়ে, নিম্নমানের এবং স্প্যাম পেজ ফিল্টার আউট করার জন্য একটি অ্যান্টি-স্প্যাম উপাদান উপকারী [13] [14]।
- ডাটাবেস রেপ্লিকেশন এবং শার্ডিং: ডেটা লেয়ারের প্রাপ্যতা, স্কেলেবিলিটি এবং নির্ভরযোগ্যতা উন্নত করতে রেপ্লিকেশন এবং শার্ডিংয়ের মতো কৌশল ব্যবহার করা হয়।
- হরাইজন্টাল স্কেলিং: বড় স্কেলের ক্রলের জন্য, ডাউনলোড টাস্ক সম্পাদন করতে শত শত বা এমনকি হাজার হাজার সার্ভারের প্রয়োজন হয়। মূল বিষয় হলো সার্ভারগুলোকে স্টেটলেস (stateless) রাখা।
- প্রাপ্যতা, ধারাবাহিকতা এবং নির্ভরযোগ্যতা: এই ধারণাগুলো যেকোনো বড় সিস্টেমের সাফল্যের মূলে রয়েছে।
- অ্যানালিটিক্স: যেকোনো সিস্টেমের ডেটা সংগ্রহ এবং বিশ্লেষণ করা গুরুত্বপূর্ণ অংশ কারণ ডেটা হলো ফাইন-টিউনিংয়ের মূল উপাদান।
এতদূর আসার জন্য অভিনন্দন! এখন নিজেকে একটি চাপড় দিন। দারুণ কাজ করেছেন!