আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
এপিআই প্রক্সি হলো ব্যাকএন্ড সার্ভিসগুলোর জন্য একটি পরিচালিত ফেসাড। একটি মৌলিক এপিআই প্রক্সি কনফিগারেশনে একটি ProxyEndpoint (যা এপিআই প্রক্সির ইউআরএল নির্ধারণ করে) এবং একটি TargetEndpoint (যা ব্যাকএন্ড সার্ভিসের ইউআরএল নির্ধারণ করে) থাকে।
Apigee Edge এই প্যাটার্নের উপর ভিত্তি করে অত্যাধুনিক আচরণ তৈরির জন্য প্রচুর নমনীয়তা প্রদান করে। উদাহরণস্বরূপ, ব্যাকএন্ড সার্ভিসে পাঠানোর আগে এপিআই কীভাবে ক্লায়েন্টের অনুরোধ প্রসেস করবে তা নিয়ন্ত্রণ করতে, অথবা ক্লায়েন্টের কাছে ফরোয়ার্ড করার আগে ব্যাকএন্ড সার্ভিস থেকে প্রাপ্ত রেসপন্সকে ম্যানিপুলেট করতে আপনি পলিসি যোগ করতে পারেন। আপনি সার্ভিস কলআউট পলিসি ব্যবহার করে অন্যান্য সার্ভিস কল করতে পারেন, জাভাস্ক্রিপ্ট কোড যোগ করে কাস্টম আচরণ তৈরি করতে পারেন, এবং এমনকি এমন একটি এপিআই প্রক্সিও তৈরি করতে পারেন যা কোনো ব্যাকএন্ড সার্ভিস কল করে না।
অ্যান্টিপ্যাটার্ন
টার্গেট এন্ডপয়েন্টে কোনো রুট ছাড়াই এপিআই প্রক্সিতে সার্ভিস কলআউটের মাধ্যমে ব্যাকএন্ড সার্ভিসকে কল করা প্রযুক্তিগতভাবে সম্ভব, কিন্তু এর ফলে বাহ্যিক সার্ভিসটির পারফরম্যান্স সম্পর্কিত অ্যানালিটিক্স ডেটা হারিয়ে যায়।
এমন একটি এপিআই প্রক্সি, যাতে টার্গেট রাউট থাকে না, তা সেইসব ক্ষেত্রে উপযোগী হতে পারে যেখানে আপনার অনুরোধ বার্তাটি টার্গেটএন্ডপয়েন্টে ফরোয়ার্ড করার প্রয়োজন নেই। এর পরিবর্তে, প্রক্সিএন্ডপয়েন্ট নিজেই সমস্ত প্রয়োজনীয় প্রসেসিং সম্পন্ন করে। উদাহরণস্বরূপ, প্রক্সিএন্ডপয়েন্ট কোনো ব্যাকএন্ড সার্ভিসকে কল না করেই এপিআই সার্ভিসের কী/ভ্যালু স্টোর থেকে ডেটা সংগ্রহ করে প্রতিক্রিয়াটি ফেরত দিতে পারে।
আপনি একটি এপিআই প্রক্সিতে একটি নাল রাউট সংজ্ঞায়িত করতে পারেন, যেমনটি এখানে দেখানো হয়েছে:
<RouteRule name="noroute"/>
নাল রুট ব্যবহারকারী প্রক্সিকে "নো টার্গেট" প্রক্সি বলা হয়, কারণ এটি কোনো টার্গেট ব্যাকএন্ড সার্ভিসকে কল করে না।
টেকনিক্যালি একটি নো-টার্গেট প্রক্সিতে সার্ভিস কলআউট যোগ করে কোনো এক্সটার্নাল সার্ভিসকে কল করা সম্ভব, যেমনটি নিচের উদাহরণে দেখানো হয়েছে:
<!-- /antipatterns/examples/service-callout-no-target-1.xml --> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ProxyEndpoint name="default"> <Description/> <FaultRules/> <PreFlow name="PreFlow"> <Request> <Step> <Name>ServiceCallout-InvokeBackend</Name> </Step> </Request> <Response/> </PreFlow> <PostFlow name="PostFlow"> <Request/> <Response/> </PostFlow> <Flows/> <HTTPProxyConnection> <BasePath>/no-target-proxy</BasePath> <Properties/> <VirtualHost>secure</VirtualHost> </HTTPProxyConnection> <RouteRule name="noroute"/> </ProxyEndpoint>
তবে, প্রক্সিটি বাহ্যিক পরিষেবার আচরণ সম্পর্কে বিশ্লেষণমূলক তথ্য (যেমন প্রক্রিয়াকরণের সময় বা ত্রুটির হার) প্রদান করতে পারে না, যার ফলে বাহ্যিক পরিষেবাটির কর্মক্ষমতা মূল্যায়ন করা কঠিন হয়ে পড়ে।
প্রভাব
- বাহ্যিক পরিষেবার সাথে মিথস্ক্রিয়া সম্পর্কিত বিশ্লেষণমূলক তথ্য (যেমন ত্রুটি কোড, প্রতিক্রিয়ার সময়, লক্ষ্যমাত্রার কার্যকারিতা ইত্যাদি) অনুপলব্ধ।
- সার্ভিস কলআউট চালু করার আগে বা পরে প্রয়োজনীয় যেকোনো নির্দিষ্ট লজিক সামগ্রিক প্রক্সি লজিকের অংশ হিসেবে অন্তর্ভুক্ত করা হয়, যা এটিকে বোঝা এবং পুনঃব্যবহার করা আরও কঠিন করে তোলে।
সর্বোত্তম অনুশীলন
যদি কোনো এপিআই প্রক্সি শুধুমাত্র একটি বাহ্যিক পরিষেবার সাথে যোগাযোগ করে, তবে প্রক্সিটির মৌলিক ডিজাইন প্যাটার্ন অনুসরণ করা উচিত, যেখানে ব্যাকএন্ড পরিষেবাটিকে এপিআই প্রক্সির টার্গেট এন্ডপয়েন্ট হিসাবে সংজ্ঞায়িত করা হয়। যে প্রক্সির টার্গেট এন্ডপয়েন্টের জন্য কোনো রাউটিং নিয়ম নেই, তার ServiceCallout পলিসি ব্যবহার করে কোনো ব্যাকএন্ড পরিষেবা কল করা উচিত নয়।
নিম্নলিখিত প্রক্সি কনফিগারেশনটি উপরের উদাহরণের মতোই আচরণ বাস্তবায়ন করে, তবে এটি সর্বোত্তম অনুশীলন অনুসরণ করে:
<!-- /antipatterns/examples/service-callout-no-target-2.xml --> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ProxyEndpoint name="default"> <Description/> <FaultRules/> <PreFlow name="PreFlow"> <Request/> <Response/> </PreFlow> <PostFlow name="PostFlow"> <Request/> <Response/> </PostFlow> <Flows/> <HTTPProxyConnection> <BasePath>/simple-proxy-with-route-to-backend</BasePath> <Properties/> <VirtualHost>secure</VirtualHost> </HTTPProxyConnection> <RouteRule name="default"> <TargetEndpoint>default</TargetEndpoint> </RouteRule> </ProxyEndpoint>
ম্যাশআপ সিনারিও সমর্থন করার জন্য সার্ভিস কলআউট ব্যবহার করুন, যেখানে আপনি টার্গেট এন্ডপয়েন্ট কল করার আগে বা পরে বাহ্যিক পরিষেবা কল করতে চান। সার্ভিস কলআউট টার্গেট এন্ডপয়েন্ট কল করার বিকল্প হিসেবে ব্যবহৃত হয় না।