How to Scale a Distributed System
মিলিয়ন ব্যবহারকারী আছে এমন একটা ড্রিস্ট্রিবিউটেড সিস্টেমকে স্কেল করতে হলে প্রয়োজন সার্বক্ষণিক ইম্প্রোভমেন্ট এর সাথে নিচের টুলস এবং টেকনিক গুলা ব্যাবহার করা
Load balancer ব্যবহার করা
- লোড বব্যাল্যান্সার হচ্ছে একটা উপায় যার মাধ্যমে নেটওয়ার্ক এর লোড কে অনেকগুলা সার্ভার এর মধ্যে ডিস্ট্রিবিউট করে দেয়া হয়
- যদি একটা সার্ভার ফেইল করে তাহলে অন্য সার্ভার থেকে রিকোয়েস্ট প্রসেস করা যায়
- যদি লোড অনেক বেশি হয়, তাহলে সার্ভার এর সংখ্যা বৃদ্বি করে সিস্টেম ঠিকম রাখা যায়
Use Cache
- ক্যাশ হচ্ছে একটা রিকোয়েস্ট সার্ভ করার পর সেটাকে একটা কি-ভ্যালু স্টোরে জমা রাখা যাতে করে পরবর্তী সময়ে ডাটাবেস কল বা কমপ্লেক্স কম্পিউটেশন করতে না হয়
- মূলত রিয়েল টাইমে লাগেনা, এমন ইনফরমেশনকে ক্যাশ করা যায়
Use a Content Delivery Network (CDN)
- CDN হচ্ছে পৃথিবীর ভিবিন্ন জায়গার রাখা সার্ভার, যখন রিকোয়েস্ট করা হয় তখন ক্লায়েন্ট এর সবচেয়ে কাছের সার্ভার থেকে রিস্পন্স দেয়া হয়ে থাকে
- মূলত স্ট্যাটিক কন্টেন্ট এর জন্য ব্যবহার করা হয়, যেমন ইমেজ, ভিডিও, সি এস এস, জাভাস্ক্রিপ্ট ইত্যাদি
Use Message Queue
- Queue দিয়ে অনেক সময় সার্ভার স্কেল করতে সাহায্য করে
- Queue তে একটা এপ্লিকেশন (পাব্লিশার) মেসেজ সেন্ড করে
- আরেকটা এপ্লিকেশন (কনজিউমার) সেখান থেকে মেসেজে নিয়ে রিকোয়েস্ট এর বিপরীতে কাজ করে
- এসিনক্রোনাস সিস্টেমে Queue চমৎকার কাজ করে
- উদাহরণ১: একাউন্ট তৈরী হলে, ওয়েলকাম মেসেজ দেয়া। যে এপ্প্লিকেশন একাউন্ট তৈরী করে, সে একাউন্ট তৈরী করার পর Queue একটা মেসেজ দিয়ে রাখতে পারে যে, একাউন্ট তৈরী হয়েছে। ইমেইল অপ্প্লিকেশন Queue থেকে মেসেজ পরে উজারকে একটা ওয়েলকাম মেসেজ সেন্ড করে দিতে পারে
- উদাহরণ২: টিকেট বুকিং সিস্টেমে পেমেন্ট হয়ে গেলে একটা মেসেজ কিউতে রেখে দিলে, টিকেট সেন্ডার এপ্লিকেশন টিকেট প্রিন্ট করে সেন্ড করে দিবে
Use Database carefully
- Database চুজ করতে হবে কাজের ধরণ এবং প্রয়োজন অনুযায়ী।
- দুই রকমের ডাটাবেজ আছে, SQL এবং No-SQL
Scale Database
ভার্টিকাল স্কেলিং
- ভার্টিকাল স্কেলিং হচ্ছে আরো বেশি করে রেম, প্রসেসর, ভালো স্পিডি ডিস্ক একটা সার্ভারে যুক্ত করা
- ছোট এপ্লিকেশনের জন্য ডাটাবেস এর ভার্টিকাল স্কেলিং অনেক সময় কাজ করে কিন্তু এর একটা সীমা/লিমিট আছে
হরাইজোন্টাল স্কেলিং
- হরাইজোন্টাল স্কেলিং হচ্ছে প্যারালালি সার্ভার যুক্ত করা, ডাটাবেস এর ক্ষেত্রে জিনিষটা একদম সহজ না
- ডাটাবেস এর ক্ষেত্রে হরাইজোন্টাল স্কেলিং হচ্ছে একাধিক সার্ভারে একই ডাটার কপি রাখা
- সাধারণত মাস্টার ডাটাবেস এ ডাটা রাইট করা হয় এবং বাকিগুলা হতে শুধুমাত্র ডাটা রিড করা হয়