Scaling
এই মডিউলে আমরা আমাদের এপ্লিকেশনটাকে স্কেলেবল করব … আমাদের এপ্লিকেশনের তিনটা পার্টঃ
১) ডাটাবেস
২) ব্যাকেন্ড
৩) ফ্রন্টএন্ড
এই মডিউলে আমরা দেখব কিভাবে কোন অংশকে স্কেলেবল করা হয় …
তার আগে কথা হচ্ছে স্কেলেবল করে লাভ কি ? স্কেলেবল করা মানে হচ্ছে যখন যেমন প্রয়োজন সেই অনুযায়ী ক্লাউড রিসোর্স ব্যাবহার করা … তাতে লাভ ? প্রথমত লাভ হচ্ছে ক্লাউডের খরচ বাচানো …
মনে করলাম আমাদের একটা স্কুল ম্যানেজমেন্ট এপ্লিকেশন আছে … স্কুল যখন শুরু হয় এবং স্কুল যখন ছুটি হয় তখন এটেনডেন্স এর জন্য প্রচুর একটা চাপ পরে এপ্লিকেশন এর উপর … বাদ বাকি সময় এপ্লিকেশন এ তেমন কোন ইউজার থাকে না … তাছাড়া রেজাল্ট এর দিন এবং অন্যান্য বেশ কিছু সময় ইউজার বাড়ে …
এখন আমরা যদি একবারে অনেক বেশী ক্লাউড রিসোর্স নিয়ে রাখি যাতে যত ইউজার আসুক না কেন সবাইকে সার্ভ করা যায় তাহলে অন্যান্য যেই সময় গুলিতে ইউজার কম তখন কিন্তু আমারদের ক্লাউড রিসোর্স বিনা ব্যাবহারে পড়ে থাকতেছে এবং বিল দিতে হচ্ছে … সেই জন্য সমাধান হচ্ছে যখন ইউজার বাড়তেছে সেই অনুযায়ী ক্লাউড রিসোর্স বাড়ানো এবং যখন ইউজার কমতেছে সেই অনুযায়ী ক্লাউড রিসোর্স কমানো … এই যে ইউজারের বাড়া কমার সাথে ক্লাউড রিসোর্স বাড়ানো বা কমানো এই জিনিসটাই হচ্ছে এস্কেলিং …
স্কেলিং ২ ধরনের হতে পারে …
১) হরিজনটাল স্কেলিং (Horizontal Scaling)
২) ভারটিকাল স্কেলিং (Vertical Scaling)
ভারটিকাল স্কেলিং মানে হচ্ছে সার্ভারের র্যাম সিপিইউ এইগুলা বাড়িয়ে সার্ভারের সক্ষমতা বাড়ানো … ভারটিকাল স্কেলিং এর একটা বাজে দিক আছে … যখন আমরা সার্ভারের জন্য সিপিইউ র্যাম নতুন করে এলোকেট করি তখন এই জিনিস গুলা ইফেক্টিভ হওয়ার জন্য সার্ভারকে রিস্টার্ট দিতে হয় … ফলে সার্ভার বন্ধ হয়ে আবার পরিপূর্ণরূপে আপ হওয়া পর্যন্ত সার্ভিস বন্ধ থাকে … কৃটিকাল বিসনেস ইনটেনসিভ সার্ভিসগুলার জন্য যা অত্যন্ত ব্যায়বহুল এবং কোন কোণ ক্ষেত্রে বিপদজনক …
অন্যদিকে হরিজনটাল স্কেলিং মানে হচ্ছে প্যারালাললি একটা দুইটা তিনটা এভাবে সার্ভারের সংখ্যা বাড়াতে থাকা … তারপর যখন ট্রাফিক কমতে থাকে তখন আবার সার্ভারের সংখ্যা কমানো …
বিসনেসের বিভিন্ন ইউজ কেস অনুযায়ী সিদ্ধান্ত নেওয়া হয় কোন স্কেলিং ব্যাবহার করা হবে …
এই মডিউলে আমরা দেখব আমাদের এপ্লিকেশনের বিভিন্ন অংশকে আমরা কিভাবে স্কেলিং করতে পারি …
প্রথম ক্লাসে আমরা ডাটাবেসকে RDS এর ডেপ্লয় করব … তারপর আমরা ব্যাকেন্ড এপ্লিকেশন কে আলাদাভাবে ডেপ্লয় করব … তারপর আমরা ফ্রন্ট এন্ড স্টাটিক এপ্লিকেশনকে ডেপ্লয় করব S3 এর মাধ্যমে … আর দেখব কিভাবে ক্লাউড ফ্রন্ট এর CDN এর মাধ্যমে Static Site গুলাকে ক্যাশিং এর মাধ্যমে আর দ্রুত ইউজার এর কাছে পৌছে দেওয়া যায় …