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

1. Giriş

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

Alıcı grubu:

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

Satıcı grubu:

  • Satıcı Kullanıcı Arayüzü Hizmeti
  • Auction Hizmeti

Bu kod laboratuvarı, uçtan uca kurulumu yerel ortamınızda ayarlama ve test etme konusunda size yol gösterir. İlk hizmet oluşturma süresi hariç, açıklamalı kılavuzun yaklaşık 1 saat sürmesi beklenir.

Yalnızca alıcı tarafı kodu veya satıcı tarafı kodu üzerinde çalışsanız bile, alıcı ve satıcı paketlerinin birbirleriyle nasıl çalıştığını daha iyi anlamak için uçtan uca akışı yerel ortamınızda ayarlamak yararlıdır. Her iki paketi de ayarlayarak daha sonra başka bir tarafın ilgili alıcı veya satıcı paketiyle entegrasyon yaparken daha emin olabilirsiniz. Hizmetleri yerel olarak test etmek, geliştirme maliyetinizi de düşürür.

Bu codelab'de, açıklamalı kılavuz olarak B&A Yerel Test Uygulaması'nı kullanacağız.

Ek yerel test uygulaması, 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 makinesi hazırlama

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

Bu makinenin http://localhost:3000 adresinden bir HTML sayfası yükleyeceğimizi unutmayın. Sanal makine bir GUI sağlamıyorsa yerel makinenize bağlanabilmek için 3000 bağlantı noktasına erişebildiğ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ı: sudosuz kurulumda Docker grubu kullanıcıya kök düzeyinde ayrıcalıklar verir. Daha fazla bilgi edinmek için sudo kullanmadan Docker kullanma kılavuzunu okuyun.

2.3 Yerel test tamamlayıcı uygulamasını başlatma

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

Yerel Test Uygulaması deposu'nu aşağı ç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ı oluşturur ve test uygulaması görüntüsünü oluşturur.

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

./start

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

3.1 B&A Hizmetleri'ni indirin

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

A grubu:

B&A deposunu indirin:

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

B grubu

B&A deposunu indirin:

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

3.2 Hizmetleri oluşturma

Her B&A klasörünün kök klasöründen 4 hizmetin tümünü derlemek için aşağıdaki komutu çalıştırın:

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

Yukarıdaki komut, 4 hizmetin tamamı için Google Cloud Platform (gcp) geliştirme derlemesinin (non_prod) bir local örneğini oluşturur. Gerekirse --platform işaretini tercih ettiğiniz bulut sağlayıcıyla 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 ölçeklenir. 32 çekirdekli bir makine kullanıyorsanız 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üreceğini unutmayın.

İlgili xkcd çizgi romanı:

Ofiste tembellik yapan iki programcıyı gösterir. Bu durum yöneticinin onlara işe geri dönmelerini söylemesine neden olur. Çalışanlar, kodun derlendiğini söyler ve yönetici bu duruma karşı çıkar. Bu çizgi romanın yazarı, tembellik yapmak için birincil geçerli mazeretin bu olduğunu düşünür.

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

3.3 Hizmetleri çalıştırma

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

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

Teklif verme ve puanlama komut dosyaları uygulama tarafından yayınlanacağından, yerel test uygulaması sunucusunun zaten ayrı bir işlemde çalışıyor olması gerektiğini unutmayın.

3.3.1 A komutları ayarlama

Hizmet

Komut

DSP-X Teklif Verme 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 Hizmeti

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 Açık Artırma 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 Hizmeti

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 B komutlarını ayarlama

Hizmet

Komut

DSP-X Teklif Verme 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-X BFE Hizmeti

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 Açık Artırma 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 Hizmeti

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şlatma komut dosyaları için çevre değişkenleri

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

Env var

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 SSL eş doğrulama kontrolünde başarısız olan kendinden imzalı bir sertifika kullanmanız gerekebilir. İşaretçi, SSL ana makine adı kontrolünün yanı sıra eş doğrulamayı da 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 kademeyi temsil eder. Varsayılan olarak 10 değerine ayarlanır.

BIDDING_PORT

Bidding Hizmeti

Teklif Verme 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ıyla ilgili bağımsız değişkenler

BFE_PORT

BFE Hizmeti

BFE Hizmeti'nin 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

Açık Artırma 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ığı teklif 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 Hizmeti 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 Secure Invoke ile test etme

4.1 SFE testi

Hizmetleri doğrudan komut satırından çağırmak için B&A Hizmetleri paketine dahil olan Güvenli Çağırma aracını da kullanabilirsiniz.

4.1.2 SFE SelectAd yükü

Aşağıdaki JSON isteği, SSP-BA'nin tek satıcılı B&A açık artırma ayarıyla 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]"
          }
        ]
      }
    }
  }
}

A grubu B&A Hizmetleri deposunun kök klasörüne dosyayı 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 Güvenli Çağırma ile SFE'yi çağırma

B&A Services deposunun kök klasöründen aşağıdaki komutu ç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

Karşılaştırmalı analiz 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 Güvenli Çağırma ile BFE'yi çağırma

B&A Services deposunun kök klasöründen aşağıdaki komutu ç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ıda yer alan önemli günlüklerden bazılarını inceleyeceğiz.

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

Bu SFE günlük çıkışında, navigator.getInterestGroupAdAuctionData() aramasının şifrelenmiş yükü bulunur. Bu yük, tarayıcı tarafından oluşturulur, etiketten SAS'a gönderilir ve SAS bunu SFE'ye iletir:

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ü bulunur:

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 request to BFE

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 ScoreAds, Auction Hizmeti'ne istek gönderir.

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

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 Açık Artırma Hizmeti'nden ScoreAds yanıtı

Satıcının Açık Artırma Hizmeti, arzu edilirlik 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'e 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çın

Chrome'u komut satırından başlatma ile ilgili Chromium makalesini okuyun ve 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 ayarlanmıştır.

Önemli: Chrome'u B&A işaretleriyle komut satırından 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 Edin

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ına sahip bir sanal makine kullanıyorsanız ziyaret ettiğiniz tam adres farklı olabilir.

Yerel test uygulamasının tarayıcıda ziyaret edildiği ekran görüntüsü

Uygulamanın üst satırındaki "Denetimler" panelinde, farklı açık artırma yapılandırmalarını simüle etmek için düğmeler bulunur. Diğer iki panel, reklamveren ve yayıncı sitelerinden alınan iFrame'leri içerir.

Reklamveren sayfası iframe'inde "DSP etiketlerini yükle" düğmesini tıkladığınızda her DSP'den bir komut dosyası sayfaya eklenir. Bu komut dosyaları, kullanıcıyı ilgi alanı gruplarına ekler. Chrome Geliştirici Araçları'nı açın ve DSP etiketleri tarafından birleştirilen ilgi alanı gruplarını incelemek için "Uygulama / Depolama / İlgi Alanı Grupları"nı ziyaret edin:

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

Ardından, çeşitli açık artırma türlerini simüle etmek için "Denetimler" 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 önceki reklam "Yayıncı sitesi iframe'i" panelinde oluşturulur.

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

Ek yerel test uygulamasında, bağlantı noktası numarasına göre ayrılmış aşağıdaki katılımcılar barındırılır (farklı bir bağlantı noktası kaynakta çapraz olarak kabul edilir):

Katılımcı

Açıklama

Bağlantı noktası

Reklamveren

Sayfaya DSP etiketleri yükler

4001

Yayıncı

Sayfaya SSP etiketleri yükler

4002

DSP-A

Cihaz üzerinde alıcı

5001

DSP-B

Cihaz üzerinde alıcı

5002

DSP-X

B&A alıcı

5003

DSP-Y

B&A alıcı

5004

SSP-TOP

Üst düzey satıcı

6001

SSP-OD

Yalnızca cihaz üzerinde satıcı

6002

SSP-BA

Yalnızca B&A satıcısı

6003

SSP-MIX

Karma modda çalışan satıcı

6004

Dört DSP vardır:

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

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

  • SSP-OD yalnızca cihaz üzerinde açık artırma düzenler
  • SSP-BA yalnızca B&A açık artırması düzenler
  • SSP-MIX karma modlu bir açık artırma düzenler
  • SSP-TOP çok satıcılı açık artırma düzenler
    • SSP-OD/BA/MIX, SSP-TOP'un çok satıcılı açık artırmasında bileşen satıcısı olarak katılır.

Mimarinin tamamı için tasarım şemasına göz atın.

5.4 Teklif verme ve Auction Services yapılandırması

Bu codelab'de, iki adet A/B testi grubunu birlikte çalıştırıyoruz.

Hazır

Hizmet

Katılımcı

ba-dev ağ adresi

A grubu

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 grubunda 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ında iletişim kurmak için bir 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 grubu SFE'sini çağırırken 192.168.84.104:50053 ağının adresi kullanılır. DSP-X'ten BFE'ye sahte teklif verme komut dosyasını yüklerken https://192.168.84.100:5003/generate-bid.js kullanılır.

6. Son adım

Bu aşamada B&A Services paketini makinenizde yerel olarak çalıştırmayı öğrendiğinizi ve hizmetlerin birbirleriyle nasıl iletişim kurduğunu daha iyi anladığınızı umuyoruz.

6.1. Teknik destek

6.2 Daha fazla bilgi