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 ์ ๋ค์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋ ์ฐ๊ฒฐ๋ ๋ฐ์ดํฐ ์์ค ๊ฐ ํ๋ ์ด์ ์์ด์ผ ํฉ๋๋ค.
MongoDB 5.0 ์ด์์์คํ ํ๋ ๋น์ค๋ MongoDB Atlas cluster .
ํด๋ฌ์คํฐ๋ ์๋ฒ๋ฆฌ์ค ์ธ์คํด์ค ๋๋ ์ฐํฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์คํด์ค ์ผ ์ ์์ต๋๋ค . ๋ฐ์ดํฐ ์์ค ์ ํ ์ฌํญ์ ์ฐธ์กฐํ์ธ์.
๋๊ธฐํ ์ค์ ์ ์ง์ ํฉ๋๋ค
ํ๋กฌํํธ์ ๋ฐ๋ผ Device Sync๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. ์ฌ์ฉ ๊ฐ๋ฅํ ๊ตฌ์ฑ ์ค์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋๊ธฐํ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
์ฑ์ ์ต์ ๋ฒ์ ๊ฐ์ ธ์ค๊ธฐ
์ฑ ๊ตฌ์ฑ ํ์ผ์ ๋ก์ปฌ ๋ณต์ฌ๋ณธ์ ๊ฐ์ ธ์ต๋๋ค. ์ต์ ๋ฒ์ ์ ์ฑ์ ๋ฐ์ผ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์คํํฉ๋๋ค.
appservices pull --remote="<Your App ID>"
UI์์ ๋๋ Admin API๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ฑ ํ์ผ์ ์ฌ๋ณธ์ ๋ด๋ณด๋ผ ์๋ ์์ต๋๋ค. ๋ฐฉ๋ฒ์ ์์๋ณด๋ ค๋ฉด ์ฑ ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
๋๊ธฐํ ๊ตฌ์ฑ ์ถ๊ฐ
์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฐ๊ฒฐ๋ ๋จ์ผ ํด๋ฌ์คํฐ์ ๋ํ ๋๊ธฐํ๋ฅผ ํ์ฑํํ ์ ์์ต๋๋ค. ํด๋ฌ์คํฐ๋ฅผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ง ์ฐ๊ฒฐํ์ง ์์ ๊ฒฝ์ฐ ๋จผ์ ๋ฐ์ดํฐ ์์ค ์ฐ๊ฒฐ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฅด์ธ์.
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> }
์์ธํ ๋ด์ฉ์ ๋๊ธฐํ ๊ตฌ์ฑ ํ์ผ ์ฐธ์กฐ๋ฅผ ํ์ธํ์ธ์.
๋๊ธฐํํ ํด๋ฌ์คํฐ ์ ํ
์ ํ๋ฆฌ์ผ์ด์ ์์ ๋จ์ผ ์ฐ๊ฒฐ๋ cluster์ ๋ํด Realm Mobile Sync๋ฅผ ํ์ฑํํ ์ ์์ต๋๋ค. ์์ง cluster๋ฅผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฐ๊ฒฐํ์ง ์์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ์์ค ์ฐ๊ฒฐ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฅด์ธ์.
์ฐธ๊ณ
์ก์ธ์ค ํ ํฐ์ผ๋ก ์์ฒญ ์ธ์ฆํ๊ธฐ
App Services Admin API ์ ๋ํ ์์ฒญ ์ ์ธ์ฆํ๋ ค๋ฉด MongoDB Cloud API ์ ์ ํจํ ์ต์ ๊ถํ ๋ถ์ฌ ํ ํฐ์ด ํ์ํฉ๋๋ค. ์ ํจํ ์ก์ธ์ค ํ ํฐ์ ํ๋ํ๋ ๋ฐฉ๋ฒ์ ํ์ต ๋ณด๋ ค๋ฉด API ์ธ์ฆ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
๋๊ธฐํ๋ฅผ ๊ตฌ์ฑํ๋ ค๋ฉด ํด๋ฌ์คํฐ์ ์๋น์ค ๊ตฌ์ฑ ํ์ผ์ด ํ์ํฉ๋๋ค. ๊ด๋ฆฌ์ API๋ฅผ ํตํด ๋ชจ๋ ์๋น์ค๋ฅผ ๋์ดํ์ฌ ๊ตฌ์ฑ ํ์ผ์ ์ฐพ์ ์ ์์ต๋๋ค.
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
๊ฐ์ฒด๋ฅผ ์ถ๊ฐํฉ๋๋ค.
๊ฐ๋ฐ ๋ชจ๋ ํ์ฑํ(์ ํ ์ฌํญ)
๊ฐ๋ฐ ๋ชจ๋ ๋ฅผ ํ์ฑํํ์ฌ ํ๋ก๋์ ์ ๊ฐ์ํํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ธ์.
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}'
๋๊ธฐํ ๊ตฌ์ฑ ์ถ๊ฐ ๋ฐ ๋ฐฐํฌ
๋ณ๊ฒฝ ์ฌํญ์ ๋ฐฐํฌํ๊ณ ๋ฐ์ดํฐ ๋๊ธฐํ๋ฅผ ์์ํ๋ ค๋ฉด ๋ค์ ํ
ํ๋ฆฟ ๊ตฌ์ฑ์ ์ฌ์ฉํ์ฌ 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>'
{ "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 ๋จ๊ณ์ ์ค๋ช ๋ ๋๋ก ์๋น์ค ๊ตฌ์ฑ์ ๋ค์ ๊ฐ์ ธ์ ๋๊ธฐํ ๊ตฌ์ฑ์ด ์ถ๊ฐ๋์๋์ง ํ์ธํ ์ ์์ต๋๋ค.