শেষ সময়সীমা নিয়ে কি মন্তব্য করবেন?


51

পটভূমি

আমি এমন একটি দলে কাজ করছি যা শূন্য-ডাউনটাইম মোতায়েন বাস্তবায়ন করতে চাইছে। আমরা এটি অর্জন করতে নীল / সবুজ স্থাপনার কৌশলটি ব্যবহার করার পরিকল্পনা করছি। গবেষণাটি করার মধ্যে আমি যে জিনিসটি উপলব্ধি করছি তার মধ্যে একটি হ'ল এটি ডাটাবেস পরিবর্তন করা কতটা জটিল হয়ে ওঠে। কলামটির নাম পরিবর্তন করার মতো একটি সাধারণ ক্রিয়াকলাপটি শেষ না হওয়া পর্যন্ত 3 টি সম্পূর্ণ রিলিজ চক্র নিতে পারে!

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

আমি যা খুঁজছি

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

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

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

// TODO by v55: Create migration to move constraints to new column, remove references to old column in app
// TODO by v56: Create migration to drop old column

এটি প্রয়োগ করা মোটামুটি সহজ বলে মনে হচ্ছে তবে আমি ভাবছি যে এরকম কিছু ইতিমধ্যে উপস্থিত রয়েছে কিনা, কারণ আমি চাকাটি পুনরায় উদ্ভাবন করতে চাই না।

অতিরিক্ত চিন্তা

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

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


19
টোডো ইস্যুটি টুলিংয়ের চেয়ে শৃঙ্খলার বিষয়।
ব্র্যান্ডন

16
আমি মনে করি মানুষ সকলেই ভুল করে, এবং সরঞ্জামকরণ এটিকে প্রশমিত করার একটি ভাল উপায় হতে পারে।
জোশুয়া ওয়ালশ


3
এই প্রোগ্রামটিম্যাটিকভাবে করা সম্পর্কে কি। আমি বলতে চাইছি কোনও শ্রেণীর সদস্যকে আপনার সংস্করণ লিখুন। "ক্লাস ওয়াই" বার্তা সহ ভার্সন == 56 সমান হয় তবে অ্যাপ্লিকেশনটি শুরু করতে ব্যর্থ হবে আপনার এই বৈশিষ্ট্যটি থাকা দরকার যেমন এই জাতীয় বার্তাগুলির একটি তালিকা থাকতে পারে। আপনি কি মনে করেন?
টোমর বেন ডেভিড

6
নায়ে-ক্রেতাদের নির্দেশিত, আমি একমত নই: আমাদের কোড বেসটি অন্যান্য অনেকগুলি উপাদানের উপর নির্ভর করে যা আমরা কাজ করি না, তাই আমরা TODO <Bug#>:অন্যান্য উপাদানগুলির সাথে ইস্যুগুলির জন্য কাজের ক্ষেত্রগুলি ট্র্যাক করতে ব্যবহার করি । এই উপাদানগুলির মধ্যে একটিতে একটি বাগ সাফ হয়ে গেলে আপনি সহজেই সম্পর্কিত কাজের ক্ষেত্রগুলি খুঁজে পেতে এবং ঠিক করতে পারেন। এটি কোনও ইস্যু ট্র্যাকার প্রতিস্থাপন করে না, এটি বজায় রাখা আরও সহজ করে তোলে।
টেম্পোরাল

উত্তর:


53

এই প্রশ্নটি আসলে একটিতে দুটি প্রশ্ন।

টোডো মন্তব্য

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

এটা সম্পর্কে কি করতে হবে

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

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

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

ডাটাবেস পরিবর্তন

হ্যাঁ, ডাটাবেস পরিবর্তনগুলি শূন্য-ডাউনটাইম নীতি দিয়ে জটিল। এটিকে কম বেদনাদায়ক করে তুলতে সহায়তা করার জন্য কয়েকটি কৌশল:

পোস্ট-ডিপ্লয় প্রক্রিয়া

পোস্ট-ডিপ্লোয় প্রক্রিয়া তৈরি করুন যা একই প্রকাশের অংশ হিসাবে চলে। তবে আপনি এটি কাজ করতে চান। আমি যে সর্বশেষ সিস্টেমে কাজ করেছি, আমি একটি 4-পর্যায়ের স্থাপনার নকশা করেছি:

  1. preapp ডাটাবেস স্ক্রিপ্ট
  2. ওয়েব অ্যাপ্লিকেশন
  3. পোস্টআপ ডাটাবেস স্ক্রিপ্ট
  4. রক্ষণাবেক্ষণ উইন্ডো ডাটাবেস স্ক্রিপ্ট

ধারণাটি ছিল যে যেখানেই সম্ভব, আমরা যতটা সম্ভব ডাটাবেস পরিবর্তনগুলি প্রি্যাপে রাখব।

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

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

ঘন ঘন মোতায়েন করুন

আপনি যদি প্রায়শই নতুন রিলিজ মোতায়েন করেন তবে আপনি এমন একটি জায়গায় পৌঁছতে পারবেন যেখানে 2 বা 3 টি রিলিজ জুড়ে একটি পরিবর্তন বহন করা নগণ্য। দীর্ঘ প্রকাশের চক্র ডাটাবেস পরিবর্তনের ব্যয়কে প্রশস্ত করে।


18
টোডো মন্তব্যগুলি কাজের ট্র্যাক এবং অগ্রাধিকার দেওয়ার একটি ভয়ঙ্কর উপায়। কেন অর্ধেক সমাপ্ত বিট কোডটি বাতাসে ফ্ল্যাপ করছে তা বোঝানোর এগুলি একটি বৈধ উপায়। নিখুঁত বিশ্বে কোনও কোডই তা করে না। এদিকে,
এইটিতে

6
... প্রযুক্তিগত debtণ ট্র্যাক করার এমন কোনও উপায় পাওয়া কখনও কখনও ভাল যা মনিব থেকে বঞ্চিত হওয়ার কোনও পরিমাণই আড়াল করতে পারে না। নিশ্চিত হয়ে নিন যে এটি ঠিক করার জন্য আপনি কোনও ক্রেডিট পাবেন না। কখনও কখনও আপনি যাইহোক এটি ঠিক করুন।
candied_orange

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

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

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

24

টোডো ব্যবহার করবেন না। আপনার প্রকল্পে ইতিমধ্যে একটি টোডো তালিকা রয়েছে। একে ইস্যু ট্র্যাকার বলা হয়।

আমি মনে করি আসল সমস্যাটি এই বাক্যে রয়েছে:

আমরা আমাদের ইস্যু ম্যানেজমেন্ট সিস্টেমে একটি টিকিট তৈরি করতে পারি, যা বিশৃঙ্খলা সৃষ্টি করে এবং পরে কোনও স্প্রিন্ট বা ব্যাকলগে পরিচালিত হয়ে যেতে পারে।

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

যদি আপনার পরিচালনা কোনও কাজের শেষ অংশটিকে অযথা দেরি করে তবে আপনার দুটি বিকল্প রয়েছে:

  1. আপনার ব্যবস্থাপনার সাথে কথা বলুন কেন এটি খারাপ ধারণা।

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


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

11
ফর্মটি সম্পর্কে মন্তব্য করা সম্পূর্ণ যুক্তিসঙ্গত // TODO(#12345): Frobnicate the sprocket before passing it along, তবে শর্ত থাকে যে বাগ # 12345 একটি "আসল" ইস্যু নম্বর এবং সমস্যাটি কাউকে দেওয়া হয়েছে। এটি স্পষ্ট করে এই উত্সটি পড়তে সহজ করে তোলে: "না, হ'ল পদক্ষেপটি কোনও সহায়ক পদ্ধতিতে লুকিয়ে নেই, এটি কেবল সমতল-বহির্মুখী নয় more আরও প্রসঙ্গের জন্য বাগ 121245 দেখুন" " আদর্শভাবে, আপনার অবশ্যই বন্ধবেড বা অবৈধ সমস্যা নম্বরগুলি খুঁজছেন কোডবেসের উপর দিয়ে একটি দৈনিক লাইনার চালানো উচিত।
কেভিন

9

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

আপনি যদি কাজটি করতে চান এবং তা অনুসরণ করতে চান তবে আপনার কাছে যা চাওয়া তা করণীয়।

// v5 দ্বারা টডো: নতুন কলামে সীমাবদ্ধতা সরাতে মাইগ্রেশন তৈরি করুন, অ্যাপ্লিকেশনটিতে পুরানো কলামের উল্লেখগুলি সরিয়ে দিন // টুডো দ্বারা v56: পুরানো কলামটি ড্রপ করার জন্য মাইগ্রেশন তৈরি করুন

জন্য grep //TODO by v55যখন এটি v55 স্থাপন করার সময়। স্থাপন স্থাপন একটি স্ক্রিপ্ট চালায় যা এটি ইন্টিগ্রেশন টেস্ট হিসাবে করে does

আপনি আপনার সংস্করণ ট্র্যাকিংয়ে 55 টি টাই করতে পারেন বা কেবল এটির জন্য প্রম্পট করতে পারেন।

55 টি করার সময় আপনি v54 দ্বারা // টডো পরীক্ষা করতে চান তবে এটি আকর্ষণীয় হয়ে যায় Rather বরং কোড বেজ 55 বার অনুসন্ধান করুন কেবলমাত্র // টোডো বাই অনুসন্ধান করুন। তারপরে ফলাফলটি 1 থেকে 55 এর জন্য ফিল্টার করুন Now এখন 56 টি ব্যর্থ হবে না।

আপনি ভাবতে পারেন "ওহ আমাদের এটির দরকার নেই we আমাদের যতক্ষণ চেক আছে ততক্ষণ আমরা এগুলি প্রতিবারই ঠিক করব"। না, না।


4
এটি যদি আমরা এখানে সুপারিশ না করি।
candied_orange

3
যদি এই ধরণের জিনিসের জন্য জেনেরিক নাম সরবরাহ করা যায় তবে আপনি যদি
পৃষ্ঠাগুলি

6
স্পষ্টতই, এটি আপনার মন্তব্য যে আমি পুরো প্রশ্নের চেয়ে বরং আপত্তি করছি।
candied_orange

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

2
"আমি ভাবছিলাম যে কোনও বিদ্যমান সমাধান বিদ্যমান কিনা" - আমাদের কাছে সফ্টওয়্যারসিএস.স্ট্যাকেক্সেঞ্জোয়েন্ট
ডটকম

4

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

অতএব আমরা তাদের সম্পর্কে ভুলে যাওয়া নিয়ে চিন্তা না করে স্বাচ্ছন্দ্যে টডো করতে পারি।

আমি জাভাতে এটির একটি মুক্ত-উত্স বাস্তবায়ন তৈরি করেছি। হ্যাঁ, একটি দাবি অস্বীকার করার বিষয়টি হ'ল আমি এটি লিখেছি, তবে আমি যেমন বলেছিলাম এটি সম্পূর্ণ উন্মুক্ত সোর্সড এবং লাইসেন্সযুক্ত।

টুল বলা হয় Westie এবং একটি উদাহরণ জির ইস্যু পরীক্ষক README.md চালু আছে। গিটআইএসইএনলেজারটিও দেখুন।

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


1
চমৎকার! আমরা জিরাকেও ব্যবহার করি, আমি এটি ব্যবহার করে দেখতে পারি। এটি আমাদের ইস্যু-ম্যানেজমেন্ট সিস্টেমে বিশৃঙ্খলা সৃষ্টি করার বিষয়ে আমার উদ্বেগকে সত্যিই সমাধান করে না, তবে কমপক্ষে এটি গ্যারান্টি দিবে যে সেগুলি ভুলে যেতে পারে না।
জোশুয়া ওয়ালশ

@YM_Industries আমি খুশি আমি কোনও অবদান গ্রহণ বা উত্থাপিত যে কোনও সমস্যা নিয়ে কাজ করতে পেরে খুশি হব।
tjheslin1

4

টুডো করবেন না এখনি এটা কর.

টিএলডিআর: আপনার ডিবি স্ক্রিপ্টগুলি এখনই লিখুন (এবং পরীক্ষা করুন), পরে নয়; কেবল তাদের কোড করুন যাতে তাদের এক্সিকিউটিভটি ডিবি সংস্করণে ক্রমাগত হয়।

উদাহরণ

একটি উদাহরণস্বরূপ, কল্পনা আপনার কাছ থেকে একটি কলামের নামের পরিবর্তন করতে চান দিন SSNথেকে TaxIDযখন আন্তর্জাতিক গিয়ে একটি সাধারণ প্রয়োজন।

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

আমাদের উদাহরণস্বরূপ, বিল্ড 101 এর সাথে সামঞ্জস্যতা বজায় রাখার সময় আমরা 102 টি বিল্ড স্থাপন করব (যা নতুন কলাম রয়েছে) will

পদক্ষেপগুলি এখানে।

1. সংস্করণ টেবিল সেট আপ করুন

  1. Configurationদুটি কলাম সহ ডাকা একক টেবিল যুক্ত করুন , Nameএবং Value

  2. Name"টার্গেটভিশন" এর সাথে একটি সারি যুক্ত করুন এবং Valueস্থাপনার জন্য নতুন বিল্ডের সংস্করণটিতে সেট করুন ।

  3. একটি Name"সামঞ্জস্যপূর্ণ উইথ " এর সাথে একটি সারি যুক্ত করুন এবং Valueন্যূনতম সংস্করণ সংখ্যায় সেট করুন যা মোতায়েনের সাথে সামঞ্জস্যপূর্ণ হতে হবে।

প্রতিটি স্থাপনার আগে এই সারিগুলি পরীক্ষা করুন এবং আপডেট করুন।

২. স্থাপনার স্ক্রিপ্টগুলি সংশোধন করুন

  1. TaxIDপাশাপাশি স্ক্রিপ্ট যুক্ত করুন যা পাশাপাশি একটি নতুন কলাম তৈরি করে SSNএবং এটিকে SSNকলাম থেকে পপুলেট করে। Ifটার্গেট ভার্সন চেক করে এমন একটি বিবৃতিতে এই কোডটি সংযুক্ত করুন; যদি লক্ষ্য সংস্করণটি খুব কম হয় (যেমন TaxIDএখনও প্রয়োজন হয় না), এড়িয়ে যান।

    SELECT @TargetVersion = TargetVersion FROM Configuration
    IF @TargetVersion < '102' THEN RETURN
    ALTER TABLE Customer ADD COLUMN taxID VarChar(12) NOT NULL
    UPDATE Customer SET TaxID = SSN
    
  2. একটি স্ক্রিপ্ট যুক্ত করুন যা একটি ট্রিগার তৈরি করে যা TaxIDসন্নিবেশ করানো বা আপডেট করার সময় SSNএবং বিপরীতে pop Ifলক্ষ্য সংস্করণ এবং সামঞ্জস্যপূর্ণ সংস্করণ পরীক্ষা করে এমন বিবৃতিতে এই কোডটি সংযুক্ত করুন ; টার্গেট ভার্সন খুব কম হলে ( TaxIDপ্রয়োজনীয় নয়) বা যদি সামঞ্জস্যপূর্ণ সংস্করণটি খুব বেশি হয় তবে ( SSNক্ষেত্রের প্রয়োজন নেই) এড়িয়ে যান ।

    SELECT @TargetVersion  = TargetVersion,
           @CompatibleWith = CompatibleWith 
    FROM Configuration
    IF @TargetVersion  < '102' THEN RETURN
    IF @CompatibleWith > '101' THEN RETURN
    CREATE TRIGGER SSNAndTaxIDTrigger ON Customer etc.
    
  3. SSNকলামটি সরাতে একটি স্ক্রিপ্ট যুক্ত করুন । একটি Ifবিবৃতিটি আবদ্ধ করুন যা কেবলমাত্র সামঞ্জস্যপূর্ণ উইথ সংস্করণ যথেষ্ট বেশি ( SSNযদি আর প্রয়োজন হয় না) কলামটি সরিয়ে দেয় ।

    SELECT @CompatibleWith = CompatibleWith FROM Configuration
    IF @CompatibleWith <= '101' THEN RETURN
    IF OBJECT_ID('SSNAndTaxIDTrigger') IS NOT NULL DROP TRIGGER SSNAndTaxIDTrigger
    IF EXISTS (SELECT * FROM syscolumns c JOIN sysobject o ON o.id = c.is WHERE o.Name = 'Custeomr' AND c.Name = 'SSN') BEGIN
        ALTER TABLE Customer DROP COLUMN SSN
    END
    

3. পরীক্ষা

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

4. আপনার স্থাপনার প্লেবুকে

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

pitfalls

আপনার ডিপ্লোয়মেন্ট স্ক্রিপ্টগুলির রেফারেন্স করা এবং সেই ডিবি টেবিলে থাকা সংস্করণ নম্বরগুলিতে নির্ভর করা ঠিক আছে । রানটাইম কোড নয়।

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

এই সমস্ত ফলাফল

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

আপনি যখন এই সম্পর্কে ভাবছেন তখন আপনি এইভাবে সমস্ত কোড লিখে এবং পরীক্ষা করতে পারবেন, এবং আপনাকে এই অগোছালো টোডো মন্তব্যগুলি মোকাবেলা করার দরকার নেই।


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

1

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

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


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

-2

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


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