B&A für das Web lokal End-to-End testen

1. Einführung

Gebots- und Auktionsdienste umfassen vier Dienste für Käufer und Verkäufer, die eine Protected Audience-Auktion ermöglichen:

Käufer-Stack:

  • Käufer-Front-End-Dienst
  • Gebotsdienst

Verkäufer-Stack:

  • Verkäufer-Frontend-Dienst
  • Auktionsdienst

In diesem Codelab erfahren Sie, wie Sie die End-to-End-Einrichtung in Ihrer lokalen Umgebung einrichten und testen. Die Schritt-für-Schritt-Anleitung dauert voraussichtlich etwa eine Stunde, ohne die Zeit für die Ersteinrichtung des Dienstes.

Auch wenn Sie nur an Code für die Käufer- oder Verkäuferseite arbeiten, ist es hilfreich, den End-to-End-Flow in Ihrer lokalen Umgebung einzurichten, um besser zu verstehen, wie die Käufer- und Verkäufer-Stacks miteinander funktionieren. Wenn Sie beide Stacks einrichten, können Sie später sicherer sein, wenn Sie den jeweiligen Käufer- oder Verkäufer-Stack einer anderen Partei einbinden. Wenn Sie die Dienste lokal testen, sparen Sie auch Entwicklungskosten.

In diesem Codelab verwenden wir die B&A Local Testing App als Leitfaden.

Die zugehörige App für lokale Tests beherbergt verschiedene Ressourcen für Käufer und Verkäufer, die in einer B&A-Auktion verwendet werden. Die App bietet auch eine Benutzeroberfläche unter http://localhost:3000, auf der Sie verschiedene Auktionskonfigurationen simulieren können.

2. Umgebung einrichten

2.1 Linux-Computer vorbereiten

Verwenden Sie einen lokalen Linux-Computer oder stellen Sie eine Linux-VM des Cloud-Anbieters Ihrer Wahl bereit. Um die Buildzeit zu verkürzen, werden mindestens 16 Kerne empfohlen. 32 Kerne oder mehr sind vorzuziehen.

Wir laden eine HTML-Seite von http://localhost:3000 dieses Computers. Wenn die VM keine Benutzeroberfläche bietet, prüfen Sie, ob auf Port 3000 von Ihrem lokalen Computer aus zugegriffen werden kann, damit Sie eine Verbindung herstellen können.

2.2 Docker installieren

Wir verwenden Docker, um die Dienste und die lokale Testanwendung auszuführen.

Wir verwenden das Praktikumsskript, um Docker in einer Testumgebung zu installieren.

# 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

Warnung: Bei der Einrichtung ohne sudo gewährt die Docker-Gruppe dem Nutzer Berechtigungen auf Root-Ebene. Weitere Informationen finden Sie im Leitfaden für Docker ohne sudo.

2.3 Begleitende App für lokale Tests starten

Die App bietet Ressourcen wie Mock-Gebots-/Bewertungsscripts und Mock-K/V-BYOS-Endpunkte. Die App sollte gestartet werden, bevor die B&A-Dienste ausgeführt werden, damit die Ressourcen in die Dienste geladen werden können.

Ziehen Sie das Repository der App für lokale Tests herunter:

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

Führen Sie im Stammverzeichnis des Repositorys das Setup-Script aus:

./setup

Das Einrichtungsskript erstellt das ba-dev-Docker-Netzwerk, generiert SSL-Zertifikate und erstellt das Image der Test-App.

Führen Sie nach Abschluss des Builds das Startscript aus:

./start

3. B&A lokal erstellen und ausführen

3.1 B&A-Dienste aufrufen

Wir werden zwei B&A-Dienste auf demselben Computer ausführen. Daher laden wir das Repository in zwei verschiedene Ordner herunter.

Set A:

Ziehen Sie das B&A-Repository herunter:

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

Set B

Ziehen Sie das B&A-Repository herunter:

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

3.2 Dienste erstellen

Führen Sie im Stammverzeichnis jedes B&A-Ordners den folgenden Befehl aus, um alle vier Dienste zu erstellen:

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

Mit dem obigen Befehl wird eine local-Instanz des Entwicklungsbuilds (non_prod) für die Google Cloud Platform (gcp) aller vier Dienste erstellt. Aktualisieren Sie bei Bedarf das --platform-Flag auf den Cloud-Anbieter Ihrer Wahl. Weitere Informationen zu den Build-Flags finden Sie in der build_and_test_all_docker-Datei.

Bei einem 64-Kern-Rechner kann der erste Build zwei Stunden dauern. Die Buildzeit skaliert linear mit der Kernanzahl. Auf einem 32-Kern-Rechner kann es vier Stunden dauern. Bei einem Computer mit 16 Kernen kann es acht Stunden dauern.

Für nachfolgende Builds wird der Cache verwendet. Jeder Build sollte etwa 5 bis 20 Minuten dauern.

Relevantes xkcd-Comic:

Zwei Programmierer faulenzen im Büro, woraufhin der Manager sie auffordert, wieder an die Arbeit zu gehen. Die Mitarbeiter sagen, dass der Code gerade kompiliert wird, und der Manager ist damit einverstanden. Der Autor dieses Comics hält dies für die Nummer-eins-Ausrede, um faul zu sein.

(Ich habe Randall Munroe von xkcd beim Schreiben dieses Codelabs getroffen und ihm gesagt, dass ich dieses Comic hier hinzugefügt habe.)

3.3 Dienste ausführen

Für unsere Tests führen wir acht Dienste aus (vier Dienste pro Stack). Jeder Befehl ist so eingerichtet, dass die von der App für lokale Tests bereitgestellten Ressourcen verwendet werden. Wir empfehlen dringend, einen Fenstermanager wie tmux zu verwenden.

Öffnen Sie mindestens acht weitere Terminalfenster und führen Sie in jeder Sitzung die folgenden Befehle aus.

Der Server der App für lokale Tests muss bereits in einem separaten Prozess ausgeführt werden, da die Gebote und Bewertungsscripts von der App bereitgestellt werden.

3.3.1 Set-A-Befehle

Dienst

Befehl

DSP-X Gebotsservice

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

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 Auktionsdienst

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

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 Befehle für Satz B

Dienst

Befehl

DSP-X Gebotsservice

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

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 Auktionsdienst

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

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 Umgebungsvariablen für die lokalen Startscripts

Mit den folgenden Umgebungsvariablen können Sie das Startverhalten steuern.

Umgebungsvariable

Verfügbarkeit

Beschreibung

DOCKER_RUN_ARGS_STRING

Alle Dienste

Flags für den docker-Befehl

SKIP_TLS_VERIFICATION

Alle Dienste

Wenn Sie auf Ihrem lokalen Computer testen, müssen Sie möglicherweise ein selbst signiertes Zertifikat verwenden, das die SSL-Peer-Überprüfung von curl nicht besteht. Das Flag deaktiviert die Peer-Überprüfung und die SSL-Hostnamenprüfung.

Die Standardeinstellung ist false.

PS_VERBOSITY

Alle Dienste

Die Ebene der Serviceprotokolle. Je höher die Stufe, desto mehr Protokolle werden erfasst. 0 ist der niedrigste und 10 der höchste Wert. Die Standardeinstellung ist 10.

BIDDING_PORT

Gebotsdienst

Der Port des Gebotsdienstes. Standardeinstellung: 50057

BIDDING_JS_URL

Gebotsdienst

URL der Gebotslogik

EGRESS_SCHEMA_URL

Gebotsdienst

Daten-Export für das Modelltraining

INFERENCE_ARGS

Gebotsdienst

Argumente für die Gebotsableitung

BFE_PORT

BFE-Dienst

Port des BFE-Dienstes. Standardeinstellung: 50051

BUYER_KV_SERVER_ADDR

BFE-Dienst

K/V-Adresse des Käufers für die Bring-Your-Own-Speicherlösung

BUYER_TKV_V2_SERVER_ADDR

BFE-Dienst

TEE-K/V-Adresse des Käufers

BIDDING_SERVER_ADDR

BFE-Dienst

Adresse des Gebotsdienstes des Käufers

AUCTION_PORT

Auktionsdienst

Der Port des Auktionsdiensts. Standardeinstellung: 50061

AUCTION_JS_URL

Auktionsdienst

URL der Bewertungslogik

BUYER_REPORT_WIN_URL

Auktionsdienst

URL für den Bericht zum Gewinn des Käufers

BUYER_REPORT_WIN_SCRIPT

Auktionsdienst

Script für den Bericht zum Gewinn des Käufers

BUYER_PAS_REPORT_WIN_SCRIPT

Auktionsdienst

Script für Berichte zu gewonnenen Geboten für PAS

SFE_PORT

SFE-Dienst

Port des SFE-Dienstes. Standardeinstellung: 50053

AUCTION_SERVER_ADDR

SFE-Dienst

Adresse des Auktionsdienstes des Verkäufers

KEY_VALUE_SIGNALS_ADDR

SFE-Dienst

K/V-Adresse des Verkäufers für Bring-Your-Own-Speicher

TRUSTED_KEY_VALUE_V2_SIGNALS_ADDR

SFE-Dienst

TEE-K/V-Adresse des Verkäufers

SELLER_ORIGIN_DOMAIN

SFE-Dienst

Herkunft des Verkäufers

BUYER_SERVER_ADDRS_JSON

SFE-Dienst

BFE-Adressen des Käufers

4. Über die Befehlszeile mit Secure Invoke testen

4.1 SFE-Tests

Sie können auch das Tool Secure Invoke verwenden, das im B&A Services-Paket enthalten ist, um die Dienste direkt über die Befehlszeile aufzurufen.

4.1.2 SFE-SelectAd-Nutzlast

Die folgende JSON-Anfrage wurde mit der B&A-Auktionseinrichtung für Einzelverkäufer von SSP-BA ausgefüllt:

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

Speichern Sie die Datei als sfe-test.json im Stammverzeichnis des B&A Services-Repositorys von Set A. Das B&A-Build-Script kopiert die Dateien im Stammverzeichnis des Repositorys in den Ordner /src/workspace des Docker-Images.

4.1.2 SFE mit Secure Invoke aufrufen

Führen Sie den folgenden Befehl im Stammverzeichnis des B&A Services-Repositorys aus:

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

Wenn die B/A-Stacks richtig eingerichtet sind, erhalten Sie die folgende Erfolgsmeldung:

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

4.2.1 BFE-GetBids-Anfrage

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

Speichern Sie die Datei als bfe-test.json im Stammverzeichnis des B&A Services-Repositorys.

4.2.2 BFE mit Secure Invoke aufrufen

Führen Sie den folgenden Befehl im Stammverzeichnis des B&A Services-Repositorys aus:

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

Wenn die B/A-Stacks richtig eingerichtet sind, gibt BFE die folgende Antwort zurück:

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

4.3 SFE-Logs prüfen

Rufen Sie das Terminal auf und prüfen Sie die SFE-Protokolle. Wir sehen uns einige der wichtigsten Protokolle in der Ausgabe an.

4.3.1 Verschlüsselte Nutzlast der SelectAd-Anfrage

In dieser SFE-Logausgabe sehen wir die verschlüsselte Nutzlast des navigator.getInterestGroupAdAuctionData()-Aufrufs. Diese Nutzlast wird vom Browser generiert, vom Tag an SAS gesendet und von SAS an die SFE weitergeleitet:

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 Entschlüsselte Nutzlast

In dieser Ausgabe sehen wir die entschlüsselte Nutzlast des navigator.getInterestGroupAdAuctionData()-Aufrufs:

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-Anfrage an BFE

Die GetBids-Anfrage wird von SFE an BFE gesendet:

I1210 21:20:47.267710      37 select_ad_reactor.cc:751]  (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252) Getting bid from a BFE
I1210 21:20:47.267729      37 buyer_frontend_async_client.cc:52] Raw request:
buyer_input {
  interest_groups {
    name: "dsp-x-demo"
    bidding_signals_keys: "demo-key"
    browser_signals {
      join_count: 1
      recency: 7
      prev_wins: "[]"
    }
  }
}
auction_signals: "{\"testKey\":\"someValue\"}"
buyer_signals: "{\"testKey\": \"someValue\"}"
seller: "https://localhost:6002"
publisher_name: "localhost"
enable_debug_reporting: true
log_context {
  generation_id: "c2824bfc-d515-4a1a-9de9-7660ad963252"
}
client_type: CLIENT_TYPE_BROWSER

4.3.4 GetBids-Antwort von BFE

BFE antwortet mit dem Gebot:

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-Anfrage an den Auktionsdienst

Nachdem die Gebote eingegangen sind, sendet SFE für jedes Gebot den ScoreAds-Aufruf an den Auktionsdienst:

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-Antwort vom Auktionsdienst

Der Auktionsdienst des Verkäufers antwortet mit dem Attraktivitätsfaktor:

I1210 21:20:47.298029      33 default_async_grpc_client.h:134] Decrypting the response ...
I1210 21:20:47.298100      33 default_async_grpc_client.h:152] Decryption/decoding of response succeeded: ad_score {
  desirability: 9
  render: "https://localhost:5003/ad.html"
  interest_group_name: "dsp-x-demo"
  buyer_bid: 9
  interest_group_owner: "https://localhost:5003"
  win_reporting_urls {
    top_level_seller_reporting_urls {
    }
  }
  ad_type: AD_TYPE_PROTECTED_AUDIENCE_AD
}

4.3.7 SelectAd Antwort von SFE

Die SelectAd-Antwort der SFE wird verschlüsselt und an SAS gesendet:

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. Mit der lokalen Test-App im Browser testen

5.1 Chrome öffnen

Lesen Sie den Chromium-Artikel zum Starten von Chrome über die Befehlszeile und starten Sie Chrome mit den folgenden Flags:

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 

Das Flag ist so festgelegt, dass der Mock-Koordinatorschlüssel geladen wird, den wir unter https://storage.googleapis.com/ba-test-buyer/coordinator-test-key.json gehostet haben.

Wichtig: Schließen Sie alle Chrome-Instanzen vollständig, bevor Sie Chrome über die Befehlszeile mit den B&A-Flags öffnen. Wenn Sie alle Chrome-Prozesse beenden möchten, führen Sie ps aux | grep -ie chrome/chrome | awk '{print $2}' | xargs kill -9 über die Befehlszeile aus.

5.2 UI der App für lokale Tests aufrufen

Die App-Benutzeroberfläche finden Sie unter http://localhost:3000 in der Chrome-Browserinstanz, die Sie mit den Flags geöffnet haben. Die genaue Adresse, die Sie aufrufen, kann sich unterscheiden, wenn Sie eine VM mit einem anderen Hostnamen verwenden.

Screenshot der lokalen Test-App, die in einem Browser aufgerufen wird

In der obersten Zeile der App finden Sie im Bereich „Steuerelemente“ die Schaltflächen zum Simulieren verschiedener Auktionskonfigurationen. Die anderen beiden Bereiche enthalten Iframes von den Websites des Werbetreibenden und des Publishers.

Wenn Sie im IFrame der Werbetreibendenseite auf die Schaltfläche „DSP-Tags laden“ klicken, wird der Seite ein Script von jeder DSP hinzugefügt. Über diese Skripte werden Nutzer Interessengruppen hinzugefügt. Öffnen Sie die Chrome-Entwicklertools und rufen Sie „Anwendung / Speicher / Interessengruppen“ auf, um die Interessengruppen zu prüfen, die über die DSP-Tags zusammengeführt wurden:

Screenshot von Interessengruppen in den Chrome-Entwicklertools

Klicken Sie dann auf die Schaltflächen im Bereich „Einstellungen“, um verschiedene Auktionstypen zu simulieren.

Eine Anzeige, die in einem Browser von B&A gerendert wird

Wenn die B&A-Dienste und die App für lokale Tests richtig eingerichtet sind, wird die vorherige Anzeige im Bereich „Iframe der Publisher-Website“ gerendert.

5.3 Auktionskonfiguration für lokale App-Tests

In der zugehörigen App für lokale Tests werden die folgenden Teilnehmer gehostet, die sich anhand der Portnummer unterscheiden (ein anderer Port gilt als plattformübergreifend):

Teilnehmer

Beschreibung

Port

Advertiser

DSP-Tags auf der Seite laden

4001

Publisher

Laden von SSP-Tags auf der Seite

4002

DSP-A

Käufer auf dem Gerät

5001

DSP-B

Käufer auf dem Gerät

5002

DSP-X

B&A-Käufer

5003

DSP-Y

B&A-Käufer

5004

SSP-TOP

Verkäufer der obersten Ebene

6001

SSP-OD

Verkäufer, der nur auf Geräten verfügbar ist

6002

SSP-BA

Verkäufer, der nur B&A-Artikel anbietet

6003

SSP-MIX

Verkäufer mit gemischten Verkehrsmitteln

6004

Es gibt vier DSPs:

  • DSP-A und DSP-B nehmen an On-Device-Auktionen teil
  • DSP-X und DSP-Y nehmen an B&A-Auktionen teil

Es gibt vier SSPs und jeder Verkäufer verwendet eine andere Auktionskonfiguration:

  • SSP-OD führt eine Auktion nur auf dem Gerät durch
  • SSP-BA führt eine Auktion nur für Gebote und Anzeigen durch
  • SSP-MIX eine Auktion im gemischten Modus ausführt
  • SSP-TOP führt eine Mehrfachkunden-Auktion durch
    • SSP-OD/BA/MIX als Komponentenverkäufer an der Mehrfachkunden-Auktion von SSP-TOP teilnehmen

Die vollständige Architektur finden Sie im Designdiagramm.

5.4 Konfiguration von Gebots- und Auktionsdiensten

In diesem Codelab führen wir zwei Vergleichsgruppen parallel aus.

Fertig

Dienst

Teilnehmer

ba-dev-Netzwerkadresse

Set A

Gebotsdienst

DSP-X

192.168.84.101:50057

BFE-Dienst

DSP-X

192.168.84.102:50051

Auktionsdienst

SSP-BA

192.168.84.103:50061

SFE-Dienst

SSP-BA

192.168.84.104:50053

Set B

Gebotsdienst

DSP-Y

192.168.84.201:50057

BFE-Dienst

DSP-Y

192.168.84.202:50051

Auktionsdienst

SSP-MIX

192.168.84.203:50061

SFE-Dienst

SSP-MIX

192.168.84.204:50053

App

App für lokale Tests

Alle

https://192.168.84.100:PORT

  • In Set A werden die Käuferdienste von DSP-X und die Verkäuferdienste von SSP-BA verwendet.
  • In Set B werden die Käuferdienste von DSP-Y und die Verkäuferdienste von SSP-MIX verwendet.

Für die Kommunikation zwischen der lokalen Test-App und B&A-Diensten wird ein Docker-Bridge-Netzwerk verwendet. Das ba-dev-Bridge-Netzwerk wird vom Einrichtungsskript der lokalen Test-App erstellt. Den B&A-Diensten wird eine IP-Adresse im Subnetz von 192.168.84.0 zugewiesen.

Wenn Sie beispielsweise die SFE von Set A über die Anwendung aufrufen, wird die Netzwerkadresse 192.168.84.104:50053 verwendet. Wenn Sie das Mock-Bidding-Script aus DSP-X in BFE laden, wird https://192.168.84.100:5003/generate-bid.js verwendet.

6. Zusammenfassung

Wir hoffen, dass Sie sich inzwischen mit der lokalen Ausführung des B&A Services-Stacks auf Ihrem Computer vertraut gemacht und ein besseres Verständnis dafür entwickelt haben, wie die Dienste miteinander kommunizieren.

6.1. Technischer Support

6.2 Weitere Informationen