আমাদের স্থাপনার কৌশল উন্নত করুন


12

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

এটি সেখানে আমাদের সিস্টেমের সাধারণ আর্কিটেকচার এবং আমাদের সার্ভারগুলিতে প্রয়োগের জন্য উল্লেখযোগ্য। প্রতিবার কোনও নতুন বৈশিষ্ট্য বিকাশ হওয়ার পরে আমরা আমাদের অ্যাপ্লিকেশন (সর্বদা আমরা নিয়ন্ত্রণ করি এমন একটি সার্ভার) ব্যবহার করে সমস্ত সাইটগুলিতে এই আপডেটটি রোল করি। আমাদের সিস্টেম ব্যবহার করে প্রতিটি সাইট মূলত কোডবেসের 95% এর জন্য একই ফাইলগুলি ব্যবহার করে। প্রতিটি সাইটের মধ্যে আমাদের কয়েকটি ফোল্ডার থাকে যা সেই সাইটের কাছে ফাইলগুলি থাকে - CSS ফাইল / চিত্র ইত্যাদি etc. প্রতিটি সাইটের মধ্যে পার্থক্য প্রতিটি সাইটের ডাটাবেসের মধ্যে বিভিন্ন কনফিগারেশন সেটিংস দ্বারা সংজ্ঞায়িত করা হয়।

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

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

আমাদের বর্তমান পদ্ধতিগুলি উপেক্ষা করে অন্যান্য লোকেরা কীভাবে একই সমস্যার দিকে এগিয়ে যায় তা শুনতে খুব ভাল লাগবে।

সংক্ষেপ ...

  • একাধিক সার্ভার জুড়ে ফাইলগুলি তৈরি করার সর্বোত্তম উপায়টি কী কী?
  • আমাদের ফাইল প্রতিলিপি কীভাবে প্রতিরোধ করা উচিত? সিমলিঙ্কস / অন্য কিছু?
  • কীভাবে আমাদের রেপো গঠন করা উচিত যাতে আমরা নতুন বৈশিষ্ট্যগুলি তৈরি করতে পারি এবং পুরানোগুলি ঠিক করতে পারি?
  • আমাদের কীভাবে রোলআউট / রোলব্যাকগুলি ট্রিগার করা উচিত?

আগাম ধন্যবাদ

সম্পাদনা করুন:

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

উত্তর:


6

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

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

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

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

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

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


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

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

আমি আজ এই নিবন্ধটি পিএইচপি এবং ফিং-এর পাশাপাশি হাডসন
robjmills

1

আমরা পুতুল (রিডুকটিভ ল্যাবগুলির প্রধান পণ্য) ব্যবহার শুরু করি। এটি সিস-অ্যাডমিন চাকরিগুলি স্বয়ংক্রিয় করার জন্য একটি রুবি ভিত্তিক কাঠামো। আমি কয়েক সপ্তাহ আগে পুতুল ক্যাম্পে ছিলাম এবং এখানে ভিডিও লিঙ্কগুলি রয়েছে:

লুক কিনিস উপস্থাপনা - পুতুল ইন্ট্রো

এছাড়াও, আপনি যদি সান ফ্রান্সিসকোতে পুতুলক্যাম্পে তৈরি সমস্ত উপস্থাপনা দেখতে চান তবে এটি লিঙ্ক:

অন্যরা কীভাবে পুতুলকে ব্যবহার করে সে সম্পর্কে উপস্থাপনাগুলি

উপভোগ করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.