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

1. ভূমিকা

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

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

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

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

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

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

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

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

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

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

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

একটি স্থানীয় লিনাক্স মেশিন ব্যবহার করুন বা আপনার পছন্দের ক্লাউড প্রদানকারীর একটি লিনাক্স ভিএম সরবরাহ করুন। বিল্ড টাইম উন্নত করতে, ন্যূনতম হিসাবে কমপক্ষে 16 কোর সুপারিশ করা হয় এবং 32+ কোর পছন্দ করা হয়।

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

2.2 ডকার ইনস্টল করুন

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

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

# 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 Docker গাইড পড়ুন।

2.3 সহচর লোকাল টেস্টিং অ্যাপ শুরু করুন

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

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

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

সংগ্রহস্থলের রুট থেকে, সেটআপ স্ক্রিপ্ট চালান:

./setup

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

একবার বিল্ড সফল হলে, স্টার্ট স্ক্রিপ্টটি চালান:

./start

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

3.1 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
`

3.2 পরিষেবাগুলি তৈরি করুন৷

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

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

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

একটি 64-কোর মেশিন ব্যবহার করলে প্রাথমিক বিল্ডে 2 ঘন্টা সময় লাগতে পারে এবং মূল গণনা অনুসারে বিল্ড টাইম স্কেল রৈখিকভাবে। আপনি যদি একটি 32-কোর মেশিনে থাকেন তবে এটি 4 ঘন্টা সময় নিতে পারে। আপনি যদি একটি 16-কোর মেশিন ব্যবহার করেন তবে এটি 8 ঘন্টা সময় নিতে পারে।

নোট করুন যে পরবর্তী বিল্ডগুলি ক্যাশে ব্যবহার করে এবং প্রতিটি বিল্ডে প্রায় 5-20 মিনিট সময় নেওয়া উচিত।

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

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

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

3.3 পরিষেবাগুলি চালান৷

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

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

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

3.3.1 একটি কমান্ড সেট করুন

সেবা

আদেশ

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 SFE পরিষেবা

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

3.3.2 B কমান্ড সেট করুন

সেবা

আদেশ

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

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-X বিএফই পরিষেবা

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 SFE পরিষেবা

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

3.3.2 স্থানীয় স্টার্ট স্ক্রিপ্টের জন্য পরিবেশের ভেরিয়েবল

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

Env var

প্রাপ্যতা

বর্ণনা

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

বিএফই সার্ভিস

বিএফই সার্ভিসের পোর্ট। ডিফল্ট 50051

BUYER_KV_SERVER_ADDR

বিএফই সার্ভিস

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

BUYER_TKV_V2_SERVER_ADDR

বিএফই সার্ভিস

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

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 পরিষেবা

SFE পরিষেবার পোর্ট। ডিফল্ট 50053

AUCTION_SERVER_ADDR

SFE পরিষেবা

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

KEY_VALUE_SIGNALS_ADDR

SFE পরিষেবা

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

TRUSTED_KEY_VALUE_V2_SIGNALS_ADDR

SFE পরিষেবা

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

SELLER_ORIGIN_DOMAIN

SFE পরিষেবা

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

BUYER_SERVER_ADDRS_JSON

SFE পরিষেবা

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

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

4.1 SFE পরীক্ষা

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

4.1.2 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]"
          }
        ]
      }
    }
  }
}

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

4.1.2 সিকিউর ইনভোক সহ 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]}}}

4.2 BFE পরীক্ষা

4.2.1 BFE 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 পরিষেবা সংগ্রহস্থলের রুট ফোল্ডারে bfe-test.json হিসাবে ফাইলটি সংরক্ষণ করুন।

4.2.2 সিকিউর ইনভোক সহ 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":{}}

4.3 SFE লগগুলি পরীক্ষা করুন৷

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

4.3.1 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...

4.3.2 ডিক্রিপ্ট করা পেলোড

এই আউটপুটে, আমরা 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: "[]" } }}

4.3.3 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

4.3.4 BFE থেকে GetBids প্রতিক্রিয়া

BFE বিডের সাথে সাড়া দেয়:

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 {
}

4.3.5 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"

4.3.6 নিলাম পরিষেবা থেকে 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
}

4.3.7 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"

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

5.1 Chrome খুলুন

কমান্ড লাইন থেকে 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 দৃষ্টান্ত থেকে সম্পূর্ণরূপে প্রস্থান করেছেন তা নিশ্চিত করুন৷ সমস্ত ক্রোম প্রক্রিয়া থেকে প্রস্থান করতে, ps aux | grep -ie chrome/chrome | awk '{print $2}' | xargs kill -9 চালানোর চেষ্টা করুন৷ ps aux | grep -ie chrome/chrome | awk '{print $2}' | xargs kill -9 কমান্ড লাইন থেকে ps aux | grep -ie chrome/chrome | awk '{print $2}' | xargs kill -9

5.2 স্থানীয় টেস্টিং অ্যাপ UI দেখুন

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

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

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

আপনি যখন বিজ্ঞাপনদাতার পৃষ্ঠা আইফ্রেমে "লোড ডিএসপি ট্যাগ" বোতামে ক্লিক করেন, তখন প্রতিটি ডিএসপি থেকে একটি স্ক্রিপ্ট পৃষ্ঠায় যোগ করা হয়। এই স্ক্রিপ্টগুলি ব্যবহারকারীকে আগ্রহের গোষ্ঠীতে যুক্ত করে। Chrome DevTools খুলুন, এবং DSP ট্যাগ দ্বারা যুক্ত হওয়া আগ্রহের গোষ্ঠীগুলি পরীক্ষা করতে "অ্যাপ্লিকেশন / স্টোরেজ / আগ্রহের গোষ্ঠীগুলি" দেখুন:

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

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

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

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

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

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

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

বর্ণনা

বন্দর

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

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

4001

প্রকাশক

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

4002

DSP-A

অন-ডিভাইস ক্রেতা

5001

DSP-B

অন-ডিভাইস ক্রেতা

5002

DSP-X

B&A ক্রেতা

5003

DSP-Y

B&A ক্রেতা

5004

SSP-TOP

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

6001

SSP-OD

অন-ডিভাইস-শুধু বিক্রেতা

6002

SSP-BA

B&A-শুধু বিক্রেতা

6003

SSP-MIX

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

6004

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

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

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

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

সম্পূর্ণ আর্কিটেকচারের জন্য, ডিজাইন ডায়াগ্রামটি দেখুন।

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

এই কোডল্যাবে, আমরা একে অপরের পাশাপাশি 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

SFE পরিষেবা

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

SFE পরিষেবা

SSP-MIX

192.168.84.204:50053

অ্যাপ

স্থানীয় টেস্টিং অ্যাপ

সব

https://192.168.84.100:PORT

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

স্থানীয় টেস্টিং অ্যাপ এবং B&A পরিষেবাগুলির মধ্যে যোগাযোগের জন্য, একটি ডকার ব্রিজ নেটওয়ার্ক ব্যবহার করা হয়। স্থানীয় টেস্টিং অ্যাপের সেটআপ স্ক্রিপ্ট দ্বারা ba-dev সেতু নেটওয়ার্ক তৈরি করা হয়েছে। B&A পরিষেবাগুলিকে 192.168.84.0 এর সাবনেটে একটি IP ঠিকানা দেওয়া হয়েছে।

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

6. মোড়ানো

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

6.1। প্রযুক্তিগত সহায়তা

6.2 আরও জানুন