8.2

View in English

8.2 কোড হিসেবে অবকাঠামো ও কনফিগারেশন

পরিচিতি ও প্রেরণা

কোড হিসেবে অবকাঠামো (IaC) মানে ম্যানুয়াল কনসোল ক্লিক বা অ্যাড হক স্ক্রিপ্টের বদলে যন্ত্র-পঠনযোগ্য সংজ্ঞা ফাইলের মাধ্যমে অবকাঠামো (নেটওয়ার্ক, সার্ভার, ডেটাবেস, লোড ব্যালান্সার, অনুমতি) সংজ্ঞায়িত ও প্রস্তুত করা। কনফিগারেশন ব্যবস্থাপনা একই ধারণা সিস্টেম অস্তিত্বে আসার পরে তাদের সেটিং ও অবস্থায় প্রসারিত করে। একসঙ্গে এগুলো অবকাঠামোকে হাতে-গড়া, ভঙ্গুর নিদর্শন থেকে অ্যাপ্লিকেশন কোডে আপনি যে প্রকৌশল শৃঙ্খলা ব্যবহার করেন সেই একই শৃঙ্খলার সংস্করণ করা, পর্যালোচনাযোগ্য, পুনরুৎপাদনযোগ্য ফলনে পরিণত করে।

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

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

মূল নীতিসমূহ

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

সুপারিশ

ঘোষণামূলক টুলিং বাছুন এবং মডিউল ঘিরে গঠন করুন

Terraform, Pulumi বা CloudFormation-এর মতো ক্লাউড-নেটিভ বিকল্পের মতো একটি ঘোষণামূলক IaC টুল গ্রহণ করুন এবং প্রতিষ্ঠান জুড়ে তাতে প্রমিত হোন যাতে বিচ্ছিন্ন টুলিং পরিদৃশ্য এড়ান। মূল স্থাপত্যগত চর্চা হলো মডুলারিটি: সাধারণ প্যাটার্ন (একটি সম্মত নেটওয়ার্ক, একটি শক্তিশালী ডেটাবেস, একটি মানক সেবা) ধরা ছোট, ভালো-নথিবদ্ধ, সংস্করণ করা মডিউল গড়ুন। দলগুলো তখন কাঁচা সম্পদ লেখার বদলে এই মডিউল থেকে পরিবেশ রচনা করে। এটি ভালো ডিফল্ট ও নিরাপত্তা সেটিং স্বয়ংক্রিয়ভাবে ছড়ায় এবং নকল নাটকীয়ভাবে কমায়।

অবস্থা সুচিন্তিতভাবে পরিচালনা করুন

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

গোল্ডেন ইমেজ দিয়ে অপরিবর্তনীয় অবকাঠামো গড়ুন

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

কনফিগারেশন ড্রিফট শনাক্ত ও মেলান

ড্রিফট ঘটে যখন জীবন্ত পরিবেশ তার সংজ্ঞা থেকে সরে যায়, সাধারণত কেউ একটি জরুরি ম্যানুয়াল পরিবর্তন করেছিল বলে। নিয়মিত ড্রিফট শনাক্তকরণ চালান যা প্রকৃত অবস্থা ঘোষিত অবস্থার সঙ্গে তুলনা করে এবং পার্থক্য চিহ্নিত করে। ড্রিফটকে ত্রুটি গণ্য করুন: ম্যানুয়াল পরিবর্তন জায়গায় রেখে নয়, কোড হালনাগাদ করে ও পুনরায় প্রয়োগ করে মেলান। যে সিস্টেমে চলমান কনফিগারেশন প্রয়োগ দরকার তার জন্য এমন একটি কনফিগারেশন ব্যবস্থাপনা টুল ব্যবহার করুন যা নিরন্তর হোস্টকে তাদের ঘোষিত অবস্থায় অভিসারী করে।

GitOps ও পুল-ভিত্তিক ডিপ্লয়মেন্ট গ্রহণ করুন

GitOps মডেলে একটি Git রিপোজিটরি সিস্টেমের ঘোষিত কাঙ্ক্ষিত অবস্থা ধরে, এবং লক্ষ্য পরিবেশের ভেতরে চলা একটি স্বয়ংক্রিয় এজেন্ট নিরন্তর সেই অবস্থা টানে এবং জীবন্ত সিস্টেমকে মেলাতে মেলায়। এটি ঐতিহ্যগত পুশ মডেল উল্টে দেয়। কোনো বাহ্যিক সিস্টেমের পরিবেশ বদলাতে স্থায়ী ক্রেডেনশিয়াল লাগে না, কারণ পরিবেশ নিজের কনফিগারেশন টানে। GitOps আপনাকে একটি সম্পূর্ণ নিরীক্ষা পথ (প্রতিটি পরিবর্তন একটি কমিট), সহজ রোলব্যাক (কমিট রিভার্ট করুন), এবং শক্তিশালী ড্রিফট সংশোধন (এজেন্ট নিরন্তর কাঙ্ক্ষিত অবস্থা পুনঃঘোষণা করে) দেয়। এটি Kubernetes এবং একটি একক, পর্যালোচনাযোগ্য সত্যের উৎস চাওয়া প্রতিষ্ঠানের জন্য বিশেষভাবে শক্তিশালী।

নীতি-হিসেবে-কোড দিয়ে গার্ডরেইল প্রয়োগ করুন

অনুমোদিত অঞ্চল, বাধ্যতামূলক এনক্রিপশন, প্রয়োজনীয় ট্যাগ এবং নিষিদ্ধ জনসাধারণের উন্মুক্ততার মতো সাংগঠনিক নিয়ম Open Policy Agent (OPA) বা Sentinel-এর মতো প্ল্যাটফর্ম-নেটিভ নীতি ইঞ্জিন টুল ব্যবহার করে যন্ত্র-পরীক্ষাযোগ্য নীতি হিসেবে প্রকাশ করুন। প্রস্তুতকরণের আগে পাইপলাইনে এই পরীক্ষা চালান যাতে লঙ্ঘন স্বয়ংক্রিয়ভাবে আটকায়। নীতি-হিসেবে-কোড একটি নিরাপত্তা দলের অভিপ্রায়কে একটি কার্যকর, অভিন্নভাবে প্রয়োগ করা নিয়ন্ত্রণে পরিণত করে, এবং এটি হাজার হাজার পরিবর্তন পর্যন্ত স্কেল করে যেভাবে ম্যানুয়াল পর্যালোচনা কখনো পারত না।

ট্রেড-অফ: সুবিধা ও অসুবিধা

পছন্দসুবিধাঅসুবিধাসবচেয়ে ভালো মানায়
ঘোষণামূলক IaC (Terraform/Pulumi)পুনরুৎপাদনযোগ্য, পর্যালোচনাযোগ্য, ড্রিফট-শনাক্তযোগ্যশেখার বক্ররেখা; স্টেট ব্যবস্থাপনা জটিলতাপরিসরে প্রায় সব দল
অপরিহার্য স্ক্রিপ্টপরিচিত; এককালীন কাজে নমনীয়অভিন্ন নয়; নিরীক্ষা ও পুনরাবৃত্তি কঠিনসংকীর্ণ, ক্রান্তিকালীন ক্ষেত্র
অপরিবর্তনীয় + গোল্ডেন ইমেজড্রিফট নেই; রোলব্যাক তুচ্ছইমেজ বিল্ড পাইপলাইন ওভারহেডসামঞ্জস্য দরকার এমন বহর
পরিবর্তনযোগ্য কনফিগারেশন ব্যবস্থাপনাসূক্ষ্ম চলমান নিয়ন্ত্রণড্রিফট ঝুঁকি; ধীরতর অভিসরণলেগেসি বা দীর্ঘজীবী হোস্ট
GitOps (পুল-ভিত্তিক)শক্তিশালী নিরীক্ষা পথ; স্ব-নিরাময়ক্লাস্টারের ভেতরে এজেন্ট ও Git শৃঙ্খলা লাগেKubernetes ও ক্লাউড-নেটিভ
নীতি-হিসেবে-কোডস্বয়ংক্রিয়, অভিন্ন গার্ডরেইলঅগ্রিম নীতি রচনা পরিশ্রমনিয়ন্ত্রিত পরিবেশ

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

আপনার দলের সঙ্গে আলোচনার প্রশ্ন

  1. ভাগ করা মডিউল লাইব্রেরির মালিক কে, এবং একটি মডিউলে উন্নতি এটি ব্যবহারকারী প্রতিটি দলে কীভাবে পৌঁছায়? মডিউল কেবল তখন ফল দেয় যখন সংশোধন ও শক্তিশালী ডিফল্ট ছড়ায়, এবং তার জন্য স্পষ্ট মালিকানা ও প্রকৃত সংস্করণ লাগে, সবার কপি করা ফোল্ডার নয়। ঠিক করুন সম্মত-নেটওয়ার্ক ও শক্তিশালী-ডেটাবেস মডিউল কে রক্ষণাবেক্ষণ করে, আপনি কীভাবে সেগুলো সংস্করণ করেন (চেঞ্জলগসহ সেম্যান্টিক ভার্সনিং), এবং দলগুলো ফায়ার ড্রিল ছাড়া কীভাবে আপগ্রেড টানে। পরিসরে এটি একবার একটি ভুল কনফিগারেশন সারানো এবং হাজারটি হাতে-সম্পাদিত সম্পদ জুড়ে তার পিছনে ছোটার মধ্যে পার্থক্য। প্রমাণ আনুন: একই প্যাটার্নের কয়টি স্বতন্ত্র কপি আজ আছে, একটি নিরাপত্তা সংশোধন প্রতিটি পরিবেশে পৌঁছাতে কত সময় লাগে, এবং দলগুলো মডিউল সংস্করণ পিন করে নাকি ভাসমান রাখে। একটি জটিল প্যাচ দিনের মধ্যে পুরো সম্পত্তিতে পৌঁছাতে না পারলে আপনার মডুলারিটি প্রসাধনী।

  2. আপনার ড্রিফট-শনাক্তকরণ ছন্দ কী, এবং ড্রিফট পাওয়া গেলে আসলে কী ঘটে? ড্রিফট হলো জীবন্ত পরিবেশ নীরবে তার ঘোষিত অবস্থা থেকে সরে যাওয়া, সাধারণত একটি জরুরি কনসোল পরিবর্তন থেকে, এবং তা সহ্য করা আপনার কোডকে কল্পকাহিনিতে পরিণত করে। ঠিক করুন আপনি কত ঘন ঘন প্রকৃত অবস্থা ঘোষিত অবস্থার সঙ্গে তুলনা করেন (রাতে একটি যুক্তিসঙ্গত ডিফল্ট) এবং, আরও গুরুত্বপূর্ণভাবে, সাড়া ঠিক করুন: ম্যানুয়াল পরিবর্তন জায়গায় রেখে নয়, কোড হালনাগাদ করে ও পুনরায় প্রয়োগ করে মেলান। নিয়ন্ত্রিত পরিবেশে এটি একটি নিয়ন্ত্রণ প্রয়োজন, কারণ নিরীক্ষকদের ঘোষিত অবস্থা নিরন্তর বাস্তবতার সঙ্গে মিলতে হবে। আপনার বর্তমান সংখ্যা আনুন: প্রতি সপ্তাহে কয়টি সম্পদ ড্রিফট করে, কতক্ষণ তারা ড্রিফটেড থাকে, এবং সেগুলো বন্ধ করার জন্য কেউ জবাবদিহিযোগ্য কি না। প্রতিটি ড্রিফটকে মালিকসহ ত্রুটি গণ্য করুন, নইলে সত্যের-উৎস গ্যারান্টি ক্ষয় হয় যতক্ষণ না কেউ কোড বিশ্বাস করে না।

  3. আপনি কি GitOps ও পুল-ভিত্তিক মেলানোয় সরেছেন, নাকি একটি বাহ্যিক সিস্টেম এখনো প্রোডাকশন বদলাতে স্থায়ী ক্রেডেনশিয়াল ধরে রাখে? পুল মডেলে লক্ষ্য পরিবেশের ভেতরে একটি এজেন্ট নিরন্তর জীবন্ত সিস্টেমকে Git-এর সঙ্গে মেলায়, যা কোনো বাহ্যিক সিস্টেমের লেখার অ্যাক্সেস ধরে রাখার প্রয়োজন সরায়, এবং এটি কাঙ্ক্ষিত অবস্থা পুনঃঘোষণা করে তাই ড্রিফট নিজে সংশোধিত হয়। এটি একটি শক্তিশালী নিরাপত্তা ও নিরীক্ষা অবস্থান, কারণ প্রতিটি পরিবর্তন একটি কমিট এবং কোনো অপারেটরের স্থায়ী প্রোডাকশন ক্রেডেনশিয়াল লাগে না। খরচ প্রকৃত: চালানোর জন্য একটি ক্লাস্টার-ভেতরের এজেন্ট এবং কঠোর Git শৃঙ্খলা, তাই আপনার বর্তমান পুশ-ভিত্তিক স্বয়ংক্রিয়তার বিপরীতে ওজন করুন। বর্তমানে কে এবং কী সরাসরি প্রোডাকশন বদলাতে পারে এবং সেই পরিবর্তন কী নিরীক্ষা পথ রেখে যায় তার তালিকা আনুন। Kubernetes ও উচ্চ-নিশ্চয়তা এনক্লেভের জন্য এই সরণ সাধারণত মূল্যবান; মুষ্টিমেয় স্থির সম্পদের জন্য তা অতিরিক্ত হতে পারে।

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

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

  6. আপনার নিরাপত্তা ও সম্মতি ভিত্তিরেখার কতটা এমন নীতি হিসেবে প্রকাশিত যা স্বয়ংক্রিয়ভাবে একটি খারাপ পরিবর্তন আটকায়, বনাম একটি নথিতে থাকা নিয়ম যা কারও মনে রাখার ওপর নির্ভর করে? উইকিতে গদ্যে লেখা গার্ডরেইল নিয়মিত লঙ্ঘিত হয়, কারণ সেগুলো সময়সীমার চাপে প্রতিটি ইঞ্জিনিয়ারের পড়া ও প্রয়োগের ওপর নির্ভর করে, যেখানে নীতি-হিসেবে-কোডে প্রকাশিত একই নিয়ম একটি অসম্মত পরিবর্তন প্রস্তুত হওয়ার আগেই প্রত্যাখ্যান করে। একটি বড় প্রতিষ্ঠানের জন্য এটিই একমাত্র উপায় যাতে একটি নিরাপত্তা দলের অভিপ্রায় পর্যালোচনার বাধা না হয়ে হাজার হাজার পরিবর্তন পর্যন্ত স্কেল করে। নীতি রচনা ও রক্ষণাবেক্ষণের অগ্রিম খরচ ম্যানুয়াল পর্যালোচনা ও ঘটনার-পরে প্রতিকারের পুনরাবৃত্ত খরচের বিপরীতে ওজন করুন, এবং ঠিক করুন কোন নিয়ন্ত্রণ (এনক্রিপশন, অনুমোদিত অঞ্চল, বাধ্যতামূলক ট্যাগ, জনসাধারণের উন্মুক্ততা নয়) কঠোর গেট হিসেবে প্রয়োগ করার মতো অনমনীয়। আপনার বর্তমান ভিত্তিরেখা নিয়মের তালিকা আনুন এবং চিহ্নিত করুন কোনগুলো স্বয়ংক্রিয় বনাম পরামর্শমূলক, সঙ্গে প্রতিটি বাস্তবে কত ঘন ঘন লঙ্ঘিত হয়। এন্টারপ্রাইজ ও সরকারি প্রেক্ষাপটে স্বয়ংক্রিয় নীতি একটি নিরীক্ষাকে সপ্তাহের ম্যানুয়াল প্রমাণ সংগ্রহ থেকে প্রয়োগ করা নিয়ন্ত্রণের বিপরীতে একটি কোয়েরিতে রূপান্তর করে, এবং সম্মতিকে শনাক্তকরণ থেকে প্রতিরোধে পরিণত করে।

খাতভেদে দৃষ্টিভঙ্গি

স্টার্টআপ। গতি জেতে, তাই আপনার পুরো স্ট্যাক একটি ঘোষণামূলক রিপোজিটরিতে রাখুন (Terraform একটি সাধারণ ডিফল্ট), স্টেট একটি ম্যানেজড এনক্রিপ্ট করা ব্যাকএন্ডে রাখুন, এবং তিনজনের দল হলেও প্রতিটি পরিবর্তন একটি পুল রিকোয়েস্টের মধ্য দিয়ে পাঠান। ভারী প্ল্যাটফর্ম যন্ত্রপাতি বাদ দিন: কেন্দ্রীয় মডিউল দল নেই, এখনো নীতি ইঞ্জিন নেই, শুধু সংস্করণ নিয়ন্ত্রণ এবং কনসোলে কখনো ক্লিক না করার শৃঙ্খলা। কেবল তাই আপনাকে পুনরুৎপাদনযোগ্য পরিবেশ দেয় যা আপনি অর্থ বাঁচাতে নামাতে এবং পরবর্তী ডেমোর জন্য পুনর্নির্মাণ করতে পারেন।

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

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

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

উদাহরণ

স্টার্টআপ। পাঁচজনের একটি স্টার্টআপ তার পুরো AWS সেটআপ, অর্থাৎ VPC, ডেটাবেস ও কনটেইনার সেবা, একটি একক Terraform রিপোজিটরিতে সংজ্ঞায়িত করে, স্টেট একটি এনক্রিপ্ট করা S3 ব্যাকএন্ডে এবং DynamoDB-র মাধ্যমে লকিংসহ। প্রতিটি পরিবর্তন একটি পুল রিকোয়েস্টের মধ্য দিয়ে যায়, তাই একজন একক অন-কল ইঞ্জিনিয়ারও apply চালানোর আগে ঠিক কী বদলাবে দেখতে পারেন। একটি বড় ডেমোর জন্য নতুন স্টেজিং পরিবেশ দরকার হলে তারা একটি ছোট মডিউল কপি করে মিনিটে তা দাঁড় করায়, এবং ক্লাউড বিল কম রাখতে ঠিক ততটা দ্রুত নামায়।

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

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

ব্যবসায়িক যুক্তি: প্রেরণা, ROI ও TCO

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

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

অ্যান্টি-প্যাটার্ন ও ফাঁদ

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

পরিপক্বতা মডেল

স্তর 1: সূচনা। অবকাঠামো কনসোল ও অ্যাড হক স্ক্রিপ্টের মাধ্যমে ম্যানুয়ালি প্রস্তুত করা হয়। পরিবেশ অসঙ্গত, অনথিবদ্ধ, এবং নির্ভরযোগ্যভাবে পুনরুৎপাদন করা যায় না, এবং ব্যর্থতা থেকে পুনরুদ্ধার ধীর ও অনিশ্চিত।

স্তর 2: বিকাশ। কিছু অবকাঠামো কোডবদ্ধ, কিন্তু চর্চা দল-ধরে-দল ভিন্ন। স্টেট ব্যবস্থাপনা অসঙ্গত, ড্রিফট সাধারণ, গোপন তথ্য মাঝে মাঝে সংজ্ঞায় ফাঁস হয়, এবং নীতি, প্রয়োগ হলে, ম্যানুয়াল পর্যালোচনার মাধ্যমে প্রয়োগ করা হয়।

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

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

স্তর 5: সমন্বয়। অবকাঠামো অপরিবর্তনীয় ও GitOps-চালিত, ড্রিফটের বিরুদ্ধে স্ব-নিরাময়ী, সম্মতি প্রমাণ স্বয়ংক্রিয়ভাবে তৈরি। মডিউল ও নীতি লাইব্রেরি প্রকৃত ব্যবহার ও ঘটনা থেকে নিরন্তর উন্নত হয়, এবং অবকাঠামো চর্চা নিরাপত্তা, খরচ ও ডেলিভারি পরিকল্পনার সঙ্গে একীভূত যাতে প্রয়োজন সরলে পুরো সম্পত্তি খাপ খায়।

আলোচনার ভাবনা

  • কেন্দ্রীয়ভাবে শাসিত মডিউল এবং কাস্টম অবকাঠামো সংজ্ঞায়িত করার দলের স্বায়ত্তশাসনের মধ্যে রেখা কোথায় থাকা উচিত?
  • ClickOps স্বাভাবিক না করে পাইপলাইন এড়াতে হবে এমন প্রকৃত জরুরি পরিবর্তন আপনি কীভাবে সামলান?
  • অনেক অ্যাকাউন্ট ও দল জুড়ে স্টেট পরিচালনা ও সুরক্ষিত করার সঠিক কৌশল কী?
  • পরিবর্তনযোগ্য কনফিগারেশন ব্যবস্থাপনা কখন এখনো যথার্থ বনাম সম্পূর্ণ অপরিবর্তনীয় অবকাঠামো?
  • বিবর্তনশীল নিরাপত্তা ও নিয়ন্ত্রক প্রয়োজনের সঙ্গে নীতি-হিসেবে-কোড লাইব্রেরি কীভাবে সারিবদ্ধ রাখবেন?
  • IaC-র আগের লেগেসি অবকাঠামোর জন্য একটি বাস্তবসম্মত মাইগ্রেশন পথ কেমন দেখায়?

প্রধান শিক্ষা

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

তথ্যসূত্র ও আরও পড়ার জন্য

  • Kief Morris, Infrastructure as Code: Dynamic Systems for the Cloud Age.
  • Yevgeniy Brikman, Terraform: Up & Running.
  • Betsy Beyer, Chris Jones, Jennifer Petoff ও Niall Richard Murphy (eds.), Site Reliability Engineering.
  • Gene Kim, Jez Humble, Patrick Debois ও John Willis, The DevOps Handbook.
  • Weaveworks, “GitOps” foundational writings (Alexis Richardson et al.).
  • Open Policy Agent documentation and the Rego policy language.
  • NIST Special Publication 800-53, security and privacy controls (configuration management family).