8.0

View in English

8.0 পর্ব ৮-এর ভূমিকা: স্বয়ংক্রিয়তা

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

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

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

এই পর্বের অধ্যায়সমূহ

  • 8.1 CI/CD ও ডেলিভারি: এমন স্বয়ংক্রিয় পাইপলাইন গড়ুন যা প্রতিটি পরিবর্তন একটি ভাগ করা মেইনলাইনে একীভূত করে, পরীক্ষা করে এবং ডিপ্লয়যোগ্য অবস্থায় রাখে, যাতে রিলিজ প্রকৌশলের হুড়োহুড়ির বদলে একটি নিরাপদ ব্যবসায়িক সিদ্ধান্ত হয়, এবং নিরীক্ষণযোগ্যও।

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

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

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

  • 8.5 টেস্ট ও প্রক্রিয়া স্বয়ংক্রিয়তা: পুনরাবৃত্ত ম্যানুয়াল টেস্টিং ও পরিচালনগত কাজ নির্ভরযোগ্য যন্ত্র-সম্পাদিত কর্মপ্রবাহ দিয়ে প্রতিস্থাপন করুন, নিরন্তর টেস্ট স্যুট থেকে রানবুক, প্রতিকার এবং সম্মতি-প্রমাণ সংগ্রহ পর্যন্ত, যাতে মান ও নিয়ন্ত্রণ স্কেল করে এবং দক্ষ ইঞ্জিনিয়াররা বিচার-নিবিড় সমস্যার জন্য মুক্ত থাকে।

  • 8.6 রিলিজ ব্যবস্থাপনা ও ক্রমিক ডেলিভারি: ডিপ্লয়কে রিলিজ থেকে আলাদা করা যাতে কোড পাঠানো একটি ফিচার উন্মুক্ত করা থেকে ভিন্ন, এবং ফিচার ফ্ল্যাগ, ক্যানারি ও ব্লু-গ্রিন ডিপ্লয়মেন্ট, স্বয়ংক্রিয় স্বাস্থ্য পরীক্ষা ও রোলব্যাক, এবং ত্রুটি-বাজেট-গেট করা রিলিজ দিয়ে ক্রমান্বয়ে পরিবর্তন ছড়ানো যা যেকোনো পরিবর্তনের ক্ষতির পরিসর ছোট করে।

  • 8.7 বিল্ড সিস্টেম ও আর্টিফ্যাক্ট ব্যবস্থাপনা: বিল্ডকে পুনরুৎপাদনযোগ্য, দ্রুত ও ক্যাশযোগ্য করা, এবং আর্টিফ্যাক্টকে অপরিবর্তনীয়, সংস্করণ করা ও স্বাক্ষরিত গণ্য করা, একবার গড়া এবং উৎপত্তি ও সরবরাহ-শৃঙ্খল অখণ্ডতাসহ পরিবেশ জুড়ে উন্নীত।

এই অধ্যায়গুলো কীভাবে পরস্পর যুক্ত

এই অধ্যায়গুলো একটি একক ডেলিভারি সিস্টেমের স্তর বর্ণনা করে, প্রতিটি নিচেরগুলোর ওপর দাঁড়ানো। নিরন্তর ইন্টিগ্রেশন ও নিরন্তর ডেলিভারি (CI/CD, অধ্যায় 8.1) হলো সংযোগী কলা যা পরিবর্তনকে কমিট থেকে প্রোডাকশনে বহন করে। কিন্তু একটি পাইপলাইনের ডিপ্লয় করার জন্য কিছু দরকার, এবং কোড হিসেবে অবকাঠামো (8.2) সেই লক্ষ্য দেয় হাতে-গড়া স্নোফ্লেকের বদলে সংস্করণ করা, পুনরুৎপাদনযোগ্য সংজ্ঞা হিসেবে। কনটেইনার ও অর্কেস্ট্রেশন (8.3) হলো সেই রানটাইম ভিত্তি যা পাইপলাইন ও কোডবদ্ধ অবকাঠামো দুটিই ক্রমশ ধরে নেয়, প্রতিটি দলকে প্যাকেজিং ও ডিপ্লয়মেন্টের একটি সামঞ্জস্যপূর্ণ চুক্তি দিয়ে। প্ল্যাটফর্ম প্রকৌশল (8.4) তারপর এই সবকিছু একটি সুসংগত অভ্যন্তরীণ পণ্যে মুড়ে দেয়, যাতে সাধারণ দল পাইপলাইন, অবকাঠামো ও অর্কেস্ট্রেশন শূন্য থেকে জোড়া না দিয়ে পাকা-পথের মাধ্যমে ব্যবহার করে। টেস্ট ও প্রক্রিয়া স্বয়ংক্রিয়তা (8.5) প্রতিটি স্তর জুড়ে চলে, পাইপলাইনে মান গেট গেঁথে এবং পুরো সম্পত্তি সুস্থ রাখা পরিচালনগত ও সম্মতি কাজ কোডবদ্ধ করে। যেকোনো স্তরের দুর্বলতা তার ওপরেরগুলো ক্ষুণ্ণ করে। একটি ভঙ্গুর পাইপলাইন, একটি স্নোফ্লেক পরিবেশ বা একটি অশাসিত প্ল্যাটফর্ম প্রত্যেকে ঠিক সেই ম্যানুয়াল ঝুঁকি ফিরিয়ে আনে যা সরাতে স্বয়ংক্রিয়তা আছে।

পর্বটি বাইরেও সংযোগ গড়ে। এখানকার ডেলিভারি শৃঙ্খলা পর্ব ১১-র, বিশেষত অধ্যায় 11.2-র প্রবাহ ও ডেলিভারি-পাইপলাইন ভাবনার প্রকৌশল বাস্তবায়ন, এবং এটি নির্ভর করে একই সারি-গতিশীলতার ওপর যা যেকোনো উচ্চ-থ্রুপুট সিস্টেম শাসন করে। এই অধ্যায়গুলো যা গড়ে তা পরিচালিত হওয়ার জন্য, তাই তারা সরাসরি পর্ব ৯-এর পরিচালনা ও নির্ভরযোগ্যতায় নিয়ে যায় (সাইট নির্ভরযোগ্যতা প্রকৌশল অধ্যায় 9.1-এ এবং পর্যবেক্ষণযোগ্যতা অধ্যায় 9.2-এ), যা স্বয়ংক্রিয়তা যে চলমান সিস্টেম ডিপ্লয় করে তা নিয়ে কাজ করে। পর্ব ৮ জুড়ে শাসন ও কোড-হিসেবে-সম্মতির বিষয়বস্তু গাইডবুকের অন্যত্র ঠিক করা নিরাপত্তা ও নিয়ন্ত্রক সীমাবদ্ধতা পূরণ করে, এবং এখানে বর্ণিত প্ল্যাটফর্মই সেই জায়গা যেখানে AI ও ডেটা ওয়ার্কলোড ক্রমশ চলে, যা এই পর্বকে পর্ব ৬-এর MLOps (মেশিন লার্নিং পরিচালনা) ও অবকাঠামো উদ্বেগের সঙ্গে বাঁধে। একসঙ্গে পড়লে এই অধ্যায়গুলো দেখায় একটি বড় প্রতিষ্ঠান কীভাবে নিরাপত্তা, সামঞ্জস্য বা নিয়ন্ত্রণ না ছেড়ে দ্রুত সফটওয়্যার পাঠায়।