1. บทนำ
บริการเสนอราคาและประมูล (B&A) ประกอบด้วยบริการ 4 รายการสำหรับผู้ซื้อและผู้ขายเพื่ออำนวยความสะดวกในการประมูล Protected Audience ดังนี้
สแต็กผู้ซื้อ
- บริการส่วนหน้าสำหรับผู้ซื้อ
- บริการเสนอราคา
กองของผู้ขาย
- บริการส่วนหน้าสำหรับผู้ขาย
- บริการประมูล
โค้ดแล็บนี้จะแนะนำการตั้งค่าและการทดสอบการตั้งค่าจากต้นทางถึงปลายทางในสภาพแวดล้อมภายใน คาดว่าการแนะนำจะใช้เวลาประมาณ 1 ชั่วโมง ไม่รวมเวลาในการสร้างบริการครั้งแรก
แม้ว่าคุณจะทํางานกับโค้ดฝั่งผู้ซื้อหรือฝั่งผู้ขายเท่านั้น แต่การตั้งค่าขั้นตอนตั้งแต่ต้นจนจบในสภาพแวดล้อมในเครื่องก็มีประโยชน์เพื่อให้เข้าใจวิธีการทำงานของสแต็กผู้ซื้อและผู้ขายได้ดียิ่งขึ้น การตั้งค่าทั้ง 2 สแต็กจะช่วยให้คุณมั่นใจมากขึ้นในภายหลังเมื่อผสานรวมกับสแต็กผู้ซื้อหรือผู้ขายที่เกี่ยวข้องของบุคคลอื่น การทดสอบบริการในเครื่องยังช่วยประหยัดค่าใช้จ่ายในการพัฒนาด้วย
ใน Codelab นี้ เราจะใช้แอปทดสอบในพื้นที่ของ B&A เป็นตัวช่วยแนะนำ
แอปทดสอบในพื้นที่ที่ใช้ร่วมกันจะโฮสต์ทรัพยากรผู้ซื้อและผู้ขายต่างๆ ที่ใช้ในการประมูล B&A นอกจากนี้ แอปยังมี UI ที่ http://localhost:3000
ซึ่งคุณสามารถจําลองการกําหนดค่าการประมูลต่างๆ ได้
2. การตั้งค่าสภาพแวดล้อม
2.1 เตรียมเครื่อง Linux
ใช้เครื่อง Linux บนเครื่อง หรือจัดสรร VM ที่ใช้ Linux ของผู้ให้บริการระบบคลาวด์ที่คุณต้องการ หากต้องการปรับปรุงเวลาสร้าง เราขอแนะนำให้ใช้ CPU ที่มีอย่างน้อย 16 คอร์ และควรใช้ CPU ที่มี 32 คอร์ขึ้นไป
โปรดทราบว่าเราจะโหลดหน้า HTML จาก http://localhost:3000
ของเครื่องนี้ หาก VM ไม่มี GUI ให้ตรวจสอบว่าเครื่องคอมพิวเตอร์ของคุณเข้าถึงพอร์ต 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 จะมอบสิทธิ์ระดับรูทให้แก่ผู้ใช้ อ่านคู่มือ 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 โฟลเดอร์ที่แตกต่างกัน
ชุด ก.
ดึงที่เก็บ 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
ของบิลด์สำหรับการพัฒนา (non_prod
) สำหรับ Google Cloud Platform (gcp
) ของบริการทั้ง 4 รายการ อัปเดต Flag --platform
ไปยังผู้ให้บริการระบบคลาวด์ที่คุณต้องการ หากจำเป็น ดูข้อมูลเพิ่มเติมเกี่ยวกับ Flag การสร้างได้ในไฟล์ build_and_test_all_docker
การสร้างครั้งแรกอาจใช้เวลา 2 ชั่วโมงหากใช้เครื่อง 64 คอร์ และเวลาสร้างจะเพิ่มขึ้นตามจำนวนคอร์ หากใช้เครื่อง 32 คอร์ อาจใช้เวลา 4 ชั่วโมง หากใช้เครื่อง 16 คอร์ อาจใช้เวลา 8 ชั่วโมง
โปรดทราบว่าบิลด์ต่อๆ ไปจะใช้แคช และแต่ละบิลด์ควรใช้เวลาประมาณ 5-20 นาที
(ฉันได้พบกับ Randall Munroe จาก xkcd ขณะเขียน Codelab นี้ และบอกเขาว่าฉันได้เพิ่มการ์ตูนนี้ไว้ที่นี่)
3.3 เรียกใช้บริการ
ในการทดสอบ เราจะเรียกใช้บริการ 8 รายการ (4 รายการต่อสแต็ก) แต่ละคําสั่งได้รับการตั้งค่าให้ใช้ทรัพยากรที่แอปทดสอบในเครื่องมีให้ เราขอแนะนําอย่างยิ่งให้ใช้เครื่องมือจัดการหน้าต่าง เช่น tmux
เปิดหน้าต่างเทอร์มินัลเพิ่มอีกอย่างน้อย 8 หน้าต่าง แล้วเรียกใช้คําสั่งต่อไปนี้ในแต่ละเซสชัน
โปรดทราบว่าเซิร์ฟเวอร์แอปการทดสอบในเครื่องต้องทำงานในกระบวนการแยกต่างหากอยู่แล้ว เนื่องจากแอปจะแสดงสคริปต์การเสนอราคาและการให้คะแนน
3.3.1 ตั้งค่าคำสั่ง A
บริการ | คำสั่ง |
|
|
|
|
|
|
|
|
3.3.2 คำสั่งชุด B
บริการ | คำสั่ง |
|
|
|
|
|
|
|
|
3.3.2 ตัวแปรสภาพแวดล้อมสำหรับสคริปต์เริ่มต้นในเครื่อง
คุณใช้ตัวแปรสภาพแวดล้อมต่อไปนี้เพื่อควบคุมลักษณะการเริ่มต้นได้
ตัวแปรสภาพแวดล้อม | ความพร้อมใช้งาน | คำอธิบาย |
| บริการทั้งหมด | การตั้งค่า Flag สำหรับคำสั่ง docker |
| บริการทั้งหมด | เมื่อทดสอบในเครื่องของคุณ คุณอาจต้องใช้ใบรับรองที่ลงนามด้วยตนเองซึ่งไม่ผ่านการตรวจสอบการยืนยันคู่สนทนา SSL ของ ค่าเริ่มต้นคือ |
| บริการทั้งหมด | ระดับบันทึกของบริการ ระดับที่สูงขึ้นจะให้บันทึกมากขึ้น โดย 0 คือต่ำสุดและ 10 คือสูงสุด ค่าเริ่มต้นคือ |
| บริการเสนอราคา | พอร์ตของบริการเสนอราคา ค่าเริ่มต้นคือ |
| บริการเสนอราคา | URL ของตรรกะการเสนอราคา |
| บริการเสนอราคา | การส่งออกข้อมูลสําหรับการฝึกโมเดล |
| บริการเสนอราคา | อาร์กิวเมนต์สําหรับการอนุมานการเสนอราคา |
| บริการ BFE | พอร์ตของบริการ BFE ค่าเริ่มต้นคือ |
| บริการ BFE | ที่อยู่ K/V ของ BYOS ของผู้ซื้อ |
| บริการ BFE | ที่อยู่ K/V ของ TEE ของผู้ซื้อ |
| บริการ BFE | ที่อยู่บริการเสนอราคาของผู้ซื้อ |
| บริการประมูล | พอร์ตของบริการประมูล ค่าเริ่มต้นคือ |
| บริการประมูล | URL ของตรรกะการให้คะแนน |
| บริการประมูล | URL การรายงานการชนะของผู้ซื้อ |
| บริการประมูล | สคริปต์การรายงาน Conversion ที่ซื้อของผู้ซื้อ |
| บริการประมูล | สคริปต์การรายงานการชนะของผู้ซื้อสําหรับ PAS |
| บริการ SFE | พอร์ตของบริการ SFE ค่าเริ่มต้นคือ |
| บริการ SFE | ที่อยู่บริการประมูลของผู้ขาย |
| บริการ SFE | ที่อยู่ K/V ของ BYOS ของผู้ขาย |
| บริการ SFE | ที่อยู่ K/V ของ TEE ของผู้ขาย |
| บริการ SFE | ต้นทางของผู้ขาย |
| บริการ SFE | ที่อยู่ BFE ของผู้ซื้อ |
4. ทดสอบด้วย Secure Invoke จากบรรทัดคำสั่ง
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
ในโฟลเดอร์รูทของที่เก็บข้อมูลบริการ B&A ของชุด A(สคริปต์บิลด์ B&A จะคัดลอกไฟล์ในโฟลเดอร์รูทของที่เก็บข้อมูลไปยังโฟลเดอร์ /src/workspace
ของอิมเมจ Docker)
4.1.2 โทรหา SFE ด้วย Secure Invoke
เรียกใช้คำสั่งต่อไปนี้จากโฟลเดอร์รูทของที่เก็บข้อมูลบริการ 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
เรียกใช้คำสั่งต่อไปนี้จากโฟลเดอร์รูทของที่เก็บข้อมูลบริการ 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 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 จากบรรทัดคำสั่ง และเริ่ม Chrome ด้วย Flag ต่อไปนี้
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
การตั้งค่า Flag เพื่อโหลดคีย์ผู้ประสานงานจำลองที่เราโฮสต์ไว้ที่ https://storage.googleapis.com/ba-test-buyer/coordinator-test-key.json
สำคัญ: ตรวจสอบว่าคุณออกจากอินสแตนซ์ Chrome ทั้งหมดแล้วก่อนที่จะเปิดจากบรรทัดคำสั่งด้วย Flag 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 จากเว็บไซต์ของผู้ลงโฆษณาและผู้เผยแพร่โฆษณา
เมื่อคลิกปุ่ม "โหลดแท็ก DSP" ใน iframe ของหน้าผู้ลงโฆษณา ระบบจะเพิ่มสคริปต์จาก DSP แต่ละรายการลงในหน้า สคริปต์ดังกล่าวจะเพิ่มผู้ใช้ลงในกลุ่มความสนใจ เปิดเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome แล้วไปที่ "แอปพลิเคชัน / พื้นที่เก็บข้อมูล / กลุ่มความสนใจ" เพื่อตรวจสอบกลุ่มความสนใจที่แท็ก DSP เข้าร่วม
จากนั้นคลิกปุ่มในแผง "การควบคุม" เพื่อจําลองการประมูลประเภทต่างๆ
หากตั้งค่าบริการ B&A และแอปการทดสอบในเครื่องอย่างถูกต้อง โฆษณาก่อนหน้าจะแสดงผลในแผง "iframe ของเว็บไซต์ผู้เผยแพร่โฆษณา"
5.3 การกําหนดค่าการประมูลของแอปทดสอบในพื้นที่
ในแอปทดสอบในพื้นที่ที่ใช้ร่วมกัน ระบบจะโฮสต์ผู้เข้าร่วมต่อไปนี้ โดยแยกตามหมายเลขพอร์ต (พอร์ตอื่นจะถือว่ามาจากแหล่งที่มาอื่น)
ผู้เข้าร่วม | คำอธิบาย | พอร์ต |
ผู้ลงโฆษณา | โหลดแท็ก DSP ในหน้าเว็บ |
|
ผู้เผยแพร่โฆษณา | โหลดแท็ก SSP ในหน้าเว็บ |
|
| ผู้ซื้อในอุปกรณ์ |
|
| ผู้ซื้อในอุปกรณ์ |
|
| ผู้ซื้อ 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 การกําหนดค่าการเสนอราคาและบริการประมูล
ในโค้ดแล็บนี้ เราจะเรียกใช้ B&A 2 ชุดควบคู่กัน
ตั้งค่า | บริการ | ผู้เข้าร่วม | ที่อยู่เครือข่าย |
ชุด A | บริการเสนอราคา |
|
|
บริการ BFE |
|
| |
บริการประมูล |
|
| |
บริการ SFE |
|
| |
ชุด ข | บริการเสนอราคา |
|
|
บริการ BFE |
|
| |
บริการประมูล |
|
| |
บริการ SFE |
|
| |
แอป | แอปทดสอบในเครื่อง | ทั้งหมด |
|
- ในชุด ก
DSP-X
ใช้บริการสำหรับผู้ซื้อและSSP-BA
ใช้บริการสำหรับผู้ขาย - ในชุด ข.
DSP-Y
ใช้บริการสำหรับผู้ซื้อและSSP-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
- หากมีคำถามเกี่ยวกับบริการเสนอราคาและบริการประมูล โปรดเปิดปัญหาในที่เก็บบริการเสนอราคาและบริการประมูล
- หากมีคำถามทั่วไปเกี่ยวกับ Privacy Sandbox โปรดเปิดปัญหาในที่เก็บ privacy-sandbox-dev-support
6.2 ดูข้อมูลเพิ่มเติม
- ดูข้อมูลเพิ่มเติมเกี่ยวกับสถาปัตยกรรม B&A สําหรับเว็บ
- ดูข้อมูลเพิ่มเติมเกี่ยวกับการผสานรวมผู้ขายกับ B&A สำหรับเว็บ