{"id":1985,"date":"2015-10-23T08:04:41","date_gmt":"2015-10-23T08:04:40","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1985"},"modified":"2025-06-13T19:58:53","modified_gmt":"2025-06-14T02:58:53","slug":"couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/","title":{"rendered":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ub77c\uc774\ube0c \ub274\uc695:  Couchbase Mobile 102 - \ubaa8\ubc14\uc77c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \ubcf4\uc548 \ub3d9\uae30\ud654\ub97c \ucd94\uac00\ud558\ub294 \ubc29\ubc95"},"content":{"rendered":"<p style=\"text-align: center;\"><a href=\"https:\/\/bit.ly\/CBNYC2015\"><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2015\/october\/couchbase-live-new-york-couchbase-mobile-102---how-to-add-secure-sync-to-your-mobile-applications\/events.cbliveny.bannerheader.lockup.png\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">102 \uc138\uc158\uc758 <a href=\"https:\/\/bit.ly\/couchbaseNYC01\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ub77c\uc774\ube0c \ub274\uc695 \ubaa8\ubc14\uc77c \ud2b8\ub799<\/a>\uc758 \ucf54\ub4dc\uc5d0 \uc124\uba85\ub41c Couchbase Mobile \uc0d8\ud50c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uacc4\uc18d \ubc18\ubcf5\ud588\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/bit.ly\/CBNYC2015_101\">\"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ubaa8\ubc14\uc77c 101: \uccab \ubc88\uc9f8 \ubaa8\ubc14\uc77c \uc571\uc744 \uad6c\ucd95\ud558\ub294 \ubc29\ubc95\" \uc138\uc158.<\/a><\/p>\n<p style=\"text-align: justify;\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ubaa8\ubc14\uc77c 102 \uc138\uc158\uc5d0\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \ub0b4\uc6a9\uc744 \uc0b4\ud3b4\ubcf4\uc558\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/bit.ly\/sync_gateway\">\ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774<\/a> \uc758 \uae30\ub2a5\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\uace0, \uae43\ud5c8\ube0c \ub9ac\ud3ec\uc9c0\ud1a0\ub9ac\uc5d0\uc11c \ucc3e\uc744 \uc218 \uc788\ub294 Grocery Sync \uc0d8\ud50c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ud1b5\ud574 \"\ubaa8\ubc14\uc77c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \ubcf4\uc548 \ub3d9\uae30\ud654\ub97c \ucd94\uac00\ud558\ub294 \ubc29\ubc95\"\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\uc138\uc694. <a href=\"https:\/\/github.com\/couchbaselabs\/Grocery-Sync-iOS\">iOS<\/a> \uadf8\ub9ac\uace0 <a href=\"https:\/\/github.com\/couchbaselabs\/GrocerySync-Android\">Android<\/a>.  \uc774 \ube14\ub85c\uadf8\uc5d0\uc11c\ub294 \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uc5d0 \ub300\ud574 \uc124\uba85\ud55c \ub0b4\uc6a9\uc744 \uc0b4\ud3b4\ubd05\ub2c8\ub2e4. \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\ub294 Couchbase Lite\uc640 Couchbase Server\ub97c \ud558\ub098\ub85c \ubb36\ub294 \uad6c\uc131 \uc694\uc18c\uc785\ub2c8\ub2e4. <a href=\"https:\/\/www.slideshare.net\/Couchbase\/couchbase-mobile-102-couchbase-live-new-york-2015\">\uc2ac\ub77c\uc774\ub4dc\ub97c \ucc38\uc870\ud558\uc138\uc694.<\/a> \uc5d0 \ub300\ud55c \uc8fc\uc81c\uc640 \ucf54\ub4dc \uc2a4\ub2c8\ud3ab\uc5d0 \ub300\ud574 \uc124\uba85\ud569\ub2c8\ub2e4.<\/p>\n<p style=\"text-align: justify;\"><strong>\uc8fc\uc694 \ubaa8\ubc14\uc77c \ub370\uc774\ud130 \ubcf4\uc548 \ubb38\uc81c<\/strong><\/p>\n<p style=\"text-align: justify;\">\ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uac00 \ud574\uacb0\ud558\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub418\ub294 \uc601\uc5ed \uc911 \ud558\ub098\ub294 \ub370\uc774\ud130 \ubcf5\uc81c\uc774\uba70, \uc774\ub294 \ud074\ub77c\uc6b0\ub4dc\uc5d0\uc11c \uc7a5\uce58\uc758 \ubaa8\ubc14\uc77c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc73c\ub85c \ub370\uc774\ud130\uac00 \uc55e\ub4a4\ub85c \ub3d9\uae30\ud654\ub418\ub294 \ubc29\uc2dd\uc5d0 \uad00\ud55c \uac83\uc785\ub2c8\ub2e4.  \ubcf5\uc81c\uac00 \uc774\ub8e8\uc5b4\uc9c0\uae30 \uc804 \uc0ac\uc6a9\uc790 \uc778\uc99d\uc740 \ub370\uc774\ud130 \ud30c\ud2f0\uc154\ub2dd\uc774 \uc774\ub8e8\uc5b4\uc9c8 \ub54c \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uac00 \ucc98\ub9ac\ud558\ub294 \ub610 \ub2e4\ub978 \ud575\uc2ec \uc601\uc5ed\uc785\ub2c8\ub2e4.  \ubcf5\uc81c\uac00 \uc644\ub8cc\ub418\uba74 \uc0ac\uc6a9\uc790\uac00 \ud2b9\uc815 \ub370\uc774\ud130\ub97c \ubc30\ud3ec\ud560 \uc704\uce58\ub97c \uacb0\uc815\ud560 \uc218 \uc788\ub3c4\ub85d \ub370\uc774\ud130\ub97c \uc801\uc808\ud788 \ud30c\ud2f0\uc154\ub2dd\ud574\uc57c \ud569\ub2c8\ub2e4.  \uadf8\ub9ac\uace0 \ub370\uc774\ud130 \uc561\uc138\uc2a4 \uc81c\uc5b4\uac00 \uc788\ub294\ub370, \uc778\uc99d\ub41c \uc0ac\uc6a9\uc790\uc5d0\uac8c \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uac00 \uadf8\uc5d0 \ub530\ub77c \uc77d\uae30 \ubc0f \uc4f0\uae30 \uad8c\ud55c\uc744 \uc124\uc815\ud558\ub294 \ub370 \ub3c4\uc6c0\uc744 \uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4.  \uac01\uac01\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p style=\"text-align: justify;\"><strong>[1] \uc0ac\uc6a9\uc790 \uc778\uc99d<\/strong><\/p>\n<p style=\"text-align: justify;\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ubaa8\ubc14\uc77c\uc774 \uc9c0\uc6d0\ud558\ub294 \ud50c\ub7ec\uadf8\ud615 \uc778\uc99d \ubaa8\ub378\uc744 \uc0ac\uc6a9\ud558\uba74 \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uc5d0\uc11c \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc544\ud0a4\ud14d\ucc98\uc758 \ubcf4\uc548 \ud504\ub808\uc784\uc6cc\ud06c\uc5d0 \ub300\ud55c \uc0ac\uc6a9\uc790 \uc9c0\uc815 \uad6c\uc131\uc774 \uac00\ub2a5\ud55c \ub2e4\uc591\ud55c \ubc29\ubc95\uc73c\ub85c \uc778\uc99d\uc744 \uad6c\ud604\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.  \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\ub294 '\uae30\ubcf8 \uc778\uc99d', 'Facebook', '\ud398\ub974\uc18c\ub098' \uc778\uc99d \ubaa8\ub378\uc744 \ud1b5\ud574 \uc138 \uac00\uc9c0 \ud37c\ube14\ub9ad \uacf5\uae09\uc5c5\uccb4\ub97c \uc9c0\uc6d0\ud569\ub2c8\ub2e4.<b>.<\/b><\/p>\n<div style=\"font-family: 'Helvetica Neue'; font-size: 14px;\"><b>Facebook \uc778\uc99d:  \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774 \uad6c\uc131<\/b><\/div>\n<div style=\"font-family: 'Helvetica Neue'; font-size: 14px;\">\n<div>\uc544\ub798 \ucf54\ub4dc \uc2a4\ub2c8\ud3ab\uc740 \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uc6a9 Facebook\uc744 \uad6c\uc131\ud558\ub294 \ubc29\ubc95\uc744 \uc124\uba85\ud569\ub2c8\ub2e4.<\/div>\n<pre><code class=\"language-javascript\">\r\n{\r\n    \"facebook\" : { \"register\" : false },\r\n    \"databases\": {\r\n        \"grocery-sync\": {\r\n            \u201cserver\u201d:\u201dhttps:\/\/cbserver:8091\u201d,\r\n            \u201cbucket\":\"grocery-sync\",\r\n            \"users\": {\"GUEST\": {\"disabled\": true}},\r\n            \"sync\":`function(doc) {channel(doc.channels);}`\r\n        }\r\n    }\r\n}\r\n<\/code><\/pre>\n<div>\uad6c\uc131 \ud30c\uc77c\uc5d0\uc11c Facebook\uc744 \uc778\uc99d \uacf5\uae09\uc790\ub85c \uc0ac\uc6a9\ud558\ub3c4\ub85d \uc815\uc758\ud588\uc2b5\ub2c8\ub2e4.  \uc774 \uc2dc\uc810 \uc774\ud6c4\uc5d0\ub294 \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uac00 \ud074\ub77c\uc774\uc5b8\ud2b8\uc758 \ud1a0\ud070\uc744 \uc778\uc99d\ud558\uae30 \uc704\ud574 Facebook\uacfc \ud1b5\uc2e0\ud558\ub294 \uc791\uc5c5\uc744 \uc218\ud589\ud569\ub2c8\ub2e4.<\/div>\n<\/div>\n<div style=\"font-family: 'Helvetica Neue'; font-size: 14px;\">\n<div><b>\uc0ac\uc6a9\uc790 \uc9c0\uc815 \uacf5\uae09\uc790 \uc778\uc99d:  \ud1b5\uc2e0 \uacbd\ub85c \u00a0\u00a0 <\/b><\/div>\n<div><\/div>\n<div style=\"text-align: justify;\">LDAP \uc11c\ubc84 \uc124\uc815\uc5d0\uc11c \uc0ac\uc6a9\uc790 \uae30\ubc18\uc774 \uc874\uc7ac\ud558\ub294 \uc0ac\uc6a9\uc790 \uc9c0\uc815 \uacf5\uae09\uc790\ub97c \uad6c\ud604\ud558\ub824\uba74 \ubaa8\ubc14\uc77c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \uba3c\uc800 \uc571 \ub610\ub294 \uc778\uc99d \uc11c\ubc84\ub97c \uac00\ub9ac\ud0b5\ub2c8\ub2e4.  \uadf8\ub7f0 \ub2e4\uc74c \uc778\uc99d \uc11c\ubc84\uac00 \uc0ac\uc6a9\uc790 \uc778\uc99d\uc744 \ub2f4\ub2f9\ud558\uba70, \uc0ac\uc6a9\uc790\ub97c \uc131\uacf5\uc801\uc73c\ub85c \uc778\uc99d\ud558\uba74 \uc778\uc99d \uc11c\ubc84\ub294 \ub450 \ubc88\uc9f8 \ub2e8\uacc4\uc5d0\uc11c \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774 \uad00\ub9ac\uc790 API\ub97c \ud638\ucd9c\ud558\uc5ec \ud574\ub2f9 \uc0ac\uc6a9\uc790\uc5d0 \ub300\ud55c \uc720\ud6a8\ud55c \uc138\uc158\uc744 \uac00\uc838\uc635\ub2c8\ub2e4.  \uadf8\ub7f0 \ub2e4\uc74c \ud574\ub2f9 \uc138\uc158 \ud1a0\ud070\uc740 \ub2e4\uc2dc \uc778\uc99d \uc11c\ubc84\ub85c \ub77c\uc6b0\ud305\ub41c \ub2e4\uc74c \ubaa8\ubc14\uc77c \ud074\ub77c\uc774\uc5b8\ud2b8\ub85c \ubc18\ud658\ub429\ub2c8\ub2e4.  \ubaa8\ubc14\uc77c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \ud1a0\ud070\uc744 \ud68d\ub4dd\ud55c \ud6c4 \uc138 \ubc88\uc9f8\uc774\uc790 \ub9c8\uc9c0\ub9c9 \ub2e8\uacc4\ub294 \uc138\uc158 \ud1a0\ud070\uc744 \uc0ac\uc6a9\ud558\uc5ec \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uc640 \uc9c1\uc811 \ud1b5\uc2e0\ud558\uc5ec \uc7a5\uce58\uc5d0\uc11c \uc0ac\uc6a9\uc790\uc5d0\uac8c \ud544\uc694\ud55c \ubaa8\ub4e0 \ub370\uc774\ud130\ub97c \uac00\uc838\uc624\ub294 \uac83\uc785\ub2c8\ub2e4.<\/div>\n<div style=\"text-align: justify;\"><\/div>\n<div><strong>[2] \ub370\uc774\ud130 \uc77d\uae30 \ubc0f \uc4f0\uae30 \uc561\uc138\uc2a4<\/strong><\/div>\n<\/div>\n<p style=\"text-align: justify;\">\ub9ce\uc740 \ubcf4\uc548 \uc9c8\ubb38\uc740 \uc77d\uae30 \ubc0f \uc4f0\uae30 \uc561\uc138\uc2a4\ub97c \uad00\ub9ac\ud558\ub294 \ubc29\ubc95\uc5d0 \uad00\ud55c \uac83\uc785\ub2c8\ub2e4.  \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\ub97c \uc0ac\uc6a9\ud558\uba74 \ubb38\uc11c \uc218\uc900\uc5d0\uc11c \uc77d\uae30 \uce21 \uc815\ucc45\uc5d0 \ub300\ud55c \uc138\ubd84\ud654\ub41c \ubcf4\uc548 \uc815\ucc45\uc744 \uc815\uc758\ud55c \ub2e4\uc74c \ud544\ub4dc \uc218\uc900\uae4c\uc9c0 \uc4f0\uae30 \uce21 \uc815\ucc45\uc744 \uc815\uc758\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.  \uc77c\ubc18\uc801\uc778 \uc815\ucc45 \uc2dc\ud589 \ud504\ub808\uc784\uc6cc\ud06c\ub294 \ubcf5\uc7a1\ud55c \ubcf4\uc548 \uaddc\uce59\uc744 \uc720\uc5f0\ud558\uac8c \uc815\uc758\ud558\uc5ec Couchbase Lite\ub97c \uc2e4\ud589\ud558\ub294 \ubaa8\ubc14\uc77c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc73c\ub85c \ud655\uc7a5\ud560 \uc218 \uc788\ub294 Javascript \ub3d9\uae30\ud654 \uae30\ub2a5\uc744 \uae30\ubc18\uc73c\ub85c \ud569\ub2c8\ub2e4.<\/p>\n<p style=\"text-align: justify;\"><strong>\ub3d9\uae30\ud654 \uae30\ub2a5:  \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774 \uad6c\uc131<\/strong><\/p>\n<p style=\"text-align: justify;\">\ub3d9\uae30\ud654 \ud568\uc218\ub294 \uc77d\uae30-\uc4f0\uae30 \uc561\uc138\uc2a4\ub97c \uad00\ub9ac\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud55c \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uc758 \ud575\uc2ec\uc774\uba70 \ub300\ubd80\ubd84\uc758 \ub370\uc774\ud130 \uc561\uc138\uc2a4 \uaddc\uce59\uc774 \uc815\uc758\ub418\ub294 \uacf3\uc785\ub2c8\ub2e4.  \ub530\ub77c\uc11c \ub3d9\uae30\ud654 \ud568\uc218\ub294 JSON \ubb38\uc11c\uac00 \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uc5d0 \uae30\ub85d\ub420 \ub54c\ub9c8\ub2e4 \uc2e4\ud589\ub418\ub294 JavaScript \ud568\uc218\uc774\uba70, \ubcf4\uc548 \uad6c\ud604\uc758 \ud575\uc2ec\uc785\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-javascript\">{\r\n    \"databases\": {\r\n        \"grocery-sync\": {\r\n            \u201cserver\u201d:\"https:\/\/walrus:\",\r\n            \u201cbucket\":\"grocery-sync\",\r\n            \"users\": {\"GUEST\": {\"disabled\": true}},\r\n            \u201csync\u201d:`function(doc,oldDoc) {\r\n                channel(doc.channels);  }`\r\n        }\r\n    }\r\n}\r\n<\/code><\/pre>\n<p style=\"text-align: justify;\">\uc774 \ud568\uc218\ub294 \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774 \uad6c\uc131 \ud30c\uc77c\uc5d0 \uc815\uc758\ub418\uc5b4 \uc788\uc73c\uba70, \uba54\uc11c\ub4dc \uc11c\uba85\uc740 \ubb38\uc11c\uc758 \ud604\uc7ac \uc218\uc815\ubcf8\uc778 doc\uc640 \uc774\uc804 \uc218\uc815\ubcf8\uc778 oldDoc\uc744 \ucde8\ud569\ub2c8\ub2e4.  \uba54\uc11c\ub4dc \ubcf8\ubb38\uc740 \uc774 \ub450 \uac00\uc9c0 \uc785\ub825\uc744 \uae30\ubc18\uc73c\ub85c \ubcf4\uc548 \uaddc\uce59\uc774 \uc815\uc758\ub418\ub294 \uacf3\uc785\ub2c8\ub2e4.  \uc5ec\uae30\uc5d0\uc11c \uac04\ub2e8\ud55c \uae30\ubcf8 \ub3d9\uae30\ud654 \uae30\ub2a5\uc744 \uba3c\uc800 \uc815\uc758\ud55c \ub2e4\uc74c \ubaa8\ub4e0 \uacbd\uc6b0\uc5d0 \uc801\uc6a9\ud560 \uc218 \uc788\ub294 \uace0\uae09 \ubcf4\uc548 \uaddc\uce59\uc744 \uc11c\uc11c\ud788 \uad6c\ucd95\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.  \uc774 \uc811\uadfc \ubc29\uc2dd\uc744 \uc0ac\uc6a9\ud558\uba74 \uc0c8\ub85c\uc6b4 \ubb38\uc11c \uc720\ud615\uc774 \uc815\uc758\ub418\uac70\ub098 JSON \uc2a4\ud0a4\ub9c8\uac00 \ubcc0\uacbd\ub418\ub294 \uacbd\uc6b0 \ub3d9\uae30\ud654 \ud568\uc218\ub97c \uc218\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p style=\"text-align: justify;\"><strong>\ub3d9\uae30\ud654 \uae30\ub2a5:  \uc4f0\uae30 \uad8c\ud55c<\/strong><\/p>\n<div style=\"font-family: 'Helvetica Neue'; font-size: 14px;\">\uc4f0\uae30 \uce21 \ubcf4\uc548\uc744 \uc0ac\uc6a9\ud558\uba74 \uc54c\ub824\uc9c4 \uc0ac\uc6a9\uc790\ub85c\ubd80\ud130 \uc624\ub294 \ud2b9\uc815 \ubb38\uc11c\uac00 \ubc31\uc5d4\ub4dc \uc800\uc7a5\uc18c\uc5d0 \uc4f0\uc5ec\uc9c8 \uc218 \uc788\ub294\uc9c0 \uc5ec\ubd80\ub97c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.  \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uc758 \uacbd\uc6b0 \ub3d9\uae30\ud654 \uae30\ub2a5\uc5d0\ub294 \uc4f0\uae30 \uce21 \uad8c\ud55c\uc5d0 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \ub124 \uac00\uc9c0 \uc8fc\uc694 \ubc29\ubc95\uc774 \uc788\uc2b5\ub2c8\ub2e4:<\/div>\n<div style=\"font-family: 'Helvetica Neue'; font-size: 14px;\">\n<ol>\n<li><strong>\uc694\uad6c \uc0ac\uc6a9\uc790()<\/strong>:  \uc0ac\uc6a9\uc790 ID \ubaa9\ub85d\uc744 \uc785\ub825\uc73c\ub85c \ubc1b\uace0 \ud604\uc7ac \ud65c\uc131 \uc0ac\uc6a9\uc790\uac00 \ud574\ub2f9 \ubaa9\ub85d\uc5d0 \uc18d\ud558\ub294\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4.<\/li>\n<li><strong>requireRole()<\/strong>:  \uc694\uad6c \uc0ac\uc6a9\uc790\uc5d0\uac8c \ud2b9\uc815 \uc5ed\ud560\uc774 \ubd80\uc5ec\ub418\uc5c8\ub294\uc9c0 \ud655\uc778\ud560 \uc218 \uc788\ub294 \uc5ed\ud560 \ubaa9\ub85d\uc744 \uc785\ub825\uc73c\ub85c \ubc1b\uc2b5\ub2c8\ub2e4. \ubd80\uc5ec\ub418\uc9c0 \uc54a\uc740 \uacbd\uc6b0 \ubb38\uc11c\uac00 \uac70\ubd80\ub429\ub2c8\ub2e4.<\/li>\n<li><strong>requireAccess()<\/strong>:  \ud604\uc7ac \uc0ac\uc6a9\uc790\uc758 \ubaa9\ub85d\uacfc \ucc44\ub110 \ubaa9\ub85d\uc744 \uc785\ub825\uc73c\ub85c \ubc1b\uc544 \ud2b9\uc815 \ucc44\ub110\uc774 \ubd80\uc5ec\ub418\uc5c8\ub294\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4.  \uc0ac\uc6a9\uc790\uac00 \ubaa9\ub85d\uc5d0 \ud3ec\ud568\ub418\uc9c0 \uc54a\uc73c\uba74 \uac70\ubd80\ub429\ub2c8\ub2e4.<\/li>\n<li><strong>throw()<\/strong>:  \ub358\uc9c0\uae30\ub97c \uc0ac\uc6a9\ud558\uba74 \ub4e4\uc5b4\uc624\ub294 \ubb38\uc11c\uc5d0 \ub300\ud574 \uc6d0\ud558\ub294 \uac80\uc0ac\ub97c \uc218\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 \ubb38\uc11c\uc758 \uc720\ud615\uc774 'item'\uc778 \uacbd\uc6b0 \uc720\ud6a8\uc131 \uac80\uc0ac\ub97c \uc218\ud589\ud558\uc5ec \uc720\ud615\uc774 \uc77c\uce58\ud558\uc9c0 \uc54a\uc73c\uba74 \ubb38\uc11c\ub97c \uac70\ubd80\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.  \ub9c8\ucc2c\uac00\uc9c0\ub85c \ud2b9\uc815 \ubc94\uc704 \ub0b4\uc5d0 \uc788\ub294 \uac12\uc744 \uae30\ubc18\uc73c\ub85c \uc720\ud6a8\uc131 \uac80\uc0ac\ub97c \uc218\ud589\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.  \ub530\ub77c\uc11c \ub3d9\uae30\ud654 \ud568\uc218\uc5d0\uc11c \uad6c\ud604\ud560 \uc218 \uc788\ub294 \ub9e4\uc6b0 \uc138\ubd84\ud654\ub41c \ud544\ub4dc \uc218\uc900 \uc720\ud615 \uc720\ud6a8\uc131 \uac80\uc0ac\ub294 \ud574\ub2f9 \uae30\uc900\uc744 \ucda9\uc871\ud558\uc9c0 \uc54a\ub294 \ubb38\uc11c\uc5d0 throw() \uba54\uc11c\ub4dc\uc640 \ud568\uaed8 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.  throw()\ub97c \uc0ac\uc6a9\ud558\uba74 \uc624\ub958\uac00 \ubc1c\uc0dd\ud55c \uc774\uc720\uc640 \ubb38\uc11c\uac00 \uac70\ubd80\ub41c \uc774\uc720\uc5d0 \ub300\ud55c \uc624\ub958 \uc138\ubd80 \uc815\ubcf4\ub3c4 \uc81c\uacf5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ol>\n<\/div>\n<p style=\"text-align: justify;\"><strong>\ub3d9\uae30\ud654 \uae30\ub2a5:  \uc77d\uae30 \uad8c\ud55c <\/strong><\/p>\n<div style=\"font-family: 'Helvetica Neue'; font-size: 14px;\">\uc77d\uae30 \uce21 \ubcf4\uc548\uc744 \uc0ac\uc6a9\ud558\uba74 \ubb38\uc11c\uc5d0 '\ucc44\ub110()' \ud504\ub9ac\ubbf8\ud2f0\ube0c\ub97c \uc0ac\uc6a9\ud574 \ub370\uc774\ud130\ub97c \ubd84\ud560\ud558\uace0 \uc0ac\uc6a9\uc790\ub294 '\uc561\uc138\uc2a4()' \ud504\ub9ac\ubbf8\ud2f0\ube0c\ub97c \uc0ac\uc6a9\ud574 \ub2e4\ub978 \ucc44\ub110\uc5d0 \ud560\ub2f9\ub418\ub294 '\ucc44\ub110'\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.  \uc5ec\uae30\uc11c \uac1c\ub150\uc740 \ubaa8\ub4e0 \ubb38\uc11c\uac00 \ud558\ub098 \uc774\uc0c1\uc758 \ucc44\ub110 \uc138\ud2b8\uc640 \uc5f0\uacb0\ub418\uace0 \ubaa8\ub4e0 \uc0ac\uc6a9\uc790 \uc5ed\ud560\uc774 \uc77d\uc744 \uc218 \uc788\ub294 \ucc44\ub110 \uc138\ud2b8\ub97c \uac16\ub294\ub2e4\ub294 \uac83\uc785\ub2c8\ub2e4.<\/div>\n<div style=\"font-family: 'Helvetica Neue'; font-size: 14px;\"><img loading=\"lazy\" decoding=\"async\" src=\"\/wp-content\/original-assets\/2015\/october\/couchbase-live-new-york-couchbase-mobile-102---how-to-add-secure-sync-to-your-mobile-applications\/channels.png\" width=\"554\" height=\"392\" \/><\/div>\n<p style=\"text-align: justify;\">\ucc44\ub110 \uba85\ub839\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc0ac\uc6a9\uc790\ub97c \ucc44\ub110\uc5d0 \ud560\ub2f9\ud558\ub294 \uc989\uc2dc \ud2b9\uc815 \ucc44\ub110\uc774 \uc874\uc7ac\ud558\uac8c \ub429\ub2c8\ub2e4.  \uc774 \uc2dc\uc810\uc5d0\uc11c \uc0ac\uc6a9\uc790\ub294 \ub3d9\uc77c\ud55c \ucc44\ub110 \uc774\ub984\uc73c\ub85c \ud0dc\uadf8\uac00 \uc9c0\uc815\ub41c \ubb38\uc11c\ub97c \ucc3e\uac8c \ub429\ub2c8\ub2e4.  \ubcc4\ud45c[*]\uc640 \ub290\ub08c\ud45c[!] \ub9e4\uac1c\ubcc0\uc218\uac00 \uc788\ub294 \ub450 \uac1c\uc758 \ud2b9\uc218 \ucc44\ub110\uc774 \uc874\uc7ac\ud569\ub2c8\ub2e4.<\/p>\n<ol>\n<li style=\"text-align: justify;\">\uc2a4\ud0c0[*]:  \uc2a4\ud0c0 \ucc44\ub110\uc740 \ubaa8\ub4e0 \ubb38\uc11c\uac00 \ud574\ub2f9 \ucc44\ub110\uc5d0 \uc790\ub3d9\uc73c\ub85c \ucd94\uac00\ub418\ub294 \ucc44\ub110\uc785\ub2c8\ub2e4.  \uc608\ub97c \ub4e4\uc5b4 \uac8c\uc2a4\ud2b8 \uc0ac\uc6a9\uc790\uc5d0\uac8c * \ubcc4\ud45c \ucc44\ub110\uc774 \ubd80\uc5ec\ub418\uba74 \ubaa8\ub4e0 \ubb38\uc11c\uc5d0 \ub300\ud55c \uac1c\ubc29\ud615 \uc561\uc138\uc2a4 \uad8c\ud55c\uc744 \uac16\uac8c \ub429\ub2c8\ub2e4.  \uc774 \ucc44\ub110 \uc18d\uc131\uc758 \uba85\ud655\ud55c \uc0ac\uc6a9 \uc0ac\ub840\ub294 \ucc44\ub110\uc5d0 * \ubcc4\ud45c\uac00 \uc788\ub294 \ubaa8\ub4e0 \uc0ac\uc6a9\uc790\uac00 \uc2dc\uc2a4\ud15c\uc758 \ubaa8\ub4e0 \ubb38\uc11c\ub97c \ubcfc \uc218 \uc788\ub294 \uad00\ub9ac\uc790 \uad8c\ud55c\uacfc \uc720\uc0ac\ud569\ub2c8\ub2e4.<\/li>\n<li style=\"text-align: justify;\">\ub290\ub08c\ud45c[!]  \ub450 \ubc88\uc9f8 \ud2b9\uc218 \ucc44\ub110\uc740 ! \ub290\ub08c\ud45c \uc18d\uc131\uc73c\ub85c, \ubb38\uc11c\ub97c \uacf5\uac1c \ucc44\ub110\uc5d0 \ucd94\uac00\ud558\uba74 \ubaa8\ub4e0 \uc0ac\uc6a9\uc790\uac00 \ud574\ub2f9 \ud2b9\uc815 \ubb38\uc11c\ub97c \ubcfc \uc218 \uc788\ub294 \ubb38\uc11c \uad00\uc810\uc5d0\uc11c \ucd08\uc810\uc744 \ub9de\ucd98 \uacf5\uac1c \ucc44\ub110\uc744 \uc124\uba85\ud558\ub294 \ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.  \uc774 \ucc44\ub110 \uc18d\uc131\uc758 \uba85\ud655\ud55c \uc0ac\uc6a9 \uc0ac\ub840\ub294 \uacf5\uac1c \uacf5\uc9c0\ub97c \uc704\ud55c \ubb38\uc11c\ub97c \ub9cc\ub4e4\uac70\ub098 \ubaa8\ub4e0 \uc0ac\uc6a9\uc790\uc5d0\uac8c \uba54\uc2dc\uc9c0\ub97c \ubc29\uc1a1\ud558\ub294 \uac83\uacfc \uc720\uc0ac\ud569\ub2c8\ub2e4.<\/li>\n<\/ol>\n<p style=\"text-align: justify;\"><strong>\ub3d9\uae30\ud654 \uae30\ub2a5:  \uc608\uc81c<\/strong><\/p>\n<p style=\"text-align: justify;\">\ub2e4\uc74c \uc608\uc81c\uc5d0\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4. <span style=\"font-family: 'Helvetica Neue'; font-size: 14px;\">\uc704\uc5d0\uc11c \uc124\uba85\ud55c \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\uc5ec <\/span>\ubcf4\uc548\uc744 \uc720\uc9c0\ud558\ub294 \ubc29\ubc95 <span style=\"font-family: 'Helvetica Neue'; font-size: 14px;\">\uc2dd\ub8cc\ud488 \ub3d9\uae30\ud654 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc740 Couchbase Mobile 101 \uc138\uc158\uc5d0\uc11c \ub2e4\uc74c\uacfc \uac19\uc774 \uc874\uc7ac\ud569\ub2c8\ub2e4. <\/span>\uac1c\uc778 \uc815\ubcf4\uac00 \ubcf4\ud638\ub418\uc9c0 \uc54a\ub294 \uc644\uc804\ud788 \ubcf4\uc548\ub418\uc9c0 \uc54a\uc740 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc785\ub2c8\ub2e4.  \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\ub97c \ubc18\ubcf5\ud558\uba74 \uc0ac\uc6a9\uc790\ub294 \ucd94\uac00\ub418\ub294 \ubaa8\ub4e0 \ud56d\ubaa9\uc774 \ub3d9\uc77c\ud55c \ubaa9\ub85d\uc5d0 \ud45c\uc2dc\ub418\ub294 \uac83\uc774 \uc544\ub2c8\ub77c \uc790\uc2e0\uc758 \ud56d\ubaa9\ub9cc \ubcf4\uac8c \ub429\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-javascript\">{\r\n    \"log\" : [\u201c*\u201d],\r\n    \"databases\": {\r\n        \"grocery-sync\": {\r\n            \u201cserver\u201d:\u201dwalrus:\u201d,\r\n            \u201cbucket\":\"grocery-sync\",\r\n            \"users\": {\r\n    \"GUEST\": {\r\n  \"disabled\": false,\r\n  \u201cadmin_channels\u201d : [\u201c*\u201d] }\r\n             }\r\n         }\r\n      }\r\n }\r\n<\/code><\/pre>\n<div>\ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uc758 \uc2dc\uc791 \uad6c\uc131 \ud30c\uc77c\uc740 \uc544\ubb34\uac83\ub3c4 \ucf1c\uc838 \uc788\uc9c0 \uc54a\uc740 \uc0c1\ud0dc\uc774\uba70 Grocery \ub3d9\uae30\ud654 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uacfc \ud568\uaed8 \uc81c\uacf5\ub418\ub294 \uae30\ubcf8 \uc124\uc815\uc785\ub2c8\ub2e4.  \ub610\ud55c \uac8c\uc2a4\ud2b8 \uc0ac\uc6a9\uc790\ub97c \ud65c\uc131\ud654\ud558\uc5ec \uc0ac\uc6a9\uc790\uac00 \ubaa8\ub4e0 \ucc44\ub110\uc5d0 \uc561\uc138\uc2a4\ud560 \uc218 \uc788\ub3c4\ub85d \ud568\uc73c\ub85c\uc368 \ucd94\uac00\ub41c \ubaa8\ub4e0 \ubb38\uc11c\uc640 \uc0c8 \ud56d\ubaa9\uc744 \ubcfc \uc218 \uc788\ub3c4\ub85d \ud569\ub2c8\ub2e4.  \ubcf4\uc548\uc744 \ucd94\uac00\ud558\uae30 \uc704\ud574 \uac00\uc7a5 \uba3c\uc800 \ud574\uc57c \ud560 \uc77c\uc740 \uc544\ub798\uc5d0\uc11c \uad6c\ud604\ud560 \uc0ac\uc6a9\uc790 \uc778\uc99d\uc785\ub2c8\ub2e4.<\/div>\n<pre><code class=\"language-javascript\">{\r\n    \u201dlog\" : [\u201c*\u201d],\r\n    \"databases\": {\r\n        \"grocery-sync\": {\r\n            \u201cserver\u201d:\u201dwalrus:\u201d,\r\n            \u201cbucket\":\"grocery-sync\",\r\n            \"users\": {\r\n      \u201calice\u201d: {\r\n  \u201cdisabled\u201d : false,\r\n  \u201cpassword\u201d: \u201cpassword\u201d,\r\n  \u201cadmin_channels\u201d:[\u201c*\u201d] },\r\n     \u201cbob\u201d: {\r\n  \u201cdisabled\u201d : false,\r\n  \u201cpassword\u201d: \u201cpassword\u201d,\r\n  \u201cadmin_channels\u201d:[\u201c*\u201d] }\r\n            }\r\n      }\r\n }\r\n<\/code><\/pre>\n<div>\uc774 \uc544\uc774\ub514\uc5b4\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uc77c\ubd80\uc778 \uac1c\ubcc4 \uc0ac\uc6a9\uc790\ub97c \uc2dd\ubcc4\ud558\uace0 \uc774\ub97c \uc571 \ub0b4 \ubcf4\uc548 \uc870\uce58\ub85c \uc0ac\uc6a9\ud558\ub294 \uac83\uc785\ub2c8\ub2e4.  \uad6c\uc131 \ud30c\uc77c\uc744 \uc5c5\ub370\uc774\ud2b8\ud558\uc5ec Alice\uc640 Bob\uc774\ub77c\ub294 \uc0ac\uc6a9\uc790\ub97c \ub9cc\ub4ed\ub2c8\ub2e4.  \uac8c\uc2a4\ud2b8 \uacc4\uc815\uc744 \uc81c\uac70\ud558\uace0 \uae30\ubcf8 \uc778\uc99d\uc744 \uc0ac\uc6a9\ud558\uc5ec \ub450 \uc0ac\uc6a9\uc790\ub97c \ubbf8\ub9ac \uc815\uc758\ud558\uc5ec \ucc98\uc74c\uc5d0\ub294 \uc0ac\uc6a9\uc790\uac00 \ubaa8\ub4e0 \ucc44\ub110\uc5d0 \uc561\uc138\uc2a4\ud560 \uc218 \uc788\ub294 \uad8c\ud55c\uc744 \uac16\ub3c4\ub85d \ud569\ub2c8\ub2e4.  \uc774\uc81c \uc0ac\uc6a9\uc790\uac00 \uc0dd\uc131\ub418\uc5c8\uc73c\ubbc0\ub85c \uc571\uc5d0\uc11c \uc0ac\uc6a9\uc790\uc5d0 \ub300\ud55c \uc77d\uae30 \ubc0f \uc4f0\uae30 \ubcf4\uc548 \ub85c\uc9c1\uc744 \uc815\uc758\ud560 \uc218 \uc788\ub294 \uc0ac\uc6a9\uc790 \uc9c0\uc815 \ub3d9\uae30\ud654 \uae30\ub2a5\uc744 \ub9cc\ub4e4\ub824\uace0 \ud569\ub2c8\ub2e4.<\/div>\n<pre><code class=\"language-javascript\">{\r\n    \u201dlog\" : [\u201c*\u201d],\r\n    \"databases\": {\r\n        \"grocery-sync\": {\r\n            \u201cserver\u201d:\u201dwalrus:\u201d,\r\n            \u201cbucket\":\"grocery-sync\",\r\n            \"users\": {\r\n      \u201calice\u201d: {\r\n  \u201cdisabled\u201d : false,\r\n  \u201cpassword\u201d: \u201cpassword\u201d,\r\n  \u201cadmin_channels\u201d:[\u201c*\u201d] },\r\n     \u201cbob\u201d: {\r\n  \u201cdisabled\u201d : false,\r\n  \u201cpassword\u201d: \u201cpassword\u201d,\r\n  \u201cadmin_channels\u201d:[\u201c*\u201d] }\r\n            },\r\n \u201csync\u201d : \u2018\r\n    function(doc, oldDoc) {\r\n      \/\/Add placeholder sync function, add custom read\/write logic here \r\n           }\u2018\r\n  }\r\n      }\r\n}\r\n<\/code><\/pre>\n<div><span style=\"font-family: 'Helvetica Neue'; font-size: 14px;\">\uc774\uc81c \ud50c\ub808\uc774\uc2a4\ud640\ub354 \ub3d9\uae30\ud654 \uae30\ub2a5\uc744 \ucd94\uac00\ud558\uace0 \uc5ec\uae30\uc5d0\uc11c \uc2dc\uc2a4\ud15c \ub0b4 \ub370\uc774\ud130\uc5d0 \ub300\ud55c \uc0ac\uc6a9\uc790\uc758 \uc561\uc138\uc2a4 \uc81c\uc5b4\ub97c \uc81c\uacf5\ud558\uae30 \uc704\ud574 \ub85c\uc9c1\uc744 \uc9d1\uc911\ud558\uace0 \uacc4\uc18d \ubc18\ubcf5\ud560 \uac83\uc785\ub2c8\ub2e4.  \ub2e4\uc74c\uc73c\ub85c \ud2b9\uc815 \ucc44\ub110 \uc774\ub984\uc744 \uc81c\uacf5\ud558\uc5ec \ucc44\ub110\uc744 \ub354\uc6b1 \uc548\uc804\ud558\uac8c \ubcf4\ud638\ud560 \uac83\uc785\ub2c8\ub2e4.\u00a0 <\/span><\/div>\n<pre><code class=\"language-javascript\">{\r\n    \u201dlog\" : [\u201c*\u201d],\r\n    \"databases\": {\r\n        \"grocery-sync\": {\r\n            \u201cserver\u201d:\u201dwalrus:\u201d,\r\n            \u201cbucket\":\"grocery-sync\",\r\n            \"users\": {\r\n      \u201calice\u201d: {\r\n  \u201cdisabled\u201d : false,\r\n  \u201cpassword\u201d: \u201cpassword\u201d,\r\n  \u201cadmin_channels\u201d:[\u201citems-alice\u201d]  },\r\n     \u201cbob\u201d: {\r\n  \u201cdisabled\u201d : false,\r\n  \u201cpassword\u201d: \u201cpassword\u201d,\r\n  \u201cadmin_channels\u201d:[\u201citems-bob\u201d] }\r\n            },\r\n \u201csync\u201d : \u2018\r\n    function(doc, oldDoc) {\r\n \/\/Add placeholder sync function, add custom read\/write logic here \r\n            }\r\n           \u2018\r\n    }\r\n          }\r\n    }\r\n<\/code><\/pre>\n<div>\uc774\uc81c \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774 \uad6c\uc131\uc5d0\uc11c \uad00\ub9ac\uc790 \ucc44\ub110\uc758 [\"*\"] \ubcc4\ud45c\ub97c \uc81c\uac70\ud558\uc5ec \uc0ac\uc6a9\uc790\uc5d0\uac8c \uc790\uc2e0\uc758 \ud56d\ubaa9 \ucc44\ub110\uc5d0 \ub300\ud55c \uc561\uc138\uc2a4 \uad8c\ud55c\uc744 \ubd80\uc5ec\ud558\uace0 \uc5ec\uae30\uc11c\uc758 \uacbd\uc6b0\ucc98\ub7fc \"items-alice\"\uc640 \uac19\uc774 \uc0ac\uc6a9\uc790\uc5d0 \ud2b9\uc815\ud55c \uc0c8\ub85c\uc6b4 \ube44\uacf5\uac1c \ucc44\ub110\uc744 \ucd94\uac00\ud569\ub2c8\ub2e4.  \uc774\uc804\uc5d0\ub294 [\"*\"] \ucc44\ub110\uc744 \uc0ac\uc6a9\ud558\uba74 \uc0ac\uc6a9\uc790\uac00 \uc2dc\uc2a4\ud15c\uc758 \ubaa8\ub4e0 \ubb38\uc11c\ub97c \ubcfc \uc218 \uc788\uc5c8\uc73c\ubbc0\ub85c \ubcf4\uc548\uc744 \uc704\ud574 \uc774\ub97c \uc6d0\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.  'Bob'\uc5d0 \ub300\ud574\uc11c\ub3c4 \ub9c8\ucc2c\uac00\uc9c0\ub85c 'admin_channels'\ub97c \"items-bob\"\uc73c\ub85c \ud2b9\uc815\ud558\ub3c4\ub85d \uc124\uc815\ud558\uc5ec \ub3d9\uc77c\ud55c \uc791\uc5c5\uc744 \uc218\ud589\ud569\ub2c8\ub2e4.  \uc774\ub807\uac8c \ud558\uba74 \uc18c\uc720\uc790\ub9cc \ud56d\ubaa9\uc5d0 \uc561\uc138\uc2a4\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c \uc2dd\ub8cc\ud488 \ubb38\uc11c\uc5d0\uc11c \uc18c\uc720\uc790 \ud544\ub4dc\ub97c \uc18c\uc720\uc790 \uac1c\uc778 \ud56d\ubaa9 \ucc44\ub110\uc5d0 \uc801\uc808\ud788 \uc5f0\uacb0\ud574\uc57c \ud569\ub2c8\ub2e4.  \ub2e4\uc74c\uc73c\ub85c \ub3d9\uae30\ud654 \uae30\ub2a5\uc744 \ucd94\uac00\ub85c \uc218\uc815\ud558\uc5ec \uc774\ub97c \uc218\ud589\ud558\ub3c4\ub85d \ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/div>\n<pre><code class=\"language-javascript\">{\r\n    \u201dlog\" : [\u201c*\u201d],\r\n    \"databases\": {\r\n        \"grocery-sync\": {\r\n            \u201cserver\u201d:\u201dwalrus:\u201d,\r\n            \u201cbucket\":\"grocery-sync\",\r\n            \"users\": {\r\n      \u201calice\u201d: {\r\n  \u201cdisabled\u201d : false,\r\n  \u201cpassword\u201d: \u201cpassword\u201d,\r\n  \u201cadmin_channels\u201d:[\u201citems-alice\u201d]  },\r\n     \u201cbob\u201d: {\r\n  \u201cdisabled\u201d : false,\r\n  \u201cpassword\u201d: \u201cpassword\u201d,\r\n  \u201cadmin_channels\u201d:[\u201citems-bob\u201d] }\r\n            },\r\n \u201csync\u201d : \u2018\r\n    function(doc, oldDoc) {\r\n     channel(\u201citems-\u201d+doc.owner);  }\r\n               \/\/Add item document to owner\u2019s items channel\r\n           \u2018\r\n    }\r\n          }\r\n    }\r\n<\/code><\/pre>\n<p style=\"text-align: justify;\">\ubb38\uc11c\uac00 \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uc5d0 \uc791\uc131\ub418\uba74 \ucc44\ub110 \uc774\ub984\uc774 '\ud56d\ubaa9' \uc811\ub450\uc0ac\uac00 \ubd99\uc740 \ud615\uc2dd\uc758 \ucc44\ub110\uc5d0 \ubb38\uc11c\ub97c \ud560\ub2f9\ud569\ub2c8\ub2e4.<b> <\/b>\ub97c \"doc.owner\"\uc5d0\uc11c \uac00\uc838\uc628 \uc18c\uc720\uc790 \ubb38\uc11c \ub0b4\uc758 \uc18c\uc720\uc790 \uc18d\uc131 \uac12\uc73c\ub85c \ub300\uccb4\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.  \uc774\uc804 \uad6c\uc131\uc740 \ubb38\uc11c \uc18d\uc131\uc774 'bob'\uc73c\ub85c \uc124\uc815\ub418\uc5b4 \uc788\uace0 'items'\uac00 'items-bob' \ucc44\ub110\uc5d0 \ud560\ub2f9\ub41c \uacbd\uc6b0\uc785\ub2c8\ub2e4.  \uc0ac\uc6a9\uc790 'bob'\uc740 'items-bob' \ucc44\ub110\uc5d0 \uc561\uc138\uc2a4\ud560 \uc218 \uc788\uc73c\uba70 \uae30\ubcf8\uc801\uc73c\ub85c \uc774 \ucc44\ub110\uc740 Bob\uc774 \uc790\uc2e0\uc758 \uc0ac\uc6a9\uc790 \uae30\ub85d\uc5d0\uc11c \uc561\uc138\uc2a4 \uad8c\ud55c\uc744 \ubd80\uc5ec\ubc1b\uc740 \ucc44\ub110\uc785\ub2c8\ub2e4.  \uc774\uc81c \uc18c\uc720\uc790\uac00 'bob'\uc778 \ubaa8\ub4e0 \ud56d\ubaa9\uc740 Bob\uc774 \ud574\ub2f9 \ucc44\ub110\uc744 \ud1b5\ud574 \ubcfc \uc218 \uc788\uc9c0\ub9cc 'items-alice' \ucc44\ub110\uc5d0 \uc788\uc9c0 \uc54a\uc73c\ubbc0\ub85c Alice\ub294 \ubcfc \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.  \uc774 \uad6c\uc131\uc5d0\uc11c \ubc1c\uc0dd\ud55c \uac83\uc740 \ubb38\uc11c\ub97c \uc801\uc808\ud55c \ucc44\ub110\uc5d0 \ud560\ub2f9\ud558\uace0 \uc18c\uc720\uc790 'items-' \ucc44\ub110\uc744 \ud1b5\ud574 \uc18c\uc720\uc790\uc5d0\uac8c \ud504\ub85c\uadf8\ub798\ubc0d \ubc29\uc2dd\uc73c\ub85c \uc561\uc138\uc2a4 \uad8c\ud55c\uc744 \ubd80\uc5ec\ud588\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4.<\/p>\n<p style=\"text-align: justify;\">\uc774\uc81c \uc0ac\uc6a9\uc790\ub294 \uc790\uc2e0\uc758 \ud56d\ubaa9\uacfc \uc0ac\uc2e4\uc0c1 \uc790\uc2e0\uc758 \uc2dd\ub8cc\ud488 \ubaa9\ub85d\ub9cc \ubcf4\uac70\ub098 \uc77d\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.  \ud558\uc9c0\ub9cc \uc5ec\uc804\ud788 \uc11c\ub85c\uc758 \ubaa9\ub85d\uc5d0 \uae00\uc744 \uc4f8 \uc218 \uc788\ub294\ub370, Bob\uc774 \ud56d\ubaa9\uc744 \uc5c5\ub85c\ub4dc\ud558\uace0 \uc18c\uc720\uc790 \uc18d\uc131\uc744 'Alice'\ub85c \uc124\uc815\ud558\uba74 \uc0ac\uc2e4\uc0c1 Bob\uc774 Alice\uc758 \uc7a5\ubcf4\uae30 \ubaa9\ub85d\uc5d0 \uc27d\uac8c \uce68\uc785\ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4.  \ubcf4\uc548\uc744 \uac15\ud654\ud558\uae30 \uc704\ud55c \ub2e4\uc74c \ub2e8\uacc4\ub294 \ubb38\uc11c\uac00 \ub4e4\uc5b4\uc62c \ub54c \uc18c\uc720\uc790 \uc18d\uc131\uc774 \ud604\uc7ac \uc778\uc99d\ub41c \uc0ac\uc6a9\uc790\uc640 \uc77c\uce58\ud558\ub294\uc9c0 \ud655\uc778\ud558\ub294 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-javascript\">{\r\n    \u201dlog\" : [\u201c*\u201d],\r\n    \"databases\": {\r\n        \"grocery-sync\": {\r\n            \u201cserver\u201d:\u201dwalrus:\u201d,\r\n            \u201cbucket\":\"grocery-sync\",\r\n            \"users\": {\r\n      \u201calice\u201d: {\r\n  \u201cdisabled\u201d : false,\r\n  \u201cpassword\u201d: \u201cpassword\u201d,\r\n  \u201cadmin_channels\u201d:[\u201citems-alice\u201d]  },\r\n     \u201cbob\u201d: {\r\n  \u201cdisabled\u201d : false,\r\n  \u201cpassword\u201d: \u201cpassword\u201d,\r\n  \u201cadmin_channels\u201d:[\u201citems-bob\u201d] }\r\n        },\r\n \u201csync\u201d : \u2018\r\n    function(doc, oldDoc) {\r\n        requireUser(doc.owner); \r\n        \/\/The owner of the item document must be the authenticated user\r\n        channel(\u201citems-\u201d+doc.owner);  }\r\n                         \u2018\r\n    }\r\n    }\r\n}\r\n<\/code><\/pre>\n<div style=\"text-align: justify;\">\uc5c5\ub370\uc774\ud2b8\ub41c \uad6c\uc131\uc740 \uc774\uc81c \ub3d9\uae30\ud654 \ud568\uc218\uc758 \uc2dc\uc791 \ubd80\ubd84\uc5d0 \ubb38\uc11c \ub0b4\uc5d0\uc11c 'doc.owner'\ub97c \ud1b5\ud574 \uac00\uc838\uc628 \uc18c\uc720\uc790 \uc18d\uc131\uc744 \uc785\ub825 \ub9e4\uac1c\ubcc0\uc218\ub85c \ud558\ub294 'requireUser' \ud568\uc218\ub97c \ud3ec\ud568\ud569\ub2c8\ub2e4.  \uae30\ubcf8\uc801\uc73c\ub85c \ud574\ub2f9 \ubb38\uc11c\ub97c \uc5c5\ub85c\ub4dc\ud558\ub824\ub294 \ud604\uc7ac \uc778\uc99d\ub41c \uc0ac\uc6a9\uc790\ub294 \ud478\uc2dc\uc5c5\ud558\ub824\ub294 \uc7a5\ubcf4\uae30 \ud56d\ubaa9 \ubb38\uc11c\uc758 \uc18c\uc720\uc790 \uc18d\uc131\uacfc \uc77c\uce58\ud558\ub294 \uc0ac\uc6a9\uc790 ID\ub97c \uac00\uc9c0\uace0 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4.<b>\u00a0 <\/b>\uadf8\ub9ac\uace0 \uc77c\uce58\ud558\uc9c0 \uc54a\uc73c\uba74 \uc0c8 \uc2dd\ub8cc\ud488 \ud56d\ubaa9\uc774 \uc218\ub77d\ub418\uc9c0 \uc54a\uc73c\ubbc0\ub85c \uc624\ub958\uac00 \ubc1c\uc0dd\ud569\ub2c8\ub2e4.  \uc774\uc81c \uc0ac\uc6a9\uc790\ub294 \uc790\uc2e0\ub9cc\uc758 \uc2dd\ub8cc\ud488 \ubaa9\ub85d\uc744 \uac16\uac8c \ub418\uba70 \uc544\ubb34\ub3c4 \uc4f8 \uc218 \uc5c6\ub294 \ube44\uacf5\uac1c \ubaa9\ub85d\uc774 \ub429\ub2c8\ub2e4.<\/div>\n<div>\uc0ac\uc6a9\uc790\uac00 \uce5c\uad6c\ub97c \ucd94\uac00\ud574 \ud2b9\uc815 \ubaa9\ub85d\uc5d0 \ud56d\ubaa9\uc744 \ucd94\uac00\ud560 \uc218 \uc788\ub2e4\uba74 \uc815\ub9d0 \uba4b\uc9c8 \uac83 \uac19\uc2b5\ub2c8\ub2e4.  \uc124\uc815\uc5d0\uc11c \ub2e4\uc74c\uc5d0 \uc5c5\ub370\uc774\ud2b8\ud560 \uae30\ub2a5\uc740 '\uce5c\uad6c\uc758 \ubb38\uc11c \uc720\ud615'\uc774 \uc788\ub294 \uc0c8\ub85c\uc6b4 '\ubb38\uc11c' \uc720\ud615\uc744 \ucd94\uac00\ud558\ub294 \uae30\ub2a5\uc73c\ub85c, \uc774 \ubb38\uc11c\ub97c \ud1b5\ud574 \uce5c\uad6c\uc5d0\uac8c \ud2b9\uc815 \uc0ac\uc6a9\uc790\uc758 \uc7a5\ubcf4\uae30 \ubaa9\ub85d\uc5d0 \ub300\ud55c \uc561\uc138\uc2a4 \uad8c\ud55c\uc744 \ubd80\uc5ec\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/div>\n<pre><code class=\"language-javascript\">{\r\n    \u201dlog\" : [\u201c*\u201d],\r\n    \"databases\": {\r\n        \"grocery-sync\": {\r\n            \u201cserver\u201d:\u201dwalrus:\u201d,\r\n            \u201cbucket\":\"grocery-sync\",\r\n            \"users\": {\r\n      \u201calice\u201d: {\r\n  \u201cdisabled\u201d : false,\r\n  \u201cpassword\u201d: \u201cpassword\u201d,\r\n  \u201cadmin_channels\u201d:[\u201citems-alice\u201d]  },\r\n     \u201cbob\u201d: {\r\n  \u201cdisabled\u201d : false,\r\n  \u201cpassword\u201d: \u201cpassword\u201d,\r\n  \u201cadmin_channels\u201d:[\u201citems-bob\u201d] }\r\n        },\r\n \u201csync\u201d : \u2018\r\n    function(doc, oldDoc) {\r\n      if (doc.type == \u201cfriends\u201d) {          \/\/process new friends document\r\n       requireUser(doc.owner);          \/\/The owner of the friends\r\n                  access(doc.friends, \u201citems-\u201d+doc.owner);    \r\n                  channel(\u201cprivate-\u201d+doc.owner);\r\n                  access(doc.owner, \u201cprivate-\u201d+doc.owner)   \r\n      } else {\r\n          requireUser(doc.owner)\r\n          channel(\u201citems-\u201d+doc.owner);  }\r\n    } \u2018\r\n    }\r\n}\r\n<\/code><\/pre>\n<div style=\"font-family: 'Helvetica Neue'; font-size: 14px;\">\n<div style=\"font-family: 'Helvetica Neue'; font-size: 14px;\">\n<div style=\"text-align: justify;\">\uc774\uc81c \ub450 \ubb38\uc11c\uc5d0 '\ud56d\ubaa9' \ub610\ub294 '\uce5c\uad6c' \ubb38\uc11c \uc720\ud615\ubcc4\ub85c \uad6c\ubd84\ud560 \uc218 \uc788\ub294 '\uc720\ud615' \ud0a4\uac00 \uc788\uc73c\ubbc0\ub85c, \ub3d9\uae30\ud654 \uae30\ub2a5\uc5d0 \uc2a4\uc704\uce58\ub97c \ucd94\uac00\ud558\uc5ec \ub3d9\uae30\ud654 \uae30\ub2a5 \ub0b4\uc5d0\uc11c \uc11c\ub85c \ub2e4\ub978 \ubb38\uc11c\ub97c \ub2e4\ub978 \ubc29\uc2dd\uc73c\ub85c \ucc98\ub9ac\ud560 \uc218 \uc788\ub3c4\ub85d \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/div>\n<\/div>\n<div>\uba3c\uc800 \ubb38\uc11c \uc720\ud615\uc744 \ud655\uc778\ud558\uc5ec '\uce5c\uad6c' \uc720\ud615\uc778\uc9c0 \ud655\uc778\ud55c \ub2e4\uc74c 'requireUser()' \uba54\uc11c\ub4dc\ub97c \ud1b5\ud574 \ubb38\uc11c \uc18c\uc720\uc790 \uc18d\uc131\uc774 \ud604\uc7ac \uc778\uc99d\ub41c \uc0ac\uc6a9\uc790 ID\uc640 \uc77c\uce58\ud558\ub294\uc9c0 \ud655\uc778\ud558\uace0 \uc77c\uce58\ud558\uc9c0 \uc54a\uc73c\uba74 \uc18c\uc720\uc790\ub9cc \uce5c\uad6c\ub97c \ucd08\ub300\ud558\uc5ec \uc2dd\ub8cc\ud488 \ubaa9\ub85d\uc744 \uc5c5\ub370\uc774\ud2b8\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c \uac70\ubd80\ud569\ub2c8\ub2e4.  \uc18c\uc720\uc790 \uc18d\uc131\uc774 \ud604\uc7ac \uc778\uc99d\ub41c \uc0ac\uc6a9\uc790\uc640 \uc77c\uce58\ud558\uba74 'items-doc.owner' \ucc44\ub110\uc744 \ud1b5\ud574 \ubaa8\ub4e0 \uce5c\uad6c\uc5d0\uac8c \uc561\uc138\uc2a4 \uad8c\ud55c\uc744 \ubd80\uc5ec\ud569\ub2c8\ub2e4.<\/div>\n<div style=\"font-family: 'Helvetica Neue'; font-size: 14px;\">\n<div style=\"text-align: justify;\">\uc608\ub97c \ub4e4\uc5b4 \ubc25\uc774 \uce5c\uad6c \ubb38\uc11c\ub97c \uc62c\ub824 \uc568\ub9ac\uc2a4\ub97c \ucd08\ub300\ud558\uba74 \uae30\ubcf8\uc801\uc73c\ub85c \uc568\ub9ac\uc2a4\uc5d0\uac8c \uc544\uc774\ud15c-\ubc25 \ucc44\ub110\uc5d0 \ub300\ud55c \uc561\uc138\uc2a4 \uad8c\ud55c\uc744 \ubd80\uc5ec\ud569\ub2c8\ub2e4.<\/div>\n<\/div>\n<div>\uadf8\ub7f0 \ub2e4\uc74c '\uce5c\uad6c' \uc720\ud615\uc778 \ubb38\uc11c\ub97c \ub2e4\uc74c\uacfc \uac19\uc740 \ucc44\ub110\uc5d0 \ub9e4\ud551\ud569\ub2c8\ub2e4.<b> <\/b>'private-doc.owner', \uc774 \uacbd\uc6b0\uc5d0\ub294 'private-bob'\uc774 \ub420 \uac83\uc774\uba70, \uc774\ubc88\uc5d0\ub294 \ub3d9\uc801\uc73c\ub85c \uc0dd\uc131\ub41c \ucc44\ub110\uc774\ub77c\ub294 \uc810\uc5d0 \uc720\uc758\ud558\uc138\uc694.  \uc0ac\uc6a9\uc790 \uae30\ub85d \uad00\ub9ac\uc790 \ucc44\ub110\uc5d0\uc11c\ub294 \uc774 \ucc44\ub110\uc774 \uc0dd\uc131\ub418\uc9c0 \uc54a\uc73c\uba70, \uc0ac\uc6a9\uc790\uac00 \ucc98\uc74c \ucd08\ub300\ub97c \ubcf4\ub0bc \ub54c \uc774 \ucc44\ub110\uc774 \uc989\uc11d\uc5d0\uc11c \uc0dd\uc131\ub418\ub294 \uac83\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.  \uc774\ub294 \uae30\ubcf8\uc801\uc73c\ub85c \uc0ac\uc6a9\uc790\uac00 \ucd08\ub300\ud55c \uce5c\uad6c \ubaa9\ub85d\uc740 \uc0ac\uc6a9\uc790 \ubcf8\uc778\uc5d0\uac8c\ub9cc \ube44\uacf5\uac1c\uc774\ubbc0\ub85c \ub2e4\ub978 \uc0ac\ub78c\uc740 \ubcfc \uc218 \uc5c6\ub2e4\ub294 \uac83\uc744 \uc758\ubbf8\ud569\ub2c8\ub2e4.  \uadf8\ub7f0 \ub2e4\uc74c 'doc.owner' \ub610\ub294 \ud604\uc7ac \uc778\uc99d\ub41c \uc0ac\uc6a9\uc790\uc5d0\uac8c \uc0c8\ub85c \uc0dd\uc131\ub41c \ube44\uacf5\uac1c \ucc44\ub110\uc5d0 \ub300\ud55c \uc561\uc138\uc2a4 \uad8c\ud55c\uc744 \ubd80\uc5ec\ud569\ub2c8\ub2e4.<\/div>\n<div>'\uae30\ud0c0' \uc808\uc740 \uc774 \ubb38\uc11c\uac00 \uce5c\uad6c\uc758 \ubb38\uc11c\uac00 \uc544\ub2cc \uacbd\uc6b0\uc785\ub2c8\ub2e4,<b> <\/b>\ub97c \uc785\ub825\ud558\uba74 \uc2dd\ub8cc\ud488 \ub3d9\uae30\ud654 \ud56d\ubaa9 \ubb38\uc11c\uac00 \ub418\uace0 \uc18c\uc720\uc790 \uc18d\uc131\uc774 \ud604\uc7ac \uc778\uc99d\ub41c \uc0ac\uc6a9\uc790 ID\uc640 \uc77c\uce58\ud558\ub294\uc9c0 \ub2e4\uc2dc \ud55c \ubc88 \ud655\uc778\ud569\ub2c8\ub2e4.  \uc774\uc804\uacfc \ub9c8\ucc2c\uac00\uc9c0\ub85c\uc694,<b> <\/b>\ud56d\ubaa9 \uc18c\uc720\uc790 \uc18d\uc131\uc758 'items-' \ucc44\ub110\uc5d0 \ud56d\ubaa9\uc744 \ucd94\uac00\ud558\uace0 \ud574\ub2f9 \uc0ac\uc6a9\uc790\uc5d0\uac8c \ud574\ub2f9 \ucc44\ub110\uc5d0 \ub300\ud55c \ub3d9\uc801 \uc561\uc138\uc2a4 \uad8c\ud55c\uc744 \ubd80\uc5ec\ud569\ub2c8\ub2e4.<\/div>\n<div>\uc704\uc758 \uc2a4\uc704\uce58 \ub85c\uc9c1\uc73c\ub85c \ub3d9\uae30\ud654 \ud568\uc218\ub97c \uc5c5\ub370\uc774\ud2b8\ud588\uc9c0\ub9cc, \uc2e4\uc81c\ub85c\ub294 \uc54c \uc218 \uc5c6\ub294 \ubb38\uc11c \uc720\ud615\uc744 \uac70\ubd80\ud558\ub294 \ud14c\uc2a4\ud2b8\ub97c \ucd94\uac00\ud558\uc5ec '\uce5c\uad6c' \ub610\ub294 '\ud56d\ubaa9' \ubb38\uc11c \uc720\ud615\uc774 \uc544\ub2cc \uacbd\uc6b0 'throw()' \uba54\uc11c\ub4dc\ub97c \ud638\ucd9c\ud558\uc5ec \ubb38\uc11c\ub97c \uac70\ubd80\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/div>\n<pre><code class=\"language-javascript\">{\r\n    \u201dlog\" : [\u201c*\u201d],\r\n    \"databases\": {\r\n        \"grocery-sync\": {\r\n            \u201cserver\u201d:\u201dwalrus:\u201d,\r\n            \u201cbucket\":\"grocery-sync\",\r\n            \"users\": {\r\n      \u201calice\u201d: {\r\n  \u201cdisabled\u201d : false,\r\n  \u201cpassword\u201d: \u201cpassword\u201d,\r\n  \u201cadmin_channels\u201d:[\u201citems-alice\u201d]  },\r\n      \u201cbob\u201d: {\r\n  \u201cdisabled\u201d : false,\r\n  \u201cpassword\u201d: \u201cpassword\u201d,\r\n  \u201cadmin_channels\u201d:[\u201citems-bob\u201d] }\r\n        },\r\n \u201csync\u201d : \u2018\r\n    function(doc, oldDoc) {\r\n      if (doc.type == \u201cfriends\u201d) {          \/\/process new friends document\r\n           requireUser(doc.owner);          \/\/The owner of the friends\r\n                  access(doc.friends, \u201citems-\u201d+doc.owner);    \r\n                  channel(\u201cprivate-\u201d+doc.owner);\r\n                  access(doc.owner, \u201cprivate-\u201d+doc.owner);  \r\n      } \r\n             else if (doc.type == \u201citem\u201d) {\r\n          requireUser(doc.owner);\r\n          channel(\u201citems-\u201d+doc.owner);  \r\n             }\r\n             else{\r\n                 throw({forbidden: \u201cInvalid document type\u201d}); \r\n             }\r\n          }\r\n }\u2018\r\n    }\r\n}\r\n<\/code><\/pre>\n<div>\n<div style=\"font-family: 'Helvetica Neue'; font-size: 14px;\">\ub2e4\ub978 \ubaa8\ub4e0 \ubb38\uc11c \uc720\ud615\uc744 \ucea1\ucc98\ud558\uae30 \uc704\ud574 \ub610 \ub2e4\ub978 'else' \uc808\uc744 \ucd94\uac00\ud55c \uac83\uc744 \ubcfc \uc218 \uc788\uc73c\uba70, \"\uc798\ubabb\ub41c \ubb38\uc11c \uc720\ud615\" \uba54\uc2dc\uc9c0\ub97c \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0 \ub2e4\uc2dc \uc804\uc1a1\ud569\ub2c8\ub2e4.  \uc774\ub807\uac8c \ud558\uba74 \uc0ac\ub78c\ub4e4\uc774 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc6d0\ud558\uc9c0 \uc54a\ub294 \ub0b4\uc6a9\uc744 \uc785\ub825\ud558\ub294 \uac83\uc744 \ub9c9\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/div>\n<div>\uc774\uc81c \uce5c\uad6c\ub97c \ucd08\ub300\ud588\uc73c\ub2c8 \uc2e4\uc81c\ub85c \uce5c\uad6c\uc5d0\uac8c \uc18c\uc720\uc790 \ubaa9\ub85d\uc5d0 \uc0c8 \ud56d\ubaa9\uc744 \uc4f8 \uc218 \uc788\ub294 \uae30\ub2a5\uc744 \uc81c\uacf5\ud558\ub824\uace0 \ud569\ub2c8\ub2e4.  \uc6b0\ub9ac\uac00 \ud574\uc57c \ud560 \uc77c\uc740 \uc774\uc804\uc758 'requireUser()' \uba54\uc11c\ub4dc\ub97c \ubcc0\uacbd\ud558\ub294 \uac83\uc785\ub2c8\ub2e4.<b> <\/b>\ub97c 'requireAccess()'\uc5d0 \ucd94\uac00\ud558\uba74 \uc18c\uc720\uc790\uac00 \ud56d\ubaa9 \ucc44\ub110\uc5d0 \ud56d\ubaa9\uc744 \uc4f8 \uc218 \uc788\uc744 \ubfd0\ub9cc \uc544\ub2c8\ub77c \ud574\ub2f9 \ud2b9\uc815 \ucc44\ub110\uc5d0 \ub300\ud55c \uc561\uc138\uc2a4 \uad8c\ud55c\uc774 \ubd80\uc5ec\ub41c \ubaa8\ub4e0 \uc0ac\ub78c\uc774 \uc0c8 \ud56d\ubaa9\uc744 \ucd94\uac00\/\uc4f8 \uc218 \uc788\uc2b5\ub2c8\ub2e4.  \uce5c\uad6c\ub294 \uce5c\uad6c\uc758 \ubb38\uc11c\uc5d0\uc11c \ucd08\ub300\ub97c \ud1b5\ud574\uc11c\ub9cc \uc0ac\uc6a9\uc790\uc758 \uc544\uc774\ud15c \ucc44\ub110\uc5d0 \ub300\ud55c \uc561\uc138\uc2a4 \uad8c\ud55c\uc774 \ubd80\uc5ec\ub429\ub2c8\ub2e4.<\/div>\n<\/div>\n<pre><code class=\"language-javascript\">{\r\n    \u201dlog\" : [\u201c*\u201d],\r\n    \"databases\": {\r\n        \"grocery-sync\": {\r\n            \u201cserver\u201d:\u201dwalrus:\u201d,\r\n            \u201cbucket\":\"grocery-sync\",\r\n            \"users\": {\r\n      \u201calice\u201d: {\r\n  \u201cdisabled\u201d : false,\r\n  \u201cpassword\u201d: \u201cpassword\u201d,\r\n  \u201cadmin_channels\u201d:[\u201citems-alice\u201d]  },\r\n     \u201cbob\u201d: {\r\n  \u201cdisabled\u201d : false,\r\n  \u201cpassword\u201d: \u201cpassword\u201d,\r\n  \u201cadmin_channels\u201d:[\u201citems-bob\u201d] }\r\n            },\r\n \u201csync\u201d : \u2018\r\n    function(doc, oldDoc) {\r\n      if (doc.type == \u201cfriends\u201d) {          \/\/process new friends document\r\n        requireUser(doc.owner);          \/\/The owner of the friends\r\n                  access(doc.friends, \u201citems-\u201d+doc.owner);    \r\n                  channel(\u201cprivate-\u201d+doc.owner);\r\n                  access(doc.owner, \u201cprivate-\u201d+doc.owner);   \r\n      } else if (doc.type == \u201citem\u201d) {\r\n          requireAccess(\u201citems-\u201d+doc.owner)\r\n          channel(\u201citems-\u201d+doc.owner);  }\r\n         else{  throw({forbidden: \u201cInvalid document type\u201d}); }\r\n    } \u2018\r\n          }\r\n    }\r\n<\/code><\/pre>\n<div>'requireUser()' \uba54\uc11c\ub4dc \ub300\uc2e0, \uc774\ub97c<b> <\/b>\uc774\uc81c \uae30\ubcf8\uc801\uc73c\ub85c \ubaa9\ub85d\uc5d0 \uc0c8 \ud56d\ubaa9\uc744 \uc791\uc131\ud558\ub824\uba74 \ud56d\ubaa9\uc744 \ucd94\uac00\ud558\ub824\ub294 \ud2b9\uc815 \uc0ac\uc6a9\uc790\uc758 \ud56d\ubaa9 \ucc44\ub110\uc5d0 \ub300\ud55c \uc561\uc138\uc2a4 \uad8c\ud55c\uc774 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4.   \uc571\uc758 \ucd94\uac00 \uae30\ub2a5 \uc911 \ud558\ub098\ub294 \uce5c\uad6c\uac00 \ubaa9\ub85d\uc5d0 \uc0c8 \ud56d\ubaa9\uc744 \uc791\uc131\ud558\ub294 \uacbd\uc6b0 \ud574\ub2f9 \ud56d\ubaa9\uc744 \uccb4\ud06c\uc624\ud504\ud560 \uc218 \uc5c6\ub3c4\ub85d \ud558\ub294 \uac83\uc785\ub2c8\ub2e4.  \uadf8\ub798\uc11c \uc6b0\ub9ac\uac00 \uc6d0\ud558\ub294 \uac83\uc740 \uccb4\ud06c\ud558\uc9c0 \uc54a\uc740 \uc0c8 \ud56d\ubaa9\ub9cc \ucd94\uac00\ud558\ub3c4\ub85d \ud55c \ub2e4\uc74c \uc2dd\ub8cc\ud488 \ubaa9\ub85d\uc758 \uc18c\uc720\uc790\ub9cc \ud574\ub2f9 \ud56d\ubaa9\uc744 \uccb4\ud06c\ud560 \uc218 \uc788\ub3c4\ub85d \ud558\ub294 \uac83\uc785\ub2c8\ub2e4.  \uce5c\uad6c\uac00 \ubb38\uc11c\ub97c \uc791\uc131\ud560 \ub54c \ubb38\uc11c\uc5d0 \ud574\ub2f9 \uc18d\uc131\uc774 true\ub85c \uc124\uc815\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc740\uc9c0 \ucd94\uac00\ub85c \ud655\uc778\ud558\uc5ec doc.checked \uc18d\uc131\uc758 \ubd80\uc6b8 \uac12\uc744 \ud14c\uc2a4\ud2b8\ud560 \uac83\uc785\ub2c8\ub2e4.<\/div>\n<pre><code class=\"language-javascript\">{\r\n    \u201dlog\" : [\u201c*\u201d],\r\n    \"databases\": {\r\n        \"grocery-sync\": {\r\n            \u201cserver\u201d:\u201dwalrus:\u201d,\r\n            \u201cbucket\":\"grocery-sync\",\r\n            \"users\": {\r\n      \u201calice\u201d: {\r\n  \u201cdisabled\u201d : false,\r\n  \u201cpassword\u201d: \u201cpassword\u201d,\r\n  \u201cadmin_channels\u201d:[\u201citems-alice\u201d]  },\r\n     \u201cbob\u201d: {\r\n  \u201cdisabled\u201d : false,\r\n  \u201cpassword\u201d: \u201cpassword\u201d,\r\n  \u201cadmin_channels\u201d:[\u201citems-bob\u201d] }\r\n            },\r\n \u201csync\u201d : \u2018\r\n    function(doc, oldDoc) {\r\n      if (doc.type == \u201cfriends\u201d) {          \/\/process new friends document\r\n        requireUser(doc.owner);          \/\/The owner of the friends\r\n                          access(doc.friends, \u201citems-\u201d+doc.owner);    \r\n                          channel(\u201cprivate-\u201d+doc.owner);\r\n                          access(doc.owner, \u201cprivate-\u201d+doc.owner);   \r\n      } else if (doc.type == \u201citem\u201d) {\r\n          requireAccess(\u201citems-\u201d+doc.owner)\r\n             if (oldDoc == null) {\r\n               if (doc.check == true) { throw( {forbidden: \u201cnew items cannot be checked\u201d}); }\r\n            }\r\n        channel(\u201citems-\u201d+doc.owner);  }\r\n         else { throw( {forbidden: \u201cInvalid document type\u201d}); }\r\n    } \u2018\r\n          }\r\n    }\r\n<\/code><\/pre>\n<div style=\"text-align: justify;\">\uba3c\uc800 'oldDoc'\uc774 null\uc778\uc9c0, \uc989 \uc0c8\ub85c \uc0dd\uc131\ub41c \ud56d\ubaa9\uc778\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4.  \ub530\ub77c\uc11c<b> <\/b>\ubb38\uc11c\uc5d0\uc11c 'check' \uc18d\uc131\uc744 \ud655\uc778\ud558\uc5ec \ucc38\uc778\uc9c0 \ud655\uc778\ud558\uace0 \ucc38\uc778 \uacbd\uc6b0<b> <\/b>\ub97c \uc0ac\uc6a9\ud558\uba74 \uc0c8 \ud56d\ubaa9\uc774 \uc0dd\uc131\ub420 \ub54c '\uc0c8 \ud56d\ubaa9\uc744 \ud655\uc778\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4'\ub77c\ub294 \uc624\ub958\uac00 \ubc1c\uc0dd\ud569\ub2c8\ub2e4.  \uc6b0\ub9ac\ub294 \uc18c\uc720\uc790\uac00 \ud56d\ubaa9\uc774 \uc0dd\uc131\ub418\uc5c8\uc744 \ub54c\ub9cc \ud56d\ubaa9\uc744 \ud655\uc778\ud558\uac70\ub098 \uc120\ud0dd \ucde8\uc18c\ud558\uae30\ub97c \uc6d0\ud558\uba70, \ud56d\ubaa9\uc5d0 \uc5c5\ub370\uc774\ud2b8\uac00 \uc788\uc74c\uc744 \uc758\ubbf8\ud558\ub294 (doc \ubc0f oldDoc)\uc774 \uc788\ub294\uc9c0 \ud655\uc778\ud55c \ub2e4\uc74c \ud56d\ubaa9\uc758 \uc774\uc804 \ubc84\uc804\uacfc \uc0c8 \ubc84\uc804 \uac04\uc5d0 'check' \uc18d\uc131\uc774 \ubcc0\uacbd\ub418\uc5c8\ub294\uc9c0 \ud655\uc778\ud558\uc5ec \uc774\ub97c \uac80\uc99d\ud560 \uac83\uc785\ub2c8\ub2e4.  'oldDoc'\uc774 NULL\uc774 \uc544\ub2cc\uc9c0 \uac04\ub2e8\ud788 \ud655\uc778\ud55c \ub2e4\uc74c \uc694\uad6c \uc0ac\uc6a9\uc790(\uc18c\uc720\uc790)\ub97c \ud655\uc778\ud560 \uc218 \uc788\uc9c0\ub9cc \uce5c\uad6c\uac00 \ud56d\ubaa9\uc758 \ud14d\uc2a4\ud2b8\uc5d0 \uc788\ub294 \uc624\ud0c0\ub97c \uc218\uc815\ud560 \uc218 \uc788\uae30\ub97c \uc6d0\ud569\ub2c8\ub2e4. \uce5c\uad6c\uac00 \ud56d\ubaa9\uc744 \uccb4\ud06c\ud560 \uc218 \uc5c6\ub354\ub77c\ub3c4 \ud56d\ubaa9 \uc81c\ubaa9\uc774\ub098 \ub808\uc774\ube14\uc744 \ubcc0\uacbd\ud558\uace0 \uc2f6\uc744 \uc218 \uc788\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4.  \ub2e4\uc74c\uc73c\ub85c \ud544\ub4dc \uc218\uc900 \uc720\ud6a8\uc131 \uac80\uc0ac\ub97c \uc218\ud589\ud558\uc5ec \uc774\uc804 oldDoc\uc774 \uc874\uc7ac\ud558\ub294\uc9c0 \uc5ec\ubd80\ub97c \ud655\uc778\ud569\ub2c8\ub2e4.  \ub530\ub77c\uc11c 'doc.Checked'\uc640 'oldDoc.checked'\ub97c \ube44\uad50\ud558\uc5ec \ubcc0\uacbd\ub418\uc5c8\ub294\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4.  \uadf8\ub7f0 \ub2e4\uc74c \ubcc0\uacbd\ub41c \uacbd\uc6b0 \ubb38\uc11c \uc18c\uc720\uc790\ub9cc\uc774 \ud655\uc778\ub780\uc744 \ubcc0\uacbd\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c \ubb38\uc11c \uc18c\uc720\uc790\uc5d0 \ub300\ud574 'requireUser(\uc18c\uc720\uc790)'\ub97c \uc218\ud589\ud569\ub2c8\ub2e4.<\/div>\n<pre><code class=\"language-javascript\">{\r\n    \u201dlog\" : [\u201c*\u201d],\r\n    \"databases\": {\r\n        \"grocery-sync\": {\r\n            \u201cserver\u201d:\u201dwalrus:\u201d,\r\n            \u201cbucket\":\"grocery-sync\",\r\n            \"users\": {\r\n      \u201calice\u201d: {\r\n  \u201cdisabled\u201d : false,\r\n  \u201cpassword\u201d: \u201cpassword\u201d,\r\n  \u201cadmin_channels\u201d:[\u201citems-alice\u201d]  },\r\n     \u201cbob\u201d: {\r\n  \u201cdisabled\u201d : false,\r\n  \u201cpassword\u201d: \u201cpassword\u201d,\r\n  \u201cadmin_channels\u201d:[\u201citems-bob\u201d] }\r\n            },\r\n \u201csync\u201d : \u2018\r\n    function(doc, oldDoc) {\r\n      if (doc.type == \u201cfriends\u201d) {          \/\/process new friends document\r\n        requireUser(doc.owner);          \/\/The owner of the friends\r\n                          access(doc.friends, \u201citems-\u201d+doc.owner);    \r\n                          channel(\u201cprivate-\u201d+doc.owner);\r\n                          access(doc.owner, \u201cprivate-\u201d+doc.owner);   \r\n      } else if (doc.type == \u201citem\u201d) {\r\n          requireAccess(\u201citems-\u201d+doc.owner)\r\n             if (oldDoc == null) {\r\n               if (doc.check == true) { throw( {forbidden: \u201cnew items cannot be checked\u201d}); }\r\n              else {\r\n                if (doc.check != oldDoc.check) {  requireUser(doc.owner); } \r\n              }\r\n            }\r\n        channel(\u201citems-\u201d+doc.owner);  }\r\n         else { throw( {forbidden: \u201cInvalid document type\u201d}); }\r\n    } \u2018\r\n          }\r\n    }\r\n<\/code><\/pre>\n<div>'else \uc808'\uc744 \uc0b4\ud3b4\ubcf4\uba74<b> <\/b>\ud56d\ubaa9\uc758 \uc774\uc804 \uc774\uc804 \ubc84\uc804\uacfc \ud478\uc2dc \uc911\uc778 \uc0c8 \ubc84\uc804 \uac04\uc5d0 '\ud655\uc778' \uac12\uc774 \ubcc0\uacbd\ub418\uc5c8\ub294\uc9c0 \ud655\uc778\ud558\ub294 \ucd94\uac00 \ucf54\ub4dc\uac00 \uc788\uc2b5\ub2c8\ub2e4.  \ubcc0\uacbd\ub41c \uacbd\uc6b0 \ud604\uc7ac \uc778\uc99d\ub41c \uc0ac\uc6a9\uc790\uac00 \ubb38\uc11c \uc18c\uc720\uc790\uc5ec\uc57c \ud569\ub2c8\ub2e4.<\/div>\n<div>\uc18c\uc720\uc790\ub9cc \ud655\uc778\ub780\uc744 \ubcc0\uacbd\ud560 \uc218 \uc788\ub3c4\ub85d \uc124\uc815\ud569\ub2c8\ub2e4.  \uadf8\ub7ec\ub098 \uc18c\uc720\uc790\uc758 \ub2e4\ub978 \uce5c\uad6c\ub294 \ud56d\ubaa9\uc758 \uc81c\ubaa9\uacfc \uac19\uc740 \ud56d\ubaa9\uc744 \ubcc0\uacbd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/div>\n<div>\ub9c8\uc9c0\ub9c9\uc73c\ub85c \uc0b4\ud3b4\ubcf4\uace0 \ud574\uacb0\ud574\uc57c \ud560 \ubb38\uc81c\uac00 \ud558\ub098 \uc788\uc2b5\ub2c8\ub2e4.  \ud56d\ubaa9\uc774 \uc0dd\uc131\ub41c \ud6c4\uc5d0\ub294 \ub204\uad6c\ub3c4 \ud56d\ubaa9\uc758 '\uc18c\uc720\uc790'\ub97c \ubcc0\uacbd\ud560 \uc218 \uc5c6\ub3c4\ub85d \ud558\uace0 \uc2f6\uc2b5\ub2c8\ub2e4.  \uc989, \uce5c\uad6c\ub294 \ub77c\ubca8\uc744 \uc218\uc815\ud560 \uc218\ub294 \uc788\uc9c0\ub9cc \ud56d\ubaa9\uc758 \ud655\uc778\ub780\uc744 \ubcc0\uacbd\ud558\uac70\ub098 \ud56d\ubaa9\uc758 \uc2e4\uc81c \uc18c\uc720\uc790\ub97c \ubcc0\uacbd\ud560 \uc218\ub294 \uc5c6\uc2b5\ub2c8\ub2e4.  \ucd5c\uc885 \uad6c\uc131\uc5d0\uc11c \uc774 \ubb38\uc81c\ub97c \uc5b4\ub5bb\uac8c \ud574\uacb0\ud560 \uc218 \uc788\ub294\uc9c0 \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/div>\n<pre><code class=\"language-javascript\">{\r\n    \u201dlog\" : [\u201c*\u201d],\r\n    \"databases\": {\r\n        \"grocery-sync\": {\r\n            \u201cserver\u201d:\u201dwalrus:\u201d,\r\n            \u201cbucket\":\"grocery-sync\",\r\n            \"users\": {\r\n      \u201calice\u201d: {\r\n  \u201cdisabled\u201d : false,\r\n  \u201cpassword\u201d: \u201cpassword\u201d,\r\n  \u201cadmin_channels\u201d:[\u201citems-alice\u201d]  },\r\n     \u201cbob\u201d: {\r\n  \u201cdisabled\u201d : false,\r\n  \u201cpassword\u201d: \u201cpassword\u201d,\r\n  \u201cadmin_channels\u201d:[\u201citems-bob\u201d] }\r\n            },\r\n \u201csync\u201d : \u2018\r\n    function(doc, oldDoc) {\r\n      if (doc.type == \u201cfriends\u201d) {          \/\/process new friends document\r\n        requireUser(doc.owner);          \/\/The owner of the friends\r\n                          access(doc.friends, \u201citems-\u201d+doc.owner);    \r\n                          channel(\u201cprivate-\u201d+doc.owner);\r\n                          access(doc.owner, \u201cprivate-\u201d+doc.owner);   \r\n      } else if (doc.type == \u201citem\u201d) {\r\n          requireAccess(\u201citems-\u201d+doc.owner)\r\n             if (oldDoc == null) {\r\n               if (doc.check == true) { throw( {forbidden: \u201cnew items cannot be checked\u201d}); }\r\n              else {\r\n                if (doc.owner != oldDoc.owner) {  throw({forbidden: \u201cQuits Stealing Items\u201d}); } \r\n                if (doc.check != oldDoc.check) {  requireUser(doc.owner); } \r\n              }\r\n            }\r\n        channel(\u201citems-\u201d+doc.owner);  }\r\n         else { throw( {forbidden: \u201cInvalid document type\u201d}); }\r\n    } \u2018\r\n          }\r\n    }\r\n<\/code><\/pre>\n<div style=\"text-align: justify;\">\ub530\ub77c\uc11c \ucd94\uac00 \uac80\uc0ac\ub97c \uc218\ud589\ud558\uc5ec 'oldDoc != nil'\uc774\uace0 \uc0c8 \ubc84\uc804\uc758 \ubb38\uc11c \uc18c\uc720\uc790\uac00 \uc774\uc804 \ubc84\uc804\uc758 \uc18c\uc720\uc790(doc.owner != oldDoc.owner)\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\ub294 \uc5c5\ub370\uc774\ud2b8\uc778 \uacbd\uc6b0 \uc624\ub958\ub97c \ub358\uc9d1\ub2c8\ub2e4.  \uc774\uc81c \ucd94\uac00 \ud14c\uc2a4\ud2b8\ub97c \uc218\ud589\ud558\uc5ec \uc774\uc804 \ubc84\uc804\uacfc \ud604\uc7ac \ubc84\uc804 \uac04\uc5d0 \uc18c\uc720\uc790\uac00 \ubcc0\uacbd\ub41c \uacbd\uc6b0 \uae30\ubcf8\uc801\uc73c\ub85c \ubb38\uc11c \uc18c\uc720\uc790\ub97c \ubcc0\uacbd\ud560 \uc218 \uc5c6\uc73c\ubbc0\ub85c \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0 \uc624\ub958\ub97c \ubc18\ud658\ud558\ub294 \uac83\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/div>\n<div style=\"text-align: justify;\"><\/div>\n<p style=\"text-align: justify;\"><strong>[3] \uc720\uc120\uc744 \ud1b5\ud55c \ub370\uc774\ud130 \uc804\uc1a1<\/strong><\/p>\n<p style=\"text-align: justify;\">\uc774\uc81c \ubcf4\uc548\uacfc \uad00\ub828\ub41c \uc0ac\uc6a9\uc790 \uc561\uc138\uc2a4\uc5d0 \ub300\ud55c \uc778\uc99d \ubc0f \ub370\uc774\ud130 \uc77d\uae30\/\uc4f0\uae30 \ubb38\uc81c\ub97c \uc81c\uc678\ud558\uace0, \ub2e4\uc74c \uc8fc\uc81c\ub294 \uc6d0\uaca9 \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub85c \uc804\uc1a1\ub418\ub294 \ub370\uc774\ud130\uc758 \ubcf4\uc548\uc744 \ubcf4\uc7a5\ud558\ub294 \uac83\uc785\ub2c8\ub2e4.  \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\ub294 \uc804\uc1a1 \uc2dc SSL \ubc0f TLS\ub97c \uc9c0\uc6d0\ud569\ub2c8\ub2e4.  \ubaa8\ubc14\uc77c \uc571\uc758 \ub370\uc774\ud130 \ubcf4\uc548\uc744 \uac15\ud654\ud558\uae30 \uc704\ud574 Sync Gateway\uc5d0\uc11c SSL\uc744 \uc0ac\uc6a9\ud558\ub3c4\ub85d Sync Gateway \uad6c\uc131 \ud30c\uc77c \ub0b4\uc5d0\uc11c \uad6c\uc131\ud558\ub294 \uac83\uc740 \uac04\ub2e8\ud569\ub2c8\ub2e4.<\/p>\n<p style=\"text-align: justify;\"><strong>[4] \ub370\uc774\ud130 \uc2a4\ud1a0\ub9ac\uc9c0<\/strong><\/p>\n<p style=\"text-align: justify;\">\ud074\ub77c\uc774\uc5b8\ud2b8\uc758 \ub370\uc774\ud130 \uc800\uc7a5\uc18c<b>, <\/b>\ub97c \uc0ac\uc6a9\ud558\uba74 \uc2e4\uc81c\ub85c \uc7a5\uce58\uc5d0\uc11c \ud30c\uc77c \uc2dc\uc2a4\ud15c \uc554\ud638\ud654\ub97c \uc218\ud589\ud558\uace0 \uc788\ub294 \uac83\uc785\ub2c8\ub2e4.  \ubaa8\ubc14\uc77c \uac1c\ubc1c\uc790 \ud3ec\ud138\uc5d0 \ub85c\uceec \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ub77c\uc774\ud2b8 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc554\ud638\ud654\ud558\uae30 \uc704\ud574 \uc218\ud589\ud574\uc57c \ud558\ub294 \uc791\uc5c5\uc5d0 \ub300\ud55c \uc88b\uc740 \uc815\ubcf4\uac00 \uc788\uc2b5\ub2c8\ub2e4.  \uc5ec\uae30\uc11c\ub294 \uc548\uc804\ud55c \ud074\ub77c\uc6b0\ub4dc \ud658\uacbd\uacfc \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0\uc11c \ud30c\uc77c \uc2dc\uc2a4\ud15c \uc554\ud638\ud654\ub97c \uc704\ud55c \uad6c\uc131\uc5d0 \ub300\ud574 \uc124\uba85\ud569\ub2c8\ub2e4.<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/bit.ly\/CBNYC2015\"><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2015\/october\/couchbase-live-new-york-couchbase-mobile-102---how-to-add-secure-sync-to-your-mobile-applications\/events.cbliveny.blog.banner.jpg\" \/><\/a><\/p>\n<p style=\"text-align: justify;\"><strong>\uc694\uc57d<\/strong><\/p>\n<p style=\"text-align: justify;\">\ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uc758 \uc9c4\uc218<b> <\/b>\uc784\ubca0\ub514\ub4dc \uc7a5\uce58\uc5d0 \uc788\ub294 \ud504\ub808\uc784\uc6cc\ud06c\uc778 Couchbase Lite\ub97c \ud558\ub098\ub85c \ubb36\uc5b4\uc90d\ub2c8\ub2e4. \ud074\ub77c\uc6b0\ub4dc\uc5d0\uc11c \uc2e4\ud589 \uc911\uc778 Couchbase \uc11c\ubc84\uac00 \uc788\uace0 Sync Gateway\uac00 \uc774\ub97c \uc11c\ub85c \uc5f0\uacb0\ud569\ub2c8\ub2e4.  \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uc5d0\ub294 \ub85c\uceec \uc7a5\uce58\uc5d0\uc11c \uc2e4\ud589 \uc911\uc778 \uc560\ud50c\ub9ac\ucf00\uc774\uc158(\ub3c5\ub9bd\ud615 \uc5f0\uacb0 \ud574\uc81c \uc560\ud50c\ub9ac\ucf00\uc774\uc158)\uc744 \uc644\uc804\ud55c \uae30\ub2a5\uc744 \uac16\ucd98 \ub2e4\uc911 \uc0ac\uc6a9\uc790 \ub3d9\uae30\ud654 \ud658\uacbd\uc73c\ub85c \uc804\ud658\ud558\uae30 \uc704\ud574 \uc81c\uacf5\ud558\ub294 \uba87 \uac00\uc9c0 \uc8fc\uc694 \uae30\ub2a5\uc774 \uc788\uc2b5\ub2c8\ub2e4.  \uc704\uc5d0 \ud45c\uc2dc\ub41c \uac83\uc740 \ub3d9\uae30\ud654 \ud568\uc218 \uad6c\uc131 \ud30c\uc77c\uc744 \ubc18\ubcf5\ud558\uc5ec \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \ud56d\ubaa9\uc744 \uc9c1\ub82c\ud654\ud558\ub294 \ubc29\ubc95\uc785\ub2c8\ub2e4.<\/p>\n<p style=\"text-align: justify;\">\ub2e4\uc74c\uc73c\ub85c \uc0b4\ud3b4\ubcfc Couchbase Lite HTTP \ub9ac\uc2a4\ub108 \ucef4\ud3ec\ub10c\ud2b8 \ud074\ub798\uc2a4\ub294 \"Couchbase Mobile\ub85c \ud53c\uc5b4\ud22c\ud53c\uc5b4 \uc571 \uad6c\ucd95\"\uc744 \ud1b5\ud574 \uace0\uc720\ud55c \uc18c\uc15c \uc778\uc571 \uacbd\ud5d8\uc744 \ub9cc\ub4e4 \uc218 \uc788\ub294 \ud53c\uc5b4\ud22c\ud53c\uc5b4 \uae30\ub2a5\uc744 \ud65c\uc131\ud654\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud55c Couchbase Mobile 103 \uc138\uc158\uc785\ub2c8\ub2e4.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>From the 102 session in the Couchbase LIVE New York mobile track, we continued iterating on the Couchbase Mobile sample application that was described in code from the &#8220;Couchbase Mobile 101: How to Build Your First Mobile App&#8221; session. In [&hellip;]<\/p>","protected":false},"author":30,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,2366],"tags":[],"ppma_author":[8983],"class_list":["post-1985","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-sync-gateway"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to Add Secure Sync to your Mobile Applications<\/title>\n<meta name=\"description\" content=\"How to Add Secure Sync to your Mobile Applications&quot; by securing the Grocery Sync sample application which can be found on the Github repo for iOS &amp; Android.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Couchbase LIVE New York: Couchbase Mobile 102 - How to Add Secure Sync to your Mobile Applications\" \/>\n<meta property=\"og:description\" content=\"How to Add Secure Sync to your Mobile Applications&quot; by securing the Grocery Sync sample application which can be found on the Github repo for iOS &amp; Android.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-10-23T08:04:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T02:58:53+00:00\" \/>\n<meta name=\"author\" content=\"William Hoang, Mobile Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"William Hoang, Mobile Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"21\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/\"},\"author\":{\"name\":\"William Hoang, Mobile Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/425717456c198fdf9aaa5d7a6d42ad32\"},\"headline\":\"Couchbase LIVE New York: Couchbase Mobile 102 &#8211; How to Add Secure Sync to your Mobile Applications\",\"datePublished\":\"2015-10-23T08:04:40+00:00\",\"dateModified\":\"2025-06-14T02:58:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/\"},\"wordCount\":3449,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Best Practices and Tutorials\",\"Sync Gateway\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/\",\"name\":\"How to Add Secure Sync to your Mobile Applications\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2015-10-23T08:04:40+00:00\",\"dateModified\":\"2025-06-14T02:58:53+00:00\",\"description\":\"How to Add Secure Sync to your Mobile Applications\\\" by securing the Grocery Sync sample application which can be found on the Github repo for iOS & Android.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Couchbase LIVE New York: Couchbase Mobile 102 &#8211; How to Add Secure Sync to your Mobile Applications\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/425717456c198fdf9aaa5d7a6d42ad32\",\"name\":\"William Hoang, Mobile Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/650445f1ea30314c4f3555dd680154f5\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g\",\"caption\":\"William Hoang, Mobile Developer Advocate, Couchbase\"},\"description\":\"William was a Developer Advocate on the Mobile Engineering\/Developer Experience team at Couchbase. His love for coffee and code has transcended him into the world of mobile while appreciating the offline in-person experiences. Prior, William worked on the Developer Relations team over at Twitter, BlackBerry, and Microsoft while also having been a Software Embedded GPS engineer at Research In Motion. William graduated from McGill University in Electrical Software Engineering\",\"url\":\"https:\/\/www.couchbase.com\/blog\/ko\/author\/william-hoang\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to Add Secure Sync to your Mobile Applications","description":"How to Add Secure Sync to your Mobile Applications\" by securing the Grocery Sync sample application which can be found on the Github repo for iOS & Android.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/","og_locale":"ko_KR","og_type":"article","og_title":"Couchbase LIVE New York: Couchbase Mobile 102 - How to Add Secure Sync to your Mobile Applications","og_description":"How to Add Secure Sync to your Mobile Applications\" by securing the Grocery Sync sample application which can be found on the Github repo for iOS & Android.","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/","og_site_name":"The Couchbase Blog","article_published_time":"2015-10-23T08:04:40+00:00","article_modified_time":"2025-06-14T02:58:53+00:00","author":"William Hoang, Mobile Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"William Hoang, Mobile Developer Advocate, Couchbase","Est. reading time":"21\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/"},"author":{"name":"William Hoang, Mobile Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/425717456c198fdf9aaa5d7a6d42ad32"},"headline":"Couchbase LIVE New York: Couchbase Mobile 102 &#8211; How to Add Secure Sync to your Mobile Applications","datePublished":"2015-10-23T08:04:40+00:00","dateModified":"2025-06-14T02:58:53+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/"},"wordCount":3449,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Best Practices and Tutorials","Sync Gateway"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/","url":"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/","name":"How to Add Secure Sync to your Mobile Applications","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2015-10-23T08:04:40+00:00","dateModified":"2025-06-14T02:58:53+00:00","description":"How to Add Secure Sync to your Mobile Applications\" by securing the Grocery Sync sample application which can be found on the Github repo for iOS & Android.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-live-new-york-couchbase-mobile-102-how-to-add-secure-sync-to-your-mobile-applications\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Couchbase LIVE New York: Couchbase Mobile 102 &#8211; How to Add Secure Sync to your Mobile Applications"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","description":"NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4, Couchbase","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/425717456c198fdf9aaa5d7a6d42ad32","name":"\uc70c\ub9ac\uc5c4 \ud638\uc559, \ubaa8\ubc14\uc77c \uac1c\ubc1c\uc790 \uc639\ud638\uc790, Couchbase","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/650445f1ea30314c4f3555dd680154f5","url":"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g","caption":"William Hoang, Mobile Developer Advocate, Couchbase"},"description":"\uc70c\ub9ac\uc5c4\uc740 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc758 \ubaa8\ubc14\uc77c \uc5d4\uc9c0\ub2c8\uc5b4\ub9c1\/\uac1c\ubc1c\uc790 \uacbd\ud5d8 \ud300\uc758 \uac1c\ubc1c\uc790 \uc639\ud638\uc790\uc600\uc2b5\ub2c8\ub2e4. \ucee4\ud53c\uc640 \ucf54\ub4dc\uc5d0 \ub300\ud55c \uadf8\uc758 \uc0ac\ub791\uc740 \uc624\ud504\ub77c\uc778 \ub300\uba74 \uacbd\ud5d8\uc744 \uc990\uae30\uba74\uc11c \ubaa8\ubc14\uc77c\uc758 \uc138\uacc4\ub85c \ub118\uc5b4\uc654\uc2b5\ub2c8\ub2e4. \uadf8 \uc804\uc5d0\ub294 Twitter, BlackBerry, Microsoft\uc5d0\uc11c \uac1c\ubc1c\uc790 \uad00\uacc4 \ud300\uc5d0\uc11c \uc77c\ud588\uc73c\uba70, Research In Motion\uc5d0\uc11c \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc784\ubca0\ub514\ub4dc GPS \uc5d4\uc9c0\ub2c8\uc5b4\ub85c \uadfc\ubb34\ud558\uae30\ub3c4 \ud588\uc2b5\ub2c8\ub2e4. \uc70c\ub9ac\uc5c4\uc740 \ub9e5\uae38 \ub300\ud559\uad50\uc5d0\uc11c \uc804\uae30 \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uacf5\ud559\uc744 \uc804\uacf5\ud588\uc2b5\ub2c8\ub2e4.","url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/william-hoang\/"}]}},"authors":[{"term_id":8983,"user_id":30,"is_guest":0,"slug":"william-hoang","display_name":"William Hoang, Mobile Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g","author_category":"","last_name":"Hoang","first_name":"William","job_title":"","user_url":"","description":"\uc70c\ub9ac\uc5c4\uc740 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc758 \ubaa8\ubc14\uc77c \uc5d4\uc9c0\ub2c8\uc5b4\ub9c1\/\uac1c\ubc1c\uc790 \uacbd\ud5d8 \ud300\uc758 \uac1c\ubc1c\uc790 \uc639\ud638\uc790\uc600\uc2b5\ub2c8\ub2e4. \ucee4\ud53c\uc640 \ucf54\ub4dc\uc5d0 \ub300\ud55c \uadf8\uc758 \uc0ac\ub791\uc740 \uc624\ud504\ub77c\uc778 \ub300\uba74 \uacbd\ud5d8\uc744 \uc990\uae30\uba74\uc11c \ubaa8\ubc14\uc77c\uc758 \uc138\uacc4\ub85c \ub118\uc5b4\uc654\uc2b5\ub2c8\ub2e4. \uadf8 \uc804\uc5d0\ub294 Twitter, BlackBerry, Microsoft\uc5d0\uc11c \uac1c\ubc1c\uc790 \uad00\uacc4 \ud300\uc5d0\uc11c \uc77c\ud588\uc73c\uba70, Research In Motion\uc5d0\uc11c \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc784\ubca0\ub514\ub4dc GPS \uc5d4\uc9c0\ub2c8\uc5b4\ub85c \uadfc\ubb34\ud558\uae30\ub3c4 \ud588\uc2b5\ub2c8\ub2e4. \uc70c\ub9ac\uc5c4\uc740 \ub9e5\uae38 \ub300\ud559\uad50\uc5d0\uc11c \uc804\uae30 \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uacf5\ud559\uc744 \uc804\uacf5\ud588\uc2b5\ub2c8\ub2e4."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/1985","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/users\/30"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=1985"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/1985\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=1985"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=1985"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=1985"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=1985"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}