Web için uçtan uca soru-cevap oturumlarını yerel olarak test etme

1. Giriş

Teklifli Sistem ve Açık Artırma Hizmetleri (B&A), alıcılar ve satıcılar için Protected Audience açık artırmasını kolaylaştıran 4 hizmetten oluşur:

Alıcı yığını:

  • Alıcı Tarafı Ön Uç Hizmeti
  • Bidding Hizmeti

Satıcı yığını:

  • Satıcıya Yönelik Kullanıcı Arayüzü Hizmeti
  • Auction Hizmeti

Bu codelab'de, yerel ortamınızda uçtan uca kurulumu ayarlama ve test etme adımları açıklanmaktadır. İlk hizmet oluşturma süresi hariç olmak üzere, adım adım açıklamanın yaklaşık 1 saat sürmesi beklenmektedir.

Yalnızca satın alma tarafı kodu veya satış tarafı kodu üzerinde çalışıyor olsanız bile, alıcı ve satıcı yığınlarının birbirleriyle nasıl çalıştığını daha iyi anlamak için uçtan uca akışı yerel ortamınızda ayarlamanız faydalı olur. Her iki yığını da ayarlayarak daha sonra başka bir tarafın alıcı veya satıcı yığınıyla entegrasyon yaparken daha fazla güven duyabilirsiniz. Hizmetleri yerel olarak test etmek, geliştirme maliyetinizi de düşürür.

Bu codelab'de, adım adım kılavuz olarak B&A Local Testing App'i kullanacağız.

Yardımcı yerel test uygulaması, bir B&A açık artırmasında kullanılan çeşitli alıcı ve satıcı kaynaklarını barındırır. Uygulama, http://localhost:3000 adresinde çeşitli açık artırma yapılandırmalarını simüle edebileceğiniz bir kullanıcı arayüzü de sunar.

2. Ortam kurulumu

2.1 Linux makine hazırlama

Yerel bir Linux makinesi kullanın veya tercih ettiğiniz bulut sağlayıcının Linux sanal makinesini sağlayın. Derleme süresini iyileştirmek için en az 16 çekirdek önerilir ve 32 veya daha fazla çekirdek tercih edilir.

Bu makinenin http://localhost:3000 konumundan bir HTML sayfası yükleneceğini unutmayın. Sanal makine GUI sağlamıyorsa bağlanabilmek için 3000 bağlantı noktasına yerel makinenizden erişilebildiğinden emin olun.

2.2 Docker'ı yükleme

Hizmetleri ve yerel test uygulamasını çalıştırmak için Docker'ı kullanırız.

Docker'ı test ortamına yüklemek için kolaylık komut dosyasını kullanacağız.

# 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

Uyarı: Sudo'suz kurulumda Docker grubu, kullanıcıya kök düzeyinde ayrıcalıklar verir. Daha fazla bilgi için sudo olmadan Docker kılavuzunu okuyun.

2.3 Tamamlayıcı yerel test uygulamasını başlatın

Yardımcı uygulama, sahte teklif verme veya puanlama komut dosyaları ve sahte K/V BYOS uç noktaları gibi kaynaklar sağlar. Kaynakların hizmetlere yüklenebilmesi için B&A hizmetleri çalıştırılmadan önce uygulama başlatılmalıdır.

Local Testing App repository'yi çekin:

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

Deponun kökünden kurulum komut dosyasını çalıştırın:

./setup

Kurulum komut dosyası ba-dev Docker ağını oluşturur, SSL sertifikaları üretir ve test uygulaması görüntüsünü oluşturur.

Derleme başarılı olduktan sonra başlatma komut dosyasını çalıştırın:

./start

3. B&A'yı yerel olarak derleme ve çalıştırma

3.1 B&A Hizmetlerini çekme

Aynı makinede iki grup B&A Hizmeti çalıştıracağımız için depoyu iki farklı klasöre indireceğiz.

A kümesi:

B&A deposunu çekin:

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

B Grubu

B&A deposunu çekin:

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

3.2 Hizmetleri oluşturma

Her bir B&A klasörünün kök klasöründen aşağıdaki komutu çalıştırarak 4 hizmetin tamamını oluşturun:

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

Bu komut, 4 hizmetin tamamı için Google Cloud'da (gcp) geliştirme derlemesinin (non_prod) local örneğini oluşturur. Gerekirse --platform işaretini tercih ettiğiniz bulut sağlayıcıya göre güncelleyin. Derleme işaretleri hakkında daha fazla bilgi edinmek için build_and_test_all_docker dosyasını inceleyin.

64 çekirdekli bir makine kullanılıyorsa ilk derleme 2 saat sürebilir ve derleme süresi, çekirdek sayısına göre doğrusal olarak artar. 32 çekirdekli bir makinede bu işlem 4 saat sürebilir. 16 çekirdekli bir makine kullanıyorsanız bu işlem 8 saat sürebilir.

Sonraki derlemelerde önbelleğin kullanıldığını ve her derlemenin yaklaşık 5-20 dakika sürdüğünü unutmayın.

İlgili xkcd çizgi romanı:

Ofiste tembellik eden iki programcı. Bir yönetici, çalışanlara işe geri dönmelerini söylüyor. Çalışanlar, kodun derlendiğini söylüyor ve yönetici bunu kabul ediyor. Bu çizgi romanın yazarı, tembellik için en geçerli bahananın bu olduğunu düşünüyor. Derleme çalışırken tembellik eden iki programcı.

(Bu codelab'i yazarken xkcd'den Randall Munroe ile tanıştım ve bu çizgi romanı buraya eklediğimi söyledim)

3.3 Hizmetleri çalıştırma

Testimizde 8 hizmet (yığın başına 4 hizmet) çalıştıracağız. Her komut, Yerel Test Uygulaması tarafından sağlanan kaynakları kullanacak şekilde ayarlanır. tmux gibi bir pencere yöneticisi kullanmanız önemle tavsiye edilir.

En az 8 terminal penceresi daha açın ve her oturumda aşağıdaki komutları çalıştırın.

Teklif verme ve puanlama komut dosyaları uygulama tarafından sunulacağından, yerel test uygulaması sunucusunun ayrı bir süreçte çalışıyor olması gerektiğini unutmayın.

3.3.1 A komutlarını ayarlama

Hizmet

Komut

DSP-X Bidding Hizmeti

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

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 Auction Hizmeti

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 SFE Service

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 Set B komutları

Hizmet

Komut

DSP-Y Bidding Hizmeti

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

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 Auction Hizmeti

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 SFE Service

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 Yerel başlangıç komut dosyaları için ortam değişkenleri

Başlatma davranışını kontrol etmek için aşağıdaki ortam değişkenleri kullanılabilir.

Ortam değişkeni

Kullanılabilirlik

Açıklama

DOCKER_RUN_ARGS_STRING

Tüm hizmetler

Docker komutu için ayarlanacak işaretler

SKIP_TLS_VERIFICATION

Tüm hizmetler

Yerel makinenizde test yaparken curl'nın SSL eş doğrulama kontrolünde başarısız olan kendinden imzalı bir sertifika kullanmanız gerekebilir. Bu işaret, SSL ana makine adı kontrolüyle birlikte eş doğrulamasını devre dışı bırakır.

Varsayılan olarak false değerine ayarlanır.

PS_VERBOSITY

Tüm hizmetler

Hizmet günlüklerinin düzeyi. Daha yüksek seviye daha fazla günlük sağlar. 0 en düşük, 10 en yüksek değerdir. Varsayılan olarak 10 değerine ayarlanır.

BIDDING_PORT

Bidding Hizmeti

Bidding Hizmeti'nin bağlantı noktası. Varsayılan olarak 50057 değerine ayarlanır.

BIDDING_JS_URL

Bidding Hizmeti

Teklif verme mantığının URL'si

EGRESS_SCHEMA_URL

Bidding Hizmeti

Model eğitimi için veri çıkışı

INFERENCE_ARGS

Bidding Hizmeti

Teklif çıkarımı ile ilgili argümanlar

BFE_PORT

BFE Hizmeti

BFE hizmetinin bağlantı noktası. Varsayılan olarak 50051 değerine ayarlanır.

BUYER_KV_SERVER_ADDR

BFE Hizmeti

Alıcının BYOS K/V adresi

BUYER_TKV_V2_SERVER_ADDR

BFE Hizmeti

Alıcının TEE K/V adresi

BIDDING_SERVER_ADDR

BFE Hizmeti

Alıcının Bidding Hizmeti adresi

AUCTION_PORT

Auction Hizmeti

Auction Hizmeti'nin bağlantı noktası. Varsayılan olarak 50061 değerine ayarlanır.

AUCTION_JS_URL

Auction Hizmeti

Puanlama mantığının URL'si

BUYER_REPORT_WIN_URL

Auction Hizmeti

Alıcının kazandığı raporlama URL'si

BUYER_REPORT_WIN_SCRIPT

Auction Hizmeti

Alıcının kazandığı raporlama komut dosyası

BUYER_PAS_REPORT_WIN_SCRIPT

Auction Hizmeti

PAS için alıcının kazandığı raporlama komut dosyası

SFE_PORT

SFE Hizmeti

SFE Hizmeti'nin bağlantı noktası. Varsayılan olarak 50053 değerine ayarlanır.

AUCTION_SERVER_ADDR

SFE Hizmeti

Satıcının Auction Service adresi

KEY_VALUE_SIGNALS_ADDR

SFE Hizmeti

Satıcının BYOS K/V adresi

TRUSTED_KEY_VALUE_V2_SIGNALS_ADDR

SFE Hizmeti

Satıcının TEE K/V adresi

SELLER_ORIGIN_DOMAIN

SFE Hizmeti

Satıcının menşei

BUYER_SERVER_ADDRS_JSON

SFE Hizmeti

Alıcının BFE adresleri

4. Komut satırından güvenli çağırma ile test etme

4.1 SFE testi

Hizmetleri doğrudan komut satırından çağırmak için B&A Services paketinde yer alan Secure Invoke aracını da kullanabilirsiniz.

4.1.2 SFE SelectAd yükü

Aşağıdaki JSON isteği, SSP-BA'nın tek satıcılı B&A açık artırma kurulumuyla doldurulmuştur:

{
  "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]"
          }
        ]
      }
    }
  }
}

Dosyayı, Set A'nın B&A Services deposunun kök klasörüne sfe-test.json olarak kaydedin(B&A derleme komut dosyası, deponun kök klasöründeki dosyaları Docker görüntüsünün /src/workspace klasörüne kopyalar).

4.1.2 Secure Invoke ile SFE'yi çağırma

Aşağıdaki komutu B&A Services deposunun kök klasöründen çalıştırın:

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

Öncesi/Sonrası grupları doğru şekilde ayarlanmışsa aşağıdaki başarılı yanıtı alırsınız:

{"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 testi

4.2.1 BFE GetBids isteği

{
  "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"
}

Dosyayı B&A Services deposunun kök klasörüne bfe-test.json olarak kaydedin.

4.2.2 Secure Invoke ile BFE'yi çağırma

Aşağıdaki komutu B&A Services deposunun kök klasöründen çalıştırın:

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 yığınları doğru şekilde ayarlanmışsa BFE aşağıdaki yanıtı döndürür:

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

4.3 SFE günlüklerini kontrol edin

Terminali ziyaret edin ve SFE günlüklerini kontrol edin. Çıktıdaki önemli günlüklerden bazılarını inceleyeceğiz.

4.3.1 SelectAd isteğinin şifrelenmiş yükü

Bu SFE günlük çıktısında, navigator.getInterestGroupAdAuctionData() çağrısının şifrelenmiş yükünü görüyoruz. Bu yük, tarayıcı tarafından oluşturulur, etiketten SAS'a gönderilir ve ardından SAS tarafından SFE'ye iletilir:

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 Şifresi çözülmüş yük

Bu çıktıda, navigator.getInterestGroupAdAuctionData() çağrısının şifresi çözülmüş yükünü görüyoruz:

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'ye istek

GetBids isteği SFE'den BFE'ye gönderilir:

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 BFE'den GetBids yanıtı

BFE, teklifle yanıt verir:

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 Açık artırma hizmetine ScoreAds isteği

Teklifler alındıktan sonra, her teklif için SFE tarafından Açık Artırma Hizmeti'ne ScoreAds çağrısı yapılır:

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'ten yanıt

Satıcının açık artırma hizmeti, uygunluk puanıyla yanıt verir:

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 SFE'den SelectAd yanıtı

SFE'nin SelectAd yanıtı şifrelenir ve SAS'ye gönderilir:

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. Tarayıcıdan yerel test uygulamasıyla test etme

5.1 Chrome'u açma

Chrome'u komut satırından başlatma ile ilgili Chromium makalesini okuyun ve Chrome'u aşağıdaki işaretlerle başlatın:

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

İşaret, https://storage.googleapis.com/ba-test-buyer/coordinator-test-key.json adresinde barındırdığımız sahte koordinatör anahtarını yükleyecek şekilde ayarlanır.

Önemli: Komut satırından B&A işaretleriyle açmadan önce tüm Chrome örneklerinden tamamen çıktığınızdan emin olun. Tüm Chrome işlemlerinden çıkmak için komut satırından ps aux | grep -ie chrome/chrome | awk '{print $2}' | xargs kill -9 komutunu çalıştırmayı deneyin.

5.2 Yerel Test Uygulaması kullanıcı arayüzünü ziyaret etme

Uygulama kullanıcı arayüzünü, işaretlerle açtığınız Chrome tarayıcı örneğinde http://localhost:3000 adresinde bulabilirsiniz. Farklı bir ana makine adı içeren bir sanal makine kullanıyorsanız ziyaret ettiğiniz adres tam olarak aynı olmayabilir.

Tarayıcıda ziyaret edilen yerel test uygulamasının ekran görüntüsü Tarayıcıda ziyaret edilen yerel test uygulamasının ekran görüntüsü

Uygulamanın üst satırındaki "Denetimler" panelinde, farklı açık artırma yapılandırmalarını simüle etmeye yarayan düğmeler bulunur. Diğer iki panelde reklamveren ve yayıncı sitelerinden iFrame'ler bulunur.

Chrome Geliştirici Araçları&#39;ndaki ilgi alanları gruplarının ekran görüntüsü. Chrome Geliştirici Araçları'ndaki ilgi alanları gruplarının ekran görüntüsü.

Ardından, çeşitli açık artırma türlerini simüle etmek için "Kontroller" panelindeki düğmeleri tıklayın.

B&A&#39;dan bir tarayıcıda oluşturulan reklam.

B&A Hizmetleri ve Yerel Test Uygulaması doğru şekilde ayarlanmışsa yukarıdaki reklam "Yayıncı sitesi iframe" panelinde oluşturulur.

5.3 Yerel Test Uygulaması açık artırma yapılandırması

Yerel test yardımcı uygulamasında, bağlantı noktası numarasına göre farklılaştırılmış aşağıdaki katılımcılar barındırılır (farklı bir bağlantı noktası, kaynaklar arası olarak kabul edilir):

Katılımcı

Açıklama

Bağlantı noktası

Reklamveren

Sayfadaki TTP etiketlerini yükler.

4001

Yayıncı

Sayfadaki SSP etiketlerini yükler.

4002

DSP-A

Cihaz üzerinde satın alan kullanıcı

5001

DSP-B

Cihaz üzerinde satın alan kullanıcı

5002

DSP-X

B&A alıcısı

5003

DSP-Y

B&A alıcısı

5004

SSP-TOP

Üst düzey satıcı

6001

SSP-OD

Yalnızca cihaz üzerinde satıcı

6002

SSP-BA

Yalnızca marka ve reklam satıcısı

6003

SSP-MIX

Karma mod satıcı

6004

Dört TTP vardır:

  • DSP-A ve DSP-B, cihaz üzerinde açık artırmalara katılır.
  • DSP-X ve DSP-Y, B&A açık artırmalarına katılır.

Dört SSP vardır ve her satıcı farklı bir açık artırma yapılandırması yürütür:

  • SSP-OD yalnızca cihaz üzerinde bir açık artırma düzenler.
  • SSP-BA, yalnızca marka ve reklamveren açık artırması düzenliyor
  • SSP-MIX karma modda bir açık artırma düzenliyor
  • SSP-TOP çok satıcılı bir açık artırma düzenler
    • SSP-OD/BA/MIX, SSP-TOP'nın çok satıcılı açık artırmasına bileşen satıcı olarak katılabilir.

Mimariyle ilgili tüm bilgiler için tasarım şemasına bakın.

5.4 Teklif ve Açık Artırma Hizmetleri yapılandırması

Bu codelab'de, iki farklı karşılaştırma grubu yan yana çalıştırılır.

Ayarlandı

Hizmet

Katılımcı

ba-dev ağ adresi

A kümesi

Bidding Hizmeti

DSP-X

192.168.84.101:50057

BFE Hizmeti

DSP-X

192.168.84.102:50051

Auction Hizmeti

SSP-BA

192.168.84.103:50061

SFE Hizmeti

SSP-BA

192.168.84.104:50053

B Grubu

Bidding Hizmeti

DSP-Y

192.168.84.201:50057

BFE Hizmeti

DSP-Y

192.168.84.202:50051

Auction Hizmeti

SSP-MIX

192.168.84.203:50061

SFE Hizmeti

SSP-MIX

192.168.84.204:50053

Uygulama

Yerel Test Uygulaması

Tümü

https://192.168.84.100:PORT

  • A kümesinde, alıcı hizmetleri DSP-X tarafından, satıcı hizmetleri ise SSP-BA tarafından kullanılır.
  • B grubunda, alıcı hizmetleri DSP-Y tarafından, satıcı hizmetleri ise SSP-MIX tarafından kullanılır.

Yerel Test Uygulaması ile B&A Hizmetleri arasındaki iletişim için Docker köprü ağı kullanılır. ba-dev köprü ağı, Yerel Test Uygulaması'nın kurulum komut dosyası tarafından oluşturulur. B&A hizmetlerine, 192.168.84.0 alt ağında bir IP adresi atanır.

Örneğin, uygulamadan A Seti'nin SFE'sini aradığınızda 192.168.84.104:50053 ağ adresi kullanılır. Sahte teklif verme komut dosyasını DSP-X'ten BFE'ye yüklerken https://192.168.84.100:5003/generate-bid.js kullanılır.

6. Özet

Bu noktada, B&A Services yığınını makinenizde yerel olarak çalıştırma konusunda bilgi sahibi olduğunuzu ve hizmetlerin birbirleriyle nasıl iletişim kurduğu konusunda daha iyi bir anlayış kazandığınızı umuyoruz.

6.1. Teknik destek

6.2 Daha fazla bilgi