Skip to Content
সিস্টেম ডিজাইনে স্বাগতম 🎉
DocumentationDesign A URL ShortenerUnderstand the Problem and Establish Design Scope

একটি URL শর্টনার ডিজাইন (Design A URL Shortener)

এই অধ্যায়ে, আমরা একটি আকর্ষণীয় এবং ক্লাসিক সিস্টেম ডিজাইন ইন্টারভিউ প্রশ্নের সমাধান করব: tinyurl-এর মতো একটি URL শর্টনিং সার্ভিস ডিজাইন করা।

ধাপ ১ - সমস্যাটি বোঝা এবং ডিজাইনের সুনির্দিষ্ট ক্ষেত্র (scope) নির্ধারণ করা

সিস্টেম ডিজাইন ইন্টারভিউ প্রশ্নগুলো ইচ্ছাকৃতভাবে ওপেন-এন্ডেড (open-ended) রাখা হয়। একটি সুচারুভাবে তৈরি সিস্টেম ডিজাইন করতে, স্পষ্টিকরণমূলক প্রশ্ন করা অত্যন্ত গুরুত্বপূর্ণ।

প্রার্থী: আপনি কি একটি URL শর্টনার কীভাবে কাজ করে তার একটি উদাহরণ দিতে পারেন? ইন্টারভিউয়ার: ধরে নিন URL https://www.systeminterview.com/q=chatsystem&c=loggedin&v=v3&l=long হলো অরিজিনাল URL। আপনার সার্ভিস ছোট দৈর্ঘ্যের একটি অ্যালিয়াস তৈরি করে: https://tinyurl.com/y7keocwj। যদি আপনি অ্যালিয়াসটিতে ক্লিক করেন, এটি আপনাকে অরিজিনাল URL-এ রিডাইরেক্ট করবে।

প্রার্থী: ট্রাফিকের পরিমাণ কত? ইন্টারভিউয়ার: প্রতিদিন ১০০ মিলিয়ন URL তৈরি করা হয়।

প্রার্থী: শর্ট করা URL-এর দৈর্ঘ্য কত হবে? ইন্টারভিউয়ার: যতটা সম্ভব ছোট।

প্রার্থী: শর্ট করা URL-এ কোন কোন ক্যারেক্টার অনুমোদিত? ইন্টারভিউয়ার: শর্ট করা URL-এ সংখ্যা (0-9) এবং অক্ষর (a-z, A-Z)-এর সংমিশ্রণ থাকতে পারে।

প্রার্থী: শর্ট করা URL কি ডিলিট বা আপডেট করা যাবে? ইন্টারভিউয়ার: সরলতার জন্য, ধরে নেওয়া যাক শর্ট করা URL ডিলিট বা আপডেট করা যাবে না।

এখানে মৌলিক ব্যবহারের ক্ষেত্রগুলো (use cases) দেওয়া হলো:

  • URL শর্টনিং (URL shortening): একটি বড় URL দেওয়া হলে => একটি অনেক ছোট URL ফেরত দেওয়া।
  • URL রিডাইরেক্টিং (URL redirecting): একটি ছোট URL দেওয়া হলে => অরিজিনাল URL-এ রিডাইরেক্ট করা।
  • উচ্চ প্রাপ্যতা (High availability), স্কেলেবিলিটি (scalability), এবং ফল্ট টলারেন্স (fault tolerance) বিবেচনা করা।

খসড়া অনুমান (Back of the envelope estimation)

  • রাইট অপারেশন (Write operation): প্রতিদিন ১০০ মিলিয়ন URL তৈরি করা হয়।
  • প্রতি সেকেন্ডে রাইট অপারেশন: ১০০ মিলিয়ন / ২৪ / ৩৬০০ = ১১৬০
  • রিড অপারেশন (Read operation): ধরে নিচ্ছি রাইট অপারেশনের তুলনায় রিড অপারেশনের অনুপাত ১০:১, প্রতি সেকেন্ডে রিড অপারেশন: ১১৬০ * ১০ = ১১,৬০০
  • ধরে নিচ্ছি URL শর্টনার সার্ভিসটি ১০ বছর ধরে চলবে, এর অর্থ হলো আমাদের ১০০ মিলিয়ন * ৩৬৫ * ১০ = ৩৬৫ বিলিয়ন রেকর্ড সমর্থন করতে হবে।
  • ধরে নিচ্ছি গড় URL-এর দৈর্ঘ্য ১০০।
  • ১০ বছরে স্টোরেজ প্রয়োজনীয়তা: ৩৬৫ বিলিয়ন * ১০০ বাইট = ৩৬.৫ TB

আপনার ইন্টারভিউয়ারের সাথে ধারণা এবং গণনাগুলো ধাপে ধাপে পর্যালোচনা করা গুরুত্বপূর্ণ যাতে উভয়েই একই পৃষ্ঠায় (same page) থাকেন।