আপনি কীভাবে বহুমুখী প্রকল্পের সংস্করণ পরিচালনা করবেন?


14

আমি জানি এটি একটি বিস্তৃত প্রশ্ন তাই আমি যথাসম্ভব সুনির্দিষ্ট হওয়ার চেষ্টা করব। এই প্রশ্নটি কোনও প্রযুক্তিগত প্রশ্নের চেয়ে "সাংগঠনিক" প্রশ্ন।

এই প্রধান উপাদানগুলির সাথে আমাদের একটি বহুতল প্রকল্প রয়েছে:

  • একটি সার্ভার, মূল ব্যবসায়ের যুক্তি (ডেটা মডেল) হোস্টিং করছে
  • মূল ব্যবসায়ের যুক্তি ব্যবহার করে এমন ক্লায়েন্টদের জন্য একটি ব্যাকফাইস
  • একটি অ্যাপ্লিকেশন API (REST) ​​যা মূল ব্যবসায়িক যুক্তিটিও ব্যবহার করে
  • অ্যাপ্লিকেশন এপিআই ব্যবহার করে স্মার্টফোন অ্যাপস (আইওএস এবং অ্যান্ড্রয়েড) রয়েছে
  • একই অ্যাপ্লিকেশন এপিআই ব্যবহার করে স্মার্টফোন থেকে আলাদা আরেকটি ট্যাবলেট অ্যাপ (অ্যান্ড্রয়েড) রয়েছে।

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

  • সার্ভারে মূল ব্যবসায়ের লজিকের কোড (মোবাইল অ্যাপ্লিকেশন দ্বারা ব্যাক-অফিস, এপিআই এবং পার্শ্ব প্রতিক্রিয়া হিসাবে ব্যবহৃত)
  • এপিআই নিজেই (উভয় স্মার্টফোন এবং ট্যাবলেট অ্যাপ্লিকেশন দ্বারা ব্যবহৃত)
  • সমস্ত মোবাইল অ্যাপস (অ্যাপস্টোর / গুগলপ্লে মাধ্যমে)

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

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

আমার কোন সংস্করণটি "সংস্করণ" করতে হবে? ক্লায়েন্টের মোবাইল অ্যাপ্লিকেশন আপগ্রেড না করা সত্ত্বেও কীভাবে সমস্ত কিছু কাজ করে তা নিশ্চিত করবেন? আমার কাজটি আরও সহজ করার জন্য আমি কি তাকে জোর করে আপগ্রেড করতে পারি?

এক কথায়, আমি কীভাবে সময়ের সাথে সাথে আমার বহু-পক্ষী-প্রকল্পটি লাইভ করার ব্যবস্থা করব?


2
আপনার সমস্যাটি কি অন্য রূপের এপিআই সংস্করণ ?
বি 14

হ্যাঁ, এগুলির বেশিরভাগ বিষয়গুলি কোনও পাবলিক এপিআইয়ের ক্ষেত্রে এপিআই সংস্করণ সম্পর্কিত বলে মনে হয়। আমার এপিআই 'অ্যাপ্লিকেশন / ব্যক্তিগত' এপিআই, এটি কেবলমাত্র আমার মোবাইল অ্যাপ্লিকেশনগুলিকে কাজ করতে ব্যবহৃত হয়। এছাড়াও, আমার প্রশ্নটি আরও বিস্তৃত যেহেতু এটি কোনও নির্দিষ্ট উপাদানকে উদ্বেগ করে না, তবে পুরো প্রকল্প :)
ডেভিড ডি

উত্তর:


9

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

REST এপিআই ছাড়াও, অন্যান্য যোগাযোগের ইন্টারফেসগুলি যা একটি নেটওয়ার্ক ইন্টারফেসের ওপরে যায় সেগুলিও সংস্করণ করা ভাল ধারণা। এইভাবে, আপনাকে সার্ভারগুলির একই সাথে সমস্ত ব্যাকফাইস ক্লায়েন্টকে আপগ্রেড করতে বাধ্য করা হবে না এবং আপনি "বিটা পরীক্ষা" সময়কালে একটি নতুন সংস্করণে ধীরে ধীরে স্থানান্তরিত করতে পারেন।

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


এর জন্য ধন্যবাদ. বোঝার জন্য নিশ্চিত হতে, আপনি "অন্যান্য যোগাযোগের ইন্টারফেস" কী হতে পারে তার একটি উদাহরণ সরবরাহ করতে পারেন?
ডেভিড ডি

@ ডেভিডডাব্লু .: অন্য যোগাযোগের একটি ইন্টারফেসের উদাহরণ হ'ল ব্যাকফাইস ক্লায়েন্ট এবং মূল বিজনেস সার্ভারের মধ্যে ইন্টারফেস। অথবা এপিআই পরিষেবা এবং মূল ব্যবসায় পরিষেবা এর মধ্যে।
বার্ট ভ্যান ইনজেন শেহেনো

4

এই পোস্টটি আপনার প্রশ্ন সম্পর্কে একটি আকর্ষণীয় পয়েন্ট তোলে।

আরও ব্যবহারিক উপায়ে, যদি আপনার 3 টি উপাদান থাকে:

  • 2 গ্রাহক: একটি ফ্রন্ট-এন্ড এবং একটি মোবাইল অ্যাপ্লিকেশন
  • 1 এপিআই সরবরাহকারী: একটি ব্যাক-এন্ড

আপনি প্রত্যেকের জন্য টিপিকাল এমএমপি (মেজর.মিনার.প্যাচ) সংস্করণ স্কিমটি ব্যবহার করতে পারেন তবে, আপনার ব্যাক-এন্ড url এ আপনি কিছু রাখতে পারেন http://youhost/M.m/resourceURI

আপনি যেভাবে বিকশিত হয়েছিলেন এবং এপিআই-র পরিবর্তনগুলি আপনি M.mযেমন ভোক্তাদের সাথে ইউআরএল তে রাখেন তেমন চুক্তি প্রভাবিত করে না । মুহূর্ত থেকে আপনি আপনার ভোক্তাদের প্রভাবিত করে ব্যাকএন্ড পরিবর্তন করতে আপনি একটি ব্যবহার (এটা আচরণ বা একটি বস্তু যে ভিন্ন পরিবর্তন হতে) M.m+1, M+1.m+1বা M+1.m

জিনিসগুলি চলমান রাখার উপায় হ'ল পুরানো সাথে একযোগে নতুন ব্যাক-এন্ড স্থাপন করা, যখন আপনার ব্যবহারকারীরা নতুন গ্রাহক ইনস্টল করেন এবং ধীরে ধীরে পুরানো এপিআই বন্ধ করুন disc

আপনি আমার চেয়ে আরও ভাল একটি উত্তর দেখতে পারেন: স্ট্যাকওভারফ্লোতে REST এপিআইয়ের সংস্করণ


আমি মনে করি আমার প্রকল্পে 1 টিরও বেশি ব্যবসায়িক যুক্তি রাখা অসম্ভব (অন্যথায় আমার বেশ কয়েকটি ডাটাবেসের প্রয়োজন হবে)। তবে আমি নিশ্চিত করতে পারি যে সমস্ত আরএসটি এপিআই এখনও এই বর্তমান মূল ব্যবসায়িক যুক্তির সাথে সামঞ্জস্যযোগ্য রয়েছে। ভুলে যাবেন না যে আমার এপিআইগুলি পাবলিক এপিআই নয় এবং গ্রাহকদের সরাসরি ইউআরআই ব্যবহার করার কথা নয়। আমার ক্লায়েন্ট অ্যাপ্লিকেশন না। M / m + 1 স্বরলিপি ধন্যবাদ জন্য ভাল পয়েন্ট।
ডেভিড ডি

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

2

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

  1. এটি প্রকাশিত হলে প্রতিটি উপাদান সংস্করণিত হবে। এটিতে আপনার চূড়ান্ত পণ্যগুলির পাশাপাশি নিম্ন-স্তরের গ্রন্থাগারগুলি অন্তর্ভুক্ত রয়েছে।
  2. প্রতিটি কোড কমিট একটি স্ন্যাপশট বিল্ড ট্রিগার করবে। এটি আপনার বিকাশকারীদের সৎ রাখতে সহায়তা করে, বিশেষত যদি আপনি সেই বিল্ডটি ভেঙে যাওয়া অপরাধীকে ইমেল করার জন্য সুবিধাটি ব্যবহার করেন।
  3. প্রতিটি বিল্ড ইউনিট পরীক্ষা চালাতে পারে। এটি স্পষ্টতই কোডের মান উন্নত করে।
  4. প্রতিটি রিলিজ ট্যাগ করা হবে, সুতরাং যদি একটি উত্পাদন ঠিক করা প্রয়োজন হয়, এটি ট্যাগ থেকে শাখা করা এবং ফিক্সটি করা সহজ।
  5. আপনার কোনও ধরণের সামঞ্জস্যতা রেজিস্টার বজায় রাখতে হবে। (উদাহরণস্বরূপ, ব্যাকঅফিস ১.০.২৩ REST এপিআই 2.0.267 ইত্যাদির সাথে সামঞ্জস্যপূর্ণ)। আমি এমন কোনও সরঞ্জাম জানি না যা এই ক্ষেত্রে সহায়তা করবে।

আমার অভিজ্ঞতা ওপেন সোর্স সরঞ্জামগুলির সাথে হয়েছে: এসভিএন, মাভেন 2, জেনকিনস এবং নেক্সাস, তবে এই সমস্তগুলির বিকল্প রয়েছে।

আপনার দলকে দ্রুত গতিতে বাড়ানোর জন্য শেখার সময়কে অবমূল্যায়ন করবেন না। তবে একবার তারা গতিতে উঠলে তারা আর ফিরে যাবে না।


আকর্ষণীয় পয়েন্ট ধন্যবাদ। আমার প্রকল্পটি 3 টি গিট রেপোতে (ব্যাকএন্ডের জন্য 1 টি, ট্যাবলেট অ্যাপের জন্য 1 জন, স্মার্টফোনের অ্যাপ্লিকেশনটির জন্য 1) ছড়িয়ে পড়লে কী অটো-স্ন্যাপশট বিল্ড কাজ করতে পারে?
ডেভিড ডি

@ ডেভিড ডাব্লু। জেনকিনস অবশ্যই এটি সমর্থন করে, কারণ প্রতিটি কাজের নিজস্ব কোড ভান্ডার ইউআরএল রয়েছে।
কিউইরন

2

উন্নয়ন এবং স্থাপনার জন্য তুলনামূলকভাবে একটি ছোট দলের জন্য, আইবিএম জাজ নিযুক্ত হিসাবে ক্লায়েন্ট এন -1 সামঞ্জস্যতা মডেলটি বেশ ভালভাবে কাজ করতে পারে

ক্লায়েন্ট এবং সার্ভারগুলিকে একই সংস্করণ নম্বরে রাখার চেষ্টা করুন । [স্বতন্ত্র সংস্করণ এবং তাদের সামঞ্জস্যের ম্যাট্রিক্স পরিচালনা করার পরিবর্তে]

একটি নীতি তৈরি করুন যে ক্লায়েন্ট সংস্করণ Xyy এর XY এর উপরে সমস্ত সার্ভার সংস্করণগুলির সাথে এক্স + 2.0.0 এর চেয়ে কম হওয়া উচিত

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

একটি ক্লায়েন্ট সংস্করণ 4.x সার্ভার সংস্করণ 4.x এবং এর সাথে কিন্তু 6.0 এর নীচে সামঞ্জস্য করা উচিত; একটি সার্ভার 4.x সমস্ত ক্লায়েন্টের সংস্করণ 3.0 এবং এর চেয়ে বেশি তবে 4.x এর চেয়ে কম বা সমান হওয়া উচিত

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

সূত্র: আইবিএম জাজ মডেল [ https://www.ibm.com/support/knowledgecenter/en/SSYMRC_6.0.0/com.ibm.jazz.install.doc/topics/c_n-1.html]


1

প্রথমে, আমি সমস্যাটি একটু অন্যভাবে ফ্রেম করে শুরু করি। আপনি জিজ্ঞাসা করেছেন আপনার কোন সংস্করণটির "সংস্করণ" দরকার। সংস্করণটি সিএসে একটি ওভারলোড হওয়া শব্দ এবং এর অর্থ প্রায় 100 টি ভিন্ন জিনিস। আমি যে বিষয়গুলিতে নজর দেব সেগুলি হ'ল:

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

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

  1. আমি বাজারে যে সংস্করণগুলি সমর্থন করছি তার সংস্করণগুলি (এবং সেগুলির সাথে সম্পর্কিত সমস্যাগুলি) কীভাবে ট্র্যাক রাখতে পারি?
  2. আমি কীভাবে সিদ্ধান্ত নেব যে উত্পাদন ব্যবস্থায় মুক্তির জন্য কোন উন্নয়ন পাথ প্রস্তুত? (এটি কোনও প্রক্রিয়াতে অন্য যে কোনও পদক্ষেপের জন্যও প্রস্তুত হতে পারে)
  3. সিস্টেমের কনফিগারেশন নিয়ন্ত্রণ / পরিচালনা কার হাতে থাকা উচিত? অন্যান্য বিকাশকারীদের বিতরণ করার জন্য কোড যুক্ত করার জন্য কর্মপ্রবাহ কী?
  4. আমি কীভাবে ইন্টারেক্টিভ অংশগুলির মধ্যে মিথস্ক্রিয়াটি নিয়ন্ত্রণ করতে যাচ্ছি? কীভাবে জানব কোনও অংশ পরিবর্তন করলে সিস্টেমের বাকী অংশ ভেঙে যায়?
  5. সময়ের সাথে সাথে আমরা কীভাবে আমাদের কনফিগারেশন পরিচালন ব্যবস্থার উন্নতি করব।

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


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