1. บทนำ
บริการเสนอราคาและการประมูล (B&A) ประกอบด้วยบริการ 4 อย่างสำหรับผู้ซื้อและผู้ขายเพื่ออำนวยความสะดวกในการประมูล Protected Audience ดังนี้
กลุ่มผู้ซื้อ:
- บริการส่วนหน้าสำหรับผู้ซื้อ
- บริการเสนอราคา
กลุ่มผู้ขาย:
- บริการส่วนหน้าของผู้ขาย
- บริการประมูล
Codelab นี้จะแนะนำวิธีตั้งค่าและทดสอบการตั้งค่าแบบครบวงจรในสภาพแวดล้อมภายใน โดยคาดว่าการแนะนำจะใช้เวลาประมาณ 1 ชั่วโมง ไม่รวมเวลาในการสร้างบริการเริ่มต้น
แม้ว่าคุณจะทำงานกับโค้ดฝั่งซื้อหรือโค้ดฝั่งขายเท่านั้น แต่การตั้งค่าโฟลว์ตั้งแต่ต้นจนจบในสภาพแวดล้อมในเครื่องก็มีประโยชน์ในการทำความเข้าใจวิธีที่สแต็กของผู้ซื้อและผู้ขายทำงานร่วมกันได้ดียิ่งขึ้น การตั้งค่าทั้ง 2 สแต็กจะช่วยให้คุณมั่นใจมากขึ้นในภายหลังเมื่อผสานรวมกับสแต็กผู้ซื้อหรือผู้ขายของอีกฝ่าย การทดสอบบริการในเครื่องยังช่วยประหยัดต้นทุนการพัฒนาด้วย
ใน Codelab นี้ เราจะใช้แอปทดสอบในพื้นที่ของ B&A เป็นคู่มือแนะนำ
แอปทดสอบในพื้นที่ที่ใช้ร่วมกันจะโฮสต์แหล่งข้อมูลต่างๆ ของผู้ซื้อและผู้ขายที่ใช้ในการประมูล B&A นอกจากนี้ แอปยังมี UI ที่ http://localhost:3000 ซึ่งคุณสามารถจำลองการกำหนดค่าการประมูลต่างๆ ได้
2. การตั้งค่าสภาพแวดล้อม
2.1 เตรียมเครื่อง Linux
ใช้เครื่อง Linux ในพื้นที่ หรือจัดสรร VM ของ Linux จากผู้ให้บริการระบบคลาวด์ที่คุณเลือก ขอแนะนำให้ใช้คอร์อย่างน้อย 16 คอร์เป็นขั้นต่ำ และควรใช้ 32 คอร์ขึ้นไปเพื่อปรับปรุงเวลาบิลด์
โปรดทราบว่าเราจะโหลดหน้า HTML จาก http://localhost:3000 ของเครื่องนี้ หาก VM ไม่มี GUI ให้ตรวจสอบว่าเครื่องในพื้นที่ของคุณเข้าถึงพอร์ต 3000 ได้เพื่อให้เชื่อมต่อกับ VM ได้
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 อ่านข้อมูลเพิ่มเติมได้ในคู่มือ Docker แบบไม่ต้องใช้ sudo
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 2 ชุดในเครื่องเดียวกัน จึงจะดึงข้อมูลที่เก็บลงในโฟลเดอร์ 2 โฟลเดอร์ที่แตกต่างกัน
ชุด 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 แต่ละโฟลเดอร์ ให้เรียกใช้คำสั่งต่อไปนี้เพื่อสร้างบริการทั้ง 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อินสแตนซ์ของบิลด์สำหรับพัฒนา (non_prod) สำหรับ Google Cloud (gcp) ของทั้ง 4 บริการ อัปเดต--platformเป็นผู้ให้บริการระบบคลาวด์ที่คุณเลือกหากจำเป็น ดูข้อมูลเพิ่มเติมเกี่ยวกับแฟล็กการสร้างได้ในไฟล์ build_and_test_all_docker
การสร้างครั้งแรกอาจใช้เวลา 2 ชั่วโมงหากใช้เครื่องที่มี 64 คอร์ และเวลาในการสร้างจะเพิ่มขึ้นตามจำนวนคอร์ หากใช้เครื่องที่มี 32 คอร์ อาจใช้เวลา 4 ชั่วโมง หากใช้เครื่องที่มี 16 คอร์ อาจใช้เวลา 8 ชั่วโมง
โปรดทราบว่าบิลด์ถัดไปจะใช้แคช และแต่ละบิลด์จะใช้เวลาประมาณ 5-20 นาที
โปรแกรมเมอร์ 2 คนแอบอู้งานขณะที่ระบบกำลังบิลด์
(ฉันได้พบกับ Randall Munroe จาก xkcd ขณะเขียน Codelab นี้ และได้บอกเขาว่าฉันได้เพิ่มการ์ตูนเรื่องนี้ไว้ที่นี่)
3.3 เรียกใช้บริการ
สำหรับการทดสอบ เราจะเรียกใช้ 8 บริการ (4 บริการต่อสแต็ก) แต่ละคำสั่งได้รับการตั้งค่าให้ใช้ทรัพยากรที่แอปทดสอบในเครื่องมีให้ เราขอแนะนำให้ใช้ตัวจัดการหน้าต่าง เช่น tmux
เปิดหน้าต่างเทอร์มินัลเพิ่มเติมอย่างน้อย 8 หน้าต่าง แล้วเรียกใช้คำสั่งต่อไปนี้ในแต่ละเซสชัน
โปรดทราบว่าเซิร์ฟเวอร์ของแอปทดสอบในเครื่องต้องทำงานในกระบวนการแยกต่างหากอยู่แล้ว เนื่องจากแอปจะเป็นผู้แสดงสคริปต์การเสนอราคาและการให้คะแนน
3.3.1 คำสั่งชุด ก
บริการ | คำสั่ง |
|
|
|
|
|
|
|
|
3.3.2 ตั้งค่าคำสั่ง B
บริการ | คำสั่ง |
|
|
|
|
|
|
|
|
3.3.2 ตัวแปรสภาพแวดล้อมสำหรับสคริปต์เริ่มต้นในเครื่อง
คุณใช้ตัวแปรสภาพแวดล้อมต่อไปนี้เพื่อควบคุมลักษณะการทำงานเมื่อเริ่มต้นได้
ตัวแปรสภาพแวดล้อม | ความพร้อมใช้งาน | คำอธิบาย |
| บริการทั้งหมด | Flag ที่จะตั้งค่าสำหรับคำสั่ง Docker |
| บริการทั้งหมด | เมื่อทดสอบในเครื่อง คุณอาจต้องใช้ใบรับรองแบบ Self-signed ซึ่งไม่ผ่านการตรวจสอบการยืนยันเพียร์ SSL ของ ค่าเริ่มต้นคือ |
| บริการทั้งหมด | ระดับของบันทึกบริการ ระดับที่สูงขึ้นจะให้บันทึกเพิ่มเติม 0 คือต่ำสุดและ 10 คือสูงสุด ค่าเริ่มต้นคือ |
| บริการเสนอราคา | พอร์ตของบริการเสนอราคา ค่าเริ่มต้นคือ |
| บริการเสนอราคา | URL ของตรรกะการเสนอราคา |
| บริการเสนอราคา | การส่งออกข้อมูลสำหรับการฝึกโมเดล |
| บริการเสนอราคา | อาร์กิวเมนต์สำหรับการอนุมานการเสนอราคา |
| บริการ BFE | พอร์ตของบริการ BFE ค่าเริ่มต้นคือ |
| บริการ BFE | ที่อยู่ K/V ของ BYOS ของผู้ซื้อ |
| บริการ BFE | ที่อยู่ K/V ของ TEE ของผู้ซื้อ |
| บริการ BFE | ที่อยู่บริการเสนอราคาของผู้ซื้อ |
| บริการประมูล | พอร์ตของบริการประมูล ค่าเริ่มต้นคือ |
| บริการประมูล | URL ของตรรกะการให้คะแนน |
| บริการประมูล | URL การรายงานการชนะของผู้ซื้อ |
| บริการประมูล | สคริปต์การรายงานการชนะของผู้ซื้อ |
| บริการประมูล | สคริปต์การรายงานการชนะของผู้ซื้อสําหรับ PAS |
| บริการ SFE | พอร์ตของบริการ SFE ค่าเริ่มต้นคือ |
| บริการ SFE | ที่อยู่ของบริการประมูลของผู้ขาย |
| บริการ SFE | ที่อยู่ K/V ของ BYOS ของผู้ขาย |
| บริการ SFE | ที่อยู่ TEE K/V ของผู้ขาย |
| บริการ SFE | แหล่งที่มาของผู้ขาย |
| บริการ SFE | ที่อยู่ BFE ของผู้ซื้อ |
4. ทดสอบด้วยการเรียกใช้ที่ปลอดภัยจากบรรทัดคำสั่ง
4.1 การทดสอบ SFE
นอกจากนี้ คุณยังใช้เครื่องมือ Secure Invoke ที่รวมอยู่ในแพ็กเกจบริการ B&A เพื่อเรียกใช้บริการจากบรรทัดคำสั่งได้โดยตรง
4.1.2 เพย์โหลด SFE SelectAd
คำขอ JSON ต่อไปนี้ได้รับการป้อนข้อมูลด้วยการตั้งค่าการประมูล B&A แบบผู้ขายรายเดียวของ 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 ในโฟลเดอร์รูทของที่เก็บ Set A's B&A Services(สคริปต์การสร้าง B&A จะคัดลอกไฟล์ในโฟลเดอร์รูทของที่เก็บไปยังโฟลเดอร์ /src/workspace ของอิมเมจ Docker)
4.1.2 เรียกใช้ SFE ด้วย Secure Invoke
เรียกใช้คำสั่งต่อไปนี้จากโฟลเดอร์รูทของที่เก็บ 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 การทดสอบ 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
เรียกใช้คำสั่งต่อไปนี้จากโฟลเดอร์รูทของที่เก็บ 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 ตรวจสอบบันทึก 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 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 คำขอไปยังบริการประมูล
หลังจากได้รับราคาเสนอแล้ว 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 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 ไปที่ UI ของแอปทดสอบในพื้นที่
คุณดู UI ของแอปได้ที่ http://localhost:3000 ในอินสแตนซ์เบราว์เซอร์ Chrome ที่คุณเปิดด้วย Flag ที่อยู่ที่คุณเข้าชมอาจแตกต่างกันหากใช้ VM ที่มีชื่อโฮสต์อื่น
ภาพหน้าจอของแอปทดสอบในเครื่องที่เข้าชมในเบราว์เซอร์
ในแถวบนสุดของแอป แผง "การควบคุม" จะมีปุ่มสำหรับจำลองการกำหนดค่าการประมูลต่างๆ ส่วนอีก 2 แผงมี iframe จากเว็บไซต์ของผู้ลงโฆษณาและผู้เผยแพร่โฆษณา
ภาพหน้าจอของกลุ่มความสนใจในเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome
จากนั้นคลิกปุ่มในแผง "การควบคุม" เพื่อจำลองการประมูลประเภทต่างๆ

หากตั้งค่าบริการ B&A และแอปทดสอบในเครื่องอย่างถูกต้อง โฆษณาที่แสดงก่อนหน้าจะแสดงในแผง "iframe ของเว็บไซต์ผู้เผยแพร่โฆษณา"
5.3 การกำหนดค่าการประมูลของแอปทดสอบในพื้นที่
ในแอปทดสอบในเครื่องแบบคู่ จะมีการโฮสต์ผู้เข้าร่วมต่อไปนี้ โดยจะแยกความแตกต่างตามหมายเลขพอร์ต (ระบบจะถือว่าพอร์ตที่แตกต่างกันเป็นแบบข้ามต้นทาง)
ผู้เข้าร่วม | คำอธิบาย | พอร์ต |
ผู้ลงโฆษณา | โหลดแท็ก DSP ในหน้าเว็บ |
|
ผู้เผยแพร่ | โหลดแท็ก SSP ในหน้าเว็บ |
|
| ผู้ซื้อในอุปกรณ์ |
|
| ผู้ซื้อในอุปกรณ์ |
|
| ผู้ซื้อ B&A |
|
| ผู้ซื้อ B&A |
|
| ผู้ขายระดับสูงสุด |
|
| ผู้ขายที่ใช้เฉพาะในอุปกรณ์ |
|
| ผู้ขายที่ใช้ B&A เท่านั้น |
|
| ผู้ขายแบบผสม |
|
DSP มี 4 รายการดังนี้
DSP-AและDSP-Bเข้าร่วมการประมูลในอุปกรณ์DSP-XและDSP-Yเข้าร่วมการประมูล B&A
มี SSP 4 ราย และผู้ขายแต่ละรายใช้การกำหนดค่าการประมูลที่แตกต่างกัน ดังนี้
SSP-ODจะจัดการประมูลในอุปกรณ์เท่านั้นSSP-BAเรียกใช้การประมูล B&A เท่านั้นSSP-MIXเรียกใช้การประมูลแบบผสมSSP-TOPจัดการประมูลผู้ขายหลายรายSSP-OD/BA/MIXเข้าร่วมเป็นผู้ขายคอมโพเนนต์ของการประมูลแบบผู้ขายหลายรายของSSP-TOP
ดูสถาปัตยกรรมทั้งหมดได้ที่แผนภาพการออกแบบ
5.4 การกำหนดค่าบริการเสนอราคาและการประมูล
ใน Codelab นี้ เราจะเรียกใช้ B&A 2 ชุดควบคู่กัน
ตั้งค่า | บริการ | ผู้เข้าร่วม |
|
ชุด A | บริการเสนอราคา |
|
|
บริการ BFE |
|
| |
บริการประมูล |
|
| |
บริการ SFE |
|
| |
ชุด B | บริการเสนอราคา |
|
|
บริการ BFE |
|
| |
บริการประมูล |
|
| |
บริการ SFE |
|
| |
แอป | แอปทดสอบในพื้นที่ | ทั้งหมด |
|
- ในชุด A ผู้ซื้อใช้บริการของ
DSP-Xและผู้ขายใช้บริการของSSP-BA - ในชุด B ผู้ซื้อใช้บริการของผู้ซื้อและผู้ขายใช้บริการของผู้ขาย
DSP-YSSP-MIX
ระบบจะใช้เครือข่ายบริดจ์ Docker ในการสื่อสารระหว่างแอปการทดสอบในเครื่องกับบริการ B&A ba-dev สคริปต์การตั้งค่าของแอปทดสอบในเครื่องจะสร้างเครือข่ายบริดจ์ บริการ B&A จะได้รับที่อยู่ IP ในซับเน็ตของ 192.168.84.0
เช่น เมื่อคุณโทรหา SFE ของชุด A จากแอปพลิเคชัน ระบบจะใช้ที่อยู่เครือข่ายของ 192.168.84.104:50053 เมื่อโหลดสคริปต์การเสนอราคาจำลองจาก DSP-X ไปยัง BFE ระบบจะใช้ https://192.168.84.100:5003/generate-bid.js
6. สรุป
ตอนนี้เราหวังว่าคุณจะคุ้นเคยกับการเรียกใช้สแต็กบริการ B&A ในเครื่องของคุณ และเข้าใจวิธีที่บริการต่างๆ สื่อสารกันได้ดียิ่งขึ้น
6.1 ฝ่ายสนับสนุนด้านเทคนิค
- หากมีคำถามเกี่ยวกับการตั้งค่าแอปทดสอบในพื้นที่ โปรดเปิดปัญหาในที่เก็บ LTA
- หากมีคำถามเกี่ยวกับบริการการเสนอราคาและการประมูล โปรดเปิดปัญหาในที่เก็บบริการ B&A
6.2 ดูข้อมูลเพิ่มเติม
- ดูข้อมูลเพิ่มเติมเกี่ยวกับสถาปัตยกรรม B&A สำหรับเว็บ
- ดูข้อมูลเพิ่มเติมเกี่ยวกับการผสานรวมผู้ขายกับ B&A สำหรับเว็บ