ANNOUNCEMENT: Voyage AI joins MongoDB to power more accurate and trustworthy AI applications on Atlas.
Learn more
Docs Menu

Atlas Device Sync ๊ตฌ์„ฑ ๋ฐ ํ™œ์„ฑํ™”

์ด ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ

App Services UI, App Services CLI ๋˜๋Š” Atlas App Services Admin API๋ฅผ ํ†ตํ•ด Atlas Device Sync๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ๊ตฌ์„ฑ๋„ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Device Sync๋ฅผ ์ฒ˜์Œ ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒฝ์šฐ ํ•„์š”ํ•œ ๋‹จ๊ณ„๋ฅผ ์•ˆ๋‚ดํ•˜๋Š” UI๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ Device Sync๋ฅผ ํ™œ์„ฑํ™”ํ•œ ํ›„์— Atlas Device Sync ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ์— Device Sync๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ์ ˆ์ฐจ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑ์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Flexible Sync ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋™๊ธฐํ™”๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ๋‹ค์‹œ ํ™œ์„ฑํ™”ํ•  ํ•„์š” ์—†์ด ๊ตฌ์„ฑ์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Device Sync๋ฅผ ์ผ์‹œ ์ค‘์ง€ํ•˜๊ฑฐ๋‚˜ ์ข…๋ฃŒํ•œ ํ›„ ๋‹ค์‹œ ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒฝ์šฐ Device Sync ๋‹ค์‹œ ์‹œ์ž‘ ๋˜๋Š” ๋‹ค์‹œ ํ™œ์„ฑํ™”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

ํŒ

30์ผ ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด Device Sync๊ฐ€ ์ž๋™์œผ๋กœ ์ผ์‹œ ์ค‘์ง€๋ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๊ตฌ์„ฑ ๋ฐฉ๋ฒ•์„ ์•„์ง ๊ฒฐ์ •ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๋™๊ธฐํ™” ๊ฐœ์š”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ฐœ๋ฐœ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ•œ, ๋™๊ธฐํ™”๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์ „์— ๋™๊ธฐํ™”๋œ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•ด ์œ ํšจํ•œ ์Šคํ‚ค๋งˆ๋ฅผ ํ•˜๋‚˜ ์ด์ƒ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์Šคํ‚ค๋งˆ๋Š” ์ตœ์†Œํ•œ _id์„(๋ฅผ) ๊ธฐ๋ณธ ํ‚ค๋กœ ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ๊ฐ€๋Šฅํ•œ ํ•„๋“œ๋กœ ์‚ฌ์šฉํ•  ํ•„๋“œ๋„ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์Šคํ‚ค๋งˆ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์Šคํ‚ค๋งˆ ์ •์˜ ๋ฐ ์ ์šฉ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ฐธ๊ณ 

Device Sync ๋ฅผ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ์†Œ์Šค ์š”๊ตฌ ์‚ฌํ•ญ

Device Sync ๋ฅผ ํ™œ์„ฑํ™” ํ•˜๋ ค๋ฉด App Services App ์— ๋‹ค์Œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋Š” ์—ฐ๊ฒฐ๋œ ๋ฐ์ดํ„ฐ ์†Œ์Šค ๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

1

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•ด Device Sync๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด ์™ผ์ชฝ ํƒ์ƒ‰ ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•ด Device Sync ๊ตฌ์„ฑ ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

2

ํ”„๋กฌํ”„ํŠธ์— ๋”ฐ๋ผ Device Sync๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ตฌ์„ฑ ์„ค์ •์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋™๊ธฐํ™” ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

3

Enable Sync์„(๋ฅผ) ํด๋ฆญํ•˜๊ณ  ํ‘œ์‹œ๋˜๋Š” ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ๊ธฐ๋กํ•œ ํ›„ ์„ ํƒ์„ ํ™•์ •ํ•ฉ๋‹ˆ๋‹ค.

1

MongoDB Atlas Admin API ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CLI์— ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค.

appservices login --api-key="<my api key>" --private-api-key="<my private api key>"
2

์•ฑ ๊ตฌ์„ฑ ํŒŒ์ผ์˜ ๋กœ์ปฌ ๋ณต์‚ฌ๋ณธ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ตœ์‹  ๋ฒ„์ „์˜ ์•ฑ์„ ๋ฐ›์œผ๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

appservices pull --remote="<Your App ID>"

UI์—์„œ ๋˜๋Š” Admin API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์„ฑ ํŒŒ์ผ์˜ ์‚ฌ๋ณธ์„ ๋‚ด๋ณด๋‚ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋ ค๋ฉด ์•ฑ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

3

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์—ฐ๊ฒฐ๋œ ๋‹จ์ผ ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ๋™๊ธฐํ™”๋ฅผ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์•„์ง ์—ฐ๊ฒฐํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋จผ์ € ๋ฐ์ดํ„ฐ ์†Œ์Šค ์—ฐ๊ฒฐ ๊ฐ€์ด๋“œ๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

App Services ์•ฑ์—๋Š” ๋™๊ธฐํ™” ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” sync ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์ง ๋™๊ธฐํ™”๋ฅผ ํ™œ์„ฑํ™”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ด ๋””๋ ‰ํ† ๋ฆฌ๋Š” ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ config.json์„(๋ฅผ) ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

{
"type": "flexible",
"development_mode_enabled": <Boolean>,
"service_name": "<Data Source Name>",
"database_name": "<Development Mode Database Name>",
"state": <"enabled" | "disabled">,
"client_max_offline_days": <Number>,
"is_recovery_mode_disabled": <Boolean>,
"indexed_queryable_fields_names": <Array of String Field Names>,
"queryable_fields_names": <Array of String Field Names>,
"collection_queryable_fields_names": <Map[String][]String>
}

์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋™๊ธฐํ™” ๊ตฌ์„ฑ ํŒŒ์ผ ์ฐธ์กฐ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

4

๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐฐํฌํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์•ฑ ๊ตฌ์„ฑ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

appservices push --remote="<Your App ID>"
1

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋‹จ์ผ ์—ฐ๊ฒฐ๋œ cluster์— ๋Œ€ํ•ด Realm Mobile Sync๋ฅผ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์ง cluster๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์—ฐ๊ฒฐํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ์†Œ์Šค ์—ฐ๊ฒฐ ๊ฐ€์ด๋“œ๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

์ฐธ๊ณ 

์•ก์„ธ์Šค ํ† ํฐ์œผ๋กœ ์š”์ฒญ ์ธ์ฆํ•˜๊ธฐ

App Services Admin API ์— ๋Œ€ํ•œ ์š”์ฒญ ์„ ์ธ์ฆํ•˜๋ ค๋ฉด MongoDB Cloud API ์˜ ์œ ํšจํ•œ ์ตœ์‹  ๊ถŒํ•œ ๋ถ€์—ฌ ํ† ํฐ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์œ ํšจํ•œ ์•ก์„ธ์Šค ํ† ํฐ์„ ํš๋“ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ•™์Šต ๋ณด๋ ค๋ฉด API ์ธ์ฆ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋™๊ธฐํ™”๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ํด๋Ÿฌ์Šคํ„ฐ์˜ ์„œ๋น„์Šค ๊ตฌ์„ฑ ํŒŒ์ผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž API๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ์„œ๋น„์Šค๋ฅผ ๋‚˜์—ดํ•˜์—ฌ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ ID ์ฐพ๊ธฐ
curl https://services.cloud.mongodb.com/api/admin/v3.0/groups/{GROUP_ID}/apps/{APP_ID}/services \
-X GET \
-h 'Authorization: Bearer <Valid Access Token>'

๋™๊ธฐํ™”๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ์„ฑ์„ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ์•ฑ์„ ๊ตฌ์„ฑํ•  ๋•Œ ๊ธฐ๋ณธ ์ด๋ฆ„์„ ์ˆ˜๋ฝํ•œ ๊ฒฝ์šฐ, ์ด๋Š” name ์ด mongodb-atlas ์ด๊ณ  type ์ด mongodb-atlas ์ธ ํด๋Ÿฌ์Šคํ„ฐ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ํด๋Ÿฌ์Šคํ„ฐ์˜ _id ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ์ด ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ์„œ๋น„์Šค ๊ตฌ์„ฑ ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ์„œ๋น„์Šค ๊ตฌ์„ฑ ํŒŒ์ผ ๊ฐ€์ ธ์˜ค๊ธฐ
curl https://services.cloud.mongodb.com/api/admin/v3.0/groups/{GROUP_ID}/apps/{APP_ID}/services/{MongoDB_Service_ID}/config \
-X GET \
-h 'Authorization: Bearer <Valid Access Token>'

๋™๊ธฐํ™”๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ ์ด ๊ตฌ์„ฑ์— flexible_sync ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

2

๊ฐœ๋ฐœ ๋ชจ๋“œ ๋ฅผ ํ™œ์„ฑํ™”ํ•˜์—ฌ ํ”„๋กœ๋•์…˜์„ ๊ฐ„์†Œํ™”ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

๊ฐœ๋ฐœ ๋ชจ๋“œ ํ™œ์„ฑํ™”
curl https://services.cloud.mongodb.com/api/admin/v3.0/groups/{GROUP_ID}/apps/{APP_ID}/sync/config \
-X PUT \
-h 'Authorization: Bearer <Valid Access Token>' \
-h "Content-Type: application/json" \
-d '{"development_mode_enabled": true}'
3

๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐฐํฌํ•˜๊ณ  ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ๋‹ค์Œ ํ…œํ”Œ๋ฆฟ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ flexible_sync ๊ฐ์ฒด๋กœ ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ์„ ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ๊ด€๋ฆฌ์ž API ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

๋™๊ธฐํ™” ๊ตฌ์„ฑ ์—…๋ฐ์ดํŠธ
curl https://services.cloud.mongodb.com/api/admin/v3.0/groups/{GROUP_ID}/apps/{APP_ID}/services/{MongoDB_Service_ID}/config \
-X PATCH \
-h 'Authorization: Bearer <Valid Access Token>' \
-h "Content-Type: application/json" \
-d '<Flexible Sync Configuration>'
FlexibleSyncConfiguration
{
"flexible_sync": {
"state": "enabled",
"database_name": "<Name of Database>",
"client_max_offline_days": <Number>,
"is_recovery_mode_disabled": <Boolean>,
"indexed_queryable_fields_names": <Array of String Field Names>,
"queryable_fields_names": <Array of String Field Names>,
"collection_queryable_fields_names": <Map[String][]String>
}
}

๋™๊ธฐํ™” ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋™๊ธฐํ™” ๊ตฌ์„ฑ ํŒŒ์ผ ์ฐธ์กฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

1 ๋‹จ๊ณ„์— ์„ค๋ช…๋œ ๋Œ€๋กœ ์„œ๋น„์Šค ๊ตฌ์„ฑ์„ ๋‹ค์‹œ ๊ฐ€์ ธ์™€ ๋™๊ธฐํ™” ๊ตฌ์„ฑ์ด ์ถ”๊ฐ€๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ