স্থানীয়ভাবে ওয়েব এন্ড-টু-এন্ডের জন্য B&A পরীক্ষা করুন

1. ভূমিকা

সুরক্ষিত দর্শক নিলামের সুবিধার্থে ক্রেতা এবং বিক্রেতাদের জন্য বিডিং এবং নিলাম পরিষেবা (বিএন্ডএ) ৪টি পরিষেবা নিয়ে গঠিত:

ক্রেতার স্ট্যাক:

  • ক্রেতার ফ্রন্ট-এন্ড পরিষেবা
  • বিডিং পরিষেবা

বিক্রেতার স্ট্যাক:

  • বিক্রেতা ফ্রন্ট-এন্ড পরিষেবা
  • নিলাম পরিষেবা

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

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

এই কোডল্যাবে, আমরা ওয়াকথ্রু সঙ্গী হিসেবে B&A লোকাল টেস্টিং অ্যাপ ব্যবহার করব।

এই সহযোগী স্থানীয় পরীক্ষার অ্যাপটিতে B&A নিলামে ব্যবহৃত বিভিন্ন ক্রেতা এবং বিক্রেতার রিসোর্স রয়েছে। অ্যাপটি http://localhost:3000 এ একটি UIও প্রদান করে যেখানে আপনি বিভিন্ন নিলাম কনফিগারেশন সিমুলেট করতে পারবেন।

2. পরিবেশ সেটআপ

২.১ একটি লিনাক্স মেশিন প্রস্তুত করুন

একটি স্থানীয় লিনাক্স মেশিন ব্যবহার করুন, অথবা আপনার পছন্দের ক্লাউড প্রদানকারীর একটি লিনাক্স ভিএম সরবরাহ করুন। নির্মাণের সময় উন্নত করার জন্য, সর্বনিম্ন ১৬টি কোর সুপারিশ করা হয় এবং ৩২+ কোর পছন্দ করা হয়।

মনে রাখবেন যে আমরা এই মেশিনের http://localhost:3000 থেকে একটি HTML পৃষ্ঠা লোড করব। যদি VM কোনও GUI প্রদান না করে, তাহলে নিশ্চিত করুন যে পোর্ট 3000 আপনার স্থানীয় মেশিনে অ্যাক্সেসযোগ্য যাতে আপনি এটির সাথে সংযোগ করতে পারেন।

২.২ ডকার ইনস্টল করুন

আমরা পরিষেবা এবং স্থানীয় পরীক্ষার অ্যাপ্লিকেশন চালানোর জন্য ডকার ব্যবহার করি।

আমরা একটি পরীক্ষার পরিবেশে ডকার ইনস্টল করার জন্য সুবিধা স্ক্রিপ্ট ব্যবহার করব।

# Install Docker
> curl -fsSL https://get.docker.com -o get-docker.sh
> sudo sh get-docker.sh

# Set up sudo-less Docker
> sudo groupadd docker
> sudo usermod -aG docker $USER
> newgrp docker

# Test
> docker run hello-world

সতর্কতা: sudo-less সেটআপের মাধ্যমে, ডকার গ্রুপ ব্যবহারকারীকে রুট-লেভেলের সুবিধা প্রদান করে। আরও জানতে sudo-less ডকার নির্দেশিকাটি পড়ুন।

২.৩ সঙ্গী লোকাল টেস্টিং অ্যাপটি শুরু করুন

কম্প্যানিয়ন অ্যাপটি মক বিডিং বা স্কোরিং স্ক্রিপ্ট এবং মক K/V BYOS এন্ডপয়েন্টের মতো রিসোর্স প্রদান করে। B&A পরিষেবাগুলি চালানোর আগে অ্যাপটি শুরু করা উচিত যাতে রিসোর্সগুলি পরিষেবাগুলিতে লোড করা যায়।

লোকাল টেস্টিং অ্যাপ রিপোজিটরিটি নামিয়ে আনুন:

git clone https://github.com/privacysandbox/bidding-auction-local-testing-app.git

রিপোজিটরির রুট থেকে, সেটআপ স্ক্রিপ্টটি চালান:

./setup

সেটআপ স্ক্রিপ্টটি ba-dev ডকার নেটওয়ার্ক তৈরি করবে, SSL সার্টিফিকেট তৈরি করবে এবং টেস্ট অ্যাপ ইমেজ তৈরি করবে।

বিল্ডটি সফল হয়ে গেলে, start স্ক্রিপ্টটি চালান:

./start

৩. স্থানীয়ভাবে B&A তৈরি এবং পরিচালনা করুন

৩.১ বিএন্ডএ পরিষেবা বন্ধ করে দিন

আমরা একই মেশিনে দুটি সেট B&A পরিষেবা চালাবো, তাই আমরা রিপোজিটরিটি দুটি ভিন্ন ফোল্ডারে টেনে আনবো।

সেট A:

B&A রিপোজিটরিটি টেনে আনুন:

git clone https://github.com/privacysandbox/bidding-auction-servers.git bidding-auction-servers-set-a

সেট বি

B&A রিপোজিটরিটি টেনে আনুন:

git clone https://github.com/privacysandbox/bidding-auction-servers.git bidding-auction-servers-set-b
`

৩.২ পরিষেবাগুলি তৈরি করুন

প্রতিটি B&A ফোল্ডারের রুট ফোল্ডার থেকে, ৪টি পরিষেবা তৈরি করতে নিম্নলিখিত কমান্ডটি চালান:

production/packaging/build_and_test_all_in_docker \
  --service-path bidding_service \
  --service-path auction_service \
  --service-path buyer_frontend_service \
  --service-path seller_frontend_service \
  --platform gcp \
  --instance local \
  --no-precommit \
  --no-tests \
  --build-flavor non_prod \
  --gcp-skip-image-upload

এই কমান্ডটি ৪টি পরিষেবার Google Cloud ( gcp ) এর জন্য ডেভেলপমেন্ট বিল্ড ( non_prod ) এর একটি local উদাহরণ তৈরি করবে। প্রয়োজনে আপনার পছন্দের ক্লাউড প্রদানকারীর কাছে --platform ফ্ল্যাগ আপডেট করুন। বিল্ড ফ্ল্যাগ সম্পর্কে আরও জানতে, build_and_test_all_docker ফাইলটি দেখুন।

৬৪-কোর মেশিন ব্যবহার করলে প্রাথমিক নির্মাণে ২ ঘন্টা সময় লাগতে পারে এবং নির্মাণের সময় কোর গণনা অনুসারে রৈখিকভাবে পরিবর্তিত হয়। যদি আপনি ৩২-কোর মেশিন ব্যবহার করেন, তাহলে ৪ ঘন্টা সময় লাগতে পারে। যদি আপনি ১৬-কোর মেশিন ব্যবহার করেন, তাহলে ৮ ঘন্টা সময় লাগতে পারে।

মনে রাখবেন যে পরবর্তী বিল্ডগুলি ক্যাশে ব্যবহার করে এবং প্রতিটি বিল্ড তৈরিতে প্রায় ৫-২০ মিনিট সময় লাগে।

প্রাসঙ্গিক xkcd কমিক :

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

( এই কোডল্যাবটি লেখার সময় আমি xkcd-এর র‍্যান্ডাল মুনরোর সাথে দেখা করেছিলাম এবং তাকে বলেছিলাম যে আমি এখানে এই কমিকটি যুক্ত করেছি )

৩.৩ পরিষেবাগুলি চালান

আমাদের পরীক্ষার জন্য, আমরা ৮টি পরিষেবা (প্রতি স্ট্যাকে ৪টি পরিষেবা) চালাবো। প্রতিটি কমান্ড লোকাল টেস্টিং অ্যাপ দ্বারা প্রদত্ত রিসোর্স ব্যবহার করার জন্য সেট আপ করা হয়েছে। tmux এর মতো একটি উইন্ডো ম্যানেজার ব্যবহার করার জন্য এটি অত্যন্ত সুপারিশ করা হয়।

কমপক্ষে ৮টি অতিরিক্ত টার্মিনাল উইন্ডো খুলুন এবং প্রতিটি সেশনে নিম্নলিখিত কমান্ডগুলি চালান।

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

৩.৩.১ A কমান্ড সেট করুন

সেবা

কমান্ড

DSP-X বিডিং পরিষেবা

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.101 --network=ba-dev" \

BIDDING_JS_URL=https://192.168.84.100:5003/generate-bid.js \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_bidding

DSP-X বিএফই পরিষেবা

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.102 --network=ba-dev" \

BUYER_KV_SERVER_ADDR=https://192.168.84.100:5003/kv \

BIDDING_SERVER_ADDR=192.168.84.101:50057 \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_bfe

SSP-BA নিলাম পরিষেবা

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.103 --network=ba-dev" \

AUCTION_JS_URL="https://192.168.84.100:6002/score-ad.js" \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_auction

SSP-BA এসএফই পরিষেবা

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.104 --network=ba-dev" \

SELLER_ORIGIN_DOMAIN="https://localhost:6002" \

AUCTION_SERVER_ADDR="192.168.84.103:50061" \

KEY_VALUE_SIGNALS_ADDR="https://192.168.84.100:6002/kv" \

BUYER_SERVER_ADDRS_JSON='{"https://localhost:5003":{"url":"192.168.84.102:50051","cloudPlatform":"LOCAL"},"https://localhost:5004":{"url":"192.168.84.202:50051","cloudPlatform":"LOCAL"}}' \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_sfe

৩.৩.২ B কমান্ড সেট করুন

সেবা

কমান্ড

DSP-Y বিডিং পরিষেবা

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.201 --network=ba-dev" \

BIDDING_JS_URL=https://192.168.84.100:5004/generate-bid.js \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_bidding

DSP-Y বিএফই পরিষেবা

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.202 --network=ba-dev" \

BUYER_KV_SERVER_ADDR=https://192.168.84.100:5004/kv \

BIDDING_SERVER_ADDR=192.168.84.201:50057 \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_bfe

SSP-BA নিলাম পরিষেবা

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.203 --network=ba-dev" \

AUCTION_JS_URL="https://192.168.84.100:6003/score-ad.js" \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_auction

SSP-BA এসএফই পরিষেবা

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.204 --network=ba-dev" \

SELLER_ORIGIN_DOMAIN="https://localhost:6003" \

AUCTION_SERVER_ADDR="192.168.84.203:50061" \

KEY_VALUE_SIGNALS_ADDR="https://192.168.84.100:6003/kv" \

BUYER_SERVER_ADDRS_JSON='{"https://localhost:5003":{"url":"192.168.84.102:50051","cloudPlatform":"LOCAL"},"https://localhost:5004":{"url":"192.168.84.202:50051","cloudPlatform":"LOCAL"}}' \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_sfe

৩.৩.২ স্থানীয় স্টার্ট স্ক্রিপ্টের জন্য পরিবেশগত পরিবর্তনশীল

স্টার্ট-আপ আচরণ নিয়ন্ত্রণ করতে নিম্নলিখিত পরিবেশগত ভেরিয়েবলগুলি ব্যবহার করা যেতে পারে।

এনভ ভার

উপস্থিতি

বিবরণ

DOCKER_RUN_ARGS_STRING

সকল পরিষেবা

ডকার কমান্ডের জন্য সেট করার জন্য পতাকা

SKIP_TLS_VERIFICATION

সকল পরিষেবা

যখন আপনি আপনার স্থানীয় মেশিনে পরীক্ষা করছেন, তখন আপনাকে একটি স্ব-স্বাক্ষরিত শংসাপত্র ব্যবহার করতে হতে পারে যা curl এর SSL পিয়ার যাচাইকরণ পরীক্ষায় ব্যর্থ হয়। ফ্ল্যাগটি SSL হোস্টনেম চেকের সাথে পিয়ার যাচাইকরণকে অক্ষম করে।

ডিফল্ট হিসেবে false থাকে।

PS_VERBOSITY

সকল পরিষেবা

পরিষেবা লগের স্তর। উচ্চতর স্তর আরও লগ সরবরাহ করে। 0 হল সর্বনিম্ন এবং 10 হল সর্বোচ্চ। ডিফল্ট 10

BIDDING_PORT

বিডিং পরিষেবা

বিডিং সার্ভিসের পোর্ট। ডিফল্ট 50057

BIDDING_JS_URL

বিডিং পরিষেবা

বিডিং লজিকের URL

EGRESS_SCHEMA_URL

বিডিং পরিষেবা

মডেল প্রশিক্ষণের জন্য ডেটা নির্গমন

INFERENCE_ARGS

বিডিং পরিষেবা

বিডিং অনুমানের জন্য যুক্তি

BFE_PORT

বিএফই পরিষেবা

BFE সার্ভিসের পোর্ট। ডিফল্ট 50051

BUYER_KV_SERVER_ADDR

বিএফই পরিষেবা

ক্রেতার BYOS K/V ঠিকানা

BUYER_TKV_V2_SERVER_ADDR

বিএফই পরিষেবা

ক্রেতার টিইই কে/ভি ঠিকানা

BIDDING_SERVER_ADDR

বিএফই পরিষেবা

ক্রেতার বিডিং পরিষেবার ঠিকানা

AUCTION_PORT

নিলাম পরিষেবা

নিলাম পরিষেবার পোর্ট। ডিফল্ট 50061

AUCTION_JS_URL

নিলাম পরিষেবা

স্কোরিং লজিকের URL

BUYER_REPORT_WIN_URL

নিলাম পরিষেবা

ক্রেতার জয়ের রিপোর্টিং URL

BUYER_REPORT_WIN_SCRIPT

নিলাম পরিষেবা

ক্রেতার জয়ের প্রতিবেদনের স্ক্রিপ্ট

BUYER_PAS_REPORT_WIN_SCRIPT

নিলাম পরিষেবা

PAS-এর জন্য ক্রেতার জয়ের প্রতিবেদনের স্ক্রিপ্ট

SFE_PORT

এসএফই পরিষেবা

SFE সার্ভিসের পোর্ট। ডিফল্ট 50053

AUCTION_SERVER_ADDR

এসএফই পরিষেবা

বিক্রেতার নিলাম পরিষেবার ঠিকানা

KEY_VALUE_SIGNALS_ADDR

এসএফই পরিষেবা

বিক্রেতার BYOS K/V ঠিকানা

TRUSTED_KEY_VALUE_V2_SIGNALS_ADDR

এসএফই পরিষেবা

বিক্রেতার টিইই কে/ভি ঠিকানা

SELLER_ORIGIN_DOMAIN

এসএফই পরিষেবা

বিক্রেতার উৎপত্তি

BUYER_SERVER_ADDRS_JSON

এসএফই পরিষেবা

ক্রেতার BFE ঠিকানা

৪. কমান্ড লাইন থেকে সিকিউর ইনভোক দিয়ে পরীক্ষা করুন

৪.১ SFE পরীক্ষা

আপনি কমান্ড লাইন থেকে সরাসরি পরিষেবাগুলিতে কল করার জন্য B&A পরিষেবা প্যাকেজে অন্তর্ভুক্ত সিকিউর ইনভোক টুলটিও ব্যবহার করতে পারেন।

৪.১.২ SFE SelectAd পেলোড

নিম্নলিখিত JSON অনুরোধটি SSP-BA এর একক-বিক্রেতা B&A নিলাম সেটআপ দিয়ে পূর্ণ করা হয়েছে:

{
  "auction_config": {
    "seller": "https://localhost:6002",
    "auction_signals": "{\"testKey\":\"someValue\"}",
    "seller_signals": "{\"testKey\":\"someValue\"}",
    "buyer_list": [
      "https://localhost:5003",
      "https://localhost:5004"
    ],
    "per_buyer_config": {
      "https://localhost:5003": { "buyer_signals": "{\"testKey\":\"someValue\"}" },
      "https://localhost:5004": { "buyer_signals": "{\"testKey\":\"someValue\"}" }
    }
  },
  "raw_protected_audience_input": {
    "publisher_name": "http://localhost:4001",
    "generation_id": "1210718540",
    "enable_debug_reporting": true,
    "raw_buyer_input": {
      "https://localhost:5003": {
        "interest_groups": [
          {
            "name": "dsp-x-demo",
            "ad_render_ids": ["1234"],
            "bidding_signals_keys": ["demo-key"],
            "browser_signals": { "bid_count": "1", "join_count": "1", "prev_wins": "[]" },
            "user_bidding_signals": "[1, 2, 3]"
          }
        ]
      },
      "https://localhost:5004": {
        "interest_groups": [
          {
            "name": "dsp-x-demo",
            "ad_render_ids": ["1234"],
            "bidding_signals_keys": ["demo-key"],
            "browser_signals": { "bid_count": "1", "join_count": "1", "prev_wins": "[]" },
            "user_bidding_signals": "[1, 2, 3]"
          }
        ]
      }
    }
  }
}

Set A এর B&A Services রিপোজিটরির রুট ফোল্ডারে sfe-test.json হিসেবে ফাইলটি সংরক্ষণ করুন (B&A বিল্ড স্ক্রিপ্ট রেপোর রুট ফোল্ডারের ফাইলগুলি ডকার ইমেজের /src/workspace ফোল্ডারে কপি করবে)।

৪.১.২ সিকিউর ইনভোকের মাধ্যমে SFE-কে কল করুন

B&A পরিষেবা সংগ্রহস্থলের রুট ফোল্ডার থেকে নিম্নলিখিত কমান্ডটি চালান:

DOCKER_NETWORK=ba-dev ./builders/tools/bazel-debian run //tools/secure_invoke:invoke \
  -- \
  -target_service=sfe \
  -input_file=/src/workspace/sfe-test.json \
  -host_addr=192.168.84.104:50053 \
  -client_ip=192.168.84.100 \
  -insecure=true

যদি B&A স্ট্যাকগুলি সঠিকভাবে সেট আপ করা হয়, তাহলে আপনি নিম্নলিখিত সফল প্রতিক্রিয়া পাবেন:

{"adRenderUrl":"https://localhost:5004/ad.html","interestGroupName":"dsp-x-demo","interestGroupOwner":"https://localhost:5004","score":39,"bid":39,"biddingGroups":{"https://localhost:5003":{"index":[0]},"https://localhost:5004":{"index":[0]}}}

৪.২ বিএফই পরীক্ষা

৪.২.১ বিএফই GetBids অনুরোধ

{
  "buyer_input": {
    "interest_groups": {
      "name": "dsp-x-demo",
      "ad_render_ids": ["1234"],
      "bidding_signals_keys": ["demo-key"],
      "browser_signals": { "bid_count": "1", "join_count": "1", "prev_wins": "[]" }
    }
  },
  "auction_signals": "{\"testKey\":\"someValue\"}",
  "buyer_signals": "{\"testKey\":\"someValue\"}",
  "seller": "https://localhost:6002",
  "publisher_name": "http://localhost:4001",
  "enable_debug_reporting": true,
  "client_type": "CLIENT_TYPE_BROWSER"
}

B&A Services রিপোজিটরির রুট ফোল্ডারে ফাইলটি bfe-test.json হিসেবে সংরক্ষণ করুন।

৪.২.২ সিকিউর ইনভোকের মাধ্যমে BFE-কে কল করুন

B&A পরিষেবা সংগ্রহস্থলের রুট ফোল্ডার থেকে নিম্নলিখিত কমান্ডটি চালান:

DOCKER_NETWORK=ba-dev ./builders/tools/bazel-debian run //tools/secure_invoke:invoke \
  -- \
  -target_service=bfe \
  -input_file="/src/workspace/bfe-test.json" \
  -host_addr="192.168.84.102:50051" \
  -client_ip=192.168.84.100 \
  -insecure=true

যদি B&A স্ট্যাকগুলি সঠিকভাবে সেট আপ করা থাকে, তাহলে BFE নিম্নলিখিত প্রতিক্রিয়াটি প্রদান করে:

{"bids":[{"bid":6,"render":"https://localhost:5003/ad.html","interestGroupName":"dsp-x-demo"}],"updateInterestGroupList":{}}

৪.৩ SFE লগগুলি পরীক্ষা করুন

টার্মিনালে যান এবং SFE লগগুলি পরীক্ষা করুন। আমরা আউটপুটের কিছু উল্লেখযোগ্য লগের মধ্য দিয়ে যাব।

৪.৩.১ SelectAd অনুরোধের এনক্রিপ্টেড পেলোড

এই SFE লগ আউটপুটে, আমরা navigator.getInterestGroupAdAuctionData() কলের এনক্রিপ্ট করা পেলোড খুঁজে পাই। এই পেলোডটি ব্রাউজার দ্বারা তৈরি করা হয়, ট্যাগ থেকে SAS-এ পাঠানো হয় এবং তারপর SAS এটি SFE-তে ফরোয়ার্ড করে:

I1210 21:20:47.266673      37 select_ad_reactor.cc:228] Protected auction ciphertext: AEAAIAABAAKg3OQSSLEBMR1MmJiwfOT8uef41iE+DQIvKUowsQvVcGbWZ+r17ff2r/iTbEnwqLPtpAxSTy77mi+cVV5cKjkKb4piaZnKiCDIMCyEvrQUD4+BG+HgrbUFhqiWPmQhNThvInMaHuYrXG7xushbRtvSPsVzEl6iBZcLZzD7W3CHMFK7bnJ+ufu52W6B7/8dOQ1gZW6SpwXMGNcrurTGoucbwbZRIPqCcbZk76J1gB69wrDYRo1wQ6jmBleLM36nulxbEj/sHhpQIgr895aKqEGQ3Fy+/HHPTO+zHphcX44YeF6mZ/I+WxZTDxCi1x27nI4yvzC8vI4a/giJN5XUlJZGb/fMrj3/Qly+gwJ8lbxdX+4GWTooDoS4MTtiBpJqh9wkIQ5XwfO54p8Kv6j/tk+51hOfVkOdtGwX0LvVrWT9PiJOJHa23nZ1fLg/22mTe05xdbR3WVeA+xiO9YwF4ozyCYDRUkDyWB/3k9RuaaT9H5S1szVpuOuD2nYSRpT9svmpfG4kipiS6BTPZPX2whDlukpuuoFgdiDtH6cFShNhZ5C47R0ayAvaZ1QSpOZMWfA6pdl4nhvNLpOKesKY/KFDEBzpUXRDsQWsfvmdqFl1mCeX9rOrEc9rodYVLXXhM8GPycehHmvqkccTBW6kipOQlmnSdIYaFmtWSFpUrzxajGkct3mZdTjVjOf...

৪.৩.২ ডিক্রিপ্টেড পেলোড

এই আউটপুটে, আমরা navigator.getInterestGroupAdAuctionData() কলের ডিক্রিপ্টেড পেলোড খুঁজে পাই:

I1210 21:20:47.267590      37 select_ad_reactor.cc:347]  (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252) Decoded BuyerInput:
https://localhost:5003 : {interest_groups { name: "dsp-x-demo" bidding_signals_keys: "demo-key" browser_signals { join_count: 1 recency: 7 prev_wins: "[]" } }}

৪.৩.৩ BFE-এর কাছে GetBids অনুরোধ

GetBids অনুরোধটি SFE থেকে BFE তে পাঠানো হয়:

I1210 21:20:47.267710      37 select_ad_reactor.cc:751]  (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252) Getting bid from a BFE
I1210 21:20:47.267729      37 buyer_frontend_async_client.cc:52] Raw request:
buyer_input {
  interest_groups {
    name: "dsp-x-demo"
    bidding_signals_keys: "demo-key"
    browser_signals {
      join_count: 1
      recency: 7
      prev_wins: "[]"
    }
  }
}
auction_signals: "{\"testKey\":\"someValue\"}"
buyer_signals: "{\"testKey\": \"someValue\"}"
seller: "https://localhost:6002"
publisher_name: "localhost"
enable_debug_reporting: true
log_context {
  generation_id: "c2824bfc-d515-4a1a-9de9-7660ad963252"
}
client_type: CLIENT_TYPE_BROWSER

৪.৩.৪ BFE থেকে GetBids প্রতিক্রিয়া

বিএফই দরপত্রের সাথে সাড়া দেয়:

I1210 21:20:47.282549      41 select_ad_reactor.cc:856]  (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252) Received response from a BFE ...
I1210 21:20:47.282552      41 select_ad_reactor.cc:859]  (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252)
GetBidsResponse:
bids {
  bid: 9
  render: "https://localhost:5003/ad.html"
  interest_group_name: "dsp-x-demo"
}
update_interest_group_list {
}

৪.৩.৫ নিলাম পরিষেবার কাছে ScoreAds অনুরোধ

বিড গ্রহণের পর, SFE প্রতিটি বিডের জন্য নিলাম পরিষেবাতে ScoreAds কল করে:

I1210 21:20:47.287898      18 select_ad_reactor.cc:1280]  (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252) ScoreAdsRawRequest:
ad_bids {
  bid: 9
  render: "https://localhost:5003/ad.html"
  interest_group_name: "dsp-x-demo"
  interest_group_owner: "https://localhost:5003"
  join_count: 1
  k_anon_status: true
}
seller_signals: "{\"testKey\":\"someValue\"}"
auction_signals: "{\"testKey\":\"someValue\"}"
scoring_signals: "{\"renderUrls\":{\"https://localhost:5003/ad.html\":[1,2,3],\"https://localhost:5004/ad.html\":[1,2,3]}}"
publisher_hostname: "localhost"
enable_debug_reporting: true
log_context {
  generation_id: "c2824bfc-d515-4a1a-9de9-7660ad963252"
}
per_buyer_signals {
  key: "https://localhost:5003"
  value: "{\"testKey\": \"someValue\"}"
}
per_buyer_signals {
  key: "https://localhost:5004"
  value: "{\"testKey\": \"someValue\"}"
}
seller: "https://localhost:6002"

৪.৩.৬ নিলাম পরিষেবা থেকে ScoreAds প্রতিক্রিয়া

বিক্রেতার নিলাম পরিষেবা আকাঙ্ক্ষিত স্কোরের সাথে সাড়া দেয়:

I1210 21:20:47.298029      33 default_async_grpc_client.h:134] Decrypting the response ...
I1210 21:20:47.298100      33 default_async_grpc_client.h:152] Decryption/decoding of response succeeded: ad_score {
  desirability: 9
  render: "https://localhost:5003/ad.html"
  interest_group_name: "dsp-x-demo"
  buyer_bid: 9
  interest_group_owner: "https://localhost:5003"
  win_reporting_urls {
    top_level_seller_reporting_urls {
    }
  }
  ad_type: AD_TYPE_PROTECTED_AUDIENCE_AD
}

৪.৩.৭ SFE থেকে SelectAd প্রতিক্রিয়া

SFE এর SelectAd প্রতিক্রিয়া এনক্রিপ্ট করা হয় এবং SAS-এ পাঠানো হয়:

I1210 21:20:47.298428      33 select_ad_reactor.cc:1413]  (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252) Encrypted SelectAdResponse:
auction_result_ciphertext: "\023\233\252\321\000\331M\327\216\201S\332kl?\322\255\247\312\375h\007W\367\016\366FR\364\275\377\326\027h\204\203\265\t\271-\333\266\tH\342\033F\001k\211C\026V\013\271\255(\236\273\353\260\275\007\346\027\340?\005|\235S\244\265\2563U\246\322\177%\200/\3175\034 \020\024\362\345\3263\356F.s\261\005\231\262Z\000\330x\0230\335>\"\217\254\010\254\330>\206\007\274\235\037`\370W\032\207\356\367\206\026\341.i\"$\370\367\2554i\247\354\304e\306\2466S\337\321w\327+!\316\035:\002\231\246\362\366qm\211\000\013\343\345\224{\365py\361\374\316\202\217-\244\302\331\216D\025W#.\304nH\235\315\311<#\342\344\324\257\354\2441\251\312\320\226\342\021\377>3`\347/\350\254h\306\273\023\365\340@\321\2412\254\323\213\0137,\013n\220|\211\323/\030)\314\263\223\355>\254\312aa`!\375\335\023Z\234p\206\037\001\355\261{$\025+\341\275\327Ny\342\342\264=\376\2138\224\026\2058\251\020\202\245*46\023\307)K\342\364k<\2104r\247\034\216}\034\001\374\215\363\210\026\275\371S>\031;f.b\260\363\257.\255\023I\341A\237*_T\355\262\005\344L\336D%\327\267@\302$\300\340\203c\350|\337>C\275c\260\202o\315xp\260\257\241\305U\nK\033\274L6\025\350\373a:\253\212&>p\210\215\017&^\327\005_\037\020\212\362\351\341\231@g\372\0037\275b:)\207\303d\243?\261O\266\343\214\200\004\247\372\022S\326\200\037\330\252r\257+e\273[\231\202\3625{\330\213\240\370\245\\\214\350/\313\ty/\004\313\0304k\223\354\374\305\233\264\224K\344\241\251\322?\323q6\314D\027\200\203\035]\023O\306\230?\203\237:\254\305\265\332\330\2641l\322\020\022\330O-\242\207>Q\364_{F\235\353tk\207\035\205\005\221\373\207\0143\035\014\322\240H\220\347%\262f\347\017\352\273\265\231\014\204\r\312\254z\000\340&\354\222\323\245\356\217(i\246"

৫. ব্রাউজার থেকে লোকাল টেস্ট অ্যাপ দিয়ে পরীক্ষা করুন

৫.১ ক্রোম খুলুন

কমান্ড লাইন থেকে Chrome শুরু করার বিষয়ে Chromium নিবন্ধটি পড়ুন এবং নিম্নলিখিত ফ্ল্যাগগুলি দিয়ে এটি শুরু করুন:

google-chrome --enable-privacy-sandbox-ads-apis --disable-features=EnforcePrivacySandboxAttestations,FledgeEnforceKAnonymity --enable-features=FledgeBiddingAndAuctionServerAPI,FledgeBiddingAndAuctionServer:FledgeBiddingAndAuctionKeyURL/https%3A%2F%2Fstorage.googleapis.com%2Fba-test-buyer%2Fcoordinator-test-key.json

https://storage.googleapis.com/ba-test-buyer/coordinator-test-key.json এ আমরা যে মক কোঅর্ডিনেটর কীটি হোস্ট করেছি তা লোড করার জন্য ফ্ল্যাগটি সেট করা আছে।

গুরুত্বপূর্ণ: B&A ফ্ল্যাগ ব্যবহার করে কমান্ড লাইন থেকে এটি খোলার আগে নিশ্চিত করুন যে আপনি সমস্ত Chrome ইনস্ট্যান্স থেকে সম্পূর্ণরূপে বেরিয়ে এসেছেন। সমস্ত Chrome প্রক্রিয়া থেকে বেরিয়ে আসতে, কমান্ড লাইন থেকে ps aux | grep -ie chrome/chrome | awk '{print $2}' | xargs kill -9 চালানোর চেষ্টা করুন।

৫.২ লোকাল টেস্টিং অ্যাপ UI দেখুন

ফ্ল্যাগগুলি দিয়ে খোলা Chrome ব্রাউজার ইনস্ট্যান্সে http://localhost:3000 এ অ্যাপ UI পাওয়া যাবে। আপনি যদি ভিন্ন হোস্টনেম সহ VM ব্যবহার করেন তবে আপনার পরিদর্শন করা সঠিক ঠিকানাটি ভিন্ন হতে পারে।

ব্রাউজারে স্থানীয় টেস্টিং অ্যাপটি দেখার একটি স্ক্রিনশট ব্রাউজারে স্থানীয় টেস্টিং অ্যাপটি দেখার একটি স্ক্রিনশট

অ্যাপের উপরের সারিতে, "নিয়ন্ত্রণ" প্যানেলে বিভিন্ন নিলাম কনফিগারেশন সিমুলেট করার জন্য বোতাম রয়েছে। অন্য দুটি প্যানেলে বিজ্ঞাপনদাতা এবং প্রকাশক সাইট থেকে আইফ্রেম রয়েছে।

Chrome DevTools-এ আগ্রহের গোষ্ঠীগুলির একটি স্ক্রিনশট। Chrome DevTools-এ আগ্রহের গোষ্ঠীগুলির একটি স্ক্রিনশট।

তারপর, বিভিন্ন ধরণের নিলাম সিমুলেট করতে "নিয়ন্ত্রণ" প্যানেলের বোতামগুলিতে ক্লিক করুন।

B&A থেকে একটি ব্রাউজারে রেন্ডার করা একটি বিজ্ঞাপন।

যদি B&A পরিষেবা এবং স্থানীয় টেস্টিং অ্যাপ সঠিকভাবে সেট আপ করা থাকে, তাহলে পূর্ববর্তী বিজ্ঞাপনটি "প্রকাশক সাইট আইফ্রেম" প্যানেলে রেন্ডার করা হবে।

৫.৩ স্থানীয় টেস্টিং অ্যাপ নিলাম কনফিগারেশন

কম্প্যানিয়ন লোকাল টেস্টিং অ্যাপে, নিম্নলিখিত অংশগ্রহণকারীদের হোস্ট করা হয়, পোর্ট নম্বর দ্বারা আলাদা করা হয় (একটি ভিন্ন পোর্টকে ক্রস-অরিজিন হিসাবে বিবেচনা করা হয়):

অংশগ্রহণকারী

বিবরণ

বন্দর

বিজ্ঞাপনদাতা

পৃষ্ঠায় DSP ট্যাগ লোড করে

4001

প্রকাশক

পৃষ্ঠায় SSP ট্যাগ লোড করে

4002

DSP-A

ডিভাইসে থাকা ক্রেতা

5001

DSP-B

ডিভাইসে থাকা ক্রেতা

5002

DSP-X

বিএন্ডএ ক্রেতা

5003

DSP-Y

বিএন্ডএ ক্রেতা

5004

SSP-TOP

শীর্ষ-স্তরের বিক্রেতা

6001

SSP-OD

শুধুমাত্র ডিভাইসে বিক্রেতা

6002

SSP-BA

শুধুমাত্র বিএ-বিক্রেতা

6003

SSP-MIX

মিশ্র-মোড বিক্রেতা

6004

চারজন ডিএসপি আছেন:

  • DSP-A এবং DSP-B অন-ডিভাইস নিলামে অংশগ্রহণ করে
  • DSP-X এবং DSP-Y B&A নিলামে অংশগ্রহণ করে

চারটি SSP আছে, এবং প্রতিটি বিক্রেতা একটি ভিন্ন নিলাম কনফিগারেশন পরিচালনা করে:

  • SSP-OD একটি অন-ডিভাইস-অনলি নিলাম পরিচালনা করে
  • SSP-BA শুধুমাত্র বিএন্ডএ-ভিত্তিক নিলাম পরিচালনা করে
  • SSP-MIX একটি মিশ্র-মোড নিলাম পরিচালনা করে
  • SSP-TOP একটি মাল্টি-সেলার নিলাম পরিচালনা করে
    • SSP-OD/BA/MIX SSP-TOP এর মাল্টি-সেলার নিলামের কম্পোনেন্ট বিক্রেতা হিসেবে অংশগ্রহণ করে

সম্পূর্ণ স্থাপত্যের জন্য, নকশা চিত্রটি পরীক্ষা করুন।

৫.৪ বিডিং এবং নিলাম পরিষেবা কনফিগারেশন

এই কোডল্যাবে, আমরা দুটি সেট B&A একসাথে চালাই।

সেট

সেবা

অংশগ্রহণকারী

ba-dev নেটওয়ার্ক ঠিকানা

সেট A

বিডিং পরিষেবা

DSP-X

192.168.84.101:50057

বিএফই পরিষেবা

DSP-X

192.168.84.102:50051

নিলাম পরিষেবা

SSP-BA

192.168.84.103:50061

এসএফই পরিষেবা

SSP-BA

192.168.84.104:50053

সেট বি

বিডিং পরিষেবা

DSP-Y

192.168.84.201:50057

বিএফই পরিষেবা

DSP-Y

192.168.84.202:50051

নিলাম পরিষেবা

SSP-MIX

192.168.84.203:50061

এসএফই পরিষেবা

SSP-MIX

192.168.84.204:50053

অ্যাপ

স্থানীয় পরীক্ষার অ্যাপ

সব

https://192.168.84.100:PORT

  • সেট A-তে, ক্রেতা পরিষেবাগুলি DSP-X দ্বারা ব্যবহৃত হয় এবং বিক্রেতা পরিষেবাগুলি SSP-BA দ্বারা ব্যবহৃত হয়
  • সেট B-তে, ক্রেতা পরিষেবাগুলি DSP-Y দ্বারা ব্যবহৃত হয় এবং বিক্রেতা পরিষেবাগুলি SSP-MIX দ্বারা ব্যবহৃত হয়

লোকাল টেস্টিং অ্যাপ এবং বিএন্ডএ সার্ভিসেসের মধ্যে যোগাযোগের জন্য, একটি ডকার ব্রিজ নেটওয়ার্ক ব্যবহার করা হয়। লোকাল টেস্টিং অ্যাপের সেটআপ স্ক্রিপ্ট দ্বারা ba-dev ব্রিজ নেটওয়ার্ক তৈরি করা হয়। বিএন্ডএ সার্ভিসেসগুলিকে 192.168.84.0 এর সাবনেটে একটি আইপি ঠিকানা বরাদ্দ করা হয়।

উদাহরণস্বরূপ, যখন আপনি অ্যাপ্লিকেশন থেকে Set A এর SFE কল করছেন, তখন 192.168.84.104:50053 নেটওয়ার্ক ঠিকানা ব্যবহার করা হয়। যখন আপনি DSP-X থেকে BFE তে মক বিডিং স্ক্রিপ্ট লোড করছেন, তখন https://192.168.84.100:5003/generate-bid.js ব্যবহার করা হয়।

৬. শেষ করা

এখন পর্যন্ত, আমরা আশা করি আপনি আপনার মেশিনে স্থানীয়ভাবে B&A পরিষেবা স্ট্যাক চালানোর সাথে পরিচিত হয়েছেন এবং পরিষেবাগুলি কীভাবে একে অপরের সাথে যোগাযোগ করে সে সম্পর্কে আরও ভাল ধারণা অর্জন করেছেন।

৬.১. কারিগরি সহায়তা

৬.২ আরও জানুন