আপনি কীভাবে আপনার প্রকল্পগুলির জন্য ব্যবহার করেন ওপেন সোর্স ফ্রেমওয়ার্কগুলির পরিবর্তনের সাথে আপনি কীভাবে সামলাবেন?


9

এটি আমার ব্যক্তিগত কৌতুক হতে পারে তবে লাইব্রেরি / ফ্রেমওয়ার্কগুলি তারা ব্যবহার করে - আমি লাইভ প্রকল্পগুলিতে আপ টু ডেট কোড রাখতে চাই। এর একটি অংশ হ'ল আমি বিশ্বাস করি যে কোনও ওয়েব অ্যাপ্লিকেশনটি পুরোপুরি প্যাচড এবং আপ টু ডেট থাকলে আরও সুরক্ষিত। এর অংশটি আমার পক্ষে আবেশাত্মক বাধ্যতামূলকতার স্পর্শ মাত্র।

গত সাত মাসে আমরা আমাদের সফ্টওয়্যারটির একটি নতুন পুনর্লিখন করেছি। আমরা জারায়া কাঠামোটি ফেলে দিয়েছি, যা ধীরে ধীরে এবং মূলত পণ্য হিসাবে মৃত ছিল এবং কেক পিএইচপিতে রূপান্তরিত হয়েছিল। (আমরা কেককে বেছে নিয়েছি কারণ এটি আমাদের সফ্টওয়্যারটির খুব দ্রুত পুনর্লিখন করার সুযোগ দিয়েছে এবং জারায়াকে এটিকে আমাদের যথার্থ মূল্যবান করে তুলতে যথেষ্ট পারফরম্যান্স তৈরি করেছে।)

আমরা সিম্পল টেস্টের সাথে ইউনিট টেস্টিং বাস্তবায়ন করেছি এবং সমস্ত ফাইল এবং ডাটাবেস নামকরণ কনভেনশন ইত্যাদি অনুসরণ করেছি

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

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

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

আপনি যে ওপেন সোর্স প্রকল্পগুলি ব্যবহার করেন তাতে আমূল পরিবর্তনগুলি কীভাবে মোকাবেলা করবেন? এবং, যদি আপনি একটি ওপেন সোর্স পণ্য বিকাশ করে থাকেন, আপনি নতুন সংস্করণগুলি বিকাশ করার সময় কি আপগ্রেডের পথগুলি মনে রাখবেন?

উত্তর:


5

ওপেন সোর্সটি ইস্যুটি অনন্য নয়। বাণিজ্যিক প্রকল্পগুলির ক্ষেত্রেও একই সমস্যা দেখা দেয়। হয়তো আরও বেশি কারণ আপনার কাছে উত্স নেই কারণ আপনি যদি সংস্থাটির সমর্থন বাদ দেন তবে আপনি নিজেকে বজায় রাখতে পারবেন।

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

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


এটি বাণিজ্যিক পণ্যগুলিতেও ঘটে এমন সঠিক পর্যবেক্ষণের জন্য +1।
অ্যামি আনুসেজুস্কি

3

আমরা আমাদের কোডকে মডিউলাইজ করে এই সমস্যাটি মোকাবেলা করেছি।

আমাদের প্রাথমিক ওয়েবসাইটটি প্রায় আট বছর আগে নির্মিত হয়েছিল, এবং আমরা এটির জন্য যথেষ্ট ভাগ্যবান যে এটি প্রাথমিক পর্যায়ে স্প্রিং ফ্রেমওয়ার্কের অবদানকারীদের দ্বারা নির্মিত হয়েছিল তাই এটি ছিল বেশ সুন্দরভাবে নির্মিত একটি ভিত্তি। তবে দুর্ভাগ্যক্রমে আমরা যথেষ্ট দুর্ভাগ্যও ছিলাম যে এই বিকাশকারীটি যেদিকে চলছে সে সম্পর্কে একটি যুক্তির পরে স্প্রিংকে কাঁটাচামচ করার সিদ্ধান্ত নিয়েছে, সুতরাং এই কোডবেসটি এখন স্প্রিংয়ের ১.১.৪ (বা সেই ভিনটেজের কোনও কিছু) এর অবিস্মরণীয় কাঁটাচায় আটকে আছে।

আমরা স্প্রিংয়ের নতুন সংস্করণে যাওয়ার জন্য কোডটি পুনরায় লেখার চেষ্টা করেছি, তবে এটি অত্যন্ত কঠিন প্রমাণিত proved সুতরাং আমাদের সমাধানটি ছিল সম্পূর্ণ নতুন অ্যাপ্লিকেশন হিসাবে মডিউল হিসাবে সাইটের নতুন বৈশিষ্ট্যগুলি তৈরি করা শুরু করা, যেমন স্প্রিং ৩.x, হাইবারনেট ৩.6 ইত্যাদি ইত্যাদি সর্বশেষ ফ্রেমওয়ার্কগুলি ব্যবহার করে start

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

দুটি অ্যাপ্লিকেশনকে যোগাযোগ করা দরকার, উদাহরণস্বরূপ যখন কোনও সদস্য সাইটে লগইন করে (আমাদের নতুন অ্যাপ্লিকেশন ব্যবহার করে) আমাদের যে পুরানো অ্যাপ্লিকেশনটি এখন তারা লগ ইন করেছে তা আমাদের জানানোর দরকার We স্থানীয় হোস্ট। দুটি অ্যাপ্লিকেশনের মধ্যে সংহত হওয়ার পরিমাণটি খুব কম হয়ে গেছে।

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

আমি ধারণা করি যে সময়ের সাথে সাথে আমরা সম্পূর্ণরূপে অপ্রয়োজনীয় না হওয়া অবধি মূল অ্যাপ্লিকেশনটিকে আরও বেশি করে প্রতিস্থাপন করব। এই কৌশলটির দুর্দান্ত জিনিসটি হ'ল আমরা ধীরে ধীরে ছোট, কম ঝুঁকিপূর্ণ পরিবর্তনগুলির মাধ্যমে এটি ধীরে ধীরে করতে পারি - একটি নতুন সিস্টেমে বিশাল এবং ঝুঁকিপূর্ণ হঠাৎ সুইচওভারের প্রয়োজন নেই।


2

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


2

এবং এটিই প্রতিবার আমাকে পায়।

প্রতিবার ? আপনি অবশ্যই উল্লেখযোগ্যভাবে খারাপ পছন্দ করা উচিত। এমন একটি উদাহরণ অবশ্যই থাকতে হবে যেখানে এটি ঘটেনি।

যখন ডেভসগুলি একটি নতুন চকচকে খেলনা নিয়ে খেলতে শুরু করবে

এটি একটি ইঙ্গিত। ওপেন সোর্স প্রকল্পগুলি ব্যবহার করার সময় চকচকে নতুন খেলনাগুলি এড়িয়ে চলুন। মুক্তি 1.0 এড়ানো।

আপনি যে ওপেন সোর্স প্রকল্পগুলি ব্যবহার করেন তাতে আমূল পরিবর্তনগুলি কীভাবে মোকাবেলা করবেন?

পদক্ষেপ 1. খুব সাবধানে ওপেন সোর্স প্রকল্পগুলি চয়ন করুন। সর্বদা দুটি বা আরও বেশি প্রতিদ্বন্দ্বী প্রকল্পগুলির তুলনা করুন।

পদক্ষেপ 2. দুটি প্রতিযোগিতামূলক প্রকল্পের তুলনা করার সময়, দেওয়া "প্রয়োজনীয়" বৈশিষ্ট্যটি উপলব্ধ করার চেষ্টা করুন এবং তারা উভয় কীভাবে এটির কাছে যান। একটি নির্দিষ্ট এপিআই খুব তাড়াতাড়ি "বিবাহ" করা এড়িয়ে চলুন।

পদক্ষেপ 3. "দেরী বাঁধাই" এবং "লুজ কাপলিং" এর নকশা নীতিগুলি আলিঙ্গন করুন। ওপেন সোর্স প্রকল্পের পরিবর্তনগুলি থেকে নিরোধ করার চেষ্টা করুন।

পদক্ষেপ ৪. ওপেন সোর্স প্রকল্পগুলি এবং "আপনার নিজের রোলিং" এর মধ্যে স্পষ্টভাবে ব্যয় / উপকারের তুলনা করুন। একবারে, নিজের সমাধান তৈরি করা ওপেন সোর্স সমাধানের সাথে মোকাবিলা করার চেয়ে ভাল be

ফাইলের নাম পরিবর্তন করা খুব বেশি শক্ত হওয়া উচিত নয়। হ্যাঁ, এটি একটি বিশাল, কুরুচিপূর্ণ স্ক্রিপ্ট। হ্যাঁ, রূপান্তরটি করার সময় এটি বেশ কয়েক সপ্তাহ ধরে চালাতে হবে। তবে এটি একটি সীমাবদ্ধ মূল্য।

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


আপনি আমাকে হাইপারবোলে পেয়েছেন :) কিছু পণ্য অন্যদের চেয়ে ভাল আপডেট হয়। jQuery, উদাহরণস্বরূপ, আপগ্রেড করা যথেষ্ট সহজ হয়েছে।
অ্যামি আনুসেজুস্কি

@ অ্যামি: যথেষ্ট ফর্সা ভাল বনাম খারাপ প্রকল্পগুলির তুলনা এবং বৈসাদৃশ্য করতে পারেন। সুতরাং, আপনি উভয় থেকে শিখতে পারেন।
এসলট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.