আপনার Shopify Flow ওয়ার্কফ্লো অপ্টিমাইজ করা

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

পারফরম্যান্স সম্পর্কিত সাধারণ সমস্যা

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

বেশি ভলিউমের ট্রিগার

বেশি ভলিউমের ট্রিগার হলো সেগুলো, যেখানে মূল ইভেন্টটি ঘন ঘন ঘটে। যেমন, একটি স্টোরের প্রতিটি ইনভেন্টরি পরিবর্তনের জন্য Product variant inventory quantity changed ট্রিগার রান করে। একটি ট্রিগারের ভলিউম আপনার ওয়ার্কফ্লোর যেকোনো সমস্যার ক্ষেত্রে গুণক হিসেবে কাজ করে। উদাহরণস্বরূপ, কোনো ওয়ার্কফ্লো যদি 100টি পণ্য ফেচ করে এবং প্রতি মিনিটে 1000 বার রান করে, তবে এটি প্রতি মিনিটে 1 লক্ষ পণ্য ফেচ করবে। এর ফলে পারফরম্যান্সের সমস্যা হতে পারে।

সমাধান: কম ডেটা ব্যবহার করে আপনার ওয়ার্কফ্লোগুলো অপ্টিমাইজ করুন বা আপনার ওয়ার্কফ্লো বিভাজন করতে wait ধাপগুলো ব্যবহার করুন।

একই ট্রিগার ব্যবহার করা অনেকগুলো ওয়ার্কফ্লো

Flow-তে আপনি একই ট্রিগার ব্যবহার করে একাধিক ওয়ার্কফ্লো তৈরি করতে পারেন। যখন ইভেন্ট ঘটবে, তখন এই ওয়ার্কফ্লোগুলো একসাথে রান করবে। আপনি যদি একই ট্রিগার ব্যবহার করে অনেক বেশি ওয়ার্কফ্লো রান করান, তবে নিচের কারণগুলোর জন্য তা সমস্যাযুক্ত হতে পারে:

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

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

তালিকা বা ভুল ডেটা ব্যবহার করা

আপনি যখন একটি ওয়ার্কফ্লো তৈরি করেন, তখন আপনি অবজেক্টের তালিকা, যেমন পণ্য বা অর্ডার ব্যবহার করতে পারেন। আপনি যদি অবজেক্টের তালিকা ব্যবহার করেন, তবে Flow তালিকাটির সমস্ত অবজেক্ট ফেচ করবে। তালিকায় প্রচুর ডেটা থাকলে এটি সমস্যা হতে পারে।

আরেকটি সাধারণ সমস্যা হলো ভুলবশত ভুল ডেটা নির্বাচন করা। উদাহরণস্বরূপ, কোনো অর্ডারে পণ্যের ডেটা পরীক্ষা করতে আপনি হয়তো order / line items / product / tags-এর পরিবর্তে order / publication / products / tags নির্বাচন করেছেন। প্রথম ফলাফলটি সাধারণত ভুল হয়, কারণ এটি পাবলিকেশনের সমস্ত পণ্য ফেচ করে, যখন মূল উদ্দেশ্য থাকে অর্ডারে থাকা পণ্যগুলো পরীক্ষা করা। এমন বড় একটি তালিকা বেছে নিলে পারফরম্যান্সের সমস্যা হতে পারে এবং ভুল তালিকা বেছে নিলে আপনার অটোমেশনে ভুল কাজ হতে পারে।

সমাধান: আপনার প্রয়োজনীয় ডেটা সতর্কতার সাথে নির্বাচন করুন এবং আপনার প্রয়োজন না হলে তালিকা ব্যবহার করা এড়িয়ে চলুন। আপনার ওয়ার্কফ্লোগুলো প্রত্যাশা অনুযায়ী কাজ করছে কি না তা নিশ্চিত করতে সেগুলোর পরীক্ষা করুন।

মেটাফিল্ড

স্বতন্ত্র মেটাফিল্ড বা মেটাঅবজেক্ট ডেটা ফেচ করলে পারফরম্যান্সের কোনো সমস্যা হওয়া উচিত নয়। তবে একটি সাধারণ সমস্যা হলো metafields তালিকাটি বেছে নেওয়া এবং কোনো রিসোর্সের সমস্ত মেটাফিল্ডে লুপ করা। value ফিল্ডে যদি প্রচুর ডেটা থাকে, যেমন HTML অবজেক্টগুলো ব্যবহার করার সময়, তবে এর ফলে প্রচুর ডেটা প্রসেস হতে পারে এবং সম্ভাব্যভাবে পারফরম্যান্সের সমস্যা হতে পারে।

সমাধান: metafields-এর পরিবর্তে metafield অবজেক্ট ব্যবহার করুন।

Get data অ্যাকশনগুলোর অতিরিক্ত ব্যবহার

Get order data-এর মতো Get data অ্যাকশন ব্যবহার করে এমন ওয়ার্কফ্লোগুলোকে এমনভাবে তৈরি করা হয়েছে যেন সেগুলো Get data অ্যাকশনগুলো থেকে ওয়ার্কফ্লো প্রতি সর্বোচ্চ 100টি অবজেক্ট প্রদান করে। 100টি অবজেক্টের বেশি হয়ে গেলে পারফরম্যান্সের সমস্যা হতে পারে।

সমাধান: ওয়ার্কফ্লোটি আরও ঘন ঘন রান করান যেন আপনার কোয়েরির 100টির বেশি ফলাফল প্রদান করার প্রয়োজন না হয়। বারবার কোয়েরি করার পরিবর্তে একই Get data অ্যাকশন পুনরায় ব্যবহার করুন।

Get data অ্যাকশনগুলোতে কোনো কোয়েরি ফিল্টার না থাকা

Get data অ্যাকশনগুলো Shopify API-তে কল করে। কোনো কোয়েরি না থাকলে, API সব রিসোর্স প্রদান করবে অথবা কিছুই প্রদান করবে না। এতে পারফরম্যান্সের সমস্যা হতে পারে, কিন্তু ওয়ার্কফ্লোতে পরবর্তীতে দেওয়া ডেটা ব্যবহার করলে আপনার স্টোরে ভুল পদক্ষেপ নেওয়ার কারণও হতে পারে।

সমাধান: আপনার Get data অ্যাকশনগুলোতে সবসময় কোয়েরি ফিল্টার অন্তর্ভুক্ত করুন।

Get data অ্যাকশনগুলোতে ভুল কোয়েরি ফিল্টার থাকা

Get data কোয়েরিগুলো সীমিত সেটের কোয়েরি ফিল্টার, একটি নির্দিষ্ট সিনট্যাক্স এবং ফিল্টারগুলোতে ব্যবহার করা যায় এমন নির্দিষ্ট সেটের মান সমর্থন করে। ভুল ফিল্টার, ফিল্টারের মান বা সিনট্যাক্স লিখলে সম্পূর্ণ কোয়েরিটি উপেক্ষা করা হতে পারে, যা কোনো কোয়েরি ফিল্টার না থাকার মতো সমস্যা সৃষ্টি করতে পারে।

সমাধান: লভ্য কোয়েরি ফিল্টারগুলোর তালিকা খুঁজতে Flow-তে অ্যাকশনের মাধ্যমে দেওয়া ডকুমেন্টেশন ব্যবহার করুন। আপনার কোয়েরি ফিল্টারগুলো প্রত্যাশিত ডেটা প্রদান করছে কি না তা নিশ্চিত করতে সেগুলোর পরীক্ষা করুন। প্রদান করা ডেটা পর্যালোচনা করতে আপনি Flow-তে একটি Log Output অ্যাকশন ব্যবহার করতে পারেন, বা আপনি Postman-এর মতো কোনো API ক্লায়েন্টের মাধ্যমে বা GraphiQL অ্যাপের মাধ্যমে সরাসরি Shopify Admin API-তে কল করতে পারেন।

পারফরম্যান্স সম্পর্কিত সাধারণ সমস্যার অতিরিক্ত সমাধান

ডেটা ফেচ করা বিলম্বিত করতে Wait ধাপগুলো ব্যবহার করুন

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

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

  1. ট্রিগার: Product variant inventory quantity changed.
  2. শর্ত: পণ্যটি কোনো কালেকশনে আছে কি না তা পরীক্ষা করুন।
  3. যদি সত্য হয়, তাহলে অ্যাকশন: 2 সেকেন্ড অপেক্ষা করুন।
  4. অ্যাকশন: গ্রাহককে একটি ইমেইল পাঠান (প্রচুর ডেটা সহ)।

এই উদাহরণে, Wait ধাপটি সম্পন্ন হওয়ার পরেই কেবল 4র্থ ধাপের জন্য প্রয়োজনীয় ডেটার কোয়েরি করা হয়। শর্তটি যদি সাধারণত মিথ্যা হয়, তবে এর অর্থ হলো ওয়ার্কফ্লোটি আরও দ্রুত ও দক্ষতার সাথে রান করবে।

কী কী অপ্টিমাইজ করতে হবে না

একাধিক অ্যাকশনে একই ডেটা ব্যবহার করা

আপনি যখন একাধিক ধাপে একই ফিল্ড ব্যবহার করেন, তখন Flow সেই ফিল্ডগুলোর ব্যবহার বিশ্লেষণ করে এবং শুধুমাত্র একবার সেই ডেটা ফেচ করে। এর অর্থ হলো পারফরম্যান্স নিয়ে চিন্তা না করেই আপনি যতবার খুশি ততবার ডেটা ব্যবহার করতে পারেন।