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

1. Introduzione

I servizi di offerte e aste sono composti da quattro servizi che consentono ad acquirenti e venditori di facilitare un'asta Protected Audience:

Stack dell'acquirente:

  • Servizio frontend per gli acquirenti
  • Servizio offerte

Serie di venditori:

  • Servizio frontend per i venditori
  • Servizio aste

Questo codelab illustra la configurazione e il test della configurazione end-to-end nell'ambiente locale. La procedura dettagliata dovrebbe richiedere circa un'ora, escluso il tempo di compilazione iniziale del servizio.

Anche se potresti lavorare solo sul codice lato acquirente o lato venditore, è utile configurare il flusso end-to-end nel tuo ambiente locale per comprendere meglio il funzionamento delle piattaforme lato acquirente e lato venditore. Se configuri entrambi gli stack, puoi avere maggiore sicurezza in un secondo momento quando esegui l'integrazione con lo stack dell'acquirente o del venditore di un'altra parte. Testare i servizi in locale consente anche di risparmiare sui costi di sviluppo.

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

L'app di test locale complementare ospita varie risorse per acquirenti e venditori utilizzate in un'asta B&A. L'app fornisce anche un'interfaccia utente all'indirizzo http://localhost:3000 in cui puoi simulare varie configurazioni di asta.

2. Configurazione dell'ambiente

2.1 Prepara una macchina Linux

Utilizza un computer 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 e sono preferiti più di 32 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 al tuo computer 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 utilità 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ù, consulta la guida a Docker senza sudo.

2.3 Avvia l'app di test locale complementare

L'app complementare fornisce risorse come script di offerta/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.

Scarica 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 compilerà l'immagine dell'app di test.

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

./start

3. Crea ed esegui B&A localmente

3.1 Esegui il pull dei servizi B&A

Eseguiremo due insiemi di servizi B&A sulla stessa macchina, quindi scaricheremo il repository in due cartelle diverse.

Set A:

Estrai il repository B&A:

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

Set B

Estrai 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 principale di ogni cartella B&A, esegui il seguente comando per compilare 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

Il comando riportato sopra creerà un'istanza local della build di sviluppo (non_prod) per la piattaforma 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 compilazione, controlla il file build_and_test_all_docker.

La compilazione iniziale può richiedere 2 ore se utilizzi una macchina a 64 core e il tempo di compilazione varia in modo lineare 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:

Mostra due programmatori che oziavano in ufficio, il che fa sì che il manager li chiami per tornare al lavoro. I lavoratori dicono che il codice è in fase di compilazione e il manager non ha problemi. L'autore di questa vignetta considera questa la scusa più legittima per oziare

(Ho incontrato Randall Munroe di xkcd mentre scrivevo questo codelab e gli ho detto che ho aggiunto questa vignetta 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. È vivamente consigliato utilizzare un gestore delle finestre come tmux.

Apri almeno altre 8 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 di punteggio verranno pubblicati dall'app.

3.3.1 Comandi Set A

Servizio

Comando

Servizio di offerte DSP-X

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

SSP-BA Servizio aste

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 Servizio 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 Comandi del set B

Servizio

Comando

Servizio di offerte DSP-X

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

SSP-BA Servizio aste

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

Le seguenti variabili di ambiente possono essere utilizzate per controllare il comportamento all'avvio.

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 il test sulla tua macchina locale, potrebbe essere necessario utilizzare un certificato autofirmato che non supera il controllo di verifica della controparte SSL di curl. Il flag disattiva la verifica del peer e il controllo del nome host SSL.

Il valore predefinito è false.

PS_VERBOSITY

Tutti i servizi

Il livello dei log di servizio. Il 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 di offerte. Il valore predefinito è 50057

BIDDING_JS_URL

Servizio offerte

URL della logica di offerta

EGRESS_SCHEMA_URL

Servizio offerte

Esportazione dei dati per l'addestramento del modello

INFERENCE_ARGS

Servizio offerte

Argomenti per l'inferenza delle offerte

BFE_PORT

Servizio BFE

Porta del servizio BFE. Il valore predefinito è 50051

BUYER_KV_SERVER_ADDR

Servizio BFE

Indirizzo K/V BYOS dell'acquirente

BUYER_TKV_V2_SERVER_ADDR

Servizio BFE

Indirizzo K/V TEE dell'acquirente

BIDDING_SERVER_ADDR

Servizio BFE

Indirizzo del servizio di offerte dell'acquirente

AUCTION_PORT

Servizio aste

La porta del servizio aste. Il valore predefinito è 50061

AUCTION_JS_URL

Servizio aste

URL della logica di punteggio

BUYER_REPORT_WIN_URL

Servizio aste

URL del report sulle vittorie dell'acquirente

BUYER_REPORT_WIN_SCRIPT

Servizio aste

Script per i report sulle vittorie dell'acquirente

BUYER_PAS_REPORT_WIN_SCRIPT

Servizio aste

Script per i report sulle 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 K/V BYOS del venditore

TRUSTED_KEY_VALUE_V2_SIGNALS_ADDR

Servizio SFE

Indirizzo K/V TEE del venditore

SELLER_ORIGIN_DOMAIN

Servizio SFE

Provenienza del venditore

BUYER_SERVER_ADDRS_JSON

Servizio SFE

Indirizzi BFE dell'acquirente

4. Eseguire il test 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 SelectAd SFE

La seguente richiesta JSON è stata compilata con la configurazione dell'asta B2B con un solo 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 dei servizi B&A del set A(lo script di compilazione B&A copierà i file nella cartella principale del repository nella cartella /src/workspace dell'immagine Docker).

4.1.2 Chiamare l'API SFE con Secure Invoke

Esegui il seguente comando dalla cartella principale del repository dei servizi B&A:

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

{
  "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 BFE con Secure Invoke

Esegui il seguente comando dalla cartella principale del repository dei servizi B&A:

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

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

4.3.1 Payload criptato della richiesta di 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 inoltrato da SAS 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 al 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 Risposta di GetBids da 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 ScoreAds richiesta al Servizio aste

Dopo aver ricevuto le offerte, SFE effettua la chiamata ScoreAds al servizio di asta 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 del ScoreAds Servizio aste

Il servizio di asta 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 Risposta SelectAd del team SFE

La risposta SelectAd dell'SFE viene criptata e inviata al 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. Eseguire il test 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 è disponibile all'indirizzo http://localhost:3000 nell'istanza del browser Chrome aperta 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

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.

Quando fai clic sul pulsante "Carica i tag DSP" nell'iframe della pagina dell'inserzionista, alla pagina viene aggiunto uno script di ogni DSP. Questi script aggiungono l'utente ai gruppi di interesse. Apri Chrome DevTools e vai ad "Application/Storage/Interest Groups" (Applicazione/Memoria/Gruppi di interesse) per esaminare i gruppi di interesse uniti dai tag DSP:

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 da 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 per le app di test locale

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

Partecipante

Descrizione

Porta

Inserzionista

Carica i tag DSP nella pagina

4001

Publisher

Carica i tag SSP nella pagina

4002

DSP-A

Acquirente on-device

5001

DSP-B

Acquirente on-device

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 con modalità miste

6004

Esistono quattro DSP:

  • DSP-A e DSP-B partecipano alle aste on-device
  • DSP-X e DSP-Y partecipano alle aste B&A

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

  • SSP-OD esegue un'asta solo sul dispositivo
  • SSP-BA gestisce un'asta solo per B&A
  • SSP-MIX esegue un'asta in modalità mista
  • SSP-TOP gestisce un'asta multi-venditore
    • SSP-OD/BA/MIX partecipa come venditore di componenti all'asta multi-venditore di SSP-TOP

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

5.4 Configurazione di aste e offerte

In questo codelab, eseguiamo due insiemi di A/B uno accanto all'altro.

Partenza

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

  • Nell'insieme A, i servizi per gli acquirenti vengono utilizzati da DSP-X e i servizi per i venditori da SSP-BA
  • Nell'insieme B, i servizi per l'acquirente vengono utilizzati da DSP-Y e i servizi per il venditore 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 192.168.84.104:50053. Quando carichi lo script di offerte 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 localmente sulla tua macchina e che tu abbia compreso meglio il modo in cui i servizi comunicano tra loro.

6.1. Assistenza tecnica

6.2 Scopri di più