ধাপ ৪ - উপসংহার (Wrap up)
এই অধ্যায়ে, আমরা একটি নিউজ ফিড সিস্টেম ডিজাইন করেছি। আমাদের ডিজাইনে দুটি প্রবাহ রয়েছে: ফিড পাবলিশিং এবং নিউজ ফিড রিট্রিভাল।
যেকোনো সিস্টেম ডিজাইন ইন্টারভিউ প্রশ্নের মতো, একটি সিস্টেম ডিজাইন করার কোনো নিখুঁত উপায় নেই। প্রতিটি কোম্পানির নিজস্ব অনন্য সীমাবদ্ধতা থাকে, এবং আপনাকে সেই সীমাবদ্ধতাগুলোর সাথে মানানসই করে একটি সিস্টেম ডিজাইন করতে হবে। আপনার ডিজাইন এবং প্রযুক্তিগত পছন্দের ট্রেড-অফ (tradeoffs) বোঝা গুরুত্বপূর্ণ। যদি কয়েক মিনিট বাকি থাকে, তবে আপনি স্কেলেবিলিটি (scalability) সংক্রান্ত সমস্যাগুলো নিয়ে কথা বলতে পারেন। পুনরাবৃত্তিমূলক আলোচনা এড়াতে, নিচে শুধুমাত্র উচ্চ-স্তরের আলোচনার বিষয়গুলো তালিকাভুক্ত করা হলো।
ডাটাবেস স্কেলিং (Scaling the database):
- ভার্টিক্যাল স্কেলিং বনাম হরাইজন্টাল স্কেলিং (Vertical scaling vs Horizontal scaling)
- SQL বনাম NoSQL
- মাস্টার-স্লেভ রেপ্লিকেশন (Master-slave replication)
- রিড রেপ্লিকাস (Read replicas)
- কনসিস্টেন্সি মডেল (Consistency models)
- ডাটাবেস শার্ডিং (Database sharding)
অন্যান্য আলোচনার বিষয় (Other talking points):
- ওয়েব টিয়ারকে স্টেটলেস (stateless) রাখা
- যতটা সম্ভব ডেটা ক্যাশ করা
- একাধিক ডেটা সেন্টার সমর্থন করা
- মেসেজ কিউ ব্যবহার করে আলগাভাবে সংযুক্ত (loosely coupled) উপাদান তৈরি করা
- মূল মেট্রিক্স মনিটর করা। উদাহরণস্বরূপ, পিক আওয়ারে QPS (Queries Per Second) এবং ব্যবহারকারীরা তাদের নিউজ ফিড রিফ্রেশ করার সময় লেটেন্সি (latency) মনিটর করা আকর্ষণীয়।
এতদূর আসার জন্য অভিনন্দন! এখন নিজেকে একটি চাপড় দিন। দারুণ কাজ করেছেন!