1. 소개
입찰 서비스 (B&A)는 구매자와 판매자가 Protected Audience 입찰을 진행하는 데 필요한 4가지 서비스로 구성됩니다.
구매자 스택:
- 구매자 프런트엔드 서비스
- 입찰 서비스
판매자 스택:
- 판매자 프런트엔드 서비스
- 입찰 서비스
이 Codelab에서는 로컬 환경에서 엔드 투 엔드 설정을 설정하고 테스트하는 방법을 안내합니다. 이 둘러보기는 초기 서비스 빌드 시간을 제외하고 약 1시간 정도 소요될 것으로 예상됩니다.
구매 측 코드 또는 판매 측 코드만 작업할 수도 있지만 로컬 환경에서 엔드 투 엔드 흐름을 설정하여 구매자 스택과 판매자 스택이 서로 작동하는 방식을 더 잘 이해하는 것이 좋습니다. 두 스택을 모두 설정하면 나중에 다른 당사자의 구매자 또는 판매자 스택과 통합할 때 더 확실하게 할 수 있습니다. 로컬에서 서비스를 테스트하면 개발 비용도 절약됩니다.
이 Codelab에서는 B&A 로컬 테스트 앱을 둘러보기 도우미로 사용합니다.
호환되는 로컬 테스트 앱은 입찰에서 사용되는 다양한 구매자 및 판매자 리소스를 호스팅합니다. 또한 앱은 http://localhost:3000
에서 다양한 입찰 구성을 시뮬레이션할 수 있는 UI를 제공합니다.
2. 환경 설정
2.1 Linux 머신 준비
로컬 Linux 머신을 사용하거나 원하는 클라우드 제공업체의 Linux VM을 프로비저닝합니다. 빌드 시간을 개선하려면 최소 16개 이상의 코어를 사용하는 것이 좋으며 32개 이상의 코어를 사용하는 것이 좋습니다.
이 머신의 http://localhost:3000
에서 HTML 페이지를 로드합니다. VM에서 GUI를 제공하지 않는 경우 로컬 머신에서 VM에 연결할 수 있도록 포트 3000
에 액세스할 수 있는지 확인합니다.
2.2 Docker 설치
Docker를 사용하여 서비스와 로컬 테스트 애플리케이션을 실행합니다.
편의 스크립트를 사용하여 테스트 환경에 Docker를 설치합니다.
# 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
경고: sudo가 없는 설정에서는 Docker 그룹이 사용자에게 루트 수준 권한을 부여합니다. sudo가 없는 Docker 가이드를 읽고 자세한 내용을 알아보세요.
2.3 호환 로컬 테스트 앱 시작
호환 앱은 예시 입찰/점수 스크립트, 예시 K/V BYOS 엔드포인트와 같은 리소스를 제공합니다. 리소스를 서비스에 로드할 수 있도록 B&A 서비스를 실행하기 전에 앱을 시작해야 합니다.
로컬 테스트 앱 저장소를 가져옵니다.
git clone https://github.com/privacysandbox/bidding-auction-local-testing-app.git
저장소의 루트에서 설정 스크립트를 실행합니다.
./setup
설정 스크립트는 ba-dev
Docker 네트워크를 만들고, SSL 인증서를 생성하고, 테스트 앱 이미지를 빌드합니다.
빌드가 완료되면 시작 스크립트를 실행합니다.
./start
3. 로컬에서 B&A 빌드 및 실행
3.1 B&A 서비스 가져오기
동일한 머신에서 두 세트의 B&A 서비스를 실행할 예정이므로 저장소를 두 개의 서로 다른 폴더로 가져옵니다.
세트 A:
B&A 저장소를 가져옵니다.
git clone https://github.com/privacysandbox/bidding-auction-servers.git bidding-auction-servers-set-a
세트 B
B&A 저장소를 가져옵니다.
git clone https://github.com/privacysandbox/bidding-auction-servers.git bidding-auction-servers-set-b
`
3.2 서비스 빌드
각 B&A 폴더의 루트 폴더에서 다음 명령어를 실행하여 4가지 서비스를 모두 빌드합니다.
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
위 명령어는 4가지 서비스의 Google Cloud Platform (gcp
)용 개발 빌드 (non_prod
)의 local
인스턴스를 빌드합니다. 필요한 경우 --platform
플래그를 원하는 클라우드 제공업체로 업데이트합니다. 빌드 플래그에 관해 자세히 알아보려면 build_and_test_all_docker
파일을 확인하세요.
64코어 머신을 사용하는 경우 초기 빌드에 2시간이 걸릴 수 있으며 빌드 시간은 코어 수를 기준으로 선형적으로 확장됩니다. 32코어 머신의 경우 4시간이 걸릴 수 있습니다. 16코어 머신을 사용하는 경우 8시간이 걸릴 수 있습니다.
후속 빌드에서는 캐시를 사용하며 각 빌드에는 약 5~20분이 소요됩니다.
(이 Codelab을 작성하는 동안 xkcd의 랜들 문로우를 만났고 여기에 이 만화를 추가했다고 말했습니다)
3.3 서비스 실행
테스트에서는 8개의 서비스 (스택당 4개 서비스)를 실행합니다. 각 명령어는 로컬 테스트 앱에서 제공하는 리소스를 사용하도록 설정됩니다. tmux
와 같은 창 관리자를 사용하는 것이 좋습니다.
터미널 창을 8개 이상 추가로 열고 각 세션에서 다음 명령어를 실행합니다.
입찰 및 점수 스크립트는 앱에서 제공되므로 로컬 테스트 앱 서버는 이미 별도의 프로세스에서 실행 중이어야 합니다.
3.3.1 Set A 명령어
서비스 | 명령어 |
|
|
|
|
|
|
|
|
3.3.2 세트 B 명령어
서비스 | 명령어 |
|
|
|
|
|
|
|
|
3.3.2 로컬 시작 스크립트의 환경 변수
다음 환경 변수를 사용하여 시작 동작을 제어할 수 있습니다.
환경 변수 | 가용성 | 설명 |
| 모든 서비스 | docker 명령어에 설정할 플래그 |
| 모든 서비스 | 로컬 머신에서 테스트하는 경우 기본값은 |
| 모든 서비스 | 서비스 로그의 수준입니다. 수준이 높을수록 더 많은 로그가 제공됩니다. 0이 가장 낮고 10이 가장 높습니다. 기본값은 |
| 입찰 서비스 | 입찰 서비스의 포트입니다. 기본값은 |
| 입찰 서비스 | 입찰 로직의 URL |
| 입찰 서비스 | 모델 학습을 위한 데이터 이그레스 |
| 입찰 서비스 | 입찰 추론의 인수 |
| BFE 서비스 | BFE 서비스의 포트입니다. 기본값은 |
| BFE 서비스 | 구매자의 BYOS K/V 주소 |
| BFE 서비스 | 구매자의 TEE K/V 주소 |
| BFE 서비스 | 구매자의 입찰 서비스 주소 |
| 입찰 서비스 | 입찰 서비스의 포트입니다. 기본값은 |
| 입찰 서비스 | 점수 로직의 URL |
| 입찰 서비스 | 구매자의 낙찰 보고 URL |
| 입찰 서비스 | 구매자의 낙찰 보고 스크립트 |
| 입찰 서비스 | PAS용 구매자 낙찰 보고 스크립트 |
| SFE 서비스 | SFE 서비스의 포트입니다. 기본값은 |
| SFE 서비스 | 판매자의 입찰 서비스 주소 |
| SFE 서비스 | 판매자의 BYOS K/V 주소 |
| SFE 서비스 | 판매자의 TEE K/V 주소 |
| SFE 서비스 | 판매자 출처 |
| SFE 서비스 | 구매자의 BFE 주소 |
4. 명령줄에서 보안 호출로 테스트
4.1 SFE 테스트
B&A 서비스 패키지에 포함된 Secure Invoke 도구를 사용하여 명령줄에서 서비스를 직접 호출할 수도 있습니다.
4.1.2 SFE SelectAd
페이로드
다음 JSON 요청은 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]"
}
]
}
}
}
}
세트 A의 B&A 서비스 저장소 루트 폴더에 파일을 sfe-test.json
로 저장합니다. B&A 빌드 스크립트는 저장소의 루트 폴더에 있는 파일을 Docker 이미지의 /src/workspace
폴더에 복사합니다.
4.1.2 보안 호출을 사용하여 SFE 호출
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
B&A 스택이 올바르게 설정되면 다음과 같은 성공 응답이 표시됩니다.
{"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 테스트
4.2.1 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"
}
B&A 서비스 저장소의 루트 폴더에 파일을 bfe-test.json
로 저장합니다.
4.2.2 보안 호출을 사용하여 BFE 호출
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
B&A 스택이 올바르게 설정되면 BFE는 다음 응답을 반환합니다.
{"bids":[{"bid":6,"render":"https://localhost:5003/ad.html","interestGroupName":"dsp-x-demo"}],"updateInterestGroupList":{}}
4.3 SFE 로그 확인
터미널로 이동하여 SFE 로그를 확인합니다. 출력에서 주목할 만한 로그를 살펴보겠습니다.
4.3.1 SelectAd
요청의 암호화된 페이로드
이 SFE 로그 출력에서 navigator.getInterestGroupAdAuctionData()
호출의 암호화된 페이로드를 확인할 수 있습니다. 이 페이로드는 브라우저에서 생성되고 태그에서 SAS로 전송된 후 SAS에서 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 복호화된 페이로드
이 출력에서 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 BFE에 대한 GetBids
요청
GetBids
요청이 SFE에서 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 BFE의 GetBids
응답
BFE는 입찰가와 함께 응답합니다.
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
요청
입찰이 수신되면 SFE에서 각 입찰에 대해 입찰 서비스에 ScoreAds
를 호출합니다.
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
응답
판매자의 입찰 서비스가 선호도 점수로 응답합니다.
I1210 21:20:47.298029 33 default_async_grpc_client.h:134] Decrypting the response ...
I1210 21:20:47.298100 33 default_async_grpc_client.h:152] Decryption/decoding of response succeeded: ad_score {
desirability: 9
render: "https://localhost:5003/ad.html"
interest_group_name: "dsp-x-demo"
buyer_bid: 9
interest_group_owner: "https://localhost:5003"
win_reporting_urls {
top_level_seller_reporting_urls {
}
}
ad_type: AD_TYPE_PROTECTED_AUDIENCE_AD
}
4.3.7 SFE의 SelectAd
응답
SFE의 SelectAd
응답이 암호화되어 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. 브라우저에서 로컬 테스트 앱으로 테스트
5.1 Chrome 열기
명령줄에서 Chrome 시작에 관한 Chromium 도움말을 읽고 다음 플래그를 사용하여 Chrome을 시작합니다.
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
이 플래그는 https://storage.googleapis.com/ba-test-buyer/coordinator-test-key.json
에 호스팅된 모의 코디네이터 키를 로드하도록 설정됩니다.
중요: B&A 플래그를 사용하여 명령줄에서 Chrome을 열기 전에 모든 Chrome 인스턴스를 완전히 종료했는지 확인하세요. 모든 Chrome 프로세스를 종료하려면 명령줄에서 ps aux | grep -ie chrome/chrome | awk '{print $2}' | xargs kill -9
를 실행해 보세요.
5.2 로컬 테스트 앱 UI 방문
앱 UI는 플래그를 사용하여 연 Chrome 브라우저 인스턴스의 http://localhost:3000에서 확인할 수 있습니다. 호스트 이름이 다른 VM을 사용하는 경우 방문하는 정확한 주소가 다를 수 있습니다.
앱의 상단 행에 있는 'Controls'(제어) 패널에는 다양한 입찰 구성을 시뮬레이션하는 버튼이 포함되어 있습니다. 나머지 두 패널에는 광고주 사이트와 게시자 사이트의 iframe이 포함되어 있습니다.
광고주 페이지 iframe에서 'DSP 태그 로드' 버튼을 클릭하면 각 DSP의 스크립트가 페이지에 추가됩니다. 이러한 스크립트는 사용자를 관심분야 그룹에 추가합니다. Chrome DevTools를 열고 '애플리케이션 / 저장소 / 관심분야 그룹'으로 이동하여 DSP 태그로 조인된 관심분야 그룹을 살펴봅니다.
그런 다음 '컨트롤' 패널의 버튼을 클릭하여 다양한 입찰 유형을 시뮬레이션합니다.
B&A 서비스와 로컬 테스트 앱이 올바르게 설정된 경우 위의 광고가 '게시자 사이트 iframe' 패널에 렌더링됩니다.
5.3 로컬 테스트 앱 입찰 구성
호환 로컬 테스트 앱에서는 다음 참여자가 포트 번호로 구분되어 호스팅됩니다 (다른 포트는 교차 출처로 간주됨).
참여자 | 설명 | 포트 |
광고주 | 페이지에 DSP 태그 로드 |
|
게시자 | 페이지에 SSP 태그 로드 |
|
| 기기 내 구매자 |
|
| 기기 내 구매자 |
|
| B&A 구매자 |
|
| B&A 구매자 |
|
| 최상위 판매자 |
|
| 기기 내 판매자만 |
|
| B&A 전용 판매자 |
|
| 혼합 모드 판매자 |
|
DSP는 4가지가 있습니다.
DSP-A
및DSP-B
가 기기 내 입찰에 참여합니다.DSP-X
및DSP-Y
가 입찰에 참여함
SSP는 4개이며 각 판매자는 서로 다른 입찰 구성을 실행합니다.
SSP-OD
는 기기 내 전용 입찰을 실행합니다.SSP-BA
는 입찰 전용 경매를 실행합니다.SSP-MIX
는 혼합 모드 입찰을 실행합니다.SSP-TOP
가 복수 판매자 입찰을 실행합니다.SSP-OD/BA/MIX
가SSP-TOP
의 다중 판매자 입찰의 구성요소 판매자로 참여합니다.
전체 아키텍처는 설계 다이어그램을 확인하세요.
5.4 입찰 서비스 구성
이 Codelab에서는 두 세트의 B&A를 나란히 실행합니다.
이제 | 서비스 | 참여자 |
|
세트 A | 입찰 서비스 |
|
|
BFE 서비스 |
|
| |
입찰 서비스 |
|
| |
SFE 서비스 |
|
| |
세트 B | 입찰 서비스 |
|
|
BFE 서비스 |
|
| |
입찰 서비스 |
|
| |
SFE 서비스 |
|
| |
앱 | 로컬 테스트 앱 | 전체 |
|
- 세트 A에서 구매자 서비스는
DSP-X
에서 사용하고 판매자 서비스는SSP-BA
에서 사용합니다. - 세트 B에서 구매자 서비스는
DSP-Y
에서 사용하고 판매자 서비스는SSP-MIX
에서 사용합니다.
로컬 테스트 앱과 B&A 서비스 간의 통신에는 Docker 브리지 네트워크가 사용됩니다. ba-dev
브리지 네트워크는 로컬 테스트 앱의 설정 스크립트에 의해 생성됩니다. B&A 서비스에는 192.168.84.0
의 서브넷에 IP 주소가 할당됩니다.
예를 들어 애플리케이션에서 Set A의 SFE를 호출하면 192.168.84.104:50053
의 네트워크 주소가 사용됩니다. DSP-X에서 BFE로 예시 입찰 스크립트를 로드할 때 https://192.168.84.100:5003/generate-bid.js
가 사용됩니다.
6. 마무리
이제 로컬 머신에서 B&A 서비스 스택을 실행하는 방법을 숙지하고 서비스가 서로 통신하는 방식을 더 잘 이해하셨기를 바랍니다.
6.1. 기술 지원
- 로컬 테스트 앱 설정에 관해 궁금한 점이 있으면 LTA 저장소에서 문제를 열어 문의하세요.
- 입찰 서비스에 관해 궁금한 점이 있으면 입찰 서비스 저장소에서 문제를 열어 문의하세요.
- 개인 정보 보호 샌드박스에 관한 일반적인 질문이 있는 경우 privacy-sandbox-dev-support 저장소에서 문제를 열어보세요.
6.2 자세히 알아보기
- 웹용 B&A 아키텍처에 대해 자세히 알아보기
- 웹용 B&A와 판매자 통합에 대해 자세히 알아보기