3.6 লিগ্যাসি আধুনিকীকরণ
পরিচিতি ও প্রেরণা
লিগ্যাসি সিস্টেম হলো সেই সিস্টেম, যা বিশ্ব চালায়। মূল ব্যাংকিং খতিয়ান, কর ও সুবিধা ইঞ্জিন, বিমান চলাচল ও প্রতিরক্ষা সিস্টেম, বীমা পলিসি প্রশাসন, এবং সরকারি রেজিস্ট্রি, যার ওপর সমাজ নির্ভর করে, প্রায়ই কয়েক দশকের পুরোনো। অনেকগুলো COBOL (Common Business-Oriented Language) বা অন্যান্য পুরোনো প্রযুক্তিতে লেখা, এবং সেগুলো এখনো বেশিরভাগ জটিল লেনদেন প্রক্রিয়া করে। “লিগ্যাসি” কোনো অপমান নয়। এর মানে সিস্টেমটি টিকে থাকার মতো মূল্যবান, এতটাই জটিল যে ব্যর্থতা বিপর্যয়কর, এবং এতটাই পুরোনো যে নিরাপদে বদলানো কঠিন। লিগ্যাসি আধুনিকীকরণ হলো এই সিস্টেমগুলো তাদের দেওয়া অপরিহার্য সেবা না ভেঙে উন্নত, স্থানান্তর বা প্রতিস্থাপন করার শৃঙ্খলা।
এটি অসমানুপাতিকভাবে একটি এন্টারপ্রাইজ ও সরকারি সমস্যা, এবং এখানেই সবচেয়ে বড়, সবচেয়ে প্রকাশ্য IT ব্যর্থতা ঘটে। বিশ্বব্যাপী প্রধান লেনদেনের একটি বিশাল অংশ এখনো মেইনফ্রেম সিস্টেম ছোঁয়। বড় প্রতিষ্ঠানে প্রোডাকশন কোডের একটি বড় ভগ্নাংশ পুরোনো ভাষায়, যা বয়স্ক, সংকুচিত বিশেষজ্ঞ-পুল রক্ষণাবেক্ষণ করে। সরকারগুলো সবচেয়ে ভারী বোঝা বহন করে: কয়েক দশক ধরে এনকোড করা বিধিবদ্ধ বাধ্যবাধকতা, প্রশাসনকে ছাড়িয়ে টেকা ক্রয় ও বাজেট চক্র, এবং বিঘ্নিত করা যায় না এমন নাগরিক সেবা। প্রধান ঝুঁকি এই নয় যে এই সিস্টেম পুরোনো, কারণ অনেকগুলো চমৎকার চলে। ঝুঁকি হলো রক্ষণাবেক্ষণের জ্ঞান অবসর নিচ্ছে, প্ল্যাটফর্ম ক্রমশ ব্যয়বহুল ও সীমাবদ্ধ, এবং “শুধু পুনর্লিখন করি” প্রলোভন এই ক্ষেত্রের ইতিহাসের কিছু সবচেয়ে ব্যয়বহুল ব্যর্থতায় নিয়ে যায়।
এই অধ্যায় কভার করে যে ক্রমবর্ধমান আধুনিকীকরণ প্যাটার্ন আসলে কাজ করে (স্ট্র্যাংলার ফিগ ও ব্রাঞ্চ-বাই-অ্যাবস্ট্র্যাকশন), লিগ্যাসি ঝুঁকি কীভাবে মূল্যায়ন ও অগ্রাধিকার দেবেন, মেইনফ্রেম ও COBOL সম্পত্তির দায়িত্বশীলতা, ডেটা স্থানান্তর ও দ্বৈত-চালনার শৃঙ্খলা, এবং সর্বোপরি বড়-পুনর্লিখনের প্রলোভন কীভাবে প্রতিরোধ করবেন। কেন্দ্রীয় প্রত্যয় হলো সফল আধুনিকীকরণ প্রায় সবসময় ক্রমবর্ধমান, প্রমাণ-চালিত এবং নিরন্তর মূল্য সরবরাহকারী। এটি কখনো বহু-বছরের বিগ ব্যাং নয়।
মূল নীতিসমূহ
- লিগ্যাসি মানে মূল্যবান ও ভিত্তিমূলক, কেবল পুরোনো নয়। ছোঁয়ার আগে সিস্টেম কী করে তা সম্মান করুন; এটি কয়েক দশকের কষ্টার্জিত ব্যবসায়িক নিয়ম এনকোড করে।
- ক্রমবর্ধমান প্রায় সবসময় বিগ-ব্যাংকে হারায়। একটি স্থিতিশীল ইন্টারফেসের পেছনে টুকরো টুকরো করে প্রতিস্থাপন করুন; নিরন্তর মূল্য সরবরাহ করুন এবং ঝুঁকি ছোট রাখুন।
- বড় পুনর্লিখন ডিফল্ট ব্যর্থতার ধরন। পূর্ণ পুনর্লিখন নিয়মিত সময় ছাড়ায়, কম সরবরাহ করে এবং বাতিল হয়; তাড়নাকে গভীর সন্দেহে দেখুন।
- যা বোঝেন না তা আধুনিক করতে পারেন না। প্রতিস্থাপনের আগে আচরণ (অনথিবদ্ধ নিয়মসহ) রিভার্স-ইঞ্জিনিয়ার ও নথিবদ্ধ করুন।
- ডেটা স্থানান্তর হলো সেখানে যেখানে প্রকল্প মরে। ডেটা যে কারও প্রত্যাশার চেয়ে পুরোনো, নোংরা ও জট পাকানো; একে প্রথম-শ্রেণির প্রচেষ্টা হিসেবে পরিকল্পনা করুন।
- আস্থা গড়তে পুরোনো ও নতুন সমান্তরালে চালান। দ্বৈত-চালনা ও তুলনা কাটওভারের আগে অসঙ্গতি ধরে।
- বয়স দিয়ে নয়, ঝুঁকি ও মূল্য দিয়ে অগ্রাধিকার দিন। যা কেবল সবচেয়ে পুরোনো তা নয়, সবচেয়ে ঝুঁকিপূর্ণ ও মূল্যবানটি আগে আধুনিক করুন।
- ইঞ্জিন বদলানোর সময় আলো জ্বালিয়ে রাখুন। পুরো সময় সেবা চলতে হবে; জটিল নাগরিক বা আর্থিক সিস্টেমের জন্য কোনো গ্রহণযোগ্য ডাউনটাইম নেই।
সুপারিশ
স্ট্র্যাংলার ফিগ প্যাটার্ন দিয়ে ক্রমবর্ধমানভাবে আধুনিক করুন
স্ট্র্যাংলার ফিগ (যে লতা গাছকে ঘিরে বাড়ে এবং ধীরে ধীরে তাকে প্রতিস্থাপন করে, তার নামে নামকরা) নিরাপদ আধুনিকীকরণের কাজের ঘোড়া। লিগ্যাসি সিস্টেমের সামনে একটি রাউটিং স্তর (একটি API গেটওয়ে, ফাসাদ বা প্রক্সি) বসান। তারপর সামর্থ্যের পর সামর্থ্য ধরে একটি আধুনিক সিস্টেমে প্রতিস্থাপন গড়ুন এবং ট্রাফিকের সেই টুকরো তাতে পুনঃনির্দেশ করুন, বাকিটা লিগ্যাসিতে রেখে। সময়ের সঙ্গে নতুন সিস্টেম বাড়ে এবং পুরোনোটি সংকুচিত হয় যতক্ষণ না তা অবসর নিতে পারে। এটি নিরন্তর মূল্য সরবরাহ করে, প্রতিটি পরিবর্তন ছোট ও ফেরানো-যায় রাখে, ঝুঁকিপূর্ণ কাটওভার এড়ায়, এবং আপনাকে যেকোনো বিন্দুতে থামাতে বা অগ্রাধিকার বদলাতে দেয়। এটি বিগ ব্যাংয়ের উল্টো। আপনি এর চারপাশে প্রতিস্থাপন করার সময় লিগ্যাসি সিস্টেম চলতে থাকে এবং নিজের ভরণপোষণ অর্জন করতে থাকে।
অভ্যন্তরীণ সংযোগের জন্য ব্রাঞ্চ-বাই-অ্যাবস্ট্র্যাকশন ব্যবহার করুন
যেখানে আপনাকে এমন উপাদান প্রতিস্থাপন করতে হয় যার ওপর সিস্টেমের অনেক অংশ নির্ভর করে, সেখানে ব্রাঞ্চ-বাই-অ্যাবস্ট্র্যাকশন ব্যবহার করুন। বিদ্যমান বাস্তবায়নের ওপর একটি অ্যাবস্ট্র্যাকশন স্তর (একটি ইন্টারফেস) আনুন, কলারদের অ্যাবস্ট্র্যাকশনের ওপর নির্ভর করতে স্থানান্তর করুন, একই অ্যাবস্ট্র্যাকশনের পেছনে নতুন বাস্তবায়ন গড়ুন, (প্রায়ই একটি ফিচার ফ্ল্যাগের পেছনে, ধীরে ধীরে) পরিবর্তন করুন, এবং অবশেষে পুরোনো বাস্তবায়ন সরান। এটি একটি বড় উপাদান উন্নয়নের মূল ধারায় দীর্ঘজীবী ব্রাঞ্চ ছাড়া ক্রমবর্ধমানভাবে প্রতিস্থাপন করতে দেয়, পুরো সময় সিস্টেম রিলিজযোগ্য রেখে। এটি স্ট্র্যাংলার ফিগের সঙ্গে স্বাভাবিকভাবে জোড় বাঁধে: ফাসাদ বাইরের সংযোগ সামলায়, ব্রাঞ্চ-বাই-অ্যাবস্ট্র্যাকশন অভ্যন্তরীণগুলো।
লিগ্যাসি ঝুঁকি সুচিন্তিতভাবে মূল্যায়ন ও অগ্রাধিকার দিন
আধুনিকীকরণের আগে সম্পত্তির একটি স্পষ্টদৃষ্টি তালিকা ও ঝুঁকি মূল্যায়ন গড়ুন। প্রতিটি সিস্টেমকে ব্যবসায়িক জটিলতা, প্রযুক্তিগত ঝুঁকি (অপ্রচলন, অসমর্থিত প্ল্যাটফর্ম, নিরাপত্তা উন্মুক্ততা), পরিবর্তনের ফ্রিকোয়েন্সি, এবং, অত্যন্ত গুরুত্বপূর্ণভাবে, জ্ঞান ঝুঁকি (কতজন মানুষ এখনো এটি রক্ষণাবেক্ষণ করতে পারেন এবং তাঁরা অবসরের কতটা কাছে) দিয়ে স্কোর করুন। সিস্টেমকে ঝুঁকি-বনাম-মূল্য গ্রিডে স্থাপন করুন। যা একসঙ্গে উচ্চ-ঝুঁকি ও উচ্চ-মূল্য তা আধুনিক করাকে অগ্রাধিকার দিন। স্থিতিশীল, কম-পরিবর্তন, ভালো-বোঝা সিস্টেম পুরোনো হলেও একা ছেড়ে দেওয়ার কথা বিবেচনা করুন, কারণ যে কাজ করা সিস্টেম কাউকে বদলাতে হয় না তা জরুরি অবস্থা নয়। এই মূল্যায়ন “সবকিছু পুরোনো ও ভীতিকর”-কে একটি রক্ষণযোগ্য, ক্রমবদ্ধ রোডম্যাপে পরিণত করে।
মেইনফ্রেম ও COBOL সম্পত্তির দায়িত্ব নিন, কেবল প্রতিস্থাপন নয়
প্রতিটি মেইনফ্রেম বা COBOL সিস্টেম শীঘ্রই প্রতিস্থাপিত হওয়া উচিত বা নিরাপদে হতে পারে না। নিকট-মেয়াদি অগ্রাধিকার প্রায়ই দায়িত্বশীলতা: জ্ঞান অবসর নেওয়ার আগে ধরে ফেলা। কোড যে ব্যবসায়িক নিয়ম এনকোড করে তা নথিবদ্ধ করুন (বেশিরভাগ অনথিবদ্ধ ও অপূরণীয়), বর্তমান আচরণ পিন করা স্বয়ংক্রিয় টেস্টে বিনিয়োগ করুন যাতে ভবিষ্যৎ পরিবর্তন নিরাপদ হয়, রক্ষণাবেক্ষণকারী নিয়োগ ও ক্রস-প্রশিক্ষণ করুন, এবং কেন্দ্র যথাস্থানে থাকলেও চারপাশের সরবরাহ চর্চা (সোর্স কন্ট্রোল, কন্টিনিউয়াস ইন্টিগ্রেশন (CI), স্বয়ংক্রিয় টেস্টিং) আধুনিক করুন। যেখানে আধুনিকীকরণ করেন, প্রথম ধাপ হিসেবে আধুনিক API-র মাধ্যমে লিগ্যাসি সামর্থ্য প্রকাশ করা (এনক্যাপসুলেশন) পছন্দ করুন। স্বয়ংক্রিয় COBOL-থেকে-আধুনিক-ভাষা অনুবাদ সাবধানে দেখুন, কারণ এটি এমন কোড তৈরি করে যা চলে কিন্তু প্রায়ই দুর্বোধ্য যুক্তি বিশ্বস্তভাবে পুনরুৎপাদন করে। দুর্লভতম সম্পদ বোঝাপড়া, কম্পিউট নয়।
ডেটা স্থানান্তর ও দ্বৈত-চালনাকে প্রকল্পের কেন্দ্র গণ্য করুন
বেশিরভাগ আধুনিকীকরণ প্রচেষ্টার সবচেয়ে কঠিন ও সবচেয়ে ঝুঁকিপূর্ণ অংশ ডেটা। এটি বিশাল, দুর্বল ও অসঙ্গত মানের, এবং কয়েক দশকে জমা অনথিবদ্ধ অর্থে ভরা। এটি প্রোফাইল ও পরিষ্কার করুন, পুরোনো-থেকে-নতুন স্কিমা সুস্পষ্টভাবে ম্যাপ করুন, এবং পূর্ণ মিলকরণসহ (গণনা, চেকসাম, ব্যবসায়িক মোট) পুনরাবৃত্তিযোগ্য, স্বয়ংক্রিয় স্থানান্তর গড়ুন যাতে আপনি প্রমাণ করতে পারেন কিছু হারায়নি বা বদলায়নি। দ্বৈত-চালনা (সমান্তরাল চালনা) দিয়ে কাটওভার ঝুঁকিমুক্ত করুন: একই ইনপুটে পুরোনো ও নতুন সিস্টেম পাশাপাশি চালান এবং নতুন সিস্টেম আপনার আস্থা সীমা পর্যন্ত পুরোনোটির সঙ্গে না মেলা পর্যন্ত আউটপুট তুলনা করুন। তারপরই কেবল কাটওভার করুন, এবং ফেরার সামর্থ্য রাখুন। সত্যিই জটিল সিস্টেমের জন্য একবারে সব না করে টুকরো টুকরো করে স্থানান্তর ও কাটওভার করুন।
বড়-পুনর্লিখনের প্রলোভন সামলান
অগোছালো পুরোনো সিস্টেম ফেলে দিয়ে স্ক্র্যাচ থেকে পরিচ্ছন্ন নতুন একটি গড়ার সহজাত তাড়না শক্তিশালী, এবং বড়, জটিল সিস্টেমের জন্য এটি প্রায় সবসময় ভুল। পূর্ণ পুনর্লিখন “কদর্য” কোডে লুকানো মূল্য (প্রান্তিক কেস, নিয়ন্ত্রক নিয়ম, প্রকৃত ব্যবহারকারীরা যে বাগ-সামঞ্জস্যপূর্ণ আচরণের ওপর নির্ভর করে) কম অনুমান করে, অনুমানের চেয়ে অনেক বেশি সময় নেয়, শেষ পর্যন্ত কোনো মূল্য দেয় না, এবং বিপুল ব্যয়ের পরে প্রায়ই বাতিল হয়। ক্রমবর্ধমান আধুনিকীকরণ ডিফল্ট করুন। পুনর্লিখন সংরক্ষণ করুন সেই ক্ষেত্রের জন্য যেখানে প্ল্যাটফর্ম সত্যিই অটেকসই এবং ক্রমবর্ধমান পথ শেষ। তখনও, একটি একক বিগ-ব্যাং রিলিজের বদলে স্ট্র্যাংলার প্যাটার্নের মাধ্যমে পুনর্লিখনকে স্বাধীনভাবে সরবরাহযোগ্য টুকরোয় ভাঙুন। নেতৃত্ব সম্পূর্ণ পুনর্লিখনের চাপ দিলে প্রশ্নটির ওপর জোর দিন: প্রথম তিন মাসে কোন মূল্য পাঠানো হয়, এবং কর্মসূচি মাঝপথে থামলে কী হয়?
ট্রেড-অফ: সুবিধা ও অসুবিধা
| পদ্ধতি | সুবিধা | অসুবিধা |
|---|---|---|
| স্ট্র্যাংলার ফিগ (ক্রমবর্ধমান) | নিরন্তর মূল্য, কম ঝুঁকি, ফেরানো-যায়, সেবা চালু রাখে | দীর্ঘতর মোট সময়সীমা, দুটি সিস্টেম সমান্তরালে চালাতে হয়, ইন্টিগ্রেশন বাড়তি বোঝা |
| বিগ-ব্যাং পুনর্লিখন | পরিষ্কার স্লেট, নতুন কোডে লিগ্যাসি সীমাবদ্ধতা নেই | অত্যন্ত উচ্চ ব্যর্থতার হার, শেষ পর্যন্ত মূল্য নেই, বিপুল খরচ, ব্যবসায়িক নিয়ম হারায় |
| এনক্যাপসুলেট (API দিয়ে মোড়া) | দ্রুত, কম-ঝুঁকি, কেন্দ্র না ছুঁয়ে অ্যাক্সেস আধুনিক করে | কেন্দ্র লিগ্যাসি থাকে; অন্তর্নিহিত ঝুঁকি স্থগিত করে, সমাধান করে না |
| যেমন আছে রেখে দিন (দায়িত্ব নিন) | প্রকল্প ঝুঁকি নেই; স্বল্পমেয়াদে সস্তা | জ্ঞান ও প্ল্যাটফর্ম ঝুঁকি জমতে থাকে; অবশেষে বাধ্যতামূলক ব্যবস্থা |
মৌলিক বিনিময় রূপান্তরের গতি বনাম ব্যর্থতার ঝুঁকি, এবং লিগ্যাসি আধুনিকীকরণ সেই ক্ষেত্র যেখানে এই বিনিময় সবচেয়ে একপেশে। “দ্রুত, পরিচ্ছন্ন” বিগ-ব্যাং পুনর্লিখন একটি মরীচিকা যা বারবার সবচেয়ে ধীর ও সবচেয়ে ব্যয়বহুল ফল দেয়: একটি বাতিল কর্মসূচি এবং এখনো-অনাধুনিক সিস্টেম। ক্রমবর্ধমান পদ্ধতি ধীর মনে হয় এবং দুটি সিস্টেম সমান্তরালে চালাতে হয়, কিন্তু পুরো সময় মূল্য সরবরাহ করে, ঝুঁকি ছোট ও ফেরানো-যায় রাখে, এবং অভিজ্ঞতালব্ধভাবে নির্ভরযোগ্য পথ। প্রকৃত বিচারের বিষয় হলো একটি স্থিতিশীল লিগ্যাসি সিস্টেমকে আরও কিছুকাল দায়িত্বে রাখা এবং এখনই ক্রমবর্ধমান প্রতিস্থাপন শুরু করার মধ্যে। সিদ্ধান্ত চালাতে দিন ঝুঁকির গতিপথকে, বিশেষত জ্ঞান ঝুঁকিকে, পুরোনো প্রযুক্তির অস্বস্তিকে নয়।
আপনার দলের সঙ্গে আলোচনার প্রশ্ন
আপনার লিগ্যাসি সিস্টেমের সামনে রাউটিং স্তর বসানোর জায়গা কি আছে, না থাকলে একটি তৈরি করতে কী লাগবে? স্ট্র্যাংলার ফিগ নির্ভর করে একটি সংযোগের ওপর: একটি API গেটওয়ে, ফাসাদ বা প্রক্সি, যার মাধ্যমে আপনি একবারে একটি সামর্থ্য নতুন বাস্তবায়নে পুনঃনির্দেশ করতে পারেন। অনেক পুরোনো সিস্টেমে এমন কোনো সংযোগ নেই, তাই প্রথম আধুনিকীকরণ ধাপ প্রায়ই কেবল ইন্টারসেপশন বিন্দু তৈরি করা, এবং সেই কাজ কম অনুমান করা সহজ। বর্তমান ইন্টিগ্রেশন মানচিত্র আনুন এবং জিজ্ঞেস করুন বিগ-ব্যাং কাটওভার ছাড়া প্রতি সামর্থ্যে ট্রাফিক কোথায় ইন্টারসেপ্ট করা যেত। কোথাও না থাকলে একটি অভ্যন্তরীণ সংযোগে ব্রাঞ্চ-বাই-অ্যাবস্ট্র্যাকশন বরং শুরুর পদক্ষেপ হতে পারে। রাউটিং স্তর ছাড়া আপনার কোনো ক্রমবর্ধমান পথ নেই, ঠিক এভাবেই প্রতিষ্ঠান সেই পুনর্লিখনের দিকে ঠেলা খায় যা সাধারণত ব্যর্থ হয়।
আপনি কি আপনার সম্পত্তি সত্যিই একটি ঝুঁকি-বনাম-মূল্য গ্রিডে স্থাপন করেছেন, নাকি আপনার রোডম্যাপ চালায় কোন সিস্টেম সবচেয়ে পুরোনো মনে হয় তা? অধ্যায় জোর দেয় আপনি আগে উচ্চ-ঝুঁকি ও উচ্চ-মূল্য আধুনিক করবেন, এবং স্থিতিশীল, কম-পরিবর্তন, ভালো-বোঝা সিস্টেম প্রাচীন হলেও ইচ্ছাকৃতভাবে একা ছাড়বেন। সুস্পষ্ট গ্রিড ছাড়া মনোযোগ প্রবাহিত হয় সবচেয়ে জোরালো অভিযোগ বা সবচেয়ে কম-ফ্যাশনেবল প্রযুক্তির দিকে, আর প্রকৃত টাইম বোমা (অবসরের কাছাকাছি দুজন রক্ষণাবেক্ষণকারীসহ একটি জটিল সিস্টেম) অপেক্ষা করে। প্রতিটি সিস্টেমকে ব্যবসায়িক জটিলতা, প্রযুক্তিগত ঝুঁকি, পরিবর্তন ফ্রিকোয়েন্সি ও জ্ঞান ঝুঁকিতে স্কোর করুন, তারপর ওপরের-ডান কোণ থেকে ক্রম সাজান। সেই গ্রিড ভাগ করা মানচিত্র হিসেবে সভায় আনুন। জ্ঞান ঝুঁকি সবচেয়ে ভারী ওজন প্রাপ্য, কারণ এটি একমাত্র ইনপুট যা কেবল খারাপ হয় এবং মানুষ চলে গেলে আর কিনে ফেরানো যায় না।
কাটওভারের সময় আপনি কীভাবে প্রমাণ করবেন একটিও রেকর্ড হারায়নি বা বদলায়নি, এবং সেই প্রমাণে কে স্বাক্ষর করে? ডেটা স্থানান্তর হলো সেখানে যেখানে এই প্রকল্প মরে, এবং আস্থা আসে মিলকরণ থেকে: পুরোনো ও নতুনের মধ্যে মেলা সারি গণনা, চেকসাম ও ব্যবসায়িক নিয়ন্ত্রণ মোট, সঙ্গে দ্বৈত-চালনা যা একই ইনপুটে উচ্চ সীমায় একমত না হওয়া পর্যন্ত আউটপুট তুলনা করে। একটি সুবিধা বা খতিয়ান সিস্টেমে একটি অসঙ্গতি মানে একজন নাগরিক কম পেয়েছেন বা একটি পয়সা হারিয়েছে, তাই প্রমাণ কেবল ইঞ্জিনিয়ার নয়, একজন নিরীক্ষককে সন্তুষ্ট করতে হবে। এখনই ঠিক করুন কোন মোট মেলাবেন, কোন আস্থা সীমা কাটওভার ট্রিগার করবে, এবং পুরোনো ও নতুন কতদিন সমান্তরালে চালাবেন। পুরো সময় ফেরার ব্যবস্থা রাখুন, এবং একবারে সব না করে টুকরো টুকরো করে কাটওভার করুন। দ্বৈত-চালনার সময় আপনি যে অসঙ্গতি পান সেগুলো সাধারণত অনথিবদ্ধ লিগ্যাসি নিয়ম যা সংরক্ষণ করতে হবে, তাই প্রতিটিকে কেবল ত্রুটি নয়, আবিষ্কার গণ্য করুন।
আপনার কোন লিগ্যাসি সিস্টেমের আপনি দায়িত্ব নিচ্ছেন বনাম সক্রিয়ভাবে প্রতিস্থাপন করছেন, এবং কোনটি কোনটি তা কে ঠিক করেছে? অধ্যায় একটি সুচিন্তিত রেখা টানে স্থানে স্থিতিশীল করার যোগ্য সিস্টেম (নিয়ম নথিবদ্ধ করা, চারিত্র্য-নির্ণায়ক টেস্ট যোগ, রক্ষণাবেক্ষণকারীদের ক্রস-প্রশিক্ষণ) এবং ক্রমবর্ধমানভাবে প্রতিস্থাপনের যোগ্য সিস্টেমের মধ্যে, এবং দুটি অত্যন্ত ভিন্ন অর্থায়ন ও কর্মী দাবি করে। একটি বড় প্রতিষ্ঠানের জন্য বিপদ সরে যাওয়া: “এখনকার জন্য দায়িত্ব” লেবেলযুক্ত একটি সিস্টেম নিঃশব্দে “চিরকাল দায়িত্ব” হয়ে যায় যতক্ষণ না শেষ রক্ষণাবেক্ষণকারী অবসর নেন এবং সংকটে আপনার জন্য বাছাই হয়ে যায়। প্রতিদ্বন্দ্বী বিবেচনা একদিকে দায়িত্বশীলতার খরচ ও প্ল্যাটফর্ম অপ্রচলন, অন্যদিকে প্রতিস্থাপনের ঝুঁকি ও বিঘ্ন, এবং জ্ঞান ঝুঁকিকে পাল্লা ঝুঁকিয়ে দেওয়া উচিত কারণ এটি কেবল খারাপ হয়। ঝুঁকি-বনাম-মূল্য গ্রিড, প্রতিটি সিস্টেমের রক্ষণাবেক্ষণকারী সংখ্যা ও অবসর দিগন্ত, এবং দায়িত্ব-নাকি-প্রতিস্থাপন সিদ্ধান্তের একজন সুস্পষ্ট মালিক আনুন। এন্টারপ্রাইজ ও সরকারি সম্পত্তিতে প্রতিটি সিস্টেমের জন্য একটি পর্যালোচনা ছন্দ ও একজন জবাবদিহিযোগ্য কর্মকর্তার নাম দিন, কারণ কেউ পুনর্বিবেচনা না করা শ্রেণিবিন্যাস এমন সিদ্ধান্ত যা কেউ নিচ্ছে না।
নেতৃত্ব পূর্ণ পুনর্লিখন চাইলে আপনার স্থায়ী উত্তর কী, এবং আপনি কি দেখাতে পারেন ক্রমবর্ধমান পথ প্রথম তিন মাসে কী পাঠায়? বিগ-ব্যাং পুনর্লিখন ডিফল্ট ব্যর্থতার ধরন, তবু এটি অর্থায়ন পেতে থাকে কারণ পরিষ্কার স্লেট বেচা সহজ আর স্ট্র্যাংলার ফিগ নয়। একটি বড় দলের জন্য মহড়া করা সাড়া দরকার যাতে ঘরে সবচেয়ে জ্যেষ্ঠ কে তার বদলে প্রমাণ দিয়ে তর্ক জেতা যায়। প্রকৃত টানাপোড়েন হলো কিছু প্ল্যাটফর্ম সত্যিই অটেকসই এবং পুনর্লিখন যথার্থ, তাই উত্তর সর্বব্যাপী প্রত্যাখ্যান হতে পারে না: তাকে ওজন করতে হবে ক্রমবর্ধমান সংযোগ এখনো আছে কি না, পুরোনো প্ল্যাটফর্ম জীবিত রাখার প্রকৃত খরচের বিপরীতে। ক্রমবর্ধমান প্রথম ধাপ যে মূল্য দেবে, তুলনীয় পুনর্লিখনের ঐতিহাসিক ব্যর্থতার হার, এবং যেকোনো প্রস্তাবিত পুনর্লিখনের স্বাধীনভাবে পাঠানো-যায় এমন টুকরোয় ভাগ আনুন। সরকারে, যেখানে একটি বাতিল বহু-বছরের কর্মসূচি সবার চোখের সামনে জনগণের অর্থ পোড়ায়, জোর দিন যে যেকোনো পুনর্লিখনকে আগে মূল্য দিতে হবে এবং মাঝপথে থামলে সম্পূর্ণ ক্ষতি ছাড়া টিকতে হবে।
আপনার সবচেয়ে পুরোনো কোডে আটকে থাকা ব্যবসায়িক নিয়ম, যাঁরা তা বোঝেন তাঁরা চলে যাওয়ার আগে কীভাবে ধরবেন? একটি লিগ্যাসি সিস্টেমের মূল্যের বেশিরভাগই অনথিবদ্ধ আচরণ যা কয়েক দশকের প্রান্তিক কেস, বিধি ও বাগ-সামঞ্জস্যপূর্ণ সমাধান জমিয়েছে, এবং তা কোনো লিখিত রেকর্ডে নয়, অবসরপ্রাপ্ত বিশেষজ্ঞদের সংকুচিত পুলে বাস করে। একটি বড় প্রতিষ্ঠানের জন্য এটি সেই একটি ঝুঁকি যা মানুষ চলে গেলে আর কিনে ফেরানো যায় না, তাই আরও দৃশ্যমান প্ল্যাটফর্ম কাজের আগে এটি অর্থায়ন প্রাপ্য। প্রতিদ্বন্দ্বী টান হলো জ্ঞান ধারণ (ডকুমেন্টেশন, চারিত্র্য-নির্ণায়ক টেস্ট, রিভার্স ইঞ্জিনিয়ারিং, ক্রস-প্রশিক্ষণ) এমন বাড়তি বোঝা মনে হয় যা কিছুই পাঠায় না, ঠিক যে কারণে তা স্থগিত হয়। কে জটিল জ্ঞান ধারণ করেন, তাঁরা চলে যাওয়ার কতটা কাছে, এবং বর্তমান আচরণ আজ কোন টেস্ট কভারেজ পিন করে তার তালিকা আনুন। নিয়ন্ত্রিত ও সরকারি পরিবেশে পুরোনো কোডে এনকোড করা বিধিবদ্ধ নিয়মকে সম্মতি সম্পদ গণ্য করুন: সেগুলো নিঃশব্দে হারানো প্রযুক্তিগত ঋণ নয়, আইনি ঝুঁকি।
খাতভেদে দৃষ্টিভঙ্গি
স্টার্টআপ। আপনার লিগ্যাসি আপনার নিজের তাড়াহুড়োর MVP, কোনো মেইনফ্রেম নয়: একটি প্রোটোটাইপ যা এখন রাজস্ব বহন করে এবং যা সবাই ছুঁতে ভয় পায়। তা পুনর্লিখন করবেন না। সবচেয়ে ভীতিকর মডিউলকে একটি পরিচ্ছন্ন ইন্টারফেসের পেছনে মুড়ুন, তার আচরণ পিন করতে চারিত্র্য-নির্ণায়ক টেস্ট যোগ করুন, এবং ক্রমবর্ধমানভাবে কার্যকারিতা বের করুন যাতে প্রতিটি ছোট রিলিজ মূল্য পাঠায় ও ঝুঁকি কমায়। স্ক্র্যাচ থেকে পুনর্নির্মাণের কোনো রানওয়ে আপনার নেই, তাই বিকল্প সৌন্দর্যের চেয়ে বেশি গুরুত্বপূর্ণ।
ছোট ব্যবসা। কোনো আধুনিকীকরণ দল নেই আর বাজেট কম, তাই ব্যবহারিক পদক্ষেপ সাধারণত কাজ করা সিস্টেমকে কাজ করতে রাখা: যিনি একমাত্র এটি বোঝেন তাঁর জ্ঞান ধরুন, কয়েকটি স্বয়ংক্রিয় টেস্টসহ সোর্স কন্ট্রোলে আনুন, এবং বিশেষায়িত পুনর্নির্মাণের বদলে একজন বিক্রেতা বা প্যাকেজ পণ্যের ওপর ভর করুন। সিদ্ধান্তকে কেনা-বনাম-বানানো ফ্রেম করুন, এবং সামর্থ্য সাধারণ পণ্য হলে কেনা পছন্দ করুন। আপনার সীমিত পরিশ্রম ব্যয় করুন সেই একটি সিস্টেমে যার ব্যর্থতা ব্যবসা থামাবে, যা কেবল সবচেয়ে পুরোনো দেখায় তাতে নয়।
এন্টারপ্রাইজ। সমস্যা পোর্টফোলিও পরিসর: ডজন ডজন সিস্টেম, অনেক দল, এবং সম্পত্তি-ব্যাপী জ্ঞান ঝুঁকি। একটি ভাগ করা ঝুঁকি-বনাম-মূল্য মূল্যায়ন চালান, ক্রমবর্ধমান প্যাটার্নে (স্ট্র্যাংলার ফিগ ও ব্রাঞ্চ-বাই-অ্যাবস্ট্র্যাকশন) প্রমিত হোন, এবং ডেটা স্থানান্তর ও দ্বৈত-চালনাকে সবাই বিশ্বাস করে এমন মিলকরণসহ প্রথম-শ্রেণির শৃঙ্খলা গণ্য করুন। আধুনিকীকরণকে বীরত্বপূর্ণ প্রকল্পের ছড়ানো না রেখে ঝুঁকির গতিপথের বিপরীতে নিরন্তর পোর্টফোলিও হিসেবে শাসন করুন, এবং দায়িত্বশীলতা ও জ্ঞান ধারণ সুস্পষ্টভাবে বাজেট করুন যাতে কোনো জটিল সিস্টেম একজন অবসরপ্রাপ্ত রক্ষণাবেক্ষণকারীর ওপর নির্ভর না করে।
সরকার। কয়েক দশকে এনকোড করা বিধিবদ্ধ বাধ্যবাধকতা, ক্রয়ের নিয়ম এবং বিঘ্নিত করা যায় না এমন নাগরিক সেবা বিগ-ব্যাং প্রতিস্থাপনকে বিশেষভাবে বিপজ্জনক করে। টুকরো-টুকরো কাটওভারসহ ক্রমবর্ধমান স্ট্র্যাংলার-ফিগ স্থানান্তর পছন্দ করুন, মিলকরণ ও দীর্ঘ সমান্তরাল চালনার মাধ্যমে প্রমাণ করুন একটিও নাগরিক রেকর্ড হারায়নি বা ভুল গণনা হয়নি, এবং পুরো সময় ফেরার ব্যবস্থা রাখুন। ক্রয়ে অস্বচ্ছ অনুবাদের বদলে ডেটা বহনযোগ্যতা এবং ব্যবসায়িক নিয়ম প্রকাশ দাবি করা উচিত, এবং যেকোনো বহু-বছরের কর্মসূচিকে আগে নিরীক্ষণযোগ্য মূল্য দিতে হবে এবং মাঝপথে থামলে জনসাধারণের যাচাই টিকতে হবে।
উদাহরণ
স্টার্টআপ। তিন বছরের পুরোনো একটি স্টার্টআপের মূল MVP নিজেই এক ধরনের লিগ্যাসি হয়ে উঠেছে: একটি তাড়াহুড়োর প্রোটোটাইপ যা এখন প্রকৃত রাজস্ব সামলায় এবং যা ছুঁতে সবাই ভয় পায়। পুনর্লিখনের বদলে দল সবচেয়ে খারাপ মডিউলকে একটি পরিচ্ছন্ন ইন্টারফেসের পেছনে মোড়ে, তার বর্তমান আচরণ পিন করতে চারিত্র্য-নির্ণায়ক টেস্ট যোগ করে, এবং কয়েক মাস ধরে কার্যকারিতা টুকরো টুকরো করে তা থেকে সরায়। প্রতিটি ছোট রিলিজ মূল্য পাঠায় এবং ভীতিকর অংশ ছোট করে, তাই স্টার্টআপ এমন একটি স্ক্র্যাচ-থেকে-পুনর্নির্মাণে কোম্পানি বাজি না ধরে রক্ষণাবেক্ষণযোগ্য সিস্টেম পায়, যা সে সামর্থ্য রাখে না।
এন্টারপ্রাইজ। একটি বড় বীমাকারী একটি মেইনফ্রেম COBOL সিস্টেমে পলিসি প্রশাসন চালায়, যা নির্ভরযোগ্য কিন্তু বদলাতে ব্যয়বহুল এবং অবসরের কাছাকাছি হাতে-গোনা ইঞ্জিনিয়ারদের দ্বারা রক্ষণাবেক্ষণ করা। পুনর্লিখনের বদলে বীমাকারী মেইনফ্রেমকে আধুনিক API দিয়ে মোড়ে এবং স্ট্র্যাংলার ফিগ প্রয়োগ করে: নতুন কোট-অ্যান্ড-বাই ও সেলফ-সার্ভিস সামর্থ্য একটি আধুনিক প্ল্যাটফর্মে গড়া হয় এবং ফাসাদের মাধ্যমে রাউট করা হয়, যখন মূল পলিসি রেকর্ড মেইনফ্রেমে থাকে। সমান্তরালে দল ব্যবসায়িক নিয়ম নথিবদ্ধ করে এবং COBOL ঘিরে চারিত্র্য-নির্ণায়ক টেস্ট যোগ করে। কয়েক বছরে সামর্থ্যের পর সামর্থ্য মেইনফ্রেম থেকে সরে, প্রতিটি রিলিজ মূল্য দিয়ে, যতক্ষণ না অবশিষ্ট কেন্দ্র সংকটের অধীনে নয়, বীমাকারীর নিজের শর্তে অবসর নিতে পারে।
সরকার। একটি সামাজিক নিরাপত্তা সংস্থাকে দশকের পুরোনো একটি সুবিধা গণনা সিস্টেম আধুনিক করতে হয় যা লক্ষ লক্ষ নাগরিককে অর্থ দেয় এবং বিঘ্নিত বা ভুলভাবে অর্থ দেওয়া যায় না। তুলনীয় ব্যর্থ কর্মসূচি অধ্যয়নের পর সে বিগ-ব্যাং প্রতিস্থাপন প্রত্যাখ্যান করে। তার বদলে সে ডেটা প্রোফাইল ও পরিষ্কার করে, নিয়ন্ত্রণ মোটের বিপরীতে পূর্ণ মিলকরণসহ স্বয়ংক্রিয় স্থানান্তর গড়ে, এবং নতুন সুবিধা ইঞ্জিন পুরোনোটির সঙ্গে সমান্তরালে অনেক মাস চালায়, দুটিকে একই দাবি খাওয়ায় এবং প্রতিটি গণনা তুলনা করে, প্রতিটি অসঙ্গতি তদন্ত করে (প্রায়ই সংরক্ষণ করতে হবে এমন অনথিবদ্ধ লিগ্যাসি নিয়ম আবিষ্কার করে)। নতুন সিস্টেম পুরোনোটির সঙ্গে অত্যন্ত উচ্চ আস্থায় না মেলা পর্যন্ত সে সুবিধার ধরন ধরে ধরে কাটওভার করে, পুরো সময় ফেরার ব্যবস্থা রেখে। স্ট্র্যাংলার ফাসাদ নাগরিকদের রূপান্তর জুড়ে একটি নিরবচ্ছিন্ন সেবা দেখতে দেয়।
ব্যবসায়িক যুক্তি: প্রেরণা, ROI ও TCO
লিগ্যাসি আধুনিকীকরণের একটি অস্বাভাবিক ব্যবসায়িক যুক্তি আছে, কারণ সবচেয়ে বড় খরচ প্রায়ই নিষ্ক্রিয়তার খরচ এবং সবচেয়ে বড় ঝুঁকি আধুনিকীকরণ প্রকল্প নিজেই। আধুনিক না করার ক্রমবর্ধমান খরচ সুনির্দিষ্ট: অপ্রচলিত প্ল্যাটফর্মে বাড়ন্ত রক্ষণাবেক্ষণ ও লাইসেন্সিং, ক্রমশ দুর্লভ ও ব্যয়বহুল বিশেষজ্ঞ কর্মীবাহিনী, নতুন নিয়ন্ত্রক বা সেবা চাহিদা দ্রুত পূরণে অক্ষমতা, এবং সিস্টেম বোঝার কেউ অবশিষ্ট না থাকায় একটি বিপর্যয়কর ব্যর্থতার বাড়ন্ত ঝুঁকি। তার বিপরীতে আধুনিকীকরণের খরচ উচ্চ, এবং বিগ ব্যাং হিসেবে করা হলে ব্যর্থতার প্রকৃত উচ্চ সম্ভাবনা বহন করে। ঠিক এ কারণেই ক্রমবর্ধমান পদ্ধতি ROI-এর জন্য গুরুত্বপূর্ণ: এটি একটি বড় বাজিকে ছোট বাজির ধারায় রূপান্তর করে যার প্রতিটি মূল্য ফেরত দেয় এবং থামানো যায়।
পছন্দকে নতুনভাবে ফ্রেম করে নেতৃত্বের কাছে যুক্তি দিন। প্রশ্ন “আধুনিক করব কি না” নয়। প্রশ্ন “এখনই ক্রমবর্ধমানভাবে আধুনিক করব, নাকি বাড়ন্ত দায়িত্বশীলতা খরচ দেব এবং পরে সংকটের অধীনে বাধ্য, উচ্চতর-ঝুঁকির আধুনিকীকরণের মুখোমুখি হব”। স্থিতাবস্থার TCO পরিমাপ করুন (প্ল্যাটফর্ম ও লাইসেন্স খরচ, দুর্লভ দক্ষতার প্রিমিয়াম, অপুনরুদ্ধারযোগ্য বিভ্রাটের ঝুঁকি-ওজনযুক্ত খরচ) এবং সেবা চালু রেখে প্রতিটি ধাপে ঝুঁকি ও খরচ কমানো একটি পর্যায়ক্রমিক কর্মসূচির সঙ্গে তুলনা করুন। অত্যন্ত গুরুত্বপূর্ণভাবে, জোর দিন যে যেকোনো প্রস্তাবিত পুনর্লিখন গড়তে হবে আগে ও ঘন ঘন মূল্য দিতে। যে কর্মসূচি তিন বছর কিছুই দেয় না এবং সম্পূর্ণ ক্ষতিতে বাতিল হতে পারে তা বিনিয়োগ নয়; এটি জুয়া। স্ট্র্যাংলার পদ্ধতির পক্ষে সবচেয়ে শক্তিশালী ROI যুক্তি হলো বিকল্প: মূল্য নিরন্তর পাঠানো হয় এবং প্রতিষ্ঠান যেকোনো বিন্দুতে গতিপথ সামঞ্জস্য করতে পারে।
অ্যান্টি-প্যাটার্ন ও ফাঁদ
- বিগ-ব্যাং পুনর্লিখন। বহু-বছরের, সব-অথবা-কিছুই-নয় প্রতিস্থাপন যা শেষ পর্যন্ত মূল্য দেয় না এবং প্রায়ই বিপুল খরচে বাতিল হয়।
- না বুঝে পুনর্লিখন। যে কোডের ব্যবসায়িক নিয়ম কখনো নথিবদ্ধ হয়নি তা প্রতিস্থাপন, প্রকৃত ব্যবহারকারী ও আইন যে প্রান্তিক কেসের ওপর নির্ভর করে তা নিঃশব্দে বাদ দেওয়া।
- ডেটাকে কম অনুমান। ডেটা স্থানান্তরকে পরবর্তী ভাবনা গণ্য করা, যখন এটি প্রকল্পের সবচেয়ে কঠিন, সবচেয়ে ঝুঁকিপূর্ণ অংশ।
- দ্বৈত-চালনা এড়ানো। সমান্তরাল তুলনা ছাড়া নতুন সিস্টেমে কাটওভার, প্রকৃত মানুষ প্রভাবিত হওয়ার পরেই অসঙ্গতি আবিষ্কার।
- সমাধান হিসেবে স্বয়ংক্রিয় অনুবাদ। COBOL-কে আধুনিক ভাষায় মেশিন-অনুবাদ করে ভাবা কাজ শেষ, দুর্বোধ্য কোড তৈরি যা পুরোনো যুক্তি অবিকল পুনরুৎপাদন করে।
- ঝুঁকি নয়, বয়স দিয়ে আধুনিকীকরণ। পুরোনো-কিন্তু-স্থিতিশীল সিস্টেমে পরিশ্রম ব্যয় যখন উচ্চ-ঝুঁকি, উচ্চ-পরিবর্তন সিস্টেম অপেক্ষা করে।
- জ্ঞান হারানো। ব্যবসায়িক নিয়ম ধরা ও চারিত্র্য-নির্ণায়ক টেস্ট যোগ ছাড়া শেষ রক্ষণাবেক্ষণকারীদের অবসর নিতে দেওয়া।
- ফেরার ব্যবস্থা নেই। নতুন সিস্টেম প্রকৃত লোড ও প্রকৃত ডেটায় অসদাচরণ করলে ফেরার পথ ছাড়া কাটওভার।
পরিপক্বতা মডেল
- স্তর ১: সূচনা। লিগ্যাসি সিস্টেমকে ভয় করা ও জমিয়ে রাখা হয়; পরিবর্তন এড়ানো হয়। কোনো তালিকা বা ঝুঁকি মূল্যায়ন নেই। আধুনিকীকরণ, আদৌ চেষ্টা হলে, হতাশা-চালিত অ্যাড হক সব-অথবা-কিছুই-নয় পুনর্লিখন। জ্ঞান কয়েকটি অবসরপ্রাপ্ত মাথায়, কিছুই লেখা নেই।
- স্তর ২: বিকাশ। কিছু দলের একটি তালিকা এবং ঝুঁকির মোটামুটি ধারণা আছে, আর কয়েকটি লিগ্যাসি সিস্টেম অ্যাক্সেসের জন্য API দিয়ে মোড়া। ক্রমবর্ধমান প্যাটার্ন জানা কিন্তু অসমভাবে প্রয়োগ করা, এবং চিন্তা এখনো বিগ-ব্যাং পুনর্লিখনের দিকে সরে। ডেটা স্থানান্তর চেষ্টা করা কিন্তু কম অনুমান করা, এবং চর্চা দল ভেদে ব্যাপকভাবে ভিন্ন।
- স্তর ৩: মানসম্মতকরণ। সিস্টেম নথিবদ্ধ, প্রতিষ্ঠান-ব্যাপী পদ্ধতিতে ঝুঁকি ও মূল্য দিয়ে অগ্রাধিকার পায়। ক্রমবর্ধমান প্যাটার্ন (স্ট্র্যাংলার ফিগ, ব্রাঞ্চ-বাই-অ্যাবস্ট্র্যাকশন) প্রয়োগ করা ডিফল্ট, এবং প্রতিটি আধুনিকীকরণ একটি প্রমিত প্লেবুক অনুসরণ করে। ডেটা স্থানান্তর কাটওভারের আগে দ্বৈত-চালনাসহ পরিকল্পিত, মিলকরণ করা প্রচেষ্টা, এবং জ্ঞান ধারণ ও চারিত্র্য-নির্ণায়ক টেস্ট ঐচ্ছিকের বদলে আবশ্যক চর্চা।
- স্তর ৪: ব্যবস্থাপনা। আধুনিকীকরণ তথ্য দিয়ে মাপা ও নিয়ন্ত্রিত। সম্পত্তি ভিত্তিরেখা বহন করে: প্রতি সিস্টেমে রক্ষণাবেক্ষণকারী সংখ্যা ও অবসর দিগন্ত, চারিত্র্য-নির্ণায়ক-টেস্ট কভারেজ, স্থানান্তর মিলকরণ পাস হার, দ্বৈত-চালনা অসঙ্গতি সংখ্যা, এবং প্রতি ধাপে পাঠানো মূল্য, সবই লক্ষ্যের বিপরীতে অনুসরণ করা। দায়িত্ব-নাকি-প্রতিস্থাপন সিদ্ধান্ত এবং কাটওভার যাওয়া-না-যাওয়ার সিদ্ধান্ত এই প্রমাণে নেওয়া হয়, এবং জ্ঞান-ঝুঁকি সীমা পেরোনো সিস্টেম সংকটের অপেক্ষার বদলে পদক্ষেপ ট্রিগার করে।
- স্তর ৫: সমন্বয়। আধুনিকীকরণ নিরন্তর, ব্যবসা ও ঝুঁকি পরিকল্পনার সঙ্গে একীভূত এবং খাপ-খাওয়ানো। পোর্টফোলিও ঝুঁকির গতিপথের বিপরীতে (বিশেষত জ্ঞান ঝুঁকি) সরলে পুনর্ভারসাম্যে আনা হয়, ক্রমবর্ধমান প্রতিস্থাপন রুটিন ও নাটকহীন, প্রতিটি ধাপ মূল্য দেয় ও ফেরানো-যায়, এবং প্রতিষ্ঠান ইচ্ছাকৃতভাবে গতি চালায়। প্রতিটি স্থানান্তরের শিক্ষা ভাগ করা প্লেবুকে ফিরে যায় যাতে সময়ের সঙ্গে পুরো সম্পত্তি উন্নত হয়।
আলোচনার ভাবনা
- আপনার সবচেয়ে জটিল লিগ্যাসি সিস্টেমের জন্য কতজন মানুষ এখনো এটি রক্ষণাবেক্ষণ করতে পারেন, এবং তাঁরা চলে যাওয়ার কতটা কাছে?
- আপনি কোথায় বিগ-ব্যাং পুনর্লিখনে প্রলুব্ধ, এবং তার বদলে একটি ক্রমবর্ধমান পদ্ধতি প্রথম তিন মাসে কী মূল্য পাঠাতে পারত?
- আপনার সবচেয়ে পুরোনো সিস্টেমের ব্যবসায়িক নিয়ম কতটা নথিবদ্ধ, এবং কোড প্রতিস্থাপিত হলে সেগুলোর কী হয়?
- স্থানান্তর করতে হবে এমন ডেটা কি আপনি প্রোফাইল করেছেন, এবং এটি আসলে কতটা নোংরা ও জট পাকানো তা কি জানেন?
- পুরোনো-কিন্তু-স্থিতিশীল কোন সিস্টেমে আপনি আধুনিকীকরণ শক্তি ব্যয় করছেন যা নিরাপদে একা ছাড়া যেত?
- কাটওভারের আগে আপনি কি নতুন সিস্টেম পুরোনোটির সঙ্গে সমান্তরালে চালিয়ে প্রমাণ করতে পারেন যে তারা একমত?
প্রধান শিক্ষা
- লিগ্যাসি মানে মূল্যবান ও ভিত্তিমূলক; বদলানোর আগে একটি সিস্টেমকে সম্মান ও বুঝুন।
- স্ট্র্যাংলার ফিগ ও ব্রাঞ্চ-বাই-অ্যাবস্ট্র্যাকশন দিয়ে ক্রমবর্ধমানভাবে আধুনিক করুন, নিরন্তর মূল্য সরবরাহ করে এবং প্রতিটি পরিবর্তন ছোট ও ফেরানো-যায় রেখে।
- বিগ-ব্যাং পুনর্লিখনকে ডিফল্ট ব্যর্থতার ধরন গণ্য করুন; সত্যিই অটেকসই প্ল্যাটফর্মের জন্য সংরক্ষণ করুন এবং তখনও ভাঙুন।
- বয়স নয়, ঝুঁকি ও মূল্য (বিশেষত জ্ঞান ঝুঁকি) দিয়ে অগ্রাধিকার দিন; কিছু পুরোনো সিস্টেম প্রতিস্থাপনের বদলে দায়িত্বে রাখাই সবচেয়ে ভালো।
- ডেটা স্থানান্তর ও দ্বৈত-চালনা প্রচেষ্টার কেন্দ্র; প্রোফাইল করুন, মেলান, সমান্তরালে চালান এবং ফেরার ব্যবস্থা রাখুন।
- সবচেয়ে শক্তিশালী ব্যবসায়িক যুক্তি হলো বিকল্প: ক্রমবর্ধমান আধুনিকীকরণ একটি বড়, ঝুঁকিপূর্ণ বাজিকে অনেক ছোট, মূল্য-ফেরত-দেওয়া বাজিতে রূপান্তর করে।
তথ্যসূত্র ও আরও পড়ার জন্য
- Michael Feathers, Working Effectively with Legacy Code
- Martin Fowler, “StranglerFigApplication” এবং “BranchByAbstraction”
- Sam Newman, Monolith to Microservices
- Nicholas Carr / মেইনফ্রেম ও COBOL নির্ভরতা নিয়ে শিল্প অধ্যয়ন (লিগ্যাসি সম্পত্তির পরিসরের প্রেক্ষাপট)
- Robert Annett, Working with Legacy Systems
- Eric Evans, Domain-Driven Design (অ্যান্টি-করাপশন স্তর)
- Gregor Hohpe, Enterprise Integration Patterns এবং The Software Architect Elevator
- Standish Group CHAOS Report (বড় প্রকল্প ও পুনর্লিখন ব্যর্থতার হারের প্রমাণ)