1. 소개
입찰 및 입찰 서비스 (B&A)는 구매자와 판매자가 Protected Audience 입찰을 용이하게 할 수 있는 4가지 서비스로 구성됩니다.
구매자 스택:
- 구매자 프런트엔드 서비스
- 입찰 서비스
판매자 스택:
- 판매자 프런트엔드 서비스
- 입찰 서비스
이 Codelab에서는 로컬 환경에서 엔드 투 엔드 설정을 설정하고 테스트하는 방법을 안내합니다. 초기 서비스 빌드 시간을 제외하고 둘러보기는 약 1시간이 걸릴 것으로 예상됩니다.
매수 측 코드 또는 매도 측 코드만 작업하더라도 구매자와 판매자 스택이 서로 어떻게 작동하는지 더 잘 이해하기 위해 로컬 환경에서 엔드 투 엔드 흐름을 설정하는 것이 좋습니다. 두 스택을 모두 설정하면 나중에 다른 당사자의 각 구매자 또는 판매자 스택과 통합할 때 더 확신할 수 있습니다. 로컬에서 서비스를 테스트하면 개발 비용도 절약됩니다.
이 Codelab에서는 B&A 로컬 테스트 앱을 연습 동반자로 사용합니다.
컴패니언 로컬 테스트 앱은 B&A 입찰에 사용되는 다양한 구매자 및 판매자 리소스를 호스팅합니다. 또한 앱은 http://localhost:3000에서 다양한 입찰 구성을 시뮬레이션할 수 있는 UI를 제공합니다.
2. 환경 설정
2.1 Linux 머신 준비
로컬 Linux 머신을 사용하거나 원하는 클라우드 제공업체의 Linux VM을 프로비저닝합니다. 빌드 시간을 개선하려면 최소 16개 코어를 권장하며 32개 이상의 코어를 사용하는 것이 좋습니다.
이 머신의 http://localhost:3000에서 HTML 페이지를 로드합니다. VM에서 GUI를 제공하지 않는 경우 로컬 머신에서 포트 3000에 액세스할 수 있는지 확인하여 VM에 연결할 수 있도록 합니다.
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 (gcp)용 개발 빌드 (non_prod)의 local 인스턴스를 빌드합니다. 필요한 경우 --platform 플래그를 원하는 클라우드 제공업체로 업데이트합니다. 빌드 플래그에 대해 자세히 알아보려면 build_and_test_all_docker 파일을 확인하세요.
64코어 머신을 사용하는 경우 초기 빌드에 2시간이 걸릴 수 있으며 빌드 시간은 코어 수에 따라 선형으로 확장됩니다. 32코어 머신을 사용하는 경우 4시간이 걸릴 수 있습니다. 16코어 머신을 사용하는 경우 8시간이 걸릴 수 있습니다.
후속 빌드에서는 캐시를 사용하며 각 빌드에는 약 5~20분이 걸립니다.
빌드가 실행되는 동안 게으름을 피우는 두 프로그래머
(이 Codelab을 작성하는 동안 xkcd의 랜들 먼로를 만나 이 만화를 여기에 추가했다고 말했습니다)
3.3 서비스 실행
테스트에서는 스택당 4개의 서비스로 총 8개의 서비스를 실행합니다. 각 명령어는 로컬 테스트 앱에서 제공하는 리소스를 사용하도록 설정되어 있습니다. tmux과 같은 창 관리자를 사용하는 것이 좋습니다.
터미널 창을 8개 이상 추가로 열고 각 세션에서 다음 명령어를 실행합니다.
입찰 및 점수 매기기 스크립트는 앱에서 제공하므로 로컬 테스트 앱 서버는 이미 별도의 프로세스에서 실행되고 있어야 합니다.
3.3.1 세트 A 명령어
서비스 | 명령어 |
|
|
|
|
|
|
|
|
3.3.2 Set 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의 단일 판매자 B&A 입찰 설정으로 채워져 있습니다.
{
"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]"
}
]
}
}
}
}
파일을 Set A의 B&A 서비스 저장소의 루트 폴더에 sfe-test.json로 저장합니다(B&A 빌드 스크립트가 저장소의 루트 폴더에 있는 파일을 Docker 이미지의 /src/workspace 폴더에 복사함).
4.1.2 보안 호출로 SFE 호출
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
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 Services 저장소의 루트 폴더에 파일을 bfe-test.json로 저장합니다.
4.2.2 보안 호출로 BFE 호출
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
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 도움말을 읽고 다음 플래그를 사용하여 시작합니다.
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이 포함되어 있습니다.
Chrome DevTools의 관심분야 그룹 스크린샷
그런 다음 '컨트롤' 패널의 버튼을 클릭하여 다양한 입찰 유형을 시뮬레이션합니다.

B&A 서비스와 로컬 테스트 앱이 올바르게 설정된 경우 위의 광고가 '게시자 사이트 iframe' 패널에 렌더링됩니다.
5.3 로컬 테스트 앱 입찰 구성
도우미 로컬 테스트 앱에서는 다음 참여자가 호스팅되며 포트 번호로 구분됩니다 (다른 포트는 교차 출처로 간주됨).
참여자 | 설명 | 포트 |
광고주 | 페이지에 DSP 태그를 로드합니다. |
|
게시자 | 페이지에 SSP 태그를 로드합니다. |
|
| 기기 내 구매자 |
|
| 기기 내 구매자 |
|
| B&A 구매자 |
|
| B&A 구매자 |
|
| 최상위 판매자 |
|
| 온디바이스 전용 판매자 |
|
| B&A 전용 판매자 |
|
| 혼합 모드 판매자 |
|
DSP는 4가지가 있습니다.
DSP-A및DSP-B가 기기 내 입찰에 참여합니다.DSP-X및DSP-Y이 B&A 경매에 참여합니다.
SSP는 4개이며 각 판매자는 서로 다른 입찰 구성을 실행합니다.
SSP-OD기기 내 전용 입찰을 실행합니다.SSP-BA에서 B&A 전용 입찰을 실행합니다.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 저장소에서 문제를 여세요.
- 입찰 및 경매 서비스에 관해 궁금한 점이 있으면 B&A 서비스 저장소에서 문제를 여세요.
6.2 자세히 알아보기
- 웹용 B&A 아키텍처에 대해 자세히 알아보기
- 웹용 B&A와의 판매자 통합에 대해 자세히 알아보기