1. परिचय
बिडिंग और नीलामी से जुड़ी सेवाएं (बीऐंडए) में खरीदारों और सेलर के लिए चार सेवाएं शामिल हैं. इनसे Protected Audience नीलामी को आसान बनाया जा सकता है:
खरीदार की पिछली गतिविधियां:
- खरीदार के लिए फ़्रंट-एंड सेवा
- बिडिंग सेवा
सेलर स्टैक:
- सेलर फ़्रंट-एंड सेवा
- नीलामी सेवा
इस कोडलैब में, आपको अपने लोकल एनवायरमेंट में शुरू से आखिर तक सेटअप करने और उसकी जांच करने का तरीका बताया गया है. इस प्रोसेस में करीब एक घंटा लगेगा. इसमें सेवा को शुरू करने में लगने वाला समय शामिल नहीं है.
ऐसा हो सकता है कि आपको सिर्फ़ खरीदार या विक्रेता के लिए कोड पर काम करना हो. हालांकि, अपने लोकल एनवायरमेंट में एंड-टू-एंड फ़्लो सेट अप करना फ़ायदेमंद होता है. इससे आपको यह बेहतर तरीके से समझने में मदद मिलती है कि खरीदार और विक्रेता के स्टैक एक-दूसरे के साथ कैसे काम करते हैं. दोनों स्टैक सेट अप करने से, बाद में किसी दूसरी पार्टी के खरीदार या विक्रेता स्टैक के साथ इंटिग्रेट करते समय आपको ज़्यादा भरोसा होगा. सेवाओं को स्थानीय तौर पर टेस्ट करने से, डेवलपमेंट की लागत भी कम हो जाती है.
इस कोडलैब में, हम B&A Local Testing App का इस्तेमाल करेंगे.
साथ में काम करने वाला लोकल टेस्टिंग ऐप्लिकेशन, खरीदार और सेलर के लिए कई संसाधन होस्ट करता है. इनका इस्तेमाल B&A नीलामी में किया जाता है. यह ऐप्लिकेशन, http://localhost:3000 पर यूज़र इंटरफ़ेस (यूआई) भी उपलब्ध कराता है. यहां अलग-अलग नीलामी कॉन्फ़िगरेशन को सिम्युलेट किया जा सकता है.
2. एनवायरमेंट सेटअप करना
2.1 Linux मशीन तैयार करना
किसी लोकल Linux मशीन का इस्तेमाल करें या अपनी पसंद की क्लाउड सेवा देने वाली कंपनी की Linux वर्चुअल मशीन का इस्तेमाल करें. बिल्ड टाइम को बेहतर बनाने के लिए, कम से कम 16 कोर का इस्तेमाल करने का सुझाव दिया जाता है. हालांकि, 32 या इससे ज़्यादा कोर का इस्तेमाल करना बेहतर होता है.
ध्यान दें कि हम इस मशीन के http://localhost:3000 से एचटीएमएल पेज लोड करेंगे. अगर वीएम, जीयूआई उपलब्ध नहीं कराता है, तो पक्का करें कि आपकी लोकल मशीन के लिए पोर्ट 3000 का ऐक्सेस हो, ताकि आप इससे कनेक्ट कर सकें.
2.2 Docker इंस्टॉल करना
हम सेवाओं और लोकल टेस्टिंग ऐप्लिकेशन को चलाने के लिए, Docker का इस्तेमाल करते हैं.
हम टेस्टिंग एनवायरमेंट में Docker को इंस्टॉल करने के लिए, सुविधाजनक स्क्रिप्ट का इस्तेमाल करेंगे.
# 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 के सेटअप करने पर, Docker ग्रुप उपयोगकर्ता को रूट-लेवल की अनुमतियां देता है. ज़्यादा जानने के लिए, बिना sudo के Docker का इस्तेमाल करने से जुड़ी गाइड पढ़ें.
2.3 कंपैनियन लोकल टेस्टिंग ऐप्लिकेशन शुरू करें
साथ में काम करने वाला ऐप्लिकेशन, मॉक बिडिंग या स्कोरिंग स्क्रिप्ट और मॉक K/V BYOS एंडपॉइंट जैसे संसाधन उपलब्ध कराता है. B&A सेवाओं को शुरू करने से पहले, ऐप्लिकेशन को शुरू किया जाना चाहिए, ताकि संसाधनों को सेवाओं में लोड किया जा सके.
Local Testing App repository को नीचे खींचें:
git clone https://github.com/privacysandbox/bidding-auction-local-testing-app.git
रिपॉज़िटरी के रूट से, सेटअप स्क्रिप्ट चलाएं:
./setup
सेटअप स्क्रिप्ट, ba-dev Docker नेटवर्क बनाएगी, एसएसएल सर्टिफ़िकेट जनरेट करेगी, और टेस्ट ऐप्लिकेशन की इमेज बनाएगी.
बिल्ड पूरा होने के बाद, स्टार्ट स्क्रिप्ट चलाएं:
./start
3. स्थानीय तौर पर B&A को लागू करना और उसे चलाना
3.1 B&A Services को नीचे की ओर खींचें
हम एक ही मशीन पर B&A सेवाओं के दो सेट चलाएंगे. इसलिए, हम रिपॉज़िटरी को दो अलग-अलग फ़ोल्डर में डाउनलोड करेंगे.
सेट A:
B&A रिपॉज़िटरी को पुल डाउन करें:
git clone https://github.com/privacysandbox/bidding-auction-servers.git bidding-auction-servers-set-a
सेट B
B&A रिपॉज़िटरी को पुल डाउन करें:
git clone https://github.com/privacysandbox/bidding-auction-servers.git bidding-auction-servers-set-b
`
3.2 सेवाएँ बनाना
सभी चार सेवाओं को बनाने के लिए, हर 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 फ़ाइल देखें.
अगर 64-कोर मशीन का इस्तेमाल किया जा रहा है, तो शुरुआती बिल्ड में दो घंटे लग सकते हैं. साथ ही, बिल्ड का समय, कोर की संख्या के हिसाब से बढ़ता है. अगर 32-कोर मशीन का इस्तेमाल किया जा रहा है, तो इसमें चार घंटे लग सकते हैं. अगर 16-कोर वाली मशीन का इस्तेमाल किया जा रहा है, तो इसमें आठ घंटे लग सकते हैं.
ध्यान दें कि इसके बाद के बिल्ड, कैश मेमोरी का इस्तेमाल करते हैं. साथ ही, हर बिल्ड को पूरा होने में करीब 5 से 20 मिनट लगते हैं.
दो प्रोग्रामर, बिल्ड के चलने के दौरान काम नहीं कर रहे हैं.
(इस कोडलैब को लिखते समय, मेरी मुलाकात xkcd के रैंडल मुनरो से हुई थी. मैंने उन्हें बताया था कि मैंने इस कॉमिक को यहां जोड़ा है)
3.3 सेवाएँ चलाना
हमारा टेस्ट, आठ सेवाओं (हर स्टैक के लिए चार सेवाएं) पर चलेगा. हर कमांड को, लोकल टेस्टिंग ऐप्लिकेशन से मिले संसाधनों का इस्तेमाल करने के लिए सेट अप किया जाता है. हमारा सुझाव है कि आप tmux जैसे विंडो मैनेजर का इस्तेमाल करें.
कम से कम आठ और टर्मिनल विंडो खोलें. इसके बाद, हर सेशन में यहां दिए गए निर्देश चलाएं.
ध्यान दें कि Local Testing App सर्वर को पहले से ही किसी दूसरी प्रोसेस में चालू होना चाहिए, क्योंकि बिडिंग और स्कोरिंग स्क्रिप्ट, ऐप्लिकेशन से ही दिखाई जाएंगी.
3.3.1 सेट ए के निर्देश
सेवा | निर्देश |
|
|
|
|
|
|
|
|
3.3.2 सेट B के निर्देश
सेवा | निर्देश |
|
|
|
|
|
|
|
|
3.3.2 लोकल स्टार्ट स्क्रिप्ट के लिए एनवायरमेंट वैरिएबल
स्टार्ट-अप के व्यवहार को कंट्रोल करने के लिए, इन एनवायरमेंट वैरिएबल का इस्तेमाल किया जा सकता है.
एनवायरमेंट वैरिएबल | उपलब्धता | ब्यौरा |
| सभी सेवाएं | docker command के लिए सेट किए जाने वाले फ़्लैग |
| सभी सेवाएं | अपनी लोकल मशीन पर जांच करते समय, आपको ऐसे सर्टिफ़िकेट का इस्तेमाल करना पड़ सकता है जिस पर खुद के हस्ताक्षर हों. ऐसे में, यह डिफ़ॉल्ट रूप से |
| सभी सेवाएं | सेवा के लॉग का लेवल. ऊंचे लेवल पर ज़्यादा लॉग मिलते हैं. सबसे कम स्कोर 0 और सबसे ज़्यादा स्कोर 10 होता है. यह डिफ़ॉल्ट रूप से |
| बिडिंग सेवा | बिडिंग सेवा का पोर्ट. डिफ़ॉल्ट रूप से |
| बिडिंग सेवा | बिडिंग लॉजिक का यूआरएल |
| बिडिंग सेवा | मॉडल ट्रेनिंग के लिए डेटा इग्रेस |
| बिडिंग सेवा | बिडिंग इन्फ़रेंस के लिए तर्क |
| BFE सेवा | BFE सेवा का पोर्ट. डिफ़ॉल्ट रूप से |
| BFE सेवा | खरीदार का BYOS K/V पता |
| BFE सेवा | खरीदार के टीईई के/वी का पता |
| BFE सेवा | खरीदार की बिडिंग सेवा का पता |
| नीलामी सेवा | नीलामी सेवा का पोर्ट. डिफ़ॉल्ट रूप से |
| नीलामी सेवा | स्कोरिंग लॉजिक का यूआरएल |
| नीलामी सेवा | खरीदार के जीतने की रिपोर्टिंग का यूआरएल |
| नीलामी सेवा | खरीदार के जीतने की रिपोर्टिंग स्क्रिप्ट |
| नीलामी सेवा | PAS के लिए, खरीदार के जीतने की रिपोर्टिंग स्क्रिप्ट |
| SFE सेवा | SFE सेवा का पोर्ट. डिफ़ॉल्ट रूप से |
| SFE सेवा | नीलामी सेवा देने वाले सेलर का पता |
| SFE सेवा | सेलर का BYOS K/V पता |
| SFE सेवा | सेलर का टीईई के/वी पता |
| SFE सेवा | विक्रेता का देश |
| SFE सेवा | खरीदार के बीएफ़ई पते |
4. कमांड लाइन से Secure Invoke की जांच करना
4.1 एसएफ़ई की टेस्टिंग
B&A Services पैकेज में शामिल Secure Invoke टूल का इस्तेमाल करके, कमांड लाइन से सीधे तौर पर सेवाओं को कॉल किया जा सकता है.
4.1.2 एसएफ़ई 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's B&A Services रिपॉज़िटरी के रूट फ़ोल्डर में sfe-test.json के तौर पर सेव करें. B&A की बिल्ड स्क्रिप्ट, रिपॉज़िटरी के रूट फ़ोल्डर में मौजूद फ़ाइलों को Docker इमेज के /src/workspace फ़ोल्डर में कॉपी करेगी.
4.1.2 Secure Invoke का इस्तेमाल करके SFE को कॉल करना
B&A Services रिपॉज़िटरी के रूट फ़ोल्डर से यह कमांड चलाएं:
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 बीएफ़ई टेस्टिंग
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 Services रिपॉज़िटरी के रूट फ़ोल्डर में bfe-test.json के तौर पर सेव करें.
4.2.2 Secure Invoke का इस्तेमाल करके BFE को कॉल करना
B&A Services रिपॉज़िटरी के रूट फ़ोल्डर से यह कमांड चलाएं:
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 एसएफ़ई लॉग की जांच करना
टर्मिनल पर जाएं और एसएफ़ई लॉग देखें. हम आउटपुट में मौजूद कुछ अहम लॉग के बारे में बताएंगे.
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 GetBids BFE से अनुरोध करना
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 बीएफ़ई से 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 जवाब
एसएफ़ई का SelectAd जवाब एन्क्रिप्ट (सुरक्षित) किया जाता है और इसे एसएएस को भेजा जाता है:
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. ब्राउज़र से Local Test App की मदद से टेस्ट करना
5.1 Chrome खोलें
Chromium के इस लेख को पढ़ें: कमांड लाइन से Chrome शुरू करना. इसके बाद, इसे इन फ़्लैग के साथ शुरू करें:
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 के सभी इंस्टेंस बंद कर दिए हों. Chrome की सभी प्रोसेस से बाहर निकलने के लिए, कमांड लाइन से ps aux | grep -ie chrome/chrome | awk '{print $2}' | xargs kill -9 चलाकर देखें.
5.2 लोकल टेस्टिंग ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) पर जाएं
ऐप्लिकेशन का यूज़र इंटरफ़ेस (यूआई), Chrome ब्राउज़र के उस इंस्टेंस में http://localhost:3000 पर देखा जा सकता है जिसे आपने फ़्लैग के साथ खोला था. अगर किसी दूसरे होस्टनेम वाले वीएम का इस्तेमाल किया जा रहा है, तो हो सकता है कि आपकी विज़िट का पता अलग हो.
ब्राउज़र में लोकल टेस्टिंग ऐप्लिकेशन का स्क्रीनशॉट
ऐप्लिकेशन की सबसे ऊपर वाली लाइन में, "Controls" पैनल में अलग-अलग ऑक्शन कॉन्फ़िगरेशन को सिम्युलेट करने के बटन होते हैं. अन्य दो पैनल में, विज्ञापन देने वाले व्यक्ति या कंपनी और पब्लिशर की साइटों से iframe शामिल हैं.
Chrome DevTools में दिलचस्पी वाले ग्रुप का स्क्रीनशॉट.
इसके बाद, अलग-अलग तरह की नीलामी का सिम्युलेशन करने के लिए, "कंट्रोल" पैनल में मौजूद बटन पर क्लिक करें.

अगर B&A Services और Local Testing App को सही तरीके से सेट अप किया गया है, तो ऊपर दिया गया विज्ञापन "Publisher site iframe" पैनल में रेंडर होता है.
5.3 लोकल टेस्टिंग ऐप्लिकेशन के लिए नीलामी का कॉन्फ़िगरेशन
कंपैनियन लोकल टेस्टिंग ऐप्लिकेशन में, इन लोगों को होस्ट किया जाता है. इन्हें पोर्ट नंबर के हिसाब से अलग-अलग किया जाता है. अलग पोर्ट को क्रॉस-ऑरिजिन माना जाता है:
भागीदार | ब्यौरा | पोर्ट |
विज्ञापन देने वाला | यह कुकी, पेज पर डीएसपी टैग लोड करती है |
|
प्रकाशक | यह कुकी, पेज पर एसएसपी टैग लोड करती है |
|
| डिवाइस पर खरीदारी करने वाला व्यक्ति |
|
| डिवाइस पर खरीदारी करने वाला व्यक्ति |
|
| B&A खरीदार |
|
| B&A खरीदार |
|
| टॉप-लेवल सेलर |
|
| सिर्फ़ डिवाइस पर मौजूद डेटा का इस्तेमाल करने वाला सेलर |
|
| सिर्फ़ B&A वाला सेलर |
|
| एक से ज़्यादा मोड में टिकट बेचने वाला सेलर |
|
चार डीएसपी हैं:
DSP-AऔरDSP-B, डिवाइस पर होने वाली नीलामियों में हिस्सा लेते हैंDSP-XऔरDSP-Y, B&A की नीलामियों में हिस्सा लेते हैं
यहां चार एसएसपी हैं और हर सेलर, नीलामी का अलग कॉन्फ़िगरेशन चलाता है:
SSP-OD, सिर्फ़ डिवाइस पर होने वाली नीलामी को मैनेज करता हैSSP-BAसिर्फ़ B&A वाली नीलामी चलाता हैSSP-MIXमिक्स्ड-मोड नीलामी चलाता हैSSP-TOPमल्टी-सेलर नीलामी चलाता हैSSP-TOPकी मल्टी-सेलर नीलामी में कॉम्पोनेंट सेलर के तौर पर हिस्सा लेंSSP-OD/BA/MIX
पूरे आर्किटेक्चर के लिए, डिज़ाइन डायग्राम देखें.
5.4 Bidding and Auction Services को कॉन्फ़िगर करना
इस कोडलैब में, हम दो B&A को एक साथ चलाते हैं.
सेट करें | सेवा | भागीदार |
|
सेट ए | बिडिंग सेवा |
|
|
BFE सेवा |
|
| |
नीलामी सेवा |
|
| |
SFE सेवा |
|
| |
सेट B | बिडिंग सेवा |
|
|
BFE सेवा |
|
| |
नीलामी सेवा |
|
| |
SFE सेवा |
|
| |
ऐप्लिकेशन | Local Testing App | सभी |
|
- सेट A में, खरीदार के लिए उपलब्ध सेवाओं का इस्तेमाल
DSP-Xकरता है और सेलर के लिए उपलब्ध सेवाओं का इस्तेमालSSP-BAकरता है - सेट B में, खरीदार के लिए उपलब्ध सेवाओं का इस्तेमाल
DSP-Yकरता है और सेलर के लिए उपलब्ध सेवाओं का इस्तेमालSSP-MIXकरता है
लोकल टेस्टिंग ऐप्लिकेशन और B&A सेवाओं के बीच कम्यूनिकेट करने के लिए, Docker ब्रिज नेटवर्क का इस्तेमाल किया जाता है. ba-dev ब्रिज नेटवर्क, Local Testing App की सेटअप स्क्रिप्ट से बनाया जाता है. B&A सेवाओं को 192.168.84.0 के सबनेट में एक आईपी पता असाइन किया जाता है.
उदाहरण के लिए, जब ऐप्लिकेशन से सेट A के SFE को कॉल किया जाता है, तब 192.168.84.104:50053 के नेटवर्क पते का इस्तेमाल किया जाता है. DSP-X से मॉक बिडिंग स्क्रिप्ट को BFE में लोड करते समय, https://192.168.84.100:5003/generate-bid.js का इस्तेमाल किया जाता है.
6. आखिर में खास जानकारी
हमें उम्मीद है कि अब तक आपने B&A Services स्टैक को अपनी मशीन पर स्थानीय तौर पर चलाने के बारे में जान लिया होगा. साथ ही, आपको यह भी बेहतर तरीके से समझ आ गया होगा कि ये सेवाएं एक-दूसरे के साथ कैसे कम्यूनिकेट करती हैं.
6.1. तकनीकी सहायता
- अगर आपको लोकल टेस्टिंग ऐप्लिकेशन सेट अप करने के बारे में कोई सवाल पूछना है, तो एलटीए रिपॉज़िटरी में कोई समस्या दर्ज करें.
- अगर आपको बिडिंग और नीलामी सेवाओं के बारे में कोई सवाल पूछना है, तो बिडिंग और नीलामी सेवाओं की रिपॉज़िटरी में कोई समस्या सबमिट करें.
6.2 ज़्यादा जानें
- वेब के लिए B&A आर्किटेक्चर के बारे में ज़्यादा जानें
- वेब के लिए, B&A के साथ सेलर इंटिग्रेशन के बारे में ज़्यादा जानें