কোড এবং টিডিডি হিসাবে পরিকাঠামো


11

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

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

এক্সপি আমাদের টিডিডি ব্যবহার করতে শেখায় এবং প্রশ্নটি এটি অবকাঠামোর ক্ষেত্রে প্রযোজ্য কিনা? সরঞ্জামটি হ'ল এটি ts

আমি কয়েকটি ধরণের পরীক্ষা কল্পনা করতে পারি যা খুব দরকারী।

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

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

ThoughtWorks কারিগরি রাডার ডান এখন মত সরঞ্জাম প্রশংসা inspec , serverspec বা Goss যাচাই যে সার্ভার বৈশিষ্ট মেটাতে পারবেন। কিন্তু আমরা একটি অনুমান লিখছি, আমরা না?

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

উত্তর:


6

সংক্ষেপে, আমি আপনার পরিকাঠামোর জন্য দুটি বিভাগের পরীক্ষা দেখতে পাচ্ছি: 1) এটিতে আপনার অ্যাপ্লিকেশন চালানোর জন্য প্রয়োজনীয় সমস্ত কিছু রয়েছে এবং 2) এতে কোনও অতিরিক্ত অতিরিক্ত জিনিস নেই।

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

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

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


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

1

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

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

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

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


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

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

1
আমি আরও ধরে নিচ্ছি যে আমরা এমন প্রসঙ্গে নেই যেখানে অপ্রয়োজনীয় চেকগুলি প্রয়োজন - কিছু ক্ষেত্রে নিরঙ্কর চেকগুলি সম্পূর্ণ ভিন্ন কোডের পথ অনুসরণ করে বা এমনকি অবকাঠামোগত প্রয়োজন হতে পারে।
ড্যান কর্নিলিস্কু

1

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

আমার মনে আছে একটি ছবি যা "উত্তরযোগ্য প্লেবুক চালিয়েছে, সবকিছু ঠিক আছে" ব্যাকগ্রাউন্ডে জ্বলন্ত একটি বিল্ডিং সহ ...

একটি ঘোষণামূলক রাষ্ট্র চালানো এবং এই প্রকৃত ঘোষিত অবস্থায় সার্ভার থাকা আমার দৃষ্টিকোণ এবং অভিজ্ঞতার দিক থেকে কমপক্ষে 2 টি ভিন্ন জিনিস।

এক বিস্তৃত এবং ভিন্ন ভিন্ন পরিবেশ, একাধিক ডিসি জুড়ে ছড়িয়ে পড়ে, সর্বজনীন নেটওয়ার্ক ইত্যাদির মাধ্যমে পৌঁছানো যায় ... এমন একাধিক কারণ রয়েছে যার কারণে কোনও রাষ্ট্র পুরোপুরি বা আংশিকভাবে প্রয়োগ করা যায়নি।

এই সমস্ত কারণে, ইউনিট পরীক্ষার জন্য আসল সার্ভারের স্থিতির স্ন্যাপশট পেতে কাউকে অনুমতি দেয় যা আবার লক্ষ্যযুক্ত রাজ্যের থেকে পৃথক হতে পারে।

সুতরাং আমি হ্যাঁ বলব, ইউনিট পরীক্ষা এমনকি আইএসি পরিচালিত পরিবেশেও দরকারী।

সম্পাদনা

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

রেফারেন্স (তার জন্য ফরাসি ভাষায় দুঃখিত): https://fr.slideshare.net/logilab/testinfra-pyconfr-2017


1
নিচে ভোট দিয়ে কিছু মন্তব্য করা কমপক্ষে নম্র হতে চাই, আপনি কি ভোটারকে ভাবেন না? বিশেষত এই জাতীয় প্রশ্নে যেখানে বিতর্কটি খুব তথ্যমূলক বা এমনকি গঠনমূলক হতে পারে।
পিয়ার

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

আমি অবশ্যই আক্রমণাত্মক হওয়ার ইচ্ছা করি নি, আমি এখানে আমার নাতিবেভে ভাষা ব্যবহার করছি না (এটি আমার ধারণা অনুমান :))।
পিয়ের

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

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

1

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

সার্ভার-বিধানের ক্ষেত্রে আপনি যদি আপনার বিধানের কোডটি পরিবর্তন না করেন তবে আপনার চিত্র বেশিরভাগ সময় বৈধ হবে তবে কখনও কখনও তা নয়। সুতরাং আমি মনে করি কার্যকরী চিত্র সরবরাহের জন্য পরীক্ষা করা সত্যই প্রয়োজনীয়।

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

যেহেতু আমি এই অঞ্চলে কোনও পরীক্ষার সরঞ্জাম খুঁজে পাইনি, আমরা আমাদের অতিরিক্ত সময়ে একটি লিখেছি: https://github.com/DomainDrivenArchitecture/dda-serverspec-crate

সুতরাং আমি মনে করি ডিডিওপ্স বিশ্বে টিডিডি সত্যই গুরুত্বপূর্ণ!

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