DevOps — Infrastructure as Code বা IaC

N.B: All images are copyright protected by their respective authors

আস সালামু আলাইকুম। আশা করি ভালো আছেন।

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

আজকের লেখা ডেভঅপ্স ও ক্লাউড কম্পিউটিং এর খুবই গুরুত্বপূর্ন একটা জিনিস নিয়ে, Infrastructure as Code বা IaC। প্রথমেই চলুন জেনে নিই ইনফ্রাস্ট্রাকচার জিনিসটা কি?

ইনফ্রাস্ট্রাকচার কি?

বাংলায় বলে পরিকাঠামো। বাড়ি ঘর এর মূল কাঠামো বা বেসিক কাঠামোকে বলে ইনফ্রাস্ট্রাকচার। কিন্ত এর সাথে সফটওয়্যার ইঞ্জিনিয়ারদের সম্পর্ক কি?

সফটওয়্যার ডেভলপ করার পর সেটাকে চালনা করতে হলে অবশ্যই প্লাটফর্ম দরকার হয়। হতে পারে সেটা মোবাইল, পিসি বা ওয়েব। এসব প্লাটফর্ম প্রতিটারই কিন্ত ফিজ্যিকাল কাঠামো আছে যার উপর ভিত্তি করে এসব সফটওয়্যার চলে। এসব ফিজ্যিকাল কাঠামোকে বলা যেতে পারে সফটওয়্যার এর ইনফ্রাস্ট্রাকচার

যেহেতু আমি ওয়েব প্লাটফর্ম নিয়ে কাজ করি তাই আমার এই লেখা মূলত ওয়েব নিয়েই। আর ওয়েব এর ইনফ্রাস্ট্রাকচারকে সার্ভার বলে।

আমরা দেখে থাকবো ওয়েব সার্ভার ইনফ্রাস্ট্রাকচারের কয়েক ধরণের ভেরিয়েন্ট আছে

০১। উচ্চ ক্ষমতার সিঙ্গেল একটা সার্ভার কম্পিউটার, যা Bare Metal সার্ভার নামে পরিচিত

০২। ভার্চুয়াল মেশিন এবং

০৩। ক্লাউড কম্পিউটিং প্লাটফর্ম

প্রথম দুইটা এখন আদিম যুগের জিনিস বলা যেতে পারে। কারণ এখন সর্বত্রই ক্লাউড এর যুগ। তাই আমি ক্লাউড ইনফ্রাস্ট্রাকচার নিয়েই কথা বলবো আজকে।

তো আমি মোটামুটি একটু গুছিয়ে আনলাম যে কি নিয়ে আমি আজকে কথা বলবোঃ ক্লাউড কম্পিউটিং এর সাহায্যে ইনফ্রাস্ট্রাকচার নির্মাণ করে ডেভঅপ্স ইমপ্লিমেন্ট করা।

তার আগে জেনে নিই ক্লাউড কম্পিউটিং ইনফ্রাস্ট্রাকচারকে কয়ভাবে ভাগ করা যায়।

ক্লাউড ইনফ্রাস্ট্রাকচারকে আমরা কয়েক ভাগে ভাগ করতে পারিঃ

এগুলিকে ক্লাউড কম্পিউটিং এর মডেল বলে। আমি আজকে এগুলি ব্যাখ্যা করবো না। আমরা বাম দিক থেকে দ্বিতীয়টা অর্থাৎ Infrastructure as a Service নিয়ে আলোচনা করবো।

ক্লাউড কম্পিউটিং সার্ভার এর কনসেপ্ট

আপনি যখন আপনার সফটওয়্যারটি সার্ভারে ডিপ্লয় করবেন তার আগেই কিন্ত সার্ভারকে সঠিক পরিমাণের র‍্যাম, সিপিইউ, স্টোরেজ ইত্যাদি দিয়ে তৈরি করতে হবে, অপারেটিং সিস্টেম সেটআপ ও ভার্চুয়ালাইজেশন করতে হবে সতর্কতার সাথে। এই পর্যন্ত রেডি করানোটাকে আমরা বলতে পারি ইনফ্রাস্ট্রাকচার প্রভিশন(Provision) করা।

এটা তো গেলো সার্ভার বানানোর কাজ। এবার এটাকে কনফিগার করতে হবে প্রয়োজনীয় ডিপেন্ডেন্সি সফটওয়্যার ইন্সটল করে করে। এটাকে আমরা বলতে পারি কনফিগারেশন ম্যানেজমেন্ট

সার্ভার ইনফ্রাস্ট্রাকচার প্রভিশনিং (তৈরি) ও কনফিগার করার পরেই আমরা আমাদের সফটওয়্যারকে নিরাপদে সার্ভারে ডিপ্লয় করে চালাতে পারবো।

কিন্তু…….

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

উপরের এগুলি রিপিটিটিভ কাজ। ডেভঅপ্স এর অন্যতম প্রিন্সিপাল হলো অটোমেশন। যেখানেই রিপিটিটিভ কাজ আছে সেটাকেই অটোমেট করতে হবে।

সমাধান কি?

কেমন হয় যদি আপনি কোড করে একটা টেম্পলেট বানিয়ে রাখলেন যে কি কি জিনিস দিয়ে আপনি সার্ভার প্রভিশন করবেন আর কি কি সফটওয়্যার ইন্সটল করে কনফিগার করবেন তাহলে কেমন হয়? এতে করে আপনি সেই টেম্পলেট ব্যবহার করে যতবার ইচ্ছা ততবার সার্ভার ইনফ্রাস্ট্রাকচার বানাতে পারবেন। হোক সেটা ১০০০ বার বা ১ লাখ বার। এগুলি মানুষের পক্ষে প্রায় অসম্ভব হলেও কম্পিউটারের কাছে কোনও ব্যাপারই না।

ইনফ্রাস্ট্রাকচার তৈরি করা থেকে শুরু করে কনফিগার করা ইত্যাদি সবকিছুকে বলা হয় Infrastructure as Code বা IaC, কারণ আপনার ইনফ্রাস্ট্রাকচার বানানো যাবে কোড দিয়েই।

এটার কি কি সুবিধা আছে তা আর বলার প্রয়োজন রাখে না। আপনারা ইতিমধ্যেই বুঝে গিয়েছেন।

এই কাজগুলি করা হয় বিভিন্ন IaC সফটওয়্যার টুল দিয়ে। এর মধ্যে জনপ্রিয় হলোঃ

০১। Terraform (My Favorite)

০২। Ansible (Second Favorite)

০৩। Chef

০৪। Puppet

০৫। Cloud Formation

০৬। Salt Stack

আজকের পর্ব ছিল IaC এর তত্বীয় দিক নিয়ে। পরের পর্বে লিখবো উপরে বর্ণিত যেকোন একটি বা দুইটি টুল দিয়ে ক্লাউড সার্ভার প্র্যাক্টিকালি প্রভিশন ও কনফিগার করা।

আশা করি কিছুটা হলেও ধারণা পেয়েছেন। যেকোন দরকারে আমারে ফেসবুকে মেসেজ দিতে পারেন।

আল্লাহ হাফেজ

Cyan Tarek

Software Engineer

LinkVision Software Solutions

--

--

Cyan Tarek
প্রোগ্রামিং পাতা

Software Engineer, Backend Ninja, DevOps Player, Microservice learner, Gopher/Golang Lover