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

1. Einführung

Gebots- und Auktionsdienste (Bidding & Auction Services, B&A) umfassen vier Dienste für Käufer und Verkäufer, um eine Protected Audience-Auktion zu ermöglichen:

Buyer Stack:

  • Buyer Front-End Service
  • Gebotsdienst

Seller Stack:

  • Seller Front-End Service
  • Auktionsdienst

In diesem Codelab erfahren Sie, wie Sie die End-to-End-Einrichtung in Ihrer lokalen Umgebung einrichten und testen. Die Anleitung dauert voraussichtlich etwa eine Stunde, ohne die anfängliche Build-Zeit des Dienstes.

Auch wenn Sie nur am Code für die Käufer- oder Verkäuferseite arbeiten, ist es hilfreich, den End-to-End-Ablauf in Ihrer lokalen Umgebung einzurichten, um besser zu verstehen, wie die Stacks für Käufer und Verkäufer zusammenarbeiten. Wenn Sie beide Stacks einrichten, können Sie später zuversichtlicher sein, wenn Sie die Integration mit dem entsprechenden Käufer- oder Verkäufer-Stack eines anderen Unternehmens vornehmen. Wenn Sie die Dienste lokal testen, sparen Sie auch Entwicklungskosten.

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

In der zugehörigen App für lokale Tests werden verschiedene Käufer- und Verkäuferressourcen gehostet, 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 Build-Zeit zu verkürzen, werden mindestens 16 Kerne empfohlen. Besser sind 32 oder mehr Kerne.

Wir laden eine HTML-Seite von http://localhost:3000 dieses Computers. Wenn die VM keine grafische Benutzeroberfläche bietet, muss der Port 3000 für Ihren lokalen Computer zugänglich sein, 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 Convenience-Script, 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 zu Docker ohne Sudo.

2.3 Companion-App für lokales Testen starten

Die Companion-App bietet Ressourcen wie Mock-Gebots- oder Scoring-Skripts und Mock-K/V-BYOS-Endpunkte. Die App sollte vor dem Ausführen der B&A-Dienste gestartet werden, damit die Ressourcen in die Dienste geladen werden können.

Rufen Sie das Repository für die lokale Test-App ab:

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

Führen Sie im Stammverzeichnis des Repositorys das Setupskript aus:

./setup

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

Wenn der Build erfolgreich war, führen Sie das Start-Skript aus:

./start

3. B&A lokal erstellen und ausführen

3.1 B&A-Dienste herunterziehen

Wir führen zwei Gruppen von B&A-Diensten auf demselben Computer aus. Daher ziehen wir das Repository in zwei verschiedene Ordner herunter.

Set A:

Laden Sie das B&A-Repository herunter:

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

Set B

Laden 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 Stammordner 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 diesem Befehl wird eine local-Instanz des Entwicklungs-Builds (non_prod) für Google Cloud (gcp) aller vier Dienste erstellt. Aktualisieren Sie bei Bedarf das Flag --platform auf den Cloud-Anbieter Ihrer Wahl. Weitere Informationen zu den Build-Flags finden Sie in der Datei build_and_test_all_docker.

Die erste Erstellung kann auf einem Computer mit 64 Kernen bis zu 2 Stunden dauern. Die Erstellungszeit skaliert linear mit der Anzahl der Kerne. Auf einem Computer mit 32 Kernen kann es bis zu 4 Stunden dauern. Wenn Sie einen Computer mit 16 Kernen verwenden, kann es bis zu 8 Stunden dauern.

Bei nachfolgenden Builds wird der Cache verwendet. Jeder Build sollte etwa 5 bis 20 Minuten dauern.

Relevanter xkcd-Comic:

Zwei Programmierer, die im Büro faulenzen. Ein Manager fordert die Arbeiter auf, weiterzuarbeiten. Die Arbeiter sagen, dass der Code kompiliert wird, und der Manager ist damit einverstanden. Der Autor dieses Comics hält das für die wichtigste legitime Entschuldigung für Faulenzen. Zwei Programmierer, die sich eine Auszeit nehmen, während ein Build ausgeführt wird.

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

3.3 Dienste ausführen

Für unsere Tests führen wir 8 Dienste aus (4 Dienste pro Stack). Jeder Befehl ist so eingerichtet, dass er die von der Local Testing App bereitgestellten Ressourcen verwendet. Es wird dringend empfohlen, 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 Gebots- und Scoring-Scripts von der App bereitgestellt werden.

3.3.1 Set A-Befehle

Dienst

Befehl

DSP-X Gebotsdienst

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

Dienst

Befehl

DSP-Y Gebotsdienst

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

Mit den folgenden Umgebungsvariablen kann das Startverhalten gesteuert werden.

Umgebungsvariable

Verfügbarkeit

Beschreibung

DOCKER_RUN_ARGS_STRING

Alle Dienste

Flags, die für den Docker-Befehl festgelegt werden müssen

SKIP_TLS_VERIFICATION

Alle Dienste

Wenn Sie auf Ihrem lokalen Computer testen, müssen Sie möglicherweise ein selbstsigniertes Zertifikat verwenden, das die SSL-Peer-Überprüfung von curl nicht besteht. Das Flag deaktiviert die Peer-Überprüfung zusammen mit der SSL-Hostnamensprüfung.

Die Standardeinstellung ist false.

PS_VERBOSITY

Alle Dienste

Die Ebene der Serviceprotokolle. Je höher die Stufe, desto mehr Logs sind verfügbar. 0 ist der niedrigste und 10 der höchste Wert. Die Standardeinstellung ist 10.

BIDDING_PORT

Gebotsdienst

Port des Gebotsdienstes. Die Standardeinstellung ist 50057.

BIDDING_JS_URL

Gebotsdienst

URL der Gebotslogik

EGRESS_SCHEMA_URL

Gebotsdienst

Daten-Egress für das Modelltraining

INFERENCE_ARGS

Gebotsdienst

Argumente für die Gebotsinferenz

BFE_PORT

BFE-Dienst

Port des BFE-Dienstes. Die Standardeinstellung ist 50051.

BUYER_KV_SERVER_ADDR

BFE-Dienst

BYOS-K/V-Adresse des Käufers

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

Port des Auktionsdienstes. Die Standardeinstellung ist 50061.

AUCTION_JS_URL

Auktionsdienst

URL der Scoring-Logik

BUYER_REPORT_WIN_URL

Auktionsdienst

URL für die Berichterstellung von Gebotsgewinnen des Käufers

BUYER_REPORT_WIN_SCRIPT

Auktionsdienst

Script für die Berichterstellung zu gewonnenen Geboten des Käufers

BUYER_PAS_REPORT_WIN_SCRIPT

Auktionsdienst

Skript für die Berichterstellung von gewonnenen Geboten des Käufers für PAS

SFE_PORT

SFE-Dienst

Port des SFE-Dienstes. Die Standardeinstellung ist 50053.

AUCTION_SERVER_ADDR

SFE-Dienst

Adresse des Auktionsdienstes des Verkäufers

KEY_VALUE_SIGNALS_ADDR

SFE-Dienst

BYOS-K/V-Adresse des Verkäufers

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. Mit Secure Invoke über die Befehlszeile 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-Paketinhalt

Die folgende JSON-Anfrage wurde mit der Einrichtung der B&A-Auktion für einen einzelnen Verkä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 Stammordner des B&A Services-Repositorys von Set A. Das B&A-Build-Skript kopiert die Dateien im Stammordner 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 Stammordner 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 Stammordner des B&A Services-Repositorys.

4.2.2 BFE mit Secure Invoke aufrufen

Führen Sie den folgenden Befehl im Stammordner 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-Logs. Wir werden uns einige der wichtigsten Logs in der Ausgabe ansehen.

4.3.1 Verschlüsselte Nutzlast der SelectAd-Anfrage

In dieser SFE-Logausgabe finden wir die verschlüsselte Nutzlast des navigator.getInterestGroupAdAuctionData()-Aufrufs. Diese Nutzlast wird vom Browser generiert, vom Tag an SAS gesendet und dann von SAS an 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 finden 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 vom 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, wird der ScoreAds-Aufruf von SFE für jedes Gebot an den Auktionsdienst gesendet:

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ätswert:

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 des 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 Benutzeroberfläche der App 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 abweichen, wenn Sie eine VM mit einem anderen Hostnamen verwenden.

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

In der oberen Zeile der App enthält das Steuerfeld „Controls“ (Steuerelemente) die Schaltflächen zum Simulieren verschiedener Auktionskonfigurationen. Die beiden anderen Bereiche enthalten iFrames von den Websites des Werbetreibenden und des Publishers.

Screenshot von Interessengruppen in den Chrome-Entwicklertools. Screenshot von Interessengruppen in den Chrome-Entwicklertools.

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

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

Wenn die B&A Services und die Local Testing App richtig eingerichtet sind, wird die oben genannte Anzeige im Bereich „Publisher site iframe“ gerendert.

5.3 Auktionskonfiguration für lokale Test-App

In der Companion-App für lokale Tests werden die folgenden Teilnehmer gehostet, die sich durch die Portnummer unterscheiden (ein anderer Port gilt als ursprungsübergreifend):

Teilnehmer

Beschreibung

Port

Advertiser

Lädt DSP-Tags auf der Seite

4001

Publisher

SSP-Tags auf der Seite werden geladen

4002

DSP-A

Käufer über das Gerät

5001

DSP-B

Käufer über das 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 dem Gerät verkauft

6002

SSP-BA

Verkäufer mit B&A-only

6003

SSP-MIX

Verkäufer mit mehreren Vertriebskanälen

6004

Es gibt vier DSPs:

  • DSP-A und DSP-B nehmen an Auktionen auf dem Gerät teil
  • DSP-X und DSP-Y nehmen an B&A-Auktionen teil

Es gibt vier SSPs und jeder Verkäufer führt eine andere Auktionskonfiguration aus:

  • SSP-OD führt eine Auktion nur auf dem Gerät aus
  • SSP-BA führt eine Auktion nur für B&A durch
  • SSP-MIX führt eine Auktion im gemischten Modus durch
  • SSP-TOP führt eine Mehrfachkundenauktion durch
    • SSP-OD/BA/MIX als Komponentenverkäufer an der Mehrfachverkäuferauktion von SSP-TOP teilnehmen

Das vollständige Architekturdiagramm finden Sie hier.

5.4 Konfiguration von Gebots- und Auktionsdiensten

In diesem Codelab führen wir zwei Gruppen von B&A parallel aus.

Festgelegt

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 lokales Testen

Alle

https://192.168.84.100:PORT

  • In Gruppe 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 Local Testing App und B&A Services wird ein Docker-Brückennetzwerk verwendet. Das Brückennetzwerk ba-dev wird vom Einrichtungsskript der Local Testing App erstellt. Den B&A-Diensten wird eine IP-Adresse im Subnetz von 192.168.84.0 zugewiesen.

Wenn Sie beispielsweise den SFE von Set A über die Anwendung aufrufen, wird die Netzwerkadresse von 192.168.84.104:50053 verwendet. Wenn Sie das Mock-Gebotsskript von 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 haben und besser verstehen, wie die Dienste miteinander kommunizieren.

6.1. Technischer Support

6.2 Weitere Informationen