নির্ভরতা কখন আপডেট করা উচিত?


30

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

এই অ্যাপসের প্রতিটি নির্ভরতা প্রায় দুই বছর ধরে বাসি বসেছিল, এবং যখন কিছুকে অবমূল্যায়ন করা হয়েছিল এবং আমরা 'সূর্যাস্ত' পিরিয়ডে পৌঁছেছি তখন সেগুলি আপডেট করার জন্য বা তাদের প্রতিস্থাপনের জন্য এটি একটি প্রধান মাথাব্যথা হয়ে দাঁড়িয়েছে। আমি গত এক মাস ধরে 30 ঘন্টা ধরে কাটিয়েছি এবং ধীরে ধীরে সমস্ত দ্বন্দ্ব এবং ভাঙ্গা কোড সমাধান করে।

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

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

পিএস - আমার ব্যক্তিগত রেল প্রকল্পগুলির জন্য, আমি জেমনেসিয়াম নামক একটি পরিষেবা ব্যবহার করি যা আপনার নির্ভরতাগুলি ট্র্যাক করে যাতে আপনাকে যেমন সুরক্ষা দুর্বলতার বিষয়ে অবহিত করা যায়। এটি একটি দুর্দান্ত পরিষেবা, তবে আমি উল্লিখিত প্রকল্পগুলির জন্য আমাদের ম্যানুয়ালি নির্ভরতা পরীক্ষা করতে হবে।

উত্তর:


32

আপনার সাধারণত নির্ভরতা আপগ্রেড করা উচিত যখন:

  1. এটা প্রয়োজনীয়
  2. এটি করার একটি সুবিধা আছে
  3. এটি না করা অসুবিধাজনক

(এগুলি পারস্পরিক একচেটিয়া নয়))

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

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

প্রেরণা 3 সবচেয়ে নরম। ব্যবহারকারী গল্পগুলি "নদীর গভীরতানির্ণয়" নিয়ে নিজেকে উদ্বেগ দেয় না এবং কখনও উল্লেখ করে না "এবং অবকাঠামোটিকে বর্তমানের পিছনে এন রিলিজ ছাড়া আর রাখবে না।" সংস্করণ প্রবাহের অসুবিধাগুলি (মোটামুটিভাবে, কার্ভের পিছনে পড়ার সাথে যুক্ত কারিগরি debtণ) নিঃশব্দে ছিটকে পড়ে, তারপরে প্রায়শই বিরতির মাধ্যমে নিজেকে ঘোষণা করে। "দুঃখিত, সেই এপিআই আর সমর্থিত নয়!" এমনকি চতুর দলের মধ্যেও ইনক্রিমেন্টালিজমকে অনুপ্রাণিত করা এবং প্রদত্ত স্প্রিন্ট বা রিলিজ সম্পূর্ণরূপে যখন অগ্রণী হিসাবে দেখা যায় না তখন উপাদানগুলির সতেজতা "শীর্ষে থাকা" কঠিন হতে পারে। যদি কেউ আপডেটের পক্ষে পরামর্শ না দেয় তবে তারা বিনা শর্তে যেতে পারেন। ভাঙতে প্রস্তুত না হওয়া পর্যন্ত এমনকি চূর্ণবিচূর্ণ না হওয়া অবধি এই চাকাটি কচলাতে পারে না।

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


5

গ্রন্থাগারগুলি আপডেট করার প্রয়োজন হলে আপডেট করা উচিত। এর অর্থ, যদি আপডেট করার কোনও মূল্য হয় না, আপনার উচিত হবে না।

আপনার বিশেষ ক্ষেত্রে, আপনি একটি পুরানো টেক স্ট্যাক থেকে নতুন একটিতে স্থানান্তরিত হয়েছিলেন এবং এটি করার জন্য আপনাকে নিজের নির্ভরতা আপডেট করতে বাধ্য করা হয়েছিল। সেই মুহূর্তটি নির্ভরতা আপডেট করার সঠিক সময়।

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

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

এছাড়াও, যেহেতু আমরা রিফ্যাক্টরিংয়ে আছি, ইউনিট টেস্টিং সম্পর্কে কিছুটা পড়ুন, কারণ এই ধরণের কাজ করার সময় এটি অনেক সাহায্য করবে।


4

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

নির্ভরতা আপগ্রেড করার ব্যয় যতদিন কম থাকে ততক্ষণ তা আপ টু ডেট রাখার উপযুক্ত:

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

যদি নির্ভরশীলতা আপগ্রেড করা কম প্রচেষ্টা না হয় (যেমন: আপনাকে স্বয়ংক্রিয়ভাবে আপগ্রেড পরীক্ষা করতে হবে বা জানা সমস্যাগুলি / ব্রেকিং পরিবর্তনগুলি হ'ল) ​​তবে আপনার অন্যান্য কাজের বিপরীতে আপনার পক্ষে দক্ষতা ও কৌতূহল মাপতে হবে। পুরানো নির্ভরতা হ'ল এক ধরণের স্বল্প সুদযুক্ত প্রযুক্তিগত debtণ, এবং সেই অনুযায়ী আচরণ করা উচিত।


2

আপনার সংস্করণগুলির বিকল্পগুলি সমর্থিত না হলে আপনি জেনে বুঝে আপনার নির্ভরতার পুরানো সংস্করণগুলি ব্যবহার করেন এমন কোনও রিলিজ আপনার করা উচিত নয়।

যেমন আপনি যদি ভি 1 এ থাকেন এবং এটি এখনও সমর্থিত হয় তবে আপনি এখনও ভি 1 এর সর্বশেষতম সংস্করণটি ব্যবহার করতে পারেন।

আপনার কেবলমাত্র তারিখের বাইরে যাওয়া উচিত যদি তা হয়:

উত্তর: আপনি কিছু সময়ের মধ্যে মুক্তি প্রকাশ করেন নি।

বি: আপনি এত দিন v1 এ ছিলেন যে এটি আর সমর্থিত নয়

আপডেটগুলি কোনও কারণে প্রকাশিত হয়, সেগুলিতে সুরক্ষা ফিক্স রয়েছে যা আপনাকে বোর্ডে নেওয়া উচিত।

যদি আপনার নির্ভরতার নতুন সংস্করণ প্রকাশিত হয় তবে আপনার একটি প্রকাশও করা উচিত


1

আমি মনে করি এটি কিছুটা হলেও প্রশ্নাগুলির গ্রন্থাগারের উপর নির্ভরশীল, তবে আমার নিজের মতোই নির্ভরশীল মাথাব্যথাও হয়েছে।

সাধারণ জ্ঞান আমাকে বলে যে একটি বড় সংস্করণ সম্ভবত আপগ্রেড করার সঠিক সময় এবং একটি ছোটখাটো সংস্করণ যা একটি মারাত্মক ত্রুটি সম্বোধন করে বা একটি উল্লেখযোগ্য সুবিধা অন্তর্ভুক্ত করে তা এটিকে ছাড়িয়ে যায়।

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


0

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

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

পুরানো libs ব্যবহার করে কোন লজ্জা নেই। যখন পরিবর্তনের প্রয়োজন হয় তা বেদনাদায়ক হতে পারে তবে এটি কাজের একটি অংশ।


আমি একমত যে প্রতিটি আপগ্রেড ভালভাবে বোঝা উচিত। এবং যদি আপনি এটি পরিশোধ করতে পারেন তবে প্রযুক্তিগত debtণ থাকা ঠিক আছে। আমাদের সর্বশেষতম সংস্করণে থাকার জন্য নিয়োগ দেওয়া হয়নি (এবং কেবলমাত্র চিন্তাভাবনা বা বিশ্লেষণ ছাড়াই সর্বদা সর্বশেষ সংস্করণগুলি তাড়া করে), তবে সর্বশেষ সংস্করণগুলি আমাদের করা কাজের ক্ষেত্রে সহায়তা করতে পারে।
জিওএক্সিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.