আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
Edge-এর “ম্যানেজমেন্ট এপিআই” নামে একটি শক্তিশালী ইউটিলিটি রয়েছে যা নিম্নলিখিত পরিষেবাগুলি প্রদান করে:
- এপিআই প্রক্সি স্থাপন বা অপসারণ করা
- ভার্চুয়াল হোস্ট, কীস্টোর ও ট্রাস্টস্টোর ইত্যাদি কনফিগার করা।
- KeyValueMaps, API Products, Developer Apps, Developers, Consumer Keys ইত্যাদির মতো এনটিটি তৈরি, মুছে ফেলা এবং/অথবা আপডেট করা।
- এই সত্তাগুলো সম্পর্কে তথ্য পুনরুদ্ধার করা
Apigee Edge প্ল্যাটফর্মের ম্যানেজমেন্ট সার্ভার নামক একটি কম্পোনেন্টের মাধ্যমে এই পরিষেবাগুলি অ্যাক্সেসযোগ্য করা হয়। সাধারণ ম্যানেজমেন্ট এপিআই কলের সাহায্যে এই পরিষেবাগুলি সহজেই চালু করা যায়।
কখনও কখনও রানটাইমে আমাদের এপিআই প্রক্সি থেকে এই পরিষেবাগুলির এক বা একাধিক ব্যবহার করার প্রয়োজন হতে পারে। এর কারণ হলো, KeyValueMaps, OAuth Access Tokens, API Products, Developer Apps, Developers, Consumer Keys ইত্যাদির মতো এনটিটিগুলিতে কী-ভ্যালু পেয়ার, কাস্টম অ্যাট্রিবিউট বা এর প্রোফাইলের অংশ হিসাবে দরকারি তথ্য থাকে।
উদাহরণস্বরূপ, রানটাইমে KeyValueMap-কে আরও সুরক্ষিত ও সহজলভ্য করার জন্য আপনি এতে নিম্নলিখিত তথ্যগুলো সংরক্ষণ করতে পারেন:
- ব্যাকএন্ড টার্গেট ইউআরএল
- পরিবেশগত বৈশিষ্ট্য
- ব্যাকএন্ড বা তৃতীয় পক্ষের সিস্টেমের নিরাপত্তা প্রমাণপত্র
একইভাবে, আপনি রানটাইমে এপিআই প্রোডাক্টের তালিকা বা ডেভেলপারের ইমেল ঠিকানা পেতে চাইতে পারেন। এই তথ্য ডেভেলপার অ্যাপস প্রোফাইলের অংশ হিসেবে পাওয়া যাবে।
এই সমস্ত তথ্য রানটাইমে কার্যকরভাবে ব্যবহার করে Apigee Edge-এর পলিসি বা কাস্টম কোডে ডাইনামিক আচরণ সক্ষম করা যায়।
অ্যান্টিপ্যাটার্ন
ম্যানেজমেন্ট এপিআইগুলো প্রশাসনিক কাজের জন্য পছন্দনীয় ও উপযোগী এবং এপিআই প্রক্সি ফ্লো-তে কোনো রানটাইম লজিক সম্পাদনের জন্য এগুলো ব্যবহার করা উচিত নয়। এর কারণ হলো:
- এপিআই প্রক্সি থেকে কীভ্যালুম্যাপ, ওঅথ অ্যাক্সেস টোকেনের মতো এনটিটি সম্পর্কিত তথ্য অ্যাক্সেস করতে বা অন্য কোনো উদ্দেশ্যে ম্যানেজমেন্ট এপিআই ব্যবহার করলে তা ম্যানেজমেন্ট সার্ভারের উপর নির্ভরশীলতা তৈরি করে।
- ম্যানেজমেন্ট সার্ভারগুলো এজ রানটাইম কম্পোনেন্টের অংশ নয় এবং সেই কারণে, সেগুলো উচ্চ প্রাপ্যতা সম্পন্ন নাও হতে পারে।
- ম্যানেজমেন্ট সার্ভারগুলো একই নেটওয়ার্ক বা ডেটা সেন্টারে স্থাপন করা নাও হতে পারে এবং এর ফলে রানটাইমে নেটওয়ার্ক ল্যাটেন্সি তৈরি হতে পারে।
- ম্যানেজমেন্ট সার্ভারগুলোর এন্ট্রিগুলো দীর্ঘ সময়ের জন্য ক্যাশ করা থাকে, তাই অল্প সময়ের মধ্যে রাইট ও রিড অপারেশন করলে আমরা এপিআই প্রক্সিগুলোতে তাৎক্ষণিকভাবে সর্বশেষ ডেটা দেখতে নাও পেতে পারি।
- রানটাইমে নেটওয়ার্ক হপ সংখ্যা বৃদ্ধি করে।
নীচের কোড নমুনায়, KeyValueMap থেকে তথ্য পুনরুদ্ধার করার জন্য কাস্টম জাভাস্ক্রিপ্ট কোডের মাধ্যমে ম্যানেজমেন্ট এপিআই কলটি করা হয়েছে:
var response = httpClient.send('https://api.enterprise.apigee.com/v1/o/org_name/e/env_name/keyvaluemaps/kvm_name')
ম্যানেজমেন্ট সার্ভারটি অনুপলব্ধ থাকলে, ম্যানেজমেন্ট এপিআই কল করার জাভাস্ক্রিপ্ট কোডটি ব্যর্থ হয়। এর ফলে এপিআই অনুরোধটিও ব্যর্থ হয়।
প্রভাব
- রানটাইম চলাকালীন ম্যানেজমেন্ট সার্ভারগুলোর উপর অতিরিক্ত নির্ভরতা তৈরি করে। ম্যানেজমেন্ট সার্ভারগুলোতে কোনো ত্রুটি দেখা দিলে তা এপিআই কলগুলোকে প্রভাবিত করবে।
- ম্যানেজমেন্ট এপিআই-এর জন্য ব্যবহারকারীর পরিচয়পত্র স্থানীয়ভাবে অথবা এনক্রিপ্টেড কেভিএম-এর মতো কোনো সুরক্ষিত স্টোরে সংরক্ষণ করতে হবে।
- নেটওয়ার্কের মাধ্যমে ম্যানেজমেন্ট সার্ভিসটি চালু করার কারণে পারফরম্যান্সে প্রভাব।
- ম্যানেজমেন্ট সার্ভারগুলিতে ক্যাশের মেয়াদ দীর্ঘ হওয়ার কারণে আপডেট করা মানগুলি অবিলম্বে দেখা নাও যেতে পারে।
সর্বোত্তম অনুশীলন
রানটাইমে KeyValueMaps, API Products, DeveloperApps, Developers, Consumer Keys ইত্যাদির মতো এনটিটিগুলো থেকে তথ্য পুনরুদ্ধার করার আরও কার্যকর উপায় রয়েছে। নিচে কয়েকটি উদাহরণ দেওয়া হলো:
- KeyValueMap থেকে তথ্য অ্যাক্সেস করতে একটি KeyValueMapOperations পলিসি ব্যবহার করুন। KeyValueMap থেকে কীভাবে তথ্য পুনরুদ্ধার করতে হয়, তা এখানে একটি নমুনা কোডে দেখানো হলো:
<!-- /antipatterns/examples/2-6.xml --> <KeyValueMapOperations mapIdentifier="urlMap" async="false" continueOnError="false" enabled="true" name="GetURLKVM"> <DisplayName>GetURLKVM</DisplayName> <ExpiryTimeInSecs>86400</ExpiryTimeInSecs> <Scope>environment</Scope> <Get assignTo="urlHosti" index="2"> <Key> <Parameter>urlHost_1</Parameter> </Key> </Get> </KeyValueMapOperations>
- এপিআই প্রক্সিতে এপিআই প্রোডাক্ট, ডেভেলপার অ্যাপ, ডেভেলপার, কনজিউমার কী ইত্যাদি সম্পর্কিত তথ্য অ্যাক্সেস করতে, আপনি নিম্নলিখিত পদ্ধতিগুলোর যেকোনো একটি অনুসরণ করতে পারেন:
- আপনার API প্রক্সি ফ্লো-তে যদি একটি VerifyAPIKey পলিসি থাকে, তাহলে আপনি এই পলিসির অংশ হিসেবে পপুলেট হওয়া ফ্লো ভ্যারিয়েবলগুলো ব্যবহার করে তথ্য অ্যাক্সেস করতে পারবেন। নিচে একটি নমুনা কোড দেওয়া হলো, যা জাভাস্ক্রিপ্ট ব্যবহার করে একটি ডেভেলপার অ্যাপের নাম এবং created_by তথ্য কীভাবে পুনরুদ্ধার করতে হয় তা দেখায়:
<!-- /antipatterns/examples/2-7.xml --> print("Application Name ", context.getVariable(""verifyapikey. VerifyAPIKey.app.name")); print("Created by:", context.getVariable("verifyapikey. VerifyAPIKey.app.created_by"));
- যদি আপনার API Proxy ফ্লো-তে VerifyAPIKey পলিসি না থাকে, তাহলে আপনি Access Entity এবং Extract Variables পলিসি ব্যবহার করে API Products, Developer Apps, ইত্যাদির প্রোফাইল অ্যাক্সেস করতে পারবেন:
- AccessEntity পলিসি ব্যবহার করে DeveloperApp-এর প্রোফাইল পুনরুদ্ধার করুন:
<!-- /antipatterns/examples/2-8.xml --> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AccessEntity async="false" continueOnError="false" enabled="true" name="GetDeveloperApp"> <DisplayName>GetDeveloperApp</DisplayName> <EntityType value="app"></EntityType> <EntityIdentifier ref="developer.app.name" type="appname"/> <SecondaryIdentifier ref="developer.id" type="developerid"/> </AccessEntity>
- ExtractVariables পলিসি ব্যবহার করে DeveloperApp থেকে
appIdবের করুন:<!-- /antipatterns/examples/2-9.xml --> <ExtractVariables name="Extract-Developer App-Info"> <!-- The source element points to the variable populated by AccessEntity policy. The format is <policy-type>.<policy-name> In this case, the variable contains the whole developer profile. --> <Source>AccessEntity.GetDeveloperApp"</Source> <VariablePrefix>developerapp</VariablePrefix> <XMLPayload> <Variable name="appld" type="string"> <!-- You parse elements from the developer profile using XPath. --> <XPath>/App/AppId</XPath> </Variable> </XMLPayload> </ExtractVariables>
- AccessEntity পলিসি ব্যবহার করে DeveloperApp-এর প্রোফাইল পুনরুদ্ধার করুন:
- আপনার API প্রক্সি ফ্লো-তে যদি একটি VerifyAPIKey পলিসি থাকে, তাহলে আপনি এই পলিসির অংশ হিসেবে পপুলেট হওয়া ফ্লো ভ্যারিয়েবলগুলো ব্যবহার করে তথ্য অ্যাক্সেস করতে পারবেন। নিচে একটি নমুনা কোড দেওয়া হলো, যা জাভাস্ক্রিপ্ট ব্যবহার করে একটি ডেভেলপার অ্যাপের নাম এবং created_by তথ্য কীভাবে পুনরুদ্ধার করতে হয় তা দেখায়: