Menguji B&A untuk Web secara menyeluruh secara lokal

1. Pengantar

Layanan Bidding & Lelang (B&A) terdiri dari 4 layanan bagi pembeli dan penjual untuk memfasilitasi lelang Protected Audience:

Stack pembeli:

  • Layanan Front-End Pembeli
  • Layanan Bidding

Stack penjual:

  • Layanan Front-End Penjual
  • Layanan Lelang

Codelab ini akan memandu Anda menyiapkan dan menguji penyiapan menyeluruh di lingkungan lokal. Panduan ini diperkirakan akan memerlukan waktu sekitar 1 jam, tidak termasuk waktu build layanan awal.

Meskipun Anda mungkin hanya mengerjakan kode sisi beli atau kode sisi jual, sebaiknya siapkan alur menyeluruh di lingkungan lokal untuk lebih memahami cara kerja stack pembeli dan penjual satu sama lain. Dengan menyiapkan kedua stack, Anda dapat lebih yakin nanti saat berintegrasi dengan stack pembeli atau penjual pihak lain. Menguji layanan secara lokal juga menghemat biaya pengembangan Anda.

Dalam codelab ini, kita akan menggunakan Aplikasi Pengujian Lokal B&A sebagai pendamping panduan.

Aplikasi pengujian lokal pendamping menghosting berbagai resource pembeli dan penjual yang digunakan dalam lelang B&A. Aplikasi ini juga menyediakan UI di http://localhost:3000 tempat Anda dapat menyimulasikan berbagai konfigurasi lelang.

2. Penyiapan lingkungan

2.1 Menyiapkan mesin Linux

Gunakan mesin Linux lokal, atau sediakan VM Linux dari penyedia cloud pilihan Anda. Untuk meningkatkan waktu build, minimal 16 core direkomendasikan sebagai minimum, dan 32+ core lebih disukai.

Perhatikan bahwa kita akan memuat halaman HTML dari http://localhost:3000 mesin ini. Jika VM tidak menyediakan GUI, pastikan port 3000 dapat diakses oleh mesin lokal Anda sehingga Anda dapat terhubung ke port tersebut.

2.2 Menginstal Docker

Kita menggunakan Docker untuk menjalankan layanan dan aplikasi pengujian lokal.

Kita akan menggunakan skrip praktis untuk menginstal Docker di lingkungan pengujian.

# 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

Peringatan: Dengan penyiapan tanpa sudo, grup Docker memberikan hak istimewa tingkat root kepada pengguna. Baca panduan Docker tanpa sudo untuk mempelajari lebih lanjut.

2.3 Memulai Aplikasi Pengujian Lokal pendamping

Aplikasi pendamping menyediakan resource seperti skrip bidding/penskoran tiruan, dan endpoint BYOS K/V tiruan. Aplikasi harus dimulai sebelum menjalankan layanan B&A sehingga resource dapat dimuat ke dalam layanan.

Tarik repositori Aplikasi Pengujian Lokal:

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

Dari root repositori, jalankan skrip penyiapan:

./setup

Skrip penyiapan akan membuat jaringan Docker ba-dev, membuat sertifikat SSL, dan mem-build image aplikasi pengujian.

Setelah build berhasil, jalankan skrip awal:

./start

3. Mem-build dan menjalankan B&A secara lokal

3.1 Menarik Layanan B&A

Kita akan menjalankan dua kumpulan Layanan B&A di mesin yang sama, jadi kita akan mendownload repositori ke dalam dua folder yang berbeda.

Set A:

Download repositori B&A:

git clone https://github.com/privacysandbox/bidding-auction-servers.git bidding-auction-servers-set-a

Set B

Download repositori B&A:

git clone https://github.com/privacysandbox/bidding-auction-servers.git bidding-auction-servers-set-b
`

3.2 Mem-build layanan

Dari folder root setiap folder B&A, jalankan perintah berikut untuk mem-build keempat layanan:

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

Perintah di atas akan mem-build instance local dari build pengembangan (non_prod) untuk Google Cloud Platform (gcp) dari keempat layanan. Perbarui tanda --platform ke penyedia cloud pilihan Anda jika diperlukan. Untuk mempelajari flag build lebih lanjut, lihat file build_and_test_all_docker.

Build awal mungkin memerlukan waktu 2 jam jika menggunakan mesin 64 core, dan waktu build diskalakan secara linear berdasarkan jumlah core. Jika Anda menggunakan mesin 32 core, prosesnya mungkin memerlukan waktu 4 jam. Jika Anda menggunakan mesin 16 core, mungkin perlu waktu 8 jam.

Perhatikan bahwa build berikutnya menggunakan cache, dan setiap build akan memerlukan waktu sekitar 5-20 menit.

Komik xkcd yang relevan:

Menampilkan dua programmer yang bermalas-malasan di kantor sehingga membuat manajer meminta mereka untuk kembali bekerja, dan pekerja tersebut mengatakan bahwa kode sedang dikompilasi, dan manajer tidak keberatan, dan penulis komik ini menganggap bahwa alasan yang sah nomor satu untuk bermalas-malasan

(Saya bertemu Randall Munroe dari xkcd saat menulis codelab ini, dan memberi tahu dia bahwa saya menambahkan komik ini di sini)

3.3 Menjalankan layanan

Untuk pengujian, kita akan menjalankan 8 layanan (4 layanan per stack). Setiap perintah disiapkan untuk menggunakan resource yang disediakan oleh Aplikasi Pengujian Lokal. Sebaiknya gunakan pengelola jendela seperti tmux.

Buka minimal 8 jendela terminal tambahan, dan jalankan perintah berikut di setiap sesi.

Perhatikan bahwa server Aplikasi Pengujian Lokal harus sudah berjalan dalam proses terpisah, karena skrip bidding dan penskoran akan ditayangkan oleh aplikasi.

3.3.1 Menetapkan perintah A

Layanan

Perintah

DSP-X Layanan Bidding

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 Layanan BFE

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 Layanan Lelang

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 Layanan 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 Menetapkan perintah B

Layanan

Perintah

DSP-X Layanan Bidding

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 Layanan BFE

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 Layanan Lelang

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 Layanan 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 Variabel lingkungan untuk skrip mulai lokal

Variabel lingkungan berikut dapat digunakan untuk mengontrol perilaku pengaktifan.

Variabel lingkungan

Ketersediaan

Deskripsi

DOCKER_RUN_ARGS_STRING

Semua layanan

Flag yang akan ditetapkan untuk perintah docker

SKIP_TLS_VERIFICATION

Semua layanan

Saat melakukan pengujian di komputer lokal, Anda mungkin perlu menggunakan sertifikat yang ditandatangani sendiri yang gagal dalam pemeriksaan verifikasi peer SSL curl. Flag ini menonaktifkan verifikasi peer bersama dengan pemeriksaan nama host SSL.

Default-nya adalah false.

PS_VERBOSITY

Semua layanan

Tingkat log layanan. Level yang lebih tinggi memberikan lebih banyak log. 0 adalah terendah dan 10 adalah tertinggi. Default-nya adalah 10.

BIDDING_PORT

Layanan Bidding

Port Layanan Bidding. Default-nya adalah 50057

BIDDING_JS_URL

Layanan Bidding

URL logika bidding

EGRESS_SCHEMA_URL

Layanan Bidding

Egress data untuk pelatihan model

INFERENCE_ARGS

Layanan Bidding

Argumen untuk inferensi bidding

BFE_PORT

Layanan BFE

Port Layanan BFE. Default-nya adalah 50051

BUYER_KV_SERVER_ADDR

Layanan BFE

Alamat K/V BYOS pembeli

BUYER_TKV_V2_SERVER_ADDR

Layanan BFE

Alamat K/V TEE pembeli

BIDDING_SERVER_ADDR

Layanan BFE

Alamat Layanan Bidding Pembeli

AUCTION_PORT

Layanan Lelang

Port Layanan Lelang. Default-nya adalah 50061

AUCTION_JS_URL

Layanan Lelang

URL logika penskoran

BUYER_REPORT_WIN_URL

Layanan Lelang

URL pelaporan kemenangan pembeli

BUYER_REPORT_WIN_SCRIPT

Layanan Lelang

Skrip pelaporan kemenangan pembeli

BUYER_PAS_REPORT_WIN_SCRIPT

Layanan Lelang

Skrip pelaporan kemenangan pembeli untuk PAS

SFE_PORT

Layanan SFE

Port Layanan SFE. Default-nya adalah 50053

AUCTION_SERVER_ADDR

Layanan SFE

Alamat Layanan Lelang Penjual

KEY_VALUE_SIGNALS_ADDR

Layanan SFE

Alamat K/V BYOS penjual

TRUSTED_KEY_VALUE_V2_SIGNALS_ADDR

Layanan SFE

Alamat K/V TEE penjual

SELLER_ORIGIN_DOMAIN

Layanan SFE

Asal penjual

BUYER_SERVER_ADDRS_JSON

Layanan SFE

Alamat BFE pembeli

4. Menguji dengan Secure Invoke dari command line

4.1 Pengujian SFE

Anda juga dapat menggunakan alat Secure Invoke yang disertakan dalam paket Layanan B&A untuk memanggil layanan langsung dari command line.

4.1.2 Payload SelectAd SFE

Permintaan JSON berikut telah diisi dengan penyiapan lelang B&A penjual tunggal 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]"
          }
        ]
      }
    }
  }
}

Simpan file sebagai sfe-test.json di folder root repositori Layanan B&A Set A(skrip build B&A akan menyalin file di folder root repo ke folder /src/workspace image Docker).

4.1.2 Memanggil SFE dengan Secure Invoke

Jalankan perintah berikut dari folder root repositori Layanan 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

Jika stack B&A disiapkan dengan benar, Anda akan menerima respons berhasil berikut:

{"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 Pengujian BFE

4.2.1 Permintaan 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"
}

Simpan file sebagai bfe-test.json di folder root repositori Layanan B&A.

4.2.2 Memanggil BFE dengan Secure Invoke

Jalankan perintah berikut dari folder root repositori Layanan 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

Jika stack B&A disiapkan dengan benar, BFE akan menampilkan respons berikut:

{"bids":[{"bid":6,"render":"https://localhost:5003/ad.html","interestGroupName":"dsp-x-demo"}],"updateInterestGroupList":{}}

4.3 Memeriksa log SFE

Buka terminal dan periksa log SFE. Kita akan membahas beberapa log penting dalam output.

4.3.1 Payload terenkripsi permintaan SelectAd

Dalam output log SFE ini, kita menemukan payload terenkripsi dari panggilan navigator.getInterestGroupAdAuctionData(). Payload ini dibuat oleh browser, dikirim dari tag ke SAS, lalu SAS meneruskannya ke 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 yang didekripsi

Dalam output ini, kita menemukan payload yang didekripsi dari panggilan 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 Permintaan GetBids ke BFE

Permintaan GetBids dikirim dari SFE ke 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 Respons GetBids dari BFE

BFE merespons dengan bid:

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 Permintaan ScoreAds ke Layanan Lelang

Setelah bid diterima, panggilan ScoreAds dilakukan oleh SFE ke Layanan Lelang untuk setiap bid:

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 Respons ScoreAds dari Layanan Lelang

Layanan Lelang Penjual merespons dengan skor keinginan:

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 Respons SelectAd dari SFE

Respons SelectAd SFE dienkripsi dan dikirim ke 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. Menguji dengan Aplikasi Pengujian Lokal dari browser

5.1 Buka Chrome

Baca artikel Chromium tentang memulai Chrome dari command line, dan mulai dengan flag berikut:

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 ditetapkan untuk memuat kunci koordinator tiruan yang telah kami host di https://storage.googleapis.com/ba-test-buyer/coordinator-test-key.json

Penting: Pastikan Anda telah keluar sepenuhnya dari semua instance Chrome sebelum membukanya dari command line dengan flag B&A. Untuk keluar dari semua proses Chrome, coba jalankan ps aux | grep -ie chrome/chrome | awk '{print $2}' | xargs kill -9 dari command line.

5.2 Buka UI Aplikasi Pengujian Lokal

UI aplikasi dapat ditemukan di http://localhost:3000 di instance browser Chrome yang Anda buka dengan flag. Alamat persis yang Anda kunjungi mungkin berbeda jika Anda menggunakan VM dengan nama host yang berbeda.

Screenshot aplikasi pengujian lokal yang dikunjungi di browser

Di baris atas aplikasi, panel "Kontrol" berisi tombol untuk menyimulasikan berbagai konfigurasi lelang. Dua panel lainnya berisi iframe dari situs pengiklan dan penayang.

Saat Anda mengklik tombol "Muat tag DSP" di iframe halaman pengiklan, skrip dari setiap DSP akan ditambahkan ke halaman. Skrip tersebut menambahkan pengguna ke grup minat. Buka Chrome DevTools, lalu buka "Application / Storage / Interest Groups" untuk memeriksa grup minat yang digabungkan oleh tag DSP:

Screenshot grup minat di Chrome DevTools

Kemudian, klik tombol di panel "Kontrol" untuk menyimulasikan berbagai jenis lelang.

Iklan yang dirender di browser dari B&A

Jika Layanan B&A dan Aplikasi Pengujian Lokal disiapkan dengan benar, iklan sebelumnya akan dirender di panel "iframe situs penayang".

5.3 Konfigurasi lelang Aplikasi Pengujian Lokal

Di aplikasi pengujian lokal pendamping, peserta berikut dihosting, yang dibedakan berdasarkan nomor port (port yang berbeda dianggap lintas-asal):

Peserta

Deskripsi

Port

Pengiklan

Memuat tag DSP di halaman

4001

Penerbit

Memuat tag SSP di halaman

4002

DSP-A

Pembeli di perangkat

5001

DSP-B

Pembeli di perangkat

5002

DSP-X

Pembeli B&A

5003

DSP-Y

Pembeli B&A

5004

SSP-TOP

Penjual tingkat atas

6001

SSP-OD

Penjual khusus di perangkat

6002

SSP-BA

Penjual khusus B&A

6003

SSP-MIX

Penjual mode campuran

6004

Ada empat DSP:

  • DSP-A dan DSP-B berpartisipasi dalam lelang di perangkat
  • DSP-X dan DSP-Y berpartisipasi dalam lelang B&A

Ada empat SSP, dan setiap penjual menjalankan konfigurasi lelang yang berbeda:

  • SSP-OD menjalankan lelang khusus perangkat
  • SSP-BA menjalankan lelang khusus B&A
  • SSP-MIX menjalankan lelang mode campuran
  • SSP-TOP menjalankan lelang multi-penjual
    • SSP-OD/BA/MIX berpartisipasi sebagai penjual komponen lelang multi-penjual SSP-TOP

Untuk arsitektur lengkapnya, lihat diagram desain.

5.4 Konfigurasi Layanan Bidding dan Lelang

Dalam codelab ini, kita menjalankan dua set B&A secara bersamaan.

Setel

Layanan

Peserta

Alamat jaringan ba-dev

Set A

Layanan Bidding

DSP-X

192.168.84.101:50057

Layanan BFE

DSP-X

192.168.84.102:50051

Layanan Lelang

SSP-BA

192.168.84.103:50061

Layanan SFE

SSP-BA

192.168.84.104:50053

Set B

Layanan Bidding

DSP-Y

192.168.84.201:50057

Layanan BFE

DSP-Y

192.168.84.202:50051

Layanan Lelang

SSP-MIX

192.168.84.203:50061

Layanan SFE

SSP-MIX

192.168.84.204:50053

Aplikasi

Aplikasi Pengujian Lokal

Semua

https://192.168.84.100:PORT

  • Di Set A, layanan pembeli digunakan oleh DSP-X dan layanan penjual digunakan oleh SSP-BA
  • Di Set B, layanan pembeli digunakan oleh DSP-Y dan layanan penjual digunakan oleh SSP-MIX

Untuk berkomunikasi antara Aplikasi Pengujian Lokal dan Layanan B&A, jaringan bridge Docker digunakan. Jaringan bridge ba-dev dibuat oleh skrip penyiapan Aplikasi Pengujian Lokal. Layanan B&A diberi alamat IP di subnet 192.168.84.0.

Misalnya, saat Anda memanggil SFE Set A dari aplikasi, alamat jaringan 192.168.84.104:50053 akan digunakan. Saat Anda memuat skrip bidding tiruan dari DSP-X ke BFE, https://192.168.84.100:5003/generate-bid.js akan digunakan.

6. Rangkuman

Semoga Anda sudah memahami cara menjalankan stack Layanan B&A secara lokal di komputer, dan mendapatkan pemahaman yang lebih baik tentang cara layanan berkomunikasi satu sama lain.

6.1. Dukungan teknis

6.2 Pelajari lebih lanjut