ক্লাউড কম্পিউটিং

এই লেখায় ক্লাউড কম্পিউটিং নিয়ে প্রাথমিক আলোচনা করা হয়েছে।

সফটওয়্যারের জগতে ক্লাউড কম্পিউটিং (Cloud Computing) একটি পরিচিত নাম। তবে প্রথমেই জানিয়ে রাখি যে, এর সঙ্গে ক্লাউড বা মেঘের কোনো সম্পর্ক নেই।

আমরা যখন কম্পিউটিং করি, তখন আমাদের দরকার হয় প্রথমত একটি কম্পিউটার। তারপর আমাদের প্রয়োজনীয় সফটওয়্যার সেই কম্পিউটারে ইনস্টল করতে হয়। এখন ধরা যাক, আমি দ্বিমিক ওজে-র মতো একটি অনলাইন জাজ সফটওয়্যার তৈরি করলাম। এখন এই সফটওয়্যারটি একটি সার্ভার কম্পিউটারে ইনস্টল করতে হবে, যেন ইন্টারনেটের মাধ্যমে ব্যবহারকারীরা অনলাইন জাজ ব্যবহার করতে পারেন। শুরুতে কত জন মানুষ সেটি ব্যবহার করবে, এটি আমার জানা নেই। তাই স্বল্পমূল্যের বা কম কনফিগারেশনের একটি কম্পিউটারে সেটি ইনস্টল করলেই চলবে। তারপর একসময় দ্বিমিক অনলাইন জাজ বেশ জনপ্রিয় হলো, সাইটে অনেকগুলো প্রোগ্রামিং সমস্যা দেওয়া আছে, এবং ব্যবহারকারীও অনেক বেড়েছে। ব্যবহারকারী এত বেশি যে সাইট প্রায়ই অতিরিক্ত লোডের কারণে বন্ধ হয়ে যাচ্ছে। তাই আমার এখন আরো ভালো কনফিগারেশনের কম্পিউটারে এটি ইনস্টল করা দরকার। তাই আমাকে আবার নতুন কম্পিউটার কিনতে হলো। আরো মাস ছয়েক পরে দেখা গেলো, বাংলাদেশের দশ লক্ষ শিক্ষার্থী এখানে নিয়মিত প্রবলেম সলভিং করছে। এখন আমার যেটা করা দরকার, আবার নতুন করে চার-পাঁচটি কম্পিউটার কিনে সেখানে সফটওয়্যার ইনস্টল করে দেওয়া। আবার আমি ব্যবহারকারীদের ডেটা থেকে লক্ষ করছি, বছরে যখন শিক্ষাপ্রতিষ্ঠানগুলোতে ছুটি থাকে, তখন সবাই অনেক সমস্যার সমাধান সাইটে জমা দেয়। কিন্তু পরীক্ষা চলাকালীন সময়ে সাইটে শিক্ষার্থীদের উপস্থিতি খুব কম। তাহলে আমি যে দামী সব কম্পিউটার কিনে রেখেছি, সেগুলো সারা বছর একইভাবে ব্যবহার হচ্ছে না। আবার একদিনের পরিসংখ্যান যদি দেখি, রাত তিনটার পরে সকাল সাতটা পর্যন্ত এটি তেমন ব্যবহার করা হয় না। সারাদিন মোটামুটি ব্যবহার হয়, আর রাত নয়টার পর থেকে দুইটা পর্যন্ত সবচেয়ে বেশি ব্যবহার হয়। তার মানে, সারাদিনে আমার কম্পিউটারগুলো সমানভাবে ব্যবহার করা হচ্ছে না। আমার হার্ডওয়্যার রিসোর্সের অপচয় হচ্ছে।

ওপরের সমস্যাটির সমাধান করার জন্য আমি যদি কম্পিউটার না কিনে, কোথাও কম্পিউটার ভাড়া করতে পারতাম এবং ব্যবহারের ওপর আমার বিল দিতে হতো, তাহলে কিন্তু খুব সুবিধা হতো। ক্লাউড কম্পিউটিং আমাদেরকে সেই সুবিধা দেয়। একটি ক্লাউড সার্ভিস প্রোভাইডার প্রতিষ্ঠান থেকে আমরা যতটুকু দরকার, ততটুকু হার্ডওয়্যার রিসোর্স কিনতে পারি এবং ব্যবহারের ধরণের ওপর ভিত্তি করে সেটি প্রয়োজনমতো বাড়ানো-কমানো যায়।

ক্লাউড কম্পিউটিংয়ের মূল সুবিধা হচ্ছে, আমাদেরকে নিজেদের হার্ডওয়্যার কিনতে হয় না, এবং বেশিরভাগ ক্ষেত্রে সেটি মেইনটেইন করার কাজটিও আমাদের করতে হয় না। বরং একটি ফি-এর বিনিময়ে ক্লাউড সেবাদাতা প্রতিষ্ঠান কাজটি করে থাকে।

ক্লাউড সেবাদাতা প্রতিষ্ঠানগুলোর লাভ হয় কীভাবে? ধরা যাক, কেউ এক হাজার কম্পিউটার কিনে রাখলো। এবং সেগুলো ক্লাউডের মাধ্যমে ভাড়া দেওয়ার ব্যবস্থা করে রাখলো। এখন কম্পিউটারগুলোতে ভার্চুয়ালাইজেশন (virtualization)-এর মাধ্যমে এমন ব্যবস্থা করা হয় যে, একাধিক ব্যবহারকারী একই সময়ে একই কম্পিউটার ব্যবহার করতে পারে। একটি কম্পিউটারে যদি ৩২ গিটাবাইট মেমোরি থাকে, আর যদি আটজন ব্যবহারকারী থাকে যাদের প্রত্যেকের চার গিগা করে মেমোরি দরকার, তখন কিন্তু ওই আটজন ব্যবহারকারীকে একই কম্পিউটার থেকে সেবা প্রদান করা সম্ভব। আবার একজন যে সারাদিন একটি কম্পিউটার ব্যবহার করবে এমন নয়, বিভিন্ন সময়ে যদি বিভিন্ন জন ব্যবহার করে, তখন সেভাবে সময়ভিত্তিক সেবা দেওয়া সম্ভব। যেমন, একটি সার্ভারে যদি কম্পিউটার গেমস ও অফিস অ্যাপ্লিকেশন চলে, তখন দেখা যায়, রাতের বেলায় কম্পিউটার গেমস-এর ব্যবহার বেশি হয়, আর দিনের বেলায় অফিস অ্যাপ্লিকেশনের ব্যবহার বেশি হয়। এভাবে বিভিন্ন অ্যাপ্লিকেশনগুলো রিসোর্স শেয়ার করতে পারে।

আবার কেবল হার্ডওয়্যার নয়, এই পদ্ধতিতে বিভিন্ন সফটওয়্যার সেবাও গ্রহন করা সম্ভব। যেমন, আমি একটি ডেটাবেজ ক্লাউডের মাধ্যমে ব্যবহার করতে পারি এবং তাতে আমাকে ওই ডেটাবেজ সফটওয়্যার ইনস্টল করা, কনফিগার করা – এসব ঝামেলার মধ্য দিয়ে যেতে হবে না। যারা ক্লাউডের মাধ্যমে ডেটাবেজ সেবা দিচ্ছে, তারাই ওই কাজগুলো করে দিবে। আমি কয়টি ডেটাবেজ ব্যবহার করছি, ডেটাবেজে কতগুলো টেবিল আছে, বা টেবিলগুলোতে কী পরিমাণ ডেটা আছে – এসবের ওপর ভিত্তি করে আমাকে বিল পরিশোধ করতে হবে।

ক্লাউড সেবাদাতা প্রতিষ্ঠানগুলো বর্তমানে বিভিন্ন রকম সেবা প্রদান করতে পারে –

  • Infrastructure as a Service
  • Platform as a Service
  • Software as a Service

Infrastructure as a Service – এক্ষেত্রে মূলত বিভিন্ন হার্ডওয়্যারভিত্তিক সেবা প্রদান করা হয়। যেমন, প্রসেসিং ক্ষমতা, মেমোরি, হার্ড ডিস্ক, নেটওয়ার্ক – এসবের ওপর ভিত্তি করে প্রয়োজনমত কনফিগারেশনের এক বা একাধিক কম্পিউটার ভাড়া নেওয়া যায়।

Platform as a Service – এখানে হার্ডওয়্যারের পাশাপাশি কম্পিউটিং প্ল্যাটফর্ম, যেমন নির্দিষ্ট অপারেটিং সিস্টেম ও অন্যান্য সফটওয়্যার ইনস্টল করে দেওয়া হয়। ব্যবহারকারীকে নিজে থেকে সেসব সফটওয়্যার ইনস্টল ও কনফিগারেশনের ঝামেলায় যেতে হয় না।

Software as a Service – এখানে বিভিন্ন সফটওয়্যার ক্লাউডে ইনস্টল করে দেওয়া থাকে। ব্যবহারকারী ইন্টারনেট ব্রাউজারের মাধ্যমে সেসব সফটওয়্যার ব্যবহার করেন এবং এজন্য নিয়মিত একটি ফি প্রদান করেন। যেমন মাইক্রোসফটের অফিস ৩৬৫। আবার গুগলের বিভিন্ন সেবা, যেমন সার্চ ইঞ্জিন, জিমেইল, গুগল ড্রাইভ ইত্যাদিও সফটওয়্যার এজ আ সার্ভিস বা সংক্ষেপে স্যাস (SaaS)-এর উদাহরণ। আবার বিভিন্ন ডেটাবেজ নির্মাতা প্রতিষ্ঠানও এই মডেলে তাদের ডেটাবেজ ব্যবহারের সুবিধা দিয়ে থাকে।

পৃথিবীতে অনেক প্রতিষ্ঠানই ক্লাউডভিত্তিক সেবা প্রদান করে। তাদের মধ্য, অ্যামাজন ওয়েব সার্ভিস, গুগল ক্লাউড প্ল্যাটফর্ম, মাইক্রোসফট অ্যাজুর, আলি ক্লাউড ইত্যাদি জনপ্রিয়।

আশা করি, ক্লাউড কম্পিউটিং কী জিনিস, সেটির প্রাথমিক ধারণা পাঠকরা এই লেখা থেকেই পেয়ে যাব। নিচের ভিডিওতে এডব্লিউএস নিয়ে বিস্তারিত আলোচনা আছে –

ভার্টিক্যাল ও হরাইজনটাল স্কেলিং

একটি ওয়েব অ্যাপ্লিকেশন যখন কোনো সার্ভারে রান করে, তখন সেটি মূলতঃ চারটি জিনিসের ওপর নির্ভর করে :

  1. সিপিইউ (CPU) বা প্রসেসিং পাওয়ার
  2. মেমোরি
  3. হার্ড ডিস্ক
  4. নেটওয়ার্ক

screen-shot-2016-11-04-at-12-22-51-pm

তো ওয়েব অ্যাপ্লিকেশনে যখন ট্রাফিক বেড়ে যায়, মানে অনেক ব্যবহারকারী সেই ওয়েব অ্যাপ্লিকেশন ব্যবহার করে, তখন এই চারটি জিনিসের ওপর লোড বাড়ে। কোন অংশে কেমন চাপ পড়বে, সেটি নির্ভর করে অ্যাপ্লিকেশনের ধরনের ওপর। ক্লাউড কম্পিউটিংয়ের যুগে আমরা যখন কোনো ওয়েব অ্যাপ্লিকেশন তৈরি করি, তখন আমাদের প্রয়োজন অনুযায়ী একটি সার্ভার নিয়ে নিই। শুরুর দিকে যেহেতু ব্যবহারকারী খুবই কম থাকে, তাই সার্ভারের কনফিগারেশন কম নেওয়াটাই যুক্তিসঙ্গত (কারণ কনফিগারেশন ভালো হলে খরচও বেশি হবে)। আস্তে আস্তে যখন আমাদের ওয়েব অ্যাপ্লিকেশনের ট্রাফিক বাড়বে, তখন আমরা দেখতে পাবো যে ওয়েব অ্যাপ্লিকেশনটি যেই সার্ভারে চলছে, সেটির সিপিইউ অনেক বেশি ব্যবহার হচ্ছে, কিংবা মেমোরি প্রায় পূর্ণ হয়ে গিয়েছে, কিংবা ডিস্কের স্পেস প্রায় শেষ হয়ে আসছে, অথবা নেটওর্য়ার্কের ব্যান্ডউইডথ পূর্ণ ব্যবহার হয়ে যাচ্ছে। এই সমস্যাগুলোর যেকোনো একটি বা একাধিক সমস্যায় আমরা পরতে পারি। এখন এরকম সমস্যা হলে আমরা সার্ভারের কনফিগারেশন বাড়াতে পারবো, একে বলে স্কেল (scale) করা। মানে আরো প্রসেসিং ক্ষমতা, আরো বেশি মেমোরি, আরো বেশি ডিস্ক স্পেস, ব্যান্ডউইডথ এসব যুক্ত করা। ক্লাউড কম্পিউটিংয়ের কল্যাণে এই স্কেল করার কাজটি এখন বেশ সহজ ও ঝামেলামুক্ত। এই স্কেলিং মূলত দুই প্রকার –

  1. ভার্টিক্যাল স্কেলিং (Vertical Scaling)
  2. হরাইজনটাল স্কেলিং (Horizontal Scaling)

ভার্টিক্যাল শব্দের বাংলা অর্থ উল্লম্ব বা খাড়া। এখন আমরা একটি বিল্ডিংয়ের কথা চিন্তা করতে পারি। আমরা ১০০ তলা ফাউন্ডেশন দিয়ে একটি বিল্ডিং তৈরি করলাম, কিন্তু শুরুতে মাত্র দশ তলা তৈরি করা হলো। তারপরে আস্তে আস্তে যখন চাহিদা বাড়তে লাগল, তখন সেই বিল্ডিংকে আমরা আরো ওপরের দিকে বাড়াতে পারবো। এটিই হচ্ছে ভার্টিক্যাল স্কেলিং। সার্ভারে ভার্টিক্যাল স্কেলিংয়ের ক্ষেত্রে আমরা আরো উন্নত কনফিগারেশনের সার্ভার ব্যবহার করবো। আমরা যদি অ্যামাজন ওয়েব সার্ভিসের ইসি২ (ec2) ইনস্ট্যান্স টাইপের কথা বিবেচনা করি, সেখানে সর্বনিম্ন কনফিগারেশনের সার্ভার হচ্ছে টি২ ন্যানো (T2 nano) যেখানে মাত্র একটি ভার্চুয়াল সিপিইউ ও মাত্র ৫১২ মেগাবাইট মেমোরি রয়েছে। আবার x1.32xlarge টাইপের সার্ভারে ১২৮টি ভার্চুয়াল সিপিইউ, ১৯৫২ গিগাবাইট মেমোরি রয়েছে। https://aws.amazon.com/ec2/instance-types/ লিঙ্কে গেলে বিস্তারিত জানা যাবে এবং আমরা আমাদের প্রয়োজনমতো কনফিগারেশনের সার্ভার ব্যবহার করতে পারবো, যখন খুশি তখন! তো এই ধরনের স্কেলিংয়ের সুবিধা হচ্ছে, স্কেলিং করা খুব সহজ, অতিরিক্ত কোনো ডিজাইন বা কাজের তেমন প্রয়োজন পড়ে না। আর সীমাবদ্ধতা হচ্ছে সেই ১০০ তালা বিল্ডিংয়ের মতো। যেখানে আমরা স্কেল করতে পারবো ১০০ তলা পর্যন্ত।

আর হরাইজনটাল মানে আনুভূমিক (সহজ বাংলায় বললে সরলরৈখিক বা বরাবর)। ধরা যাক, আমার বিশাল জায়গা রয়েছে। সেখানে একটি দশ তলা বিল্ডিং তৈরি করলাম। এখন আমাকে আরো মানুষের জায়গা দিতে হবে। আমি তখন আরেকটি দশ তলা বিল্ডিং তৈরি করলাম। এভাবে চাহিদা যত বাড়তে থাকবে, আমি ততগুলো বিল্ডিং তৈরি করতে পারবো। অ্যামাজনের ওয়েব সার্ভিস (AWS) ব্যবহার করে এই কাজটি করা যায়। সেখানে আমি লোড ব্যালেন্সার (ELB -> Elastic Load Balancer) ব্যবহার করে বলে দিতে পারি যে সর্বনিম্ন কয়টি ও সর্বোচ্চ কয়টি ইনস্ট্যান্স (সার্ভার) চলবে, এবং তারপরে কিছু নিয়মকানুন বলে দিতে হবে। নিয়মকানুনগুলো এরকম হতে পারে যে, সিপিইউ লোড ৭০% এর চেয়ে বেশি হলে আরো একটি ইনস্ট্যান্স চালু হবে। কিংবা মেমোরি ৮০% এর চেয়ে বেশি হলে আরো একটি ইনস্ট্যান্স চালু হবে। একে বলে স্কেল আপ (scale up)। আবার সিপিইউ লোড ৪০% এর চেয়ে কম হলে এবং মেমোরির ব্যবহার ৫০% এর চেয়ে কম হলে একটি ইনস্ট্যান্স বা সার্ভার বন্ধ করে দেওয়া হবে। একে বলে স্কেল ডাউন (scale down)। এই রুলসগুলো সেট করে দিলে কাজগুলো স্বয়ংক্রিয়ভাবেই হবে। হরাইজনটাল স্কেলিংয়ের সুবিধা হচ্ছে এক্ষেত্রে অনেক বেশি লোড সামাল দেওয়া যায়, এবং যেহেতু স্কেল আপ ও ডাউনের সুবিধা আছে, তাই যখন লোড বেশি তখন বেশি ইনস্ট্যান্স ব্যবহৃত হবে, লোড কম থাকলে কম সংখ্যক ইনস্ট্যান্স ব্যবহৃত হবে। তাই খরচও কম পড়বে অনেক। আর অসুবিধা হচ্ছে এখানে কিছু কনফিগারেশনের ব্যাপার আছে আর আর্কিটেকচারও অন্যভাবে ডিজাইন করতে হবে। অর্থাৎ এক্ষেত্রে একটু লেখাপড়া, জ্ঞানার্জন ও অভিজ্ঞতার প্রয়োজন।

পাদটীকা :

  • ক্লাউডভিত্তিক ওয়েব আর্কিটেকচার সম্পর্কে আরো জানতে হলে গুগলে সার্চ করে বিভিন্ন ব্লগ ও আর্টিকেল পড়তে হবে, ভিডিও দেখতে হবে।
  • অ্যামাজন ছাড়া গুগল, আলিবাবা ও মাইক্রোসফটেরও ক্লাউড সার্ভিস রয়েছে।
  • ওয়েব সম্পর্কে বেসিক ধারণা পাকাপোক্ত করার জন্য রয়েছে দ্বিমিক কম্পিউটিংয়ের ফ্রি অনলাইন কোর্স – ওয়েব কনসেপ্টস্