সুচিপত্র[লুকান][দেখান]
অবকাঠামো সফ্টওয়্যার বিকাশ প্রক্রিয়ার একটি গুরুত্বপূর্ণ অংশ কারণ এটি একটি সফ্টওয়্যার অ্যাপ্লিকেশনের মসৃণ অপারেশনের জন্য সরাসরি দায়ী। সার্ভার, লোড ব্যালেন্সার, ফায়ারওয়াল, ডাটাবেস এবং জটিল কন্টেইনার ক্লাস্টার সবই অবকাঠামোর উদাহরণ।
যেহেতু অবকাঠামোগত অসুবিধাগুলি সমগ্র উন্নয়ন প্রক্রিয়াকে বিস্তৃত করে, সেগুলি উৎপাদন পরিস্থিতির বাইরেও প্রাসঙ্গিক।
তারা অন্যান্য জিনিসের মধ্যে CI/CD প্ল্যাটফর্ম, স্টেজিং এনভায়রনমেন্ট এবং টেস্টিং টুলস অন্তর্ভুক্ত করে।
সফ্টওয়্যার পণ্যের জটিলতা বাড়ার সাথে সাথে এই অবকাঠামোগত চ্যালেঞ্জগুলি আরও জটিল হয়ে ওঠে। ম্যানুয়ালি পরিকাঠামো পরিচালনার প্রথাগত কৌশলটি আজকের ডিওঅপস-ভিত্তিক দ্রুত সফ্টওয়্যার বিকাশ চক্রের আকাঙ্ক্ষার সাথে মেলে একটি আনস্কেলযোগ্য সমাধান হয়ে ওঠে।
ফলস্বরূপ, কোড হিসাবে পরিকাঠামো (IaC) আজ কার্যত উন্নয়ন সমাধান হয়ে উঠেছে। কোড হিসাবে পরিকাঠামো (IaC) আপনাকে পরিকাঠামোগত পরিবর্তনগুলি স্কেল করতে এবং ট্র্যাক করতে সক্ষম করে যখন সেগুলি উদ্ভূত হয়।
আমরা এই অংশে কোড হিসাবে পরিকাঠামোকে ঘনিষ্ঠভাবে দেখব, এর সুবিধাগুলি সহ, কেন এটি গুরুত্বপূর্ণ এবং আরও অনেক কিছু। চল শুরু করা যাক.
কি কোড হিসাবে পরিকাঠামো?
কোড হিসাবে অবকাঠামো হল উপযুক্ত ডিভাইস এবং সিস্টেমগুলিকে ম্যানুয়ালি কনফিগার করার পরিবর্তে কোড ব্যবহার করে পরিবেশ প্রদান এবং কনফিগার করার প্রক্রিয়া। বিকাশকারীরা কোড প্যারামিটার নির্ধারণ করার পরে স্ক্রিপ্ট চালায় এবং IaC প্ল্যাটফর্ম স্বয়ংক্রিয়ভাবে ক্লাউড অবকাঠামো তৈরি করে।
এই ধরনের স্বয়ংক্রিয় আইটি কনফিগারেশন দলগুলিকে তাদের পণ্য পরীক্ষা এবং চালানোর জন্য প্রয়োজনীয় ক্লাউড সেটিং দ্রুত তৈরি করতে দেয়। কোড হিসাবে অবকাঠামো ডেভেলপারদের তাদের যা ইচ্ছা পরিকাঠামোর উপাদান তৈরি করতে সক্ষম করে, যেমন নেটওয়ার্ক, লোড ব্যালেন্সার, ডাটাবেস, ভার্চুয়াল মেশিন, এবং সংযোগের ধরন।
সাধারণের পরিভাষায়, এটি হাতে না দিয়ে কোড ব্যবহার করে নির্দিষ্ট পরিকাঠামো সরবরাহ ও পরিচালনার প্রক্রিয়া। IaC হল একটি গুরুত্বপূর্ণ DevOps কৌশল যা একটি দ্রুতগতির সফ্টওয়্যার ডেলিভারি জীবনচক্রের জন্য প্রয়োজনীয়।
এটি DevOps টিমগুলিকে সোর্স কোডের সংস্করণের মতো একই পদ্ধতিতে দ্রুত অবকাঠামো তৈরি এবং সংস্করণ করতে দেয়, সেইসাথে আইটি পরিবেশের মধ্যে অসঙ্গতি কমাতে এই সংস্করণগুলিকে ট্র্যাক করে, যা স্থাপনার সময় বড় সমস্যা সৃষ্টি করতে পারে।
ঘোষণামূলক বনাম আইএসি-তে বাধ্যতামূলক পদ্ধতি
IaC দুটি উপায়ে যোগাযোগ করা যেতে পারে: ঘোষণামূলক বা বাধ্যতামূলক।
একটি IaC টুল আপনার জন্য সিস্টেম সেট আপ করবে যদি আপনি একটি ঘোষণামূলক পদ্ধতি ব্যবহার করেন, যা সিস্টেমের উদ্দিষ্ট অবস্থা বর্ণনা করে, আপনার কোন সম্পদের প্রয়োজন এবং তাদের কোন গুণাবলী থাকা উচিত।
একটি ঘোষণামূলক পদ্ধতি আপনার সিস্টেম অবজেক্টের বর্তমান অবস্থার ট্র্যাক বজায় রাখে, এটি আপনার অবকাঠামোর ডাউনটাইম পরিচালনা করা সহজ করে তোলে। অপরদিকে, একটি অপরিহার্য পদ্ধতি, নির্দিষ্ট নির্দেশাবলীর রূপরেখা দেয় যা উদ্দেশ্যমূলক কনফিগারেশন তৈরি করার জন্য যথাযথ ক্রমে কার্যকর করতে হবে।
অনেক IaC প্রযুক্তি পরিকাঠামোর ব্যবস্থা করার জন্য একটি ঘোষণামূলক পদ্ধতি ব্যবহার করে এবং এটি স্বয়ংক্রিয়ভাবে করবে। একটি ঘোষণামূলক IaC টুল আপনার জন্য পছন্দসই অবস্থায় পরিবর্তনগুলি প্রয়োগ করবে যদি আপনি সেগুলি তৈরি করেন। আপনি যদি একটি অপরিহার্য টুল ব্যবহার করেন তবে সেই সমন্বয়গুলি কীভাবে প্রয়োগ করবেন তা আপনাকে খুঁজে বের করতে হবে। IaC সরঞ্জামগুলি প্রায়শই উভয় মোডে কাজ করতে সক্ষম, যদিও তারা একটির উপর অন্যটির পক্ষে।
কোড হিসাবে পরিকাঠামো কিভাবে কাজ করে?
কোড হিসাবে পরিকাঠামো সম্পূর্ণরূপে বাস্তবায়ন করতে, কয়েকটি প্রয়োজনীয়তা অবশ্যই থাকতে হবে।
একটি পরিষেবা হিসাবে ক্লাউড হোস্টিংয়ের জন্য একটি প্ল্যাটফর্ম (IaaS)
প্রথম এবং সবচেয়ে গুরুত্বপূর্ণ প্রয়োজন রিমোট অ্যাক্সেস হোস্টিং। কনফিগারেশন ম্যানেজমেন্ট টুলকে অবশ্যই রিমোট হোস্টের সাথে সংযোগ করতে হবে এবং সেখানে পরিবর্তন করতে হবে। দূরবর্তী অবকাঠামো স্ব-পরিচালিত হলে কনফিগারেশন ম্যানেজমেন্ট টুলের অ্যাক্সেস আছে কিনা তা আপনার দলকে অবশ্যই গ্যারান্টি দিতে হবে।
IaaS-সক্ষম ক্লাউড হোস্টিং প্ল্যাটফর্মের APIগুলি গ্রাহকদের চাহিদা অনুযায়ী পরিকাঠামো সংস্থান তৈরি, অপসারণ এবং পরিবর্তন করতে সক্ষম করে। কনফিগারেশন ম্যানেজমেন্ট সিস্টেমগুলি এই APIগুলি ব্যবহার করে এই কার্যক্রমগুলিকে আরও স্বয়ংক্রিয় করতে পারে। Digital Ocean, Amazon AWS, এবং Microsoft Azure হল তিনটি প্রধান IaaS সিস্টেম।
কনফিগারেশন পরিচালনার জন্য একটি প্ল্যাটফর্ম
টুলস স্যুট যা IaaS API-এর সাথে সংযোগ করে এবং সাধারণ ক্রিয়াকলাপগুলিকে স্বয়ংক্রিয় করে IaC সম্পূর্ণ করার জন্য পরবর্তী পূর্বশর্ত। স্ক্রিপ্ট এবং সরঞ্জামগুলির একটি সংগ্রহ তৈরি করতে একদল লোক একসাথে কাজ করতে পারে। যাইহোক, এটির জন্য একটি উল্লেখযোগ্য পরিমাণ প্রচেষ্টা, চলমান রক্ষণাবেক্ষণ এবং বিনিয়োগে একটি ন্যূনতম রিটার্ন প্রয়োজন। Terraform, Ansible, Salt Stack, এবং Chef হল কয়েকটি ওপেন-সোর্স কনফিগারেশন ম্যানেজমেন্ট টুল যা এই চ্যালেঞ্জটি পরিচালনা করে।
সংস্করণ নিয়ন্ত্রণ সিস্টেম
একটি কনফিগারেশন ম্যানেজমেন্ট প্ল্যাটফর্ম কার্যকর করার জন্য প্ল্যাটফর্মের জন্য কাজ এবং সিকোয়েন্স প্রদান করতে YAML-এর মতো মার্কআপ ভাষায় লেখা টেক্সট ফাইল ব্যবহার করে। এই পাঠ্য ফাইলগুলিকে অ্যাপ্লিকেশন কোড হিসাবে বিবেচনা করা যেতে পারে এবং একটি সংস্করণ নিয়ন্ত্রণ সংগ্রহস্থলে সংরক্ষণ করা যেতে পারে। রিপোজিটরিতে পুল রিকোয়েস্ট এবং কোড রিভিউ অনুমোদিত, যা সত্যের একক পয়েন্ট হিসেবে কাজ করে। ভার্সন কন্ট্রোল সিস্টেম গিট সবচেয়ে জনপ্রিয়।
এই পূর্বশর্তগুলি যথাস্থানে রেখে, নিম্নলিখিত পরিস্থিতি বিবেচনা করুন: একজন বিকাশকারী একটি সিস্টেমে একটি নতুন অ্যাপ্লিকেশন পরিষেবা যোগ করতে চায়৷ এই উদাহরণটি একটি IaC প্রক্রিয়া চিত্রিত করে।
- তাদের পছন্দের কনফিগারেশন ম্যানেজমেন্ট প্ল্যাটফর্মে, Terraform, ডেভেলপার একটি YAML কনফিগারেশন টেক্সট ফাইল পরিবর্তন করে। পরিবর্তনগুলি বলে যে একটি নতুন হোস্টিং সার্ভার প্রয়োজন৷
- গিট রিপোজিটরিতে, বিকাশকারী একটি বৈশিষ্ট্য শাখায় পরিবর্তন করে। বিকাশকারী একটি পুল অনুরোধ তৈরি করে যেহেতু প্রকল্পের গিট সংগ্রহস্থলটি বিটবাকেট-এ হোস্ট করা হয়েছে। দলের অন্য সদস্য টান অনুরোধের মধ্য দিয়ে দেখেন এবং নতুন পরিকাঠামোর উন্নতি লক্ষ্য করেন। পুল অনুরোধটি একটি দলের সদস্য দ্বারা অনুমোদিত হয়, এবং বিকাশকারী রিপোজিটরির প্রধান শাখায় পরিবর্তনটি সংহত করে।
- একটি আপডেট সম্পাদন করার জন্য এই ধাপে কনফিগারেশন প্ল্যাটফর্ম প্রয়োজন। বিকাশকারী ম্যানুয়ালি আপডেটটি শুরু করতে পারে। যেহেতু দলটি বিটবাকেট ব্যবহার করে, তাদের বিটবাকেট পাইপলাইনগুলিতে অ্যাক্সেস রয়েছে এবং এই পদ্ধতিটি স্বয়ংক্রিয় করতে একটি ব্যবহার করতে পারে।
- টেরাফর্ম কার্যকর করার পরে দলের IaaS-এর সাথে সংযোগ স্থাপন করে। Terraform IaaS API ব্যবহার করে কমান্ডের একটি ক্রম চালাতে যা IaaS কে প্রত্যাশিত পরিকাঠামো কনফিগারেশনে আপডেট করে।
IaC সুবিধা
IaC স্বয়ংক্রিয় পদ্ধতির মাধ্যমে বিভিন্ন উপায়ে সংস্থাগুলিকে তাদের IT পরিকাঠামোর চাহিদাগুলি পরিচালনা করতে সহায়তা করে। IaC ইনস্টল করার কিছু সুবিধা নিম্নরূপ:
- সামঞ্জস্যতা: IaC ধারাবাহিকতা বাড়াতে পারে এবং ম্যানুয়াল সেটিংসের সময় প্রায়শই ঘটে যাওয়া ভুলগুলি হ্রাস করতে পারে। এটি একটি ম্যানুয়াল অপারেশন চলাকালীন ঘটতে পারে এমন কনফিগারেশন ড্রিফ্টকেও বাধা দেয়। IaC আপনাকে আপনার কনফিগারেশন মানগুলি কোডিফাই এবং ডকুমেন্ট করে অনথিভুক্ত, অ্যাড-হক কনফিগারেশন পরিবর্তনগুলি প্রতিরোধ করতে দেয়।
- দক্ষতা: আপনার অবকাঠামো কোডিফাই করা একটি প্রভিশনিং টেমপ্লেট তৈরি করে, যা সিস্টেম কনফিগারেশন, রক্ষণাবেক্ষণ এবং প্রশাসনকে সহজ করে তোলে। এটি একটি নমনীয়, পুনরাবৃত্তিযোগ্য এবং মাপযোগ্য পরিকাঠামো তৈরি করে। ফলস্বরূপ, DevOps সফ্টওয়্যার বিকাশের প্রতিটি পর্যায়ে গতি বাড়াতে পারে, যার ফলে দৈনিক ভিত্তিতে আরও অ্যাপ প্রকাশিত হয়।
- হ্রাসকৃত খরচ: IaC ভার্চুয়াল মেশিনগুলিকে প্রোগ্রাম্যাটিকভাবে পরিচালনা করতে সক্ষম করে, ম্যানুয়াল হার্ডওয়্যার কনফিগারেশন এবং আপগ্রেডের প্রয়োজনীয়তা দূর করে। কোডের একই অংশ ব্যবহার করে, একজন অপারেটর একটি মেশিন বা 1000 ইউনিট ইনস্টল এবং পরিচালনা করতে পারে। ফলস্বরূপ, কম কর্মচারীর প্রয়োজন হয় এবং নতুন গিয়ারের আর প্রয়োজন হয় না, যার ফলে যথেষ্ট খরচ সাশ্রয় হয়।
- গতি: IaC একটি সাধারণ স্ক্রিপ্টে পরিণত করে ডেভেলপারদের তাদের পরিকাঠামো সরবরাহ করতে যে সময় লাগে তা হ্রাস করে। ফলস্বরূপ, অবকাঠামো দ্বারা অ্যাপ্লিকেশন স্থাপনা আর বিলম্বিত হয় না এবং নতুন সফ্টওয়্যার যথেষ্ট দ্রুত সরবরাহ করা যেতে পারে।
- ঝুঁকি হ্রাস করুন: IaC উৎসাহিত করে ভর্সন নিয্ন্ত্র্ন, আপনার কনফিগারেশন ফাইল, অন্য কোনো সফ্টওয়্যার সোর্স কোড ফাইলের মতো, ট্রেস করা যেতে পারে। ফলস্বরূপ, ঝুঁকি হ্রাস করা হয়।
IaC কি সমস্যা সমাধান করে?
রিলিজ পাইপলাইন পরিবেশ প্রবাহের সমস্যা সমাধানের জন্য কোড হিসাবে অবকাঠামো তৈরি করা হয়েছিল। IaC ছাড়া, দলগুলি প্রতিটি স্থাপনার পরিবেশের সেটিংস বজায় রাখার জন্য দায়ী৷ প্রতিটি পরিবেশ একটি তুষারকণাতে বিকশিত হয়, এক ধরনের বিন্যাস যা স্বয়ংক্রিয়ভাবে প্রতিলিপি করা যায় না।
স্থাপনার সময়, পরিবেশের মধ্যে অসঙ্গতি সমস্যার সৃষ্টি করে। স্নোফ্লেকগুলির ম্যানুয়াল ক্রিয়াকলাপগুলির প্রয়োজন যা পরিচালনা করা কঠিন এবং অবকাঠামো প্রশাসন এবং রক্ষণাবেক্ষণে ভুলগুলিতে অবদান রাখে।
কোড হিসাবে পরিকাঠামো বুদ্ধিমত্তার ধারণাকে মেনে চলে।
Idempotence বলতে বোঝায় যে একটি স্থাপনার কমান্ড সর্বদা লক্ষ্য পরিবেশকে একইভাবে কনফিগার করে, পরিবেশের শুরুর অবস্থা নির্বিশেষে। স্বয়ংক্রিয়ভাবে একটি বিদ্যমান লক্ষ্য নির্ধারণ বা বিদ্যমান লক্ষ্য খারিজ করে এবং আবার শুরু করার মাধ্যমে অদম্যতা অর্জন করা হয়।
ফলস্বরূপ, IaC ব্যবহার করে, দলগুলি পরিবেশের বিবরণ এবং কনফিগারেশন মডেলের সংস্করণ পরিবর্তন করে, যা প্রায়শই JSON-এর মতো ভাল-ডকুমেন্টেড কোড ফর্ম্যাটে লেখা হয়। লক্ষ্য পরিবেশ সেট আপ করতে মডেলটি রিলিজ পাইপলাইনে চালিত হয়। দলটি উৎস সম্পাদনা করে, লক্ষ্য নয়, যদি তাদের পরিবর্তন করতে হয়।
DevOps-এ IaC কীভাবে গুরুত্বপূর্ণ?
DevOps এবং ক্রমাগত ইন্টিগ্রেশন/কন্টিনিউয়াস ডেলিভারি (CI/CD) পদ্ধতি বাস্তবায়নের জন্য IaC ব্যবহারের প্রয়োজন হয়। এটি ডেভেলপারদের অধিকাংশ প্রভিশনিং দায়িত্ব থেকে মুক্তি দেয়, তাদের পরিকাঠামো চালু ও চালু করার জন্য শুধুমাত্র একটি স্ক্রিপ্ট চালানোর অনুমতি দেয়।
ফলস্বরূপ, অবকাঠামো নির্মাণের সময় অ্যাপ্লিকেশন স্থাপনা স্থগিত হয় না, এবং সিস্যাডমিনদের সময়-সাপেক্ষ ম্যানুয়াল কাজের বোঝা হয় না। ডেলিভারি এবং ডিপ্লোয়মেন্টের মাধ্যমে ইন্টিগ্রেশন এবং টেস্টিং থেকে শুরু করে, সিআই/সিডি অ্যাপ্লিকেশন লাইফসাইকেল জুড়ে স্থির অটোমেশন এবং ক্রমাগত পর্যবেক্ষণের উপর নির্ভর করে। অটোমেশন কাজ করার জন্য একটি ধ্রুবক পরিবেশ প্রয়োজন।
যখন ডেভেলপমেন্ট টিম অ্যাপ্লিকেশানগুলি সরবরাহ করে বা পরিবেশগুলিকে এক উপায়ে কনফিগার করে এবং অপারেশন টিম অন্যভাবে পরিবেশকে ইনস্টল এবং কনফিগার করে, তখন স্বয়ংক্রিয় অ্যাপ্লিকেশন স্থাপনা সম্ভব হয় না৷
একটি DevOps পদ্ধতি উন্নয়ন এবং অপারেশন দলকে সারিবদ্ধ করে, যার ফলে কম ভুল, ম্যানুয়াল স্থাপনা এবং অসঙ্গতি দেখা দেয়। যেহেতু ডেভেলপমেন্ট এবং অপারেশন উভয় দলই অ্যাপ্লিকেশন স্থাপনার একই বর্ণনা ব্যবহার করতে পারে, তাই IaC আপনাকে ডেভেলপমেন্ট এবং অপারেশন সিঙ্ক্রোনাইজ করতে সাহায্য করে, একটি DevOps পদ্ধতিকে সক্ষম করে।
আপনার উত্পাদন পরিবেশ সহ প্রতিটি পরিবেশ, একই স্থাপনার পদ্ধতি অনুসরণ করা উচিত। প্রতিবার IaC ব্যবহার করা হয়, একটি অভিন্ন পরিবেশ তৈরি হয়।
উপসংহার
DevOps কোড হিসাবে পরিকাঠামোর উপর ব্যাপকভাবে নির্ভর করে। কোড হিসাবে পরিকাঠামো হল এমন একটি বিশ্বে আপনার ক্রিয়াকলাপগুলিকে ভবিষ্যৎ-প্রস্তুত করার স্বাভাবিক পরবর্তী পদক্ষেপ যেখানে বিঘ্নকারী প্রযুক্তিগুলি ক্রমাগত আইটি সেক্টরকে রূপান্তরিত করছে।
এটি আপনাকে এর পূর্ণ সম্ভাবনা উপলব্ধি করতে সক্ষম করে ক্লাউড কম্পিউটিং, ম্যানুয়াল আইটি অবকাঠামো পরিচালনার সাথে সম্পর্কিত ভুলগুলি হ্রাস করে এবং সফ্টওয়্যার তৈরির গতি উন্নত করে। অপারেটিং খরচ কমানোর সময় এই সব সম্পন্ন করা হয়.
নির্দেশিকা সমন্ধে মতামত দিন