API তুলনা করার আগে VPN অপারেশনটি সংজ্ঞায়িত করুন
সংযোগ নিয়ন্ত্রণ, প্রোফাইল সরবরাহ, ব্যবহারকারী প্রশাসন এবং পর্যবেক্ষণ আলাদা আলাদা API। প্রথমে বস্তু, ক্রিয়া ও সফলতার শর্তের নাম দিন।
একটি পণ্যের পৃষ্ঠা বলে এতে API আছে, আর ইন্টিগ্রেশন সভাটি দ্বিতীয় প্রশ্নেই আটকে যায়। কোন অপারেশন, কোন বস্তুর উপর, কে ডাকে, আর কী সফলতা হিসেবে গণ্য? পণ্য তুলনার আগে এই চারটি প্রশ্নের উত্তর সাধারণত অর্ধেক প্রার্থীকে বাদ দেয়। এটি বাকি তুলনাটিকে এমন কিছুতে পরিণত করে যা একটি পরীক্ষা নিষ্পত্তি করতে পারে।
API আছে এই দাবিকে একটি অপারেশন দিয়ে প্রতিস্থাপন করুন
API হলো একটি পরিবহন, কোনো সক্ষমতা নয়। একটি REST এন্ডপয়েন্ট, একটি স্থানীয় সকেট এবং একটি কমান্ড-লাইন মোড়ক, সবই API বলা যায়, কিন্তু এরা সমতুল্য অপারেশন দেয় না।
ডকুমেন্টেশন দেখার আগে অপারেশনটি একটি বাক্য হিসেবে লিখে ফেলুন।
স্থানীয় সংযোগ শুরু করা একটি ক্লায়েন্ট-পক্ষীয় কাজ, যার সামনে একজন ব্যবহারকারী থাকে। ডিভাইস প্রোফাইল ইস্যু করা একটি সরবরাহ কাজ, যার পেছনে একটি ইনভেন্টরি থাকে। ব্যবহারকারীর প্রবেশাধিকার বন্ধ করা একটি প্রশাসনিক কাজ, যার একটি অডিট ট্রেইল থাকে। এই তিনটি সাধারণত আলাদা কম্পোনেন্টে থাকে, আলাদা দল মালিকানা রাখে এবং আলাদা কর্তৃত্ব থাকে।
চারটি ক্ষেত্র যা চুক্তিকে পরীক্ষাযোগ্য করে
প্রতিটি অপারেশনের জন্য চারটি ক্ষেত্র পূরণ করুন: বস্তু, ক্রিয়া, আহ্বানকারী এবং সফলতার শর্ত। যে চুক্তিতে একটি ক্ষেত্র অনুপস্থিত তা একটি ইচ্ছা মাত্র।
সারণিই সম্পূর্ণ কার্যপত্র:
| Field | Question | Example |
|---|---|---|
| Object | What is being acted on? | One enrolled device |
| Action | Observe, create, change, start, stop, or revoke? | Revoke |
| Caller | Which identity calls it? | Deployment service |
| Success | What observable state proves it? | Future sign-in denied |
সফলতার শর্ত হলো সেই ক্ষেত্রটি যা মানুষ এড়িয়ে যায়, আর এটিই ঠিক করে ইন্টিগ্রেশন কাজ করবে কি না। সংরক্ষিত সেটিং সক্রিয় টানেল নয়, আর নিষ্ক্রিয় অ্যাকাউন্ট সমাপ্ত সেশন নয়।
যদি দুটি অপারেশনের জন্য আলাদা আহ্বানকারী দরকার হয়, তবে তারা দুটি ইন্টিগ্রেশন। তাদের একটিমাত্র সার্ভিস অ্যাকাউন্টে একত্র করা সাধারণত তাদের যেকোনোটির প্রয়োজনের চেয়ে বেশি কর্তৃত্ব দেওয়া বোঝায়।
ইন্টারফেসকে তার প্রকৃত স্তরের সঙ্গে মেলান
OpenVPN-এর কমিউনিটি ম্যানেজমেন্ট ইন্টারফেস TCP বা Unix সকেটের মাধ্যমে একটি ডেমন-এর সঙ্গে কথা বলে। এর কমান্ডের মধ্যে রয়েছে অবস্থা পর্যবেক্ষণ ও ডেমন সংকেত।
এতে এটি ডেমন নিয়ন্ত্রণ চ্যানেল হয়, কোনো হোস্টেড সাবস্ক্রিপশন API বা ব্যবহারকারী-নিবন্ধন সেবা নয়। এর ডকুমেন্টেশন মনোযোগ দিয়ে পড়লে এমন স্তরের বিরুদ্ধে নির্মাণ থেকে বাঁচা যায় যা ওই বস্তুর মালিক নয়।
ওই ডকুমেন্টেশন আরও বলে প্রোটোকলের নিজস্ব কোনো এনক্রিপশন নেই। যে কেউ সকেটে পৌঁছাতে পারে সে ডেমন নিয়ন্ত্রণ করতে পারে, তাই এটিকে মেট্রিক্স ফিড নয়, সংবেদনশীল নিয়ন্ত্রণ হিসেবে দেখুন। এটিকে loopback বা Unix সকেটে বেঁধে রাখুন, এবং দূর থেকে আহ্বানকারীর প্রয়োজন হলে একটি সীমিত ব্যবস্থার পেছনে রাখুন। সুবিধার জন্য এটি ইন্টারনেটে প্রকাশ করা নিয়ন্ত্রণ চ্যানেলকে একটি ঘটনায় পরিণত করে।
আহ্বানের পরের আচরণ নির্দিষ্ট করুন
গ্রহণ করা আর সম্পন্ন হওয়া এক নয়। টানেল ওঠার আগেই ডেমন ফিরে আসতে পারে, তাই ডকুমেন্টেড সম্পন্নতা বা ব্যর্থতার ইভেন্টের জন্য অপেক্ষা করুন এবং সেটি আপনার পাঠানো অনুরোধের সঙ্গে যুক্ত করুন।
উত্তর হারিয়ে গেলে আহ্বানকারী কী করবে তা ঠিক করুন। অন্ধভাবে কোনো তৈরি বা পুনঃসংযোগের পুনরাবৃত্তি করা আর প্রথম অনুরোধ ইতিমধ্যে কার্যকর হয়েছে কি না তা যাচাই করা এক নয়।
প্রবেশাধিকার অপসারণ অন্তত তিনটি আলাদা ক্রিয়া: ভবিষ্যতের সাইন-ইন আটকানো, চলমান সেশন সমাপ্ত করা এবং শংসাপত্র প্রত্যাহার করা। নীতিতে যা সত্যিই দরকার তা চান, এবং চুক্তিতে বলে দিন কোনটি কোনটি। প্রমাণ ছাড়া একটি সফল অ্যাকাউন্ট আপডেটকে সম্পূর্ণ প্রত্যাহার বলে চিহ্নিত করবেন না। ঘটনার সময়, ঘড়ি চলার সময়, এই পার্থক্যটি গুরুত্বপূর্ণ।
পাইলট দিয়ে চুক্তি যাচাই করুন
একটি ছোট অনুমোদিত পাইলটে সফলতা, প্রত্যাখ্যান, বাধা এবং পুনঃপ্রচেষ্টা কভার করা উচিত, তারপর যে অ্যাপ্লিকেশন অপারেশনটির অনুমতি বা নিষেধ হওয়ার কথা।
ডেমন-স্তরের একটি ইন্টারফেসের জন্য দুটি কমান্ড পর্যবেক্ষণ ও একটি সংকেত প্রয়োগ করে:
echo state | nc -w 2 127.0.0.1 7505
echo signal SIGTERM | nc -w 2 127.0.0.1 7505কেবল সেই কর্তৃত্ব দিন যা অপারেশনের প্রয়োজন। গোপন তথ্য নিয়মিত লগের বাইরে রাখুন, এবং কোন লক্ষ্য প্রভাবিত হয়েছে ও কীভাবে শেষ হয়েছে তা বলার মতো যথেষ্ট ব্যক্তিগত বিবরণ লগ করুন।
নিয়ন্ত্রণ API নিজেই ডাউন থাকলে সেই ক্ষেত্রে পুনরুদ্ধারের পথ লিখে রাখুন। যে ইন্টারফেস বস্তু ও তার জীবনচক্রের মালিক, সেটিই বেছে নিন; পণ্যের পৃষ্ঠার অটোমেশন দাবি এর বিকল্প নয়।