Testare la funzionalità D&R per il web end-to-end localmente

1. Introduzione

I servizi di offerte e aste sono costituiti da quattro servizi per acquirenti e venditori per facilitare un'asta Protected Audience:

Stack dell'acquirente:

  • Servizio front-end per gli acquirenti
  • Servizio offerte

Seller stack:

  • Servizio front-end del venditore
  • Servizio aste

Questo codelab ti guida nella configurazione e nel test della configurazione end-to-end nel tuo ambiente locale. La procedura dettagliata dovrebbe richiedere circa un'ora, escluso il tempo di creazione iniziale del servizio.

Anche se lavori solo sul codice lato acquirente o lato venditore, è utile configurare il flusso end-to-end nel tuo ambiente locale per capire meglio come funzionano gli stack dell'acquirente e del venditore. Se configuri entrambi gli stack, potrai avere più sicurezza in un secondo momento quando esegui l'integrazione con lo stack di acquirente o venditore dell'altra parte. Il test dei servizi in locale consente anche di risparmiare sui costi di sviluppo.

In questo codelab, utilizzeremo l'app di test locale B&A come guida.

L'app complementare per i test locali ospita varie risorse per acquirenti e venditori utilizzate in un'asta di B&A. L'app fornisce anche una UI all'indirizzo http://localhost:3000, dove puoi simulare varie configurazioni dell'asta.

2. Configurazione dell'ambiente

2.1 Prepara una macchina Linux

Utilizza una macchina Linux locale o esegui il provisioning di una VM Linux del provider cloud che preferisci. Per migliorare il tempo di compilazione, sono consigliati almeno 16 core come minimo e sono preferibili 32 o più core.

Tieni presente che caricheremo una pagina HTML da http://localhost:3000 di questa macchina. Se la VM non fornisce una GUI, assicurati che la porta 3000 sia accessibile alla tua macchina locale in modo da poterti connettere.

2.2 Installa Docker

Utilizziamo Docker per eseguire i servizi e l'applicazione di test locale.

Utilizzeremo lo script di convenienza per installare Docker in un ambiente di test.

# 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

Avviso: con la configurazione senza sudo, il gruppo Docker concede all'utente privilegi a livello di root. Per saperne di più, leggi la guida a Docker senza sudo.

2.3 Avvia l'app complementare per i test locali

L'app complementare fornisce risorse come script di offerta o punteggio simulati ed endpoint BYOS K/V simulati. L'app deve essere avviata prima di eseguire i servizi B&A in modo che le risorse possano essere caricate nei servizi.

Trascina verso il basso il repository dell'app di test locale:

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

Dalla radice del repository, esegui lo script di configurazione:

./setup

Lo script di configurazione creerà la rete Docker ba-dev, genererà i certificati SSL e creerà l'immagine dell'app di test.

Una volta completata la build, esegui lo script di avvio:

./start

3. Creare ed eseguire B&A in locale

3.1 Trascina verso il basso B&A Services

Eseguiamo due set di servizi B&A sulla stessa macchina, quindi estraiamo il repository in due cartelle diverse.

Set A:

Scarica il repository B&A:

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

Set B

Scarica il repository B&A:

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

3.2 Crea i servizi

Dalla cartella root di ogni cartella B&A, esegui questo comando per creare tutti e quattro i servizi:

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

Questo comando creerà un'istanza local della build di sviluppo (non_prod) per Google Cloud (gcp) di tutti e quattro i servizi. Se necessario, aggiorna il flag --platform con il provider di servizi cloud che preferisci. Per scoprire di più sui flag di build, consulta il file build_and_test_all_docker.

La build iniziale potrebbe richiedere 2 ore se utilizzi una macchina a 64 core e il tempo di build viene scalato linearmente in base al numero di core. Se utilizzi una macchina a 32 core, l'operazione potrebbe richiedere 4 ore. Se utilizzi una macchina a 16 core, potrebbero essere necessarie 8 ore.

Tieni presente che le build successive utilizzano la cache e ogni build dovrebbe richiedere circa 5-20 minuti.

Fumetto xkcd pertinente:

Due programmatori che non lavorano in ufficio. Un manager dice ai dipendenti di tornare al lavoro, i dipendenti rispondono che il codice è in fase di compilazione e il manager è d'accordo. L'autore di questo fumetto considera questa scusa la numero uno per non fare nulla. Due programmatori si rilassano mentre è in esecuzione una build.

(Ho incontrato Randall Munroe di xkcd mentre scrivevo questo codelab e gli ho detto che avevo aggiunto questa striscia qui)

3.3 Esegui i servizi

Per i nostri test, eseguiremo 8 servizi (4 servizi per stack). Ogni comando è configurato per utilizzare le risorse fornite dall'app di test locale. È consigliabile utilizzare un window manager come tmux.

Apri almeno altre otto finestre del terminale ed esegui i seguenti comandi in ogni sessione.

Tieni presente che il server dell'app di test locale deve essere già in esecuzione in un processo separato, poiché gli script di offerta e valutazione verranno forniti dall'app.

3.3.1 Set A commands

Servizio

Comando

DSP-X Servizio offerte

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

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.102 --network=ba-dev" \

BUYER_KV_SERVER_ADDR=https://192.168.84.100:5003/kv \

BIDDING_SERVER_ADDR=192.168.84.101:50057 \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_bfe

Servizio aste SSP-BA

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

Servizio SSP-BA SFE

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.104 --network=ba-dev" \

SELLER_ORIGIN_DOMAIN="https://localhost:6002" \

AUCTION_SERVER_ADDR="192.168.84.103:50061" \

KEY_VALUE_SIGNALS_ADDR="https://192.168.84.100:6002/kv" \

BUYER_SERVER_ADDRS_JSON='{"https://localhost:5003":{"url":"192.168.84.102:50051","cloudPlatform":"LOCAL"},"https://localhost:5004":{"url":"192.168.84.202:50051","cloudPlatform":"LOCAL"}}' \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_sfe

3.3.2 Set B commands

Servizio

Comando

DSP-Y Servizio offerte

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

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.202 --network=ba-dev" \

BUYER_KV_SERVER_ADDR=https://192.168.84.100:5004/kv \

BIDDING_SERVER_ADDR=192.168.84.201:50057 \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_bfe

Servizio aste SSP-BA

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

Servizio SSP-BA SFE

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.204 --network=ba-dev" \

SELLER_ORIGIN_DOMAIN="https://localhost:6003" \

AUCTION_SERVER_ADDR="192.168.84.203:50061" \

KEY_VALUE_SIGNALS_ADDR="https://192.168.84.100:6003/kv" \

BUYER_SERVER_ADDRS_JSON='{"https://localhost:5003":{"url":"192.168.84.102:50051","cloudPlatform":"LOCAL"},"https://localhost:5004":{"url":"192.168.84.202:50051","cloudPlatform":"LOCAL"}}' \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_sfe

3.3.2 Variabili di ambiente per gli script di avvio locali

Per controllare il comportamento di avvio, puoi utilizzare le seguenti variabili di ambiente.

Variabile di ambiente

Disponibilità

Descrizione

DOCKER_RUN_ARGS_STRING

Tutti i servizi

Flag da impostare per il comando docker

SKIP_TLS_VERIFICATION

Tutti i servizi

Quando esegui test sulla tua macchina locale, potresti dover utilizzare un certificato autofirmato che non supera il controllo di verifica peer SSL di curl. Il flag disattiva la verifica peer insieme al controllo del nome host SSL.

Il valore predefinito è false.

PS_VERBOSITY

Tutti i servizi

Il livello dei log di servizio. Un livello più alto fornisce più log. 0 è il valore più basso e 10 il più alto. Il valore predefinito è 10.

BIDDING_PORT

Servizio offerte

Porta del servizio offerte. Il valore predefinito è 50057

BIDDING_JS_URL

Servizio offerte

URL della logica di offerta

EGRESS_SCHEMA_URL

Servizio offerte

Egress dei dati per l'addestramento del modello

INFERENCE_ARGS

Servizio offerte

Argomenti a favore dell'inferenza delle offerte

BFE_PORT

Servizio BFE

Porta del servizio BFE. Il valore predefinito è 50051

BUYER_KV_SERVER_ADDR

Servizio BFE

Indirizzo BYOS K/V dell'acquirente

BUYER_TKV_V2_SERVER_ADDR

Servizio BFE

Indirizzo TEE K/V dell'acquirente

BIDDING_SERVER_ADDR

Servizio BFE

Indirizzo del servizio di offerta dell'acquirente

AUCTION_PORT

Servizio aste

Porta del servizio aste. Il valore predefinito è 50061

AUCTION_JS_URL

Servizio aste

URL della logica di assegnazione del punteggio

BUYER_REPORT_WIN_URL

Servizio aste

URL del report sulle vittorie dell'acquirente

BUYER_REPORT_WIN_SCRIPT

Servizio aste

Script di report sulle vittorie dell'acquirente

BUYER_PAS_REPORT_WIN_SCRIPT

Servizio aste

Script di registrazione delle vittorie dell'acquirente per PAS

SFE_PORT

Servizio SFE

Porta del servizio SFE. Il valore predefinito è 50053

AUCTION_SERVER_ADDR

Servizio SFE

Indirizzo del servizio aste del venditore

KEY_VALUE_SIGNALS_ADDR

Servizio SFE

Indirizzo BYOS K/V del venditore

TRUSTED_KEY_VALUE_V2_SIGNALS_ADDR

Servizio SFE

Indirizzo TEE K/V del venditore

SELLER_ORIGIN_DOMAIN

Servizio SFE

Origine del venditore

BUYER_SERVER_ADDRS_JSON

Servizio SFE

Indirizzi BFE dell'acquirente

4. Testare con Secure Invoke dalla riga di comando

4.1 Test SFE

Puoi anche utilizzare lo strumento Secure Invoke incluso nel pacchetto di servizi B&A per chiamare i servizi direttamente dalla riga di comando.

4.1.2 Payload SFE SelectAd

La seguente richiesta JSON è stata compilata con la configurazione dell'asta B&A per un singolo venditore di SSP-BA:

{
  "auction_config": {
    "seller": "https://localhost:6002",
    "auction_signals": "{\"testKey\":\"someValue\"}",
    "seller_signals": "{\"testKey\":\"someValue\"}",
    "buyer_list": [
      "https://localhost:5003",
      "https://localhost:5004"
    ],
    "per_buyer_config": {
      "https://localhost:5003": { "buyer_signals": "{\"testKey\":\"someValue\"}" },
      "https://localhost:5004": { "buyer_signals": "{\"testKey\":\"someValue\"}" }
    }
  },
  "raw_protected_audience_input": {
    "publisher_name": "http://localhost:4001",
    "generation_id": "1210718540",
    "enable_debug_reporting": true,
    "raw_buyer_input": {
      "https://localhost:5003": {
        "interest_groups": [
          {
            "name": "dsp-x-demo",
            "ad_render_ids": ["1234"],
            "bidding_signals_keys": ["demo-key"],
            "browser_signals": { "bid_count": "1", "join_count": "1", "prev_wins": "[]" },
            "user_bidding_signals": "[1, 2, 3]"
          }
        ]
      },
      "https://localhost:5004": {
        "interest_groups": [
          {
            "name": "dsp-x-demo",
            "ad_render_ids": ["1234"],
            "bidding_signals_keys": ["demo-key"],
            "browser_signals": { "bid_count": "1", "join_count": "1", "prev_wins": "[]" },
            "user_bidding_signals": "[1, 2, 3]"
          }
        ]
      }
    }
  }
}

Salva il file come sfe-test.json nella cartella principale del repository Set A's B&A Services(lo script di build B&A copierà i file nella cartella principale del repository nella cartella /src/workspace dell'immagine Docker).

4.1.2 Chiama SFE con Secure Invoke

Esegui questo comando dalla cartella principale del repository B&A Services:

DOCKER_NETWORK=ba-dev ./builders/tools/bazel-debian run //tools/secure_invoke:invoke \
  -- \
  -target_service=sfe \
  -input_file=/src/workspace/sfe-test.json \
  -host_addr=192.168.84.104:50053 \
  -client_ip=192.168.84.100 \
  -insecure=true

Se gli stack B&A sono configurati correttamente, riceverai la seguente risposta di esito positivo:

{"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 Test BFE

4.2.1 Richiesta di BFE GetBids

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

Salva il file come bfe-test.json nella cartella principale del repository di B&A Services.

4.2.2 Chiama il backend per l'esecuzione con Secure Invoke

Esegui questo comando dalla cartella principale del repository B&A Services:

DOCKER_NETWORK=ba-dev ./builders/tools/bazel-debian run //tools/secure_invoke:invoke \
  -- \
  -target_service=bfe \
  -input_file="/src/workspace/bfe-test.json" \
  -host_addr="192.168.84.102:50051" \
  -client_ip=192.168.84.100 \
  -insecure=true

Se gli stack B&A sono configurati correttamente, BFE restituisce la seguente risposta:

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

4.3 Controlla i log SFE

Visita il terminale e controlla i log SFE. Esamineremo alcuni dei log più importanti nell'output.

4.3.1 Payload criptato della richiesta SelectAd

In questo output del log SFE, troviamo il payload criptato della chiamata navigator.getInterestGroupAdAuctionData(). Questo payload viene generato dal browser, inviato dal tag a SAS e poi SAS lo inoltra a SFE:

I1210 21:20:47.266673      37 select_ad_reactor.cc:228] Protected auction ciphertext: AEAAIAABAAKg3OQSSLEBMR1MmJiwfOT8uef41iE+DQIvKUowsQvVcGbWZ+r17ff2r/iTbEnwqLPtpAxSTy77mi+cVV5cKjkKb4piaZnKiCDIMCyEvrQUD4+BG+HgrbUFhqiWPmQhNThvInMaHuYrXG7xushbRtvSPsVzEl6iBZcLZzD7W3CHMFK7bnJ+ufu52W6B7/8dOQ1gZW6SpwXMGNcrurTGoucbwbZRIPqCcbZk76J1gB69wrDYRo1wQ6jmBleLM36nulxbEj/sHhpQIgr895aKqEGQ3Fy+/HHPTO+zHphcX44YeF6mZ/I+WxZTDxCi1x27nI4yvzC8vI4a/giJN5XUlJZGb/fMrj3/Qly+gwJ8lbxdX+4GWTooDoS4MTtiBpJqh9wkIQ5XwfO54p8Kv6j/tk+51hOfVkOdtGwX0LvVrWT9PiJOJHa23nZ1fLg/22mTe05xdbR3WVeA+xiO9YwF4ozyCYDRUkDyWB/3k9RuaaT9H5S1szVpuOuD2nYSRpT9svmpfG4kipiS6BTPZPX2whDlukpuuoFgdiDtH6cFShNhZ5C47R0ayAvaZ1QSpOZMWfA6pdl4nhvNLpOKesKY/KFDEBzpUXRDsQWsfvmdqFl1mCeX9rOrEc9rodYVLXXhM8GPycehHmvqkccTBW6kipOQlmnSdIYaFmtWSFpUrzxajGkct3mZdTjVjOf...

4.3.2 Payload decriptato

In questo output, troviamo il payload decriptato della chiamata navigator.getInterestGroupAdAuctionData():

I1210 21:20:47.267590      37 select_ad_reactor.cc:347]  (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252) Decoded BuyerInput:
https://localhost:5003 : {interest_groups { name: "dsp-x-demo" bidding_signals_keys: "demo-key" browser_signals { join_count: 1 recency: 7 prev_wins: "[]" } }}

4.3.3 Richiesta GetBids a BFE

La richiesta GetBids viene inviata da SFE a BFE:

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

4.3.4 GetBids risposta di BFE

BFE risponde con l'offerta:

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 Richiesta ScoreAds al servizio aste

Una volta ricevute le offerte, SFE effettua la chiamata ScoreAds al servizio aste per ogni offerta:

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 Risposta ScoreAds dal servizio aste

Il servizio di aste del venditore risponde con il punteggio di desiderabilità:

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 risposta di SFE

La risposta SelectAd dell'SFE è criptata e inviata a SAS:

I1210 21:20:47.298428      33 select_ad_reactor.cc:1413]  (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252) Encrypted SelectAdResponse:
auction_result_ciphertext: "\023\233\252\321\000\331M\327\216\201S\332kl?\322\255\247\312\375h\007W\367\016\366FR\364\275\377\326\027h\204\203\265\t\271-\333\266\tH\342\033F\001k\211C\026V\013\271\255(\236\273\353\260\275\007\346\027\340?\005|\235S\244\265\2563U\246\322\177%\200/\3175\034 \020\024\362\345\3263\356F.s\261\005\231\262Z\000\330x\0230\335>\"\217\254\010\254\330>\206\007\274\235\037`\370W\032\207\356\367\206\026\341.i\"$\370\367\2554i\247\354\304e\306\2466S\337\321w\327+!\316\035:\002\231\246\362\366qm\211\000\013\343\345\224{\365py\361\374\316\202\217-\244\302\331\216D\025W#.\304nH\235\315\311<#\342\344\324\257\354\2441\251\312\320\226\342\021\377>3`\347/\350\254h\306\273\023\365\340@\321\2412\254\323\213\0137,\013n\220|\211\323/\030)\314\263\223\355>\254\312aa`!\375\335\023Z\234p\206\037\001\355\261{$\025+\341\275\327Ny\342\342\264=\376\2138\224\026\2058\251\020\202\245*46\023\307)K\342\364k<\2104r\247\034\216}\034\001\374\215\363\210\026\275\371S>\031;f.b\260\363\257.\255\023I\341A\237*_T\355\262\005\344L\336D%\327\267@\302$\300\340\203c\350|\337>C\275c\260\202o\315xp\260\257\241\305U\nK\033\274L6\025\350\373a:\253\212&>p\210\215\017&^\327\005_\037\020\212\362\351\341\231@g\372\0037\275b:)\207\303d\243?\261O\266\343\214\200\004\247\372\022S\326\200\037\330\252r\257+e\273[\231\202\3625{\330\213\240\370\245\\\214\350/\313\ty/\004\313\0304k\223\354\374\305\233\264\224K\344\241\251\322?\323q6\314D\027\200\203\035]\023O\306\230?\203\237:\254\305\265\332\330\2641l\322\020\022\330O-\242\207>Q\364_{F\235\353tk\207\035\205\005\221\373\207\0143\035\014\322\240H\220\347%\262f\347\017\352\273\265\231\014\204\r\312\254z\000\340&\354\222\323\245\356\217(i\246"

5. Testare con l'app di test locale dal browser

5.1 Apri Chrome

Leggi l'articolo di Chromium sull'avvio di Chrome dalla riga di comando e avvialo con i seguenti flag:

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

Il flag è impostato per caricare la chiave del coordinatore simulato che abbiamo ospitato all'indirizzo https://storage.googleapis.com/ba-test-buyer/coordinator-test-key.json

Importante: assicurati di aver chiuso completamente tutte le istanze di Chrome prima di aprirlo dalla riga di comando con i flag B&A. Per uscire da tutti i processi di Chrome, prova a eseguire ps aux | grep -ie chrome/chrome | awk '{print $2}' | xargs kill -9 dalla riga di comando.

5.2 Visita l'interfaccia utente dell'app di test locale

L'interfaccia utente dell'app si trova all'indirizzo http://localhost:3000 nell'istanza del browser Chrome che hai aperto con i flag. L'indirizzo esatto che visiti potrebbe essere diverso se utilizzi una VM con un nome host diverso.

Uno screenshot dell&#39;app di test locale visitata in un browser Uno screenshot dell'app di test locale visitata in un browser

Nella riga superiore dell'app, il riquadro "Controlli" contiene i pulsanti per simulare diverse configurazioni dell'asta. Gli altri due riquadri contengono iframe dei siti dell'inserzionista e del publisher.

Screenshot dei gruppi di interesse in Chrome DevTools. Uno screenshot dei gruppi di interesse in Chrome DevTools.

Poi, fai clic sui pulsanti nel riquadro "Controlli" per simulare vari tipi di asta.

Un annuncio visualizzato in un browser di B&A.

Se i servizi B&A e l'app di test locale sono configurati correttamente, l'annuncio precedente viene visualizzato nel riquadro "Iframe del sito del publisher".

5.3 Configurazione dell'asta dell'app di test locale

Nell'app di test locale complementare sono ospitati i seguenti partecipanti, differenziati in base al numero di porta (una porta diversa è considerata cross-origin):

Partecipante

Descrizione

Porta

Inserzionista

Carica i tag DSP sulla pagina

4001

Publisher

Carica i tag SSP sulla pagina

4002

DSP-A

Acquirente sul dispositivo

5001

DSP-B

Acquirente sul dispositivo

5002

DSP-X

Acquirente di B&A

5003

DSP-Y

Acquirente di B&A

5004

SSP-TOP

Venditore di primo livello

6001

SSP-OD

Venditore solo sul dispositivo

6002

SSP-BA

Venditore solo B&A

6003

SSP-MIX

Venditore multimodale

6004

Esistono quattro DSP:

  • DSP-A e DSP-B partecipano alle aste sul dispositivo
  • DSP-X e DSP-Y partecipano alle aste di tipo Asta e offerta.

Esistono quattro SSP e ogni venditore esegue una configurazione dell'asta diversa:

  • SSP-OD esegue un'asta solo sul dispositivo
  • SSP-BA esegue un'asta solo per le offerte e i budget
  • SSP-MIX esegue un'asta in modalità mista
  • SSP-TOP esegue un'asta multi-venditore
    • SSP-OD/BA/MIX partecipare in qualità di venditori di componenti all'asta multi-venditore di SSP-TOP

Per l'architettura completa, consulta il diagramma di progettazione.

5.4 Configurazione dei servizi di offerte e aste

In questo codelab, eseguiamo due set di B&A uno accanto all'altro.

Configurato

Servizio

Partecipante

Indirizzo di rete ba-dev

Set A

Servizio offerte

DSP-X

192.168.84.101:50057

Servizio BFE

DSP-X

192.168.84.102:50051

Servizio aste

SSP-BA

192.168.84.103:50061

Servizio SFE

SSP-BA

192.168.84.104:50053

Set B

Servizio offerte

DSP-Y

192.168.84.201:50057

Servizio BFE

DSP-Y

192.168.84.202:50051

Servizio aste

SSP-MIX

192.168.84.203:50061

Servizio SFE

SSP-MIX

192.168.84.204:50053

App

App di test locale

Tutti

https://192.168.84.100:PORT

  • Nel set A, i servizi per l'acquirente vengono utilizzati da DSP-X e i servizi per il venditore vengono utilizzati da SSP-BA
  • Nel set B, i servizi per l'acquirente vengono utilizzati da DSP-Y e i servizi per il venditore vengono utilizzati da SSP-MIX

Per la comunicazione tra l'app di test locale e i servizi B&A, viene utilizzata una rete bridge Docker. La rete bridge ba-dev viene creata dallo script di configurazione dell'app di test locale. Ai servizi B&A viene assegnato un indirizzo IP nella subnet di 192.168.84.0.

Ad esempio, quando chiami l'SFE del set A dall'applicazione, viene utilizzato l'indirizzo di rete di 192.168.84.104:50053. Quando carichi lo script di offerta simulata da DSP-X in BFE, viene utilizzato https://192.168.84.100:5003/generate-bid.js.

6. Conclusione

A questo punto, ci auguriamo che tu abbia acquisito familiarità con l'esecuzione dello stack di servizi B&A in locale sul tuo computer e che tu abbia compreso meglio il modo in cui i servizi comunicano tra loro.

6.1. Assistenza tecnica

6.2 Scopri di più