1. מבוא
שירותי בידינג ומכרזים (B&A) כוללים 4 שירותים לקונים ולמוכרים שמאפשרים להם לקיים מכרז של קהל מוגן:
סטאק הקונה:
- שירות לקונה בחזית האתר
- Bidding Service
סטאק של המוכר:
- שירות ממשק קצה של מוכרים
- Auction Service
ב-codelab הזה תלמדו איך להגדיר ולבדוק את ההגדרה מקצה לקצה בסביבה המקומית. ההדרכה צפויה להימשך כשעה, לא כולל זמן ה-build הראשוני של השירות.
גם אם אתם עובדים רק על הקוד של הצד הקונה או על הקוד של הצד המוכר, כדאי להגדיר את התהליך מקצה לקצה בסביבה המקומית כדי להבין טוב יותר איך סטאקים של הקונה והמוכר פועלים זה עם זה. הגדרת שני הסטאקים תאפשר לכם להשתלב בבטחה רבה יותר עם הסטאק של הצד השני, של הקונה או של המוכר. בדיקת השירותים באופן מקומי חוסכת גם בעלויות הפיתוח.
בקודלאב הזה נשתמש באפליקציית הבדיקה המקומית של B&A כמדריך.
אפליקציית הבדיקה המקומית המשולבת מארחת משאבים שונים לקונים ולמוכרים שמשמשים במכרז B&A. האפליקציה כוללת גם ממשק משתמש בכתובת http://localhost:3000
, שבו אפשר לדמות הגדרות שונות של מכרזים.
2. הגדרת הסביבה
2.1 הכנת מחשב Linux
משתמשים במכונה מקומית של Linux, או מקצים מכונה וירטואלית של Linux אצל ספק הענן שבחרתם. כדי לשפר את זמן ה-build, מומלץ להשתמש במחשב עם לפחות 16 ליבות, עדיף עם 32 ליבות או יותר.
שימו לב שאנחנו נטען דף HTML מ-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 מעניקה למשתמש הרשאות ברמת root. למידע נוסף, אפשר לקרוא את המדריך ל-Docker ללא sudo.
2.3 הפעלת אפליקציית Local Testing App
באפליקציה הנלווית יש משאבים כמו סקריפטים לדוגמה לבידינג או למתן ניקוד, ונקודות קצה לדוגמה של BYOS של מפתח/ערך (K/V). צריך להפעיל את האפליקציה לפני שמפעילים את שירותי B&A כדי שאפשר יהיה לטעון את המשאבים לשירותים.
שולפים את מאגר האפליקציות לבדיקות מקומיות:
git clone https://github.com/privacysandbox/bidding-auction-local-testing-app.git
מריצים את סקריפט ההגדרה מהרמה הבסיסית (root) של המאגר:
./setup
סקריפט ההגדרה ייצור את רשת Docker ba-dev
, ייצור אישורי SSL ויפתח את קובץ האימג' של אפליקציית הבדיקה.
אחרי שה-build מסתיים בהצלחה, מריצים את סקריפט ההתחלה:
./start
3. פיתוח גרסת build והרצה של בדיקות B&A באופן מקומי
3.1 משיכה למטה של שירותי B&A
אנחנו מריצים שתי קבוצות של שירותי B&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
הפקודה שלמעלה תיצור מכונה של local
עם build הפיתוח (non_prod
) של Google Cloud Platform (gcp
) לכל 4 השירותים. אם צריך, מעדכנים את הדגל --platform
לספק הענן שבחרתם. מידע נוסף על דגלים ל-build זמין בקובץ build_and_test_all_docker
.
ה-build הראשוני עשוי להימשך שעתיים אם משתמשים במכונה עם 64 ליבות, וזמן ה-build משתנה באופן לינארי בהתאם למספר הליבות. אם אתם משתמשים במכונה עם 32 ליבות, התהליך עשוי להימשך 4 שעות. אם אתם משתמשים במכונה עם 16 ליבות, התהליך עשוי להימשך 8 שעות.
הערה: גרסאות build הבאות ישתמשו במטמון, וכל גרסה build אמורה להימשך כ-5 עד 20 דקות.
רצועת קומיקס רלוונטית של xkcd:
(פגשתי את Randall Munroe מ-xkcd בזמן שכתבתי את הקודלאב הזה, ואמרתי לו שהוספתי את הקומיקס הזה)
3.3 הפעלת השירותים
במסגרת הבדיקה, נפעיל 8 שירותים (4 שירותים לכל סטאק). כל פקודה מוגדרת לשימוש במשאבים שסופקו על ידי אפליקציית הבדיקה המקומית. מומלץ מאוד להשתמש במנהל חלונות כמו tmux
.
פותחים לפחות 8 חלונות טרמינל נוספים ומריצים את הפקודות הבאות בכל סשן.
חשוב לזכור ששרת אפליקציית הבדיקה המקומית צריך לפעול כבר בתהליך נפרד, כי הסקריפטים של הבידינג והניקוד יוצגו על ידי האפליקציה.
3.3.1 הגדרת פקודות מסוג A
שירות | פקודה |
|
|
|
|
|
|
|
|
3.3.2 פקודות של קבוצה B
שירות | פקודה |
|
|
|
|
|
|
|
|
3.3.2 משתני סביבה לסקריפטים המקומיים להתחלה
אפשר להשתמש במשתני הסביבה הבאים כדי לקבוע את התנהגות ההפעלה.
משתנה סביבה | זמינות | תיאור |
| כל השירותים | דגלים להגדרה בפקודת docker |
| כל השירותים | כשבודקים במחשב המקומי, יכול להיות שתצטרכו להשתמש באישור בחתימה עצמית שלא עובר את בדיקת אימות ה-SSL של ברירת המחדל היא |
| כל השירותים | רמת יומני השירות. ברמה גבוהה יותר מוצגים יותר יומנים. 0 הוא הדירוג הנמוך ביותר ו-10 הוא הדירוג הגבוה ביותר. ברירת המחדל היא |
| Bidding Service | היציאה של Bidding Service. ברירת המחדל היא |
| Bidding Service | כתובת ה-URL של לוגיק הבידינג |
| Bidding Service | תעבורת נתונים יוצאת (egress) לאימון מודל |
| Bidding Service | ארגומנטים להסקת מסקנות לגבי בידינג |
| שירות BFE | היציאה של שירות BFE. ברירת המחדל היא |
| שירות BFE | כתובת ה-K/V של הקונה ב-BYOS |
| שירות BFE | כתובת ה-K/V של TEE של הקונה |
| שירות BFE | הכתובת של השירות לבידינג של הקונה |
| Auction Service | היציאה של Auction Service. ברירת המחדל היא |
| Auction Service | כתובת ה-URL של לוגיקת הניקוד |
| Auction Service | כתובת ה-URL לדיווח על זכייה של קונה |
| Auction Service | סקריפט לדיווח על זכייה של קונה |
| Auction Service | סקריפט לדיווח על הצעות הזוכה של הקונה ב-PAS |
| שירות SFE | היציאה של השירות SFE. ברירת המחדל היא |
| שירות SFE | הכתובת של המוכרים ב-Auction Service |
| שירות SFE | כתובת ה-K/V של BYOS של המוכר |
| שירות SFE | כתובת ה-K/V של TEE של המוכר |
| שירות SFE | המקור של המוכר |
| שירות SFE | כתובות BFE של הקונה |
4. בדיקה באמצעות Secure Invoke משורת הפקודה
4.1 בדיקת SFE
אפשר גם להשתמש בכלי Secure Invoke שכלול בחבילת B&A Services כדי לקרוא לשירותים ישירות משורת הפקודה.
4.1.2 עומס נתונים של SelectAd
ב-SFE
בקשת ה-JSON הבאה אוכלסה בהגדרות של המכרז של SSP-BA
למכירה במודל בידינג בידי מוכר יחיד:
{
"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
בתיקיית השורש של מאגר השירותים של B&A בקבוצה א' (סקריפט ה-build של B&A יקפיא את הקבצים בתיקיית השורש של המאגר לתיקייה /src/workspace
של קובץ האימג' ב-Docker).
4.1.2 קריאה ל-SFE באמצעות Secure Invoke
מריצים את הפקודה הבאה מהתיקייה הבסיסית (root) של מאגר השירותים של 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 בקשת GetBids
של BFE
{
"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"
}
שומרים את הקובץ כ-bfe-test.json
בתיקיית השורש של מאגר השירותים של B&A.
4.2.2 קריאה ל-BFE באמצעות Secure Invoke
מריצים את הפקודה הבאה מהתיקייה הבסיסית (root) של מאגר השירותים של 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 מטען נתונים מפוענח
בפלט הזה מופיע עומס העבודה (payload) מפוענח של הקריאה 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
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
ל-Auction Service
אחרי שההצעות מתקבלות, הקריאה ScoreAds
מתבצעת על ידי SFE לשירות המכרזים לכל הצעה:
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
מ-Auction Service
שירות המכרזים של המוכר משיב עם דירוג הרצון:
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 תגובה מסוג SelectAd
מ-SFE
התגובה SelectAd
של SFE מוצפנת ונשלחת ל-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
קוראים את המאמר בנושא 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
חשוב: חשוב לוודא שיצאתם לגמרי מכל המופעים של Chrome לפני שפותחים אותו משורת הפקודה עם הדגלים B ו-A. כדי לצאת מכל התהליכים של Chrome, אפשר לנסות להריץ את הפקודה ps aux | grep -ie chrome/chrome | awk '{print $2}' | xargs kill -9
משורת הפקודה.
5.2 כניסה לממשק המשתמש של אפליקציית הבדיקה המקומית
ממשק המשתמש של האפליקציה נמצא בכתובת http://localhost:3000 במכונה של דפדפן Chrome שפתחתם באמצעות הדגלים. הכתובת המדויקת שאליה תיכנסו עשויה להיות שונה אם אתם משתמשים במכונה וירטואלית עם שם מארח שונה.
בשורה העליונה של האפליקציה, בחלונית 'אמצעי בקרה' יש לחצנים לסימולציה של הגדרות מכרז שונות. שני הלוחות האחרים מכילים iframes מהאתרים של המפרסם ובעל התוכן הדיגיטלי.
כשלוחצים על הלחצן 'טעינה של תגי DSP' ברכיב ה-iframe של דף המפרסם, סקריפט מכל פלטפורמת DSP נוסף לדף. הסקריפטים האלה מוסיפים את המשתמש לקבוצות של תחומי עניין. פותחים את כלי הפיתוח ל-Chrome ועוברים אל 'אפליקציה / אחסון / קבוצות של תחומי עניין' כדי לבדוק את קבוצות תחומי העניין שהתגים של DSP חברו אליהן:
לאחר מכן, לוחצים על הלחצנים בחלונית 'אמצעי בקרה' כדי לדמות סוגי מכרזים שונים.
אם שירותי B&A והאפליקציה לבדיקה מקומית מוגדרים בצורה נכונה, המודעה הקודמת תומרן בחלונית 'iframe של אתר בעל תוכן דיגיטלי'.
5.3 הגדרת מכרזים של אפליקציות לבדיקה מקומית
באפליקציית הבדיקה המקומית הנלווית מתארחים המשתתפים הבאים, שמתבדלים לפי מספר היציאה (יציאה אחרת נחשבת למקורות שונים):
משתתף | תיאור | יציאה |
מפרסם | טעינת תגי DSP בדף |
|
בעל תוכן דיגיטלי | טעינת תגי SSP בדף |
|
| קונה במכשיר |
|
| קונה במכשיר |
|
| קונה של B&A |
|
| קונה של B&A |
|
| מוכר ברמה העליונה |
|
| מוכר שמציע מוצרים במכשיר בלבד |
|
| מוכר של מוצרים לבית ולגן בלבד |
|
| בית עסק שמציע שילוב של אמצעי תשלום |
|
יש ארבע פלטפורמות DSP:
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 הגדרת בידינג ושירותי מכרזים
ב-codelab הזה, מריצים במקביל שתי קבוצות של בדיקות ביקורת וניתוח (A&B).
אפשר להתחיל? | שירות | משתתף | כתובת רשת |
קבוצה א' | Bidding Service |
|
|
שירות BFE |
|
| |
Auction Service |
|
| |
שירות SFE |
|
| |
קבוצה ב' | Bidding Service |
|
|
שירות BFE |
|
| |
Auction Service |
|
| |
שירות SFE |
|
| |
אפליקציה | אפליקציית בדיקה מקומית | הכול |
|
- בקבוצה א',
DSP-X
משתמש בשירותים של הקונה ו-SSP-BA
משתמש בשירותים של המוכר - בקבוצה ב',
DSP-Y
משתמש בשירותים של הקונה ו-SSP-MIX
משתמש בשירותים של המוכר
כדי לתקשר בין אפליקציית הבדיקה המקומית לבין שירותי B&A, נעשה שימוש ברשת גשר של Docker. רשת הגשר ba-dev
נוצרת על ידי סקריפט ההגדרה של אפליקציית הבדיקה המקומית. לשירותי B&A מוקצית כתובת IP ברשת המשנה של 192.168.84.0
.
לדוגמה, כשאתם קוראים ל-SFE של קבוצה א' מהאפליקציה, נעשה שימוש בכתובת הרשת 192.168.84.104:50053
. כשאתם מעלים את סקריפט הבידינג המדומה מ-DSP-X ל-BFE, נעשה שימוש ב-https://192.168.84.100:5003/generate-bid.js
.
6. סיכום
אנחנו מקווים שכבר התחלתם להבין איך מפעילים את סטאק שירותי B&A באופן מקומי במחשב, ואיך השירותים מתקשרים ביניהם.
6.1. תמיכה טכנית
- אם יש לכם שאלה לגבי הגדרת אפליקציית הבדיקה המקומית, אתם יכולים לפתוח פנייה במאגר LTA.
- אם יש לכם שאלה לגבי שירותי בידינג ומכרזים, אתם יכולים לפתוח פנייה במאגר של שירותי בידינג ומכרזים.
- אם יש לכם שאלה כללית לגבי ארגז החול לפרטיות, אתם יכולים לפתוח פנייה במאגר privacy-sandbox-dev-support.