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 memandu Anda menyiapkan dan menguji penyiapan menyeluruh di lingkungan lokal. Penjelasan ini diperkirakan akan memakan waktu sekitar 1 jam, tidak termasuk waktu build layanan awal.

Meskipun Anda hanya mengerjakan kode sisi pembelian atau kode sisi penjualan, sebaiknya siapkan alur menyeluruh di lingkungan lokal Anda untuk lebih memahami cara kerja stack pembeli dan penjual. Dengan menyiapkan kedua stack, Anda dapat lebih percaya diri 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 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, sebaiknya gunakan minimal 16 core, dan lebih baik lagi jika menggunakan 32+ core.

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 VM 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 Mulai Aplikasi Pengujian Lokal pendamping

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

Tarik ke bawah 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 membangun image aplikasi pengujian.

Setelah build berhasil, jalankan skrip start:

./start

3. Membangun dan menjalankan B&A secara lokal

3.1 Tarik turun Layanan B&A

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

Set A:

Tarik repositori B&A:

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

Set B

Tarik repositori B&A:

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

3.2 Membangun layanan

Dari folder root setiap folder B&A, jalankan perintah berikut untuk membangun semua 4 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 ini akan membuat instance local dari build pengembangan (non_prod) untuk Google Cloud (gcp) dari keempat layanan. Perbarui tanda --platform ke penyedia cloud pilihan Anda jika diperlukan. Untuk mempelajari lebih lanjut flag build, periksa file build_and_test_all_docker.

Build awal dapat memerlukan waktu 2 jam jika menggunakan komputer 64-core, dan waktu build akan diskalakan secara linear berdasarkan jumlah core. Jika Anda menggunakan mesin 32-core, prosesnya mungkin memerlukan waktu 4 jam. Jika Anda menggunakan mesin 16-core, proses ini dapat memakan waktu 8 jam.

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

Komik xkcd yang relevan:

Dua programmer sedang bersantai di kantor. Seorang pengelola menyuruh mereka kembali bekerja, para pekerja mengatakan bahwa kode sedang dikompilasi, dan pengelola tidak mempermasalahkannya. Penulis komik ini menganggap bahwa itu adalah alasan sah nomor satu untuk bermalas-malasan. Dua programmer yang bermalas-malasan saat build sedang berjalan.

(Saya bertemu Randall Munroe dari xkcd saat menulis codelab ini, dan mengatakan kepadanya 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 pemberian skor akan ditayangkan oleh aplikasi.

3.3.1 Perintah Set A

Layanan

Perintah

Layanan Bidding DSP-X

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

Layanan SSP-BA 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 Perintah Set B

Layanan

Perintah

Layanan Bidding DSP-Y

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-Y 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

Layanan SSP-BA 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 saat memulai.

Env var

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 beserta 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 yang terendah dan 10 adalah yang 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 TEE K/V pembeli

BIDDING_SERVER_ADDR

Layanan BFE

Alamat Layanan Penawaran Pembeli

AUCTION_PORT

Layanan Lelang

Port Layanan Lelang. Default-nya adalah 50061

AUCTION_JS_URL

Layanan Lelang

URL logika pemberian skor

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 SFE Service. 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 TEE K/V penjual

SELLER_ORIGIN_DOMAIN

Layanan SFE

Asal penjual

BUYER_SERVER_ADDRS_JSON

Layanan SFE

Alamat BFE pembeli

4. Menguji dengan Pemanggilan Aman dari command line

4.1 Pengujian SFE

Anda juga dapat menggunakan alat Secure Invoke yang disertakan dalam paket B&A Services 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 repositori ke folder /src/workspace image Docker).

4.1.2 Memanggil SFE dengan Pemanggilan Aman

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

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 B&A Services.

4.2.2 Memanggil BFE dengan Pemanggilan Aman

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

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 GetBids permintaan 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 Uji Lokal dari browser

5.1 Buka Chrome

Baca artikel Chromium tentang memulai Chrome dari command line, dan mulai dengan tanda 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 disetel 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 tanda 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 Membuka UI Aplikasi Pengujian Lokal

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

Screenshot aplikasi pengujian lokal yang dibuka di browser Screenshot aplikasi pengujian lokal yang dibuka 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.

Screenshot grup minat di Chrome DevTools. 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 origin):

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 dengan 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 di 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 dalam 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 berdampingan.

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

Jaringan bridge Docker digunakan untuk berkomunikasi antara Aplikasi Pengujian Lokal dan Layanan B&A. 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 digunakan.

6. Rangkuman

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

6.1. Dukungan teknis

6.2 Pelajari lebih lanjut