{"id":3553,"date":"2017-05-10T05:21:49","date_gmt":"2017-05-10T12:21:49","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=3553"},"modified":"2025-06-13T19:58:32","modified_gmt":"2025-06-14T02:58:32","slug":"fakeit-series-5-5-rapid-mobile-development-sync-gateway","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/","title":{"rendered":"FakeIt \uc2dc\ub9ac\uc988 5\/5: \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\ub97c \ud1b5\ud55c \uc2e0\uc18d\ud55c \ubaa8\ubc14\uc77c \uac1c\ubc1c"},"content":{"rendered":"<p><a href=\"https:\/\/twitter.com\/bentonam\">\uc544\ub860 \ubca4\ud2bc<\/a> \ub294 \ud601\uc2e0\uc801\uc778 \ubaa8\ubc14\uc77c \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uac1c\ubc1c\uc744 \uc704\ud55c \ucc3d\uc758\uc801\uc778 \uc194\ub8e8\uc158\uc744 \uc804\ubb38\uc73c\ub85c \ud558\ub294 \uc219\ub828\ub41c \uc544\ud0a4\ud14d\ud2b8\uc785\ub2c8\ub2e4. \uadf8\ub294 10\ub144 \uc774\uc0c1 ColdFusion, SQL, NoSQL, JavaScript, HTML \ubc0f CSS\ub97c \ud3ec\ud568\ud55c \uc804\uccb4 \uc2a4\ud0dd \uac1c\ubc1c \ubd84\uc57c\uc5d0\uc11c \uacbd\ub825\uc744 \uc313\uc558\uc2b5\ub2c8\ub2e4. \ud604\uc7ac \ub178\uc2a4\uce90\ub864\ub77c\uc774\ub098\uc8fc \uadf8\ub9b0\uc988\ubc84\ub7ec\uc5d0 \uc704\uce58\ud55c Shop.com\uc758 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc544\ud0a4\ud14d\ud2b8\uc778 Aaron\uc740 <a href=\"https:\/\/developer.couchbase.com\/experts-and-champions\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ucee4\ubba4\ub2c8\ud2f0 \ucc54\ud53c\uc5b8<\/a>.<\/p>\n<p class=\"no-underline\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-2974\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/aaronb-benton-headshot_1000x1000-300x300.jpg\" alt=\"Aaron Benton\" width=\"300\" height=\"300\" data-attachment-id=\"2974\" data-permalink=\"https:\/\/www.couchbase.com\/blog\/fakeit-series-generating-fake-data\/aaronb-benton-headshot_1000x1000\/\" data-orig-file=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/aaronb-benton-headshot_1000x1000.jpg\" data-orig-size=\"1000,1000\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}\" data-image-title=\"\" data-image-description=\"\" data-medium-file=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/aaronb-benton-headshot_1000x1000-300x300.jpg\" data-large-file=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/aaronb-benton-headshot_1000x1000.jpg\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/aaronb-benton-headshot_1000x1000-300x300.jpg 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/aaronb-benton-headshot_1000x1000-150x150.jpg 150w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/aaronb-benton-headshot_1000x1000-768x768.jpg 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/aaronb-benton-headshot_1000x1000-65x65.jpg 65w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/aaronb-benton-headshot_1000x1000-50x50.jpg 50w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/aaronb-benton-headshot_1000x1000-20x20.jpg 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/aaronb-benton-headshot_1000x1000.jpg 1000w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>\ub9c8\uc9c0\ub9c9 \ud3ec\uc2a4\ud305\uc5d0\uc11c\ub294 <u><a href=\"https:\/\/github.com\/bentonam\/fakeit\" target=\"_blank\" rel=\"noopener\">FakeIt<\/a><\/u>\u00a0\uc2dc\ub9ac\uc988\ub97c \ud1b5\ud574 \uc5b4\ub5bb\uac8c \ud558\uba74 <u><a href=\"https:\/\/github.com\/bentonam\/fakeit\" target=\"_blank\" rel=\"noopener\">FakeIt<\/a><\/u>\u00a0+ <u><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/nosql-databases\/couchbase-server\/\" target=\"_blank\" rel=\"noopener\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84<\/a><\/u>\u00a0+ <u><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/nosql-databases\/couchbase-mobile\/\" target=\"_blank\" rel=\"noopener\">\ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774<\/a><\/u>\u00a0\ub97c \uc0ac\uc6a9\ud558\uc5ec \ubaa8\ubc14\uc77c \uac1c\ubc1c\uc744 \uc704\ud55c \ub85c\uceec \ud658\uacbd\uc744 \uad6c\ucd95\ud560 \uacc4\ud68d\uc785\ub2c8\ub2e4. \uc774\ub97c \uc704\ud574 \ub2e4\uc74c\uacfc \uac19\uc740 \ubc29\ubc95\uc744 \uc0ac\uc6a9\ud560 \uac83\uc785\ub2c8\ub2e4. <u><a href=\"https:\/\/www.docker.com\/\" target=\"_blank\" rel=\"noopener\">Docker<\/a><\/u>\u00a0\uadf8\ub9ac\uace0 <u><a href=\"https:\/\/docs.docker.com\/compose\/\" target=\"_blank\" rel=\"noopener\">\ub3c4\ucee4-\ucef4\ud3ec\uc988<\/a><\/u>. <em>\uba74\ucc45 \uc870\ud56d: \uc800\ub294 Docker \uc804\ubb38\uac00\uac00 \uc544\ub2c8\uba70, \uac1c\ubc1c \ud658\uacbd\uacfc \ub370\uc774\ud130 \uc9d1\ud569\uc744 \ube60\ub974\uac8c \uc124\uc815\ud558\uae30 \uc704\ud574 \uc218\ud589\ud55c \uc791\uc5c5\uc758 \uc608\uc2dc\uc77c \ubfd0\uc785\ub2c8\ub2e4.<\/em><\/p>\n<h3><strong>Docker<\/strong><\/h3>\n<p>\ub450 \uac1c\uc758 \ub3c4\ucee4 \ucee8\ud14c\uc774\ub108\ub97c \uc0ac\uc6a9\ud560 \uac83\uc785\ub2c8\ub2e4. <u><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/nosql-databases\/couchbase-server\/\" target=\"_blank\" rel=\"noopener\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84<\/a><\/u>\u00a0\uadf8\ub9ac\uace0 \ud558\ub098\ub294 <u><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/nosql-databases\/couchbase-mobile\/\" target=\"_blank\" rel=\"noopener\">\ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774<\/a><\/u>. \ub2e8\uc21c\ud788 couchbase:\ucd5c\uc2e0 \ubc0f couchbase\/sync-gateway:\ucd5c\uc2e0\uc5d0\uc11c \uac00\uc838\uc628 docker-compose.yaml \ud30c\uc77c\uc744 \uc815\uc758\ud560 \uc218 \uc788\uc9c0\ub9cc \uc5ec\uc804\ud788 \uc218\ub3d9 \uad6c\uc131\uc774 \ud544\uc694\ud558\uba70 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ucd5c\ub300\ud55c \uc790\ub3d9\ud654\ud560 \uc218 \uc788\uae30\ub97c \uc6d0\ud569\ub2c8\ub2e4. \uadf8\ub7ec\uae30 \uc704\ud574\uc11c\ub294 \uc774 \ub450 \ucee8\ud14c\uc774\ub108\uc5d0 \uc790\uccb4 \uc2a4\ud06c\ub9bd\ud2b8\uc640 \uad6c\uc131\uc744 \ucd94\uac00\ud558\uc5ec \uc790\uccb4 \ucee8\ud14c\uc774\ub108\ub97c \uad6c\ucd95\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">.\/docker-compose.yaml\r\n\r\nversion:\u00a0'2'\r\nservices:\r\n\u00a0 fakeit-couchbase:\r\n\u00a0 \u00a0 build:\r\n\u00a0 \u00a0 \u00a0 context:\u00a0.\/.docker\/couchbase\/\r\n\u00a0 \u00a0 container_name:\u00a0fakeit-couchbase\r\n\u00a0 \u00a0 ports:\r\n\u00a0 \u00a0 \u00a0 -\u00a0\"8091-8094:8091-8094\"\r\n\u00a0 \u00a0 \u00a0 -\u00a0\"11210:11210\"\r\n\u00a0 \u00a0 volumes:\r\n\u00a0 \u00a0 \u00a0 -\u00a0.\/:\/app\r\n\u00a0 fakeit-syncgatway:\r\n\u00a0 \u00a0 build:\r\n\u00a0 \u00a0 \u00a0 context:\u00a0.\/.docker\/sync-gateway\/\r\n\u00a0 \u00a0 container_name:\u00a0fakeit-syncgateway\r\n\u00a0 \u00a0 depends_on:\r\n\u00a0 \u00a0 \u00a0 -\u00a0fakeit-couchbase\r\n\u00a0 \u00a0 ports:\r\n\u00a0 \u00a0 \u00a0 -\u00a0\"4984-4985:4984-4985\"\r\n\u00a0 \u00a0 volumes:\r\n\u00a0 \u00a0 \u00a0 -\u00a0.\/:\/app<\/pre>\n<p>\uba3c\uc800 .\/.docker\/couchbase\/Dockerfile\uc5d0\uc11c \ucee8\ud14c\uc774\ub108\ub97c \ube4c\ub4dc\ud558\ub294 docker-compose.yaml \ud30c\uc77c\uc740 \ub2e4\uc74c\uacfc \uac19\uc774 \ubcf4\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">.\/.docker\/couchbase\/Dockerfile\r\n\r\n# start with couchbase\r\nFROM\u00a0couchbase:latest\r\n\r\n# copy the configure script\r\nCOPY\u00a0scripts\/configure-node.sh \/opt\/couchbase\r\n\r\n# execute the configure-node.sh script \r\nCMD [\"\/opt\/couchbase\/configure-node.sh\"]\r\n\r\n<\/pre>\n<p>\uc774 Docker\ud30c\uc77c\uc740 \uc2e4\uc81c\ub85c \uad6c\uc131 \uc2a4\ud06c\ub9bd\ud2b8\ub97c \ubcf5\uc0ac\ud558\uace0 \ud574\ub2f9 \uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc2e4\ud589\ud558\ub294 \ub450 \uac00\uc9c0 \uc791\uc5c5\ub9cc \uc218\ud589\ud569\ub2c8\ub2e4. configure-node.sh \uc2a4\ud06c\ub9bd\ud2b8\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">.\/.docker\/couchbase\/scripts\/configure-node.sh\r\n\r\nset\u00a0-m\r\n\r\n\/entrypoint.sh couchbase-server &amp;\r\n\r\necho\u00a0'Waiting 20 seconds for Couchbase service to start'\r\nsleep 20\r\n\r\n# configure the cluster\r\necho\u00a0'Configuring Cluster'\r\n\/opt\/couchbase\/bin\/couchbase-cli cluster-init -c localhost:8091 --cluster-username=Administrator --cluster-password=password --cluster-port=8091 --cluster-ramsize=500 --service=data\r\n\r\n# create the ecommerce bucket\r\necho\u00a0'Creating ecommerce bucket'\r\n\/opt\/couchbase\/bin\/couchbase-cli bucket-create -c localhost:8091 -u Administrator -p password --bucket=ecommerce --bucket-eviction-policy=fullEviction --bucket-type=membase --bucket-priority=high --enable-index-replica=0 --bucket-port=11211 --enable-flush=1 --bucket-replica=1 --bucket-ramsize=200\r\n\r\necho\u00a0'Couchbase server is ready'\r\n\r\nfg\u00a01\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>configure-node.sh \uc2a4\ud06c\ub9bd\ud2b8\ub294 \uba87 \uac00\uc9c0 \uc791\uc5c5\uc744 \uc218\ud589\ud569\ub2c8\ub2e4:<\/p>\n<ol>\n<li>\uad6c\uc131\ud560 \uc218 \uc788\ub3c4\ub85d Couchbase \uc11c\ube44\uc2a4\uac00 \uc2dc\uc791\ub418\uae30\ub97c \uae30\ub2e4\ub9ac\ub294 \uc911\uc785\ub2c8\ub2e4.<\/li>\n<li>\ud074\ub7ec\uc2a4\ud130 \uad6c\uc131 \ucd08\uae30\ud654\ud558\uae30<\/li>\n<li>\uc804\uc790\uc0c1\uac70\ub798 \ubc84\ud0b7 \ub9cc\ub4e4\uae30<\/li>\n<\/ol>\n<p>\uc774\uc81c Couchbase \ucee8\ud14c\uc774\ub108\uac00 \ube4c\ub4dc\ub418\uc5c8\uc73c\ubbc0\ub85c \ub2e4\uc74c\uc73c\ub85c \ube4c\ub4dc\ud574\uc57c \ud560 \ucee8\ud14c\uc774\ub108\ub294 Sync Gateway \ucee8\ud14c\uc774\ub108\uc785\ub2c8\ub2e4. \uae30\ubcf8\uc801\uc73c\ub85c \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774 \ucee8\ud14c\uc774\ub108\ub294 \ud574\ub9c8 \uba54\ubaa8\ub9ac \uc804\uc6a9 \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774 \ubc84\ud0b7\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uc2a4\ud1a0\ub9ac\uc9c0 \ubc0f \uc561\uc138\uc2a4 \uc124\uc815\uc744 \uc5c5\ub370\uc774\ud2b8\ud560 \uc218 \uc788\ub3c4\ub85d \uc790\uccb4 sync-gateway.json \ud30c\uc77c\uc744 \uc81c\uacf5\ud558\uc5ec \uc774 \uad6c\uc131\uc744 \uc5c5\ub370\uc774\ud2b8\ud574\uc57c \ud569\ub2c8\ub2e4. \ub9c8\uc9c0\ub9c9\uc73c\ub85c \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774 \ucee8\ud14c\uc774\ub108\ub294 \uacf5\uc6a9 \ud3ec\ud2b8\uc778 4984 \ud3ec\ud2b8\ub9cc \ub178\ucd9c\ud558\uc9c0\ub9cc \uac1c\ubc1c \ubaa9\uc801\uc774\ubbc0\ub85c \uad00\ub9ac\uc790 \ud3ec\ud2b8\uc778 4985 \ud3ec\ud2b8\ub97c \ub178\ucd9c\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">.\/.docker\/sync-gateway\/Dockerfile\r\n\r\n# Start with the base sync gateway\r\nFROM\u00a0couchbase\/sync-gateway:latest\r\n\r\n# Copy the sync-gateway.json into the container\r\nCOPY\u00a0sync-gateway.json \/opt\/sync_gateway\/sync-gateway.json\r\n\r\n# Create Volume for data to persist\r\nRUN mkdir -p \/opt\/sync_gateway\/data\r\n\r\n# Copy Entry Point\r\nCOPY scripts\/entrypoint.sh \/\r\nENTRYPOINT [\"\/entrypoint.sh\"]\r\n\r\n# Copy the configure script\r\nCOPY scripts\/configure-node.sh \/opt\/sync_gateway\r\n\r\n# Configure the Sync Gateway and Start it\r\nCMD [\"\/opt\/sync_gateway\/configure-node.sh\"]\r\n\r\n# \u00a0port 4984: public port\r\n# \u00a0port 4985: admin port\r\nEXPOSE 4984 4985\r\n\r\n.\/.docker\/sync-gateway\/sync-gateway.json\r\n\r\n{\r\n\u00a0\"interface\": \"0.0.0.0:4984\",\r\n\u00a0\"adminInterface\": \"0.0.0.0:4985\",\r\n\u00a0\"log\": [\"CRUD+\", \"REST+\", \"Changes+\", \"Attach+\"],\r\n\u00a0\"CORS\": {\r\n\u00a0 \u00a0\"Origin\":[\r\n\u00a0 \u00a0\u00a0 \"https:\/\/localhost:8000\",\r\n\u00a0 \u00a0 \"*\"\r\n\u00a0 \u00a0 ],\r\n\u00a0 \u00a0\"LoginOrigin\":[\r\n\u00a0 \u00a0 \u00a0\"https:\/\/localhost:8000\",\r\n\u00a0 \u00a0 \u00a0\"*\"\r\n\u00a0 \u00a0],\r\n\u00a0 \u00a0\"Headers\":[\"Content-Type\"],\r\n\u00a0 \u00a0\"MaxAge\": 1728000\r\n\u00a0},\r\n\u00a0\"databases\": {\r\n\u00a0 \u00a0\"ecommerce\": {\r\n\u00a0 \u00a0 \u00a0\"server\": \"https:\/\/fakeit-couchbase:8091\",\r\n\u00a0 \u00a0 \u00a0\"bucket\": \"ecommerce\",\r\n\u00a0 \u00a0 \u00a0\"users\": {\r\n\u00a0 \u00a0 \u00a0 \u00a0\"GUEST\": {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0\"disabled\": false\r\n\u00a0 \u00a0 \u00a0 \u00a0}\r\n\u00a0 \u00a0 \u00a0},\r\n\u00a0 \u00a0 \u00a0\"sync\": \"function(doc, oldDoc) { channel(doc.channels); }\"\r\n\u00a0 \u00a0}\r\n\u00a0}\r\n}\r\n\r\n.\/.docker\/sync-gateway\/scripts\/configure-node.sh\r\n\r\n#!\/bin\/bash\r\n\r\nset\u00a0-m\r\n\r\necho\u00a0'Waiting 20 seconds for Couchbase service to start and warm up'\r\n\r\nsleep 20\r\n\r\necho\u00a0'Starting the Sync Gateway Service'\r\n\/entrypoint.sh sync_gateway \/opt\/sync_gateway\/sync-gateway.json\r\n\r\necho\u00a0'Couchbase Sync Gateway is ready'<\/pre>\n<p>&nbsp;<\/p>\n<p>\ub2e4\uc2dc \ud55c \ubc88 \ub9d0\uc500\ub4dc\ub9ac\uc9c0\ub9cc \uc774\uac83\uc740 \uac1c\ubc1c \ubaa9\uc801\uc73c\ub85c\ub9cc \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uc5b4\ub514\uc5d0\uc11c\ub4e0 \uad00\ub9ac\uc790 \uc778\ud130\ud398\uc774\uc2a4\uc5d0 \ub300\ud55c \uc561\uc138\uc2a4\ub97c \ud5c8\uc6a9\ud558\uac70\ub098 \ub2e4\uc74c\uc744 \ud65c\uc131\ud654\ud574\uc11c\ub294 \uc548 \ub429\ub2c8\ub2e4. <strong>\uac8c\uc2a4\ud2b8<\/strong>\u00a0\ud2b9\ubcc4\ud55c \uc774\uc720\uac00 \uc5c6\ub294 \ud55c \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uc5d0 \uc561\uc138\uc2a4\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc774\uc81c \uc571\uc758 \uad6c\uc870\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/05\/app-structure.jpg\" alt=\"app structure\" \/><\/p>\n<p>\uc774\uc81c Docker \ucee8\ud14c\uc774\ub108\ub97c \uad6c\uc131\ud558\uace0 docker-compose.yaml \ud30c\uc77c\uc744 \uc124\uc815\ud588\uc73c\ubbc0\ub85c \ucee8\ud14c\uc774\ub108\ub97c \ube4c\ub4dc\ud558\uace0 \uc2dc\uc791\ud574\uc57c \ud569\ub2c8\ub2e4. \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ub514\ub809\ud1a0\ub9ac\uc5d0\uc11c \ub2e4\uc74c \uba85\ub839\uc744 \uc2e4\ud589\ud558\uc5ec \uc774\ub97c \uc218\ud589\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">\ub3c4\ucee4-\ucef4\ud3ec\uc9c0\ud2b8 \uc5c5 -d\r\n\r\n<\/pre>\n<p><em>\ucc38\uace0:<\/em>\u00a0\uc2a4\ud06c\ub9b0\uce90\uc2a4\ud2b8\uc5d0\uc11c\ub294 \ubd84\ub9ac\ub41c \ubaa8\ub4dc\ub85c \ucee8\ud14c\uc774\ub108\ub97c \uc2e4\ud589\ud558\uae30 \uc704\ud55c -d \ub9e4\uac1c\ubcc0\uc218\ub97c \uc0dd\ub7b5\ud569\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5677 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/05\/blog5-example1-compressor.gif\" alt=\"\" width=\"800\" height=\"443\" \/><\/p>\n<h3><strong>\ubaa8\ub378<\/strong><\/h3>\n<p>\uc774\uc81c \ucee8\ud14c\uc774\ub108\uac00 \uc2dc\uc791\ub418\uc5c8\uc73c\ubbc0\ub85c \ub370\uc774\ud130 \uc138\ud2b8\ub97c \uc0dd\uc131\ud558\uae30 \uc804\uc5d0 \ub2e4\uc74c\uc73c\ub85c \ud574\uc57c \ud560 \uc77c\uc740 \ucc44\ub110 \uc18d\uc131\uc744 \uc9c0\uc6d0\ud558\ub3c4\ub85d \ubaa8\ub378\uc744 \uc5c5\ub370\uc774\ud2b8\ud558\ub294 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">users.yaml\r\n\r\n<\/pre>\n<p>\uc774 \ubaa8\ub378\uc740 \uc0ac\uc6a9\uc790\ubcc4 \ucc44\ub110\uc5d0\ub9cc \ub3d9\uae30\ud654\ub429\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">name:\u00a0Users\r\ntype:\u00a0object\r\nkey:\u00a0_id\r\ndata:\r\n\u00a0 min:\u00a01000\r\n\u00a0 max:\u00a02000\r\n\u00a0 inputs:\u00a0.\/countries.json\r\nproperties:\r\n\u00a0 _id:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The document id built by the prefix \"user_\"\u00a0and the users id\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 post_build:\u00a0`user_${this.user_id}`\r\n\u00a0 channels:\r\n\u00a0 \u00a0 type:\u00a0array\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 post_build:\u00a0|\r\n\u00a0 \u00a0 \u00a0 \u00a0return [ `channel-user-${this.user_id}` ];\r\n\u00a0 doc_type:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The document type\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 value:\u00a0\"user\"\r\n...\r\n\r\nproducts.yaml<\/pre>\n<p>\uc7ac\ubbf8\ub85c \uc774 \ubaa8\ub378\uc744 \ubaa8\ub4e0 \uc0ac\uc6a9\uc790\uac00 \uad6c\ub3c5\ud560 \uc218 \uc788\ub294 \uae00\ub85c\ubc8c \ucc44\ub110\uc5d0 \uac8c\uc2dc\ud560 \uc608\uc815\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">name:\u00a0Products\r\ntype:\u00a0object\r\nkey:\u00a0_id\r\ndata:\r\n\u00a0 min:\u00a0500\r\n\u00a0 max:\u00a01000\r\n\u00a0 inputs:\r\n\u00a0 \u00a0 -\u00a0.\/categories.csv\r\n\u00a0 pre_build:\u00a0globals.current_category = faker.random.arrayElement(inputs.categories);\r\nproperties:\r\n\u00a0 _id:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The document id\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 post_build:\u00a0`product_${this.product_id}`\r\n\u00a0 channels:\r\n\u00a0 \u00a0 type:\u00a0array\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 build:\u00a0|\r\n\u00a0 \u00a0 \u00a0 \u00a0return [ `channel-products` ];\r\n\u00a0 doc_type:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The document type\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 value:\u00a0product\r\n...\r\n\r\norders.yaml<\/pre>\n<p>\uc774 \ubaa8\ub378\uc740 \uc0ac\uc6a9\uc790\ubcc4 \ucc44\ub110\uc5d0\ub9cc \ub3d9\uae30\ud654\ub429\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">name:\u00a0Orders\r\ntype:\u00a0object\r\nkey:\u00a0_id\r\ndata:\r\n\u00a0 dependencies:\r\n\u00a0 \u00a0 -\u00a0products.yaml\r\n\u00a0 \u00a0 -\u00a0users.yaml\r\n\u00a0 min:\u00a05000\r\n\u00a0 max:\u00a06000\r\nproperties:\r\n\u00a0 _id:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The document id\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 post_build:\u00a0`order_${this.order_id}`\r\n\u00a0 channels:\r\n\u00a0 \u00a0 type:\u00a0array\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 build:\u00a0|\r\n\u00a0 \u00a0 \u00a0 \u00a0return [ `channel-user-${this.user_id}` ];\r\n\u00a0 doc_type:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The document type\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 value:\u00a0\"order\"\r\n...\r\n\r\n<\/pre>\n<p>\uc774\uc81c \ucc44\ub110\uc744 \uc9c0\uc6d0\ud558\ub3c4\ub85d \ubaa8\ub378\uc774 \uc5c5\ub370\uc774\ud2b8\ub418\uc5c8\uc73c\ubbc0\ub85c \ubb34\uc791\uc704 \ub370\uc774\ud130 \uc9d1\ud569\uc744 \uc0dd\uc131\ud558\uc5ec \ub2e4\uc74c \uc704\uce58\uc5d0 \ud478\uc2dc\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <u><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/nosql-databases\/couchbase-server\/\" target=\"_blank\" rel=\"noopener\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84<\/a><\/u>\u00a0\ub97c \ud1b5\ud574 <u><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/nosql-databases\/couchbase-mobile\/\" target=\"_blank\" rel=\"noopener\">\ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774<\/a><\/u>\u00a0REST API. \uc6b0\ub9ac\ub294 \ub9d0\ud569\ub2c8\ub2e4 <u><a href=\"https:\/\/github.com\/bentonam\/fakeit\" target=\"_blank\" rel=\"noopener\">FakeIt<\/a><\/u>\u00a0\ub2e4\uc74c \uba85\ub839\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc774 \uc791\uc5c5\uc744 \uc218\ud589\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">fakeit sync-gateway --server https:\/\/localhost:4984 --bucket ecommerce --verbose models\/*\r\n\r\n<\/pre>\n<p>\uac1c\ubc1c \ubaa9\uc801\uc73c\ub85c \uac8c\uc2a4\ud2b8\uc758 \uc561\uc138\uc2a4 \uad8c\ud55c\uc744 \ud5c8\uc6a9\ud588\uc2b5\ub2c8\ub2e4. <u><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/nosql-databases\/couchbase-mobile\/\" target=\"_blank\" rel=\"noopener\">\ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774<\/a><\/u>. \uadf8\ub7ec\ub098 \uac8c\uc2a4\ud2b8 \uc561\uc138\uc2a4\ub97c \uc0ac\uc6a9\ud558\uc9c0 \uc54a\ub3c4\ub85d \uc124\uc815\ud55c \uacbd\uc6b0\uc5d0\ub3c4 \uc5ec\uc804\ud788 <u><a href=\"https:\/\/github.com\/bentonam\/fakeit\" target=\"_blank\" rel=\"noopener\">FakeIt<\/a><\/u>\u00a0\ub2e4\uc74c \uba85\ub839\uc744 \uc0ac\uc6a9\ud558\uc5ec \uae30\uc874 \uc0ac\uc6a9\uc790\uc5d0 \ub300\ud55c \uc0ac\uc6a9\uc790 \uc774\ub984\uacfc \ube44\ubc00\ubc88\ud638\ub97c \uc9c0\uc815\ud558\uba74 \ub429\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">fakeit sync-gateway --server https:\/\/localhost:4984 --bucket ecommerce --username YOURUSERNAME --password YOURPASSWORD --verbose models\/*<\/pre>\n<p>\uc0dd\uc131\ub41c \ub370\uc774\ud130 \uc138\ud2b8\uac00 \ucd9c\ub825\ub418\uae30 \uc804\uc785\ub2c8\ub2e4, <u><a href=\"https:\/\/github.com\/bentonam\/fakeit\" target=\"_blank\" rel=\"noopener\">FakeIt<\/a><\/u>\u00a0\uc5d0 \ub300\ud574 \uc778\uc99d\ud569\ub2c8\ub2e4. <u><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/nosql-databases\/couchbase-mobile\/\" target=\"_blank\" rel=\"noopener\">\ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774<\/a><\/u>\u00a0\ub97c \ud074\ub9ad\ud574 \ud544\uc694\ud55c \uc138\uc158 \uc815\ubcf4\ub97c \uac80\uc0c9\ud569\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5673 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/05\/blog5-example2-compressor.gif\" alt=\"\" width=\"800\" height=\"450\" \/><\/p>\n<h3><strong>\ud14c\uc2a4\ud2b8<\/strong><\/h3>\n<p>\ub2e4\uc74c\uc73c\ub85c \ud574\uc57c \ud560 \uc77c\uc740 \ubb38\uc11c\ub97c \ub85c\uceec\ub85c \ub3d9\uae30\ud654\ud560 \uc218 \uc788\ub3c4\ub85d \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774 \uc0ac\uc6a9\uc790\ub97c \ub9cc\ub4dc\ub294 \uac83\uc785\ub2c8\ub2e4. \uc774 \ud14c\uc2a4\ud2b8\uc5d0\uc11c\ub294 \uc0ac\uc6a9\uc790 \ubaa8\ub378\uc5d0\uc11c \uc784\uc758\uc758 \uc0ac\uc6a9\uc790 \ubb38\uc11c\ub97c \uac00\uc838\uc640\uc11c \uadf8 \ubb38\uc11c\uc5d0\uc11c \uc0ac\uc6a9\uc790\ub97c \ub9cc\ub4e4\uaca0\uc2b5\ub2c8\ub2e4. \uc774 \uc608\uc5d0\uc11c\ub294 user_1001\uc774 \ub420 \uac83\uc774\uba70, curl \uba85\ub839\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc0ac\uc6a9\uc790\ub97c \ub9cc\ub4e4\uaca0\uc2b5\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">curl --silent --show-error \\\r\n\u00a0-H \"Content-Type: application\/json; charset=UTF-8\"\u00a0\\\r\n\u00a0-H \"Content-type: application\/json\"\u00a0\\\r\n\u00a0-X PUT \\\r\n\u00a0-d '{\"name\":\"Domenic81\",\"password\":\"pgid_Tubn0qoEtZ\",\"admin_channels\":[\"channel-user-1001\", \"channel-products\"]}'\u00a0\\\r\n\u00a0'https:\/\/localhost:4985\/ecommerce\/_user\/Domenic81'<\/pre>\n<p>&nbsp;<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/05\/blog5-example3.gif\" alt=\"blog5 example3\" \/><\/p>\n<h3><strong>\uc560\ud50c\ub9ac\ucf00\uc774\uc158<\/strong><\/h3>\n<p>\uc800\ud76c\ub294 \uc791\uc740 <u><a href=\"https:\/\/vuejs.org\/\" target=\"_blank\" rel=\"noopener\">VueJS<\/a><\/u>\u00a0\ud504\ub85c\uc81d\ud2b8\ub97c \ud65c\uc6a9\ud558\ub294 <u><a href=\"https:\/\/pouchdb.com\/\" target=\"_blank\" rel=\"noopener\">PouchDB<\/a><\/u>\u00a0\ub97c \ud074\ub9ad\ud558\uc5ec \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uc5d0 \uc5f0\uacb0\ud558\uace0 \uc778\uc99d\ub41c \uc0ac\uc6a9\uc790 \ubb38\uc11c\ub97c \uac00\uc838\uc635\ub2c8\ub2e4. \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc740 \uc0ac\uc6a9 \uac00\ub2a5\ud55c \ub2e4\uc591\ud55c \uc720\ud615\uc758 \ubb38\uc11c, \ud574\ub2f9 \ubb38\uc11c\uc758 ID \ubc0f \ucf58\ud150\uce20\ub9cc \ud45c\uc2dc\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">\/\/ register highlight.js vue component\r\nVue.use(VueHighlightJS)\r\n\r\n\/\/ create local ecommerce database\r\nvar\u00a0db = new\u00a0PouchDB('local_ecommerce', {\r\n\u00a0auto_compaction: true,\r\n\u00a0revs_limit: 3\r\n});\r\n\/\/ create remote ecommerce database\r\nvar\u00a0remote_db = new\u00a0PouchDB('https:\/\/localhost:4984\/ecommerce\/', {\r\n\u00a0auth: {\r\n\u00a0 \u00a0username: 'Domenic81',\r\n\u00a0 \u00a0password: 'pgid_Tubn0qoEtZ'\r\n\u00a0},\r\n\u00a0skip_setup: true\r\n});\r\n\/\/ merge remote database with local database\r\nPouchDB.sync(db, remote_db, { live: true, retry: true\u00a0})\r\n\r\nvar\u00a0app = new\u00a0Vue({\r\n\u00a0el: '#app',\r\n\u00a0data: {\r\n\u00a0 \u00a0current_type: '',\r\n\u00a0 \u00a0items: [],\r\n\u00a0 \u00a0id: '',\r\n\u00a0 \u00a0current: JSON.stringify({}),\r\n\u00a0 \u00a0types: [],\r\n\u00a0},\r\n\u00a0watch: {\r\n\u00a0 \u00a0id(id) {\r\n\u00a0 \u00a0 \u00a0if\u00a0(id) {\r\n\u00a0 \u00a0 \u00a0 \u00a0db.get(id).then((current) =&gt; this.current = JSON.stringify(current, null, 2))\r\n\u00a0 \u00a0 \u00a0}\r\n\u00a0 \u00a0},\r\n\u00a0 \u00a0current_type(type) {\r\n\u00a0 \u00a0 \u00a0this.id = ''\r\n\u00a0 \u00a0 \u00a0\/\/ update the current item to be blank\r\n\u00a0 \u00a0 \u00a0this.current = JSON.stringify({})\r\n\r\n\u00a0 \u00a0 \u00a0\/\/ when `current_type` changes update the items list with the current types list\r\n\u00a0 \u00a0 \u00a0this.updateItems(type)\r\n\u00a0 \u00a0 \u00a0 \u00a0.then(() =&gt; {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0if\u00a0(!this.id) {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0this.id = this.items[0]\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0}\r\n\u00a0 \u00a0 \u00a0 \u00a0})\r\n\u00a0 \u00a0}\r\n\u00a0},\r\n\u00a0methods: {\r\n\u00a0 \u00a0updateItems(type) {\r\n\u00a0 \u00a0 \u00a0return\u00a0db.query('ecommerce\/by_doc_type', { key: type, reduce: false\u00a0})\r\n\u00a0 \u00a0 \u00a0 \u00a0.then((result) =&gt; {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0this.items = result.rows.map((item) =&gt; item.id)\r\n\u00a0 \u00a0 \u00a0 \u00a0})\r\n\u00a0 \u00a0},\r\n\u00a0 \u00a0removeStyle(el) {\r\n\u00a0 \u00a0 \u00a0setTimeout(() =&gt; {\r\n\u00a0 \u00a0 \u00a0 \u00a0el.style = ''\r\n\u00a0 \u00a0 \u00a0}, 1000)\r\n\u00a0 \u00a0}\r\n\u00a0},\r\n\u00a0created() {\r\n\u00a0 \u00a0\/\/ create the view to be queried\r\n\u00a0 \u00a0var\u00a0ddoc = {\r\n\u00a0 \u00a0 \u00a0_id: '_design\/ecommerce',\r\n\u00a0 \u00a0 \u00a0views: {\r\n\u00a0 \u00a0 \u00a0 \u00a0by_doc_type: {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0map: function(doc) {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0if\u00a0(doc.doc_type) {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0emit(doc.doc_type);\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0}\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0}.toString(),\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0reduce: '_count'\r\n\u00a0 \u00a0 \u00a0 \u00a0}\r\n\u00a0 \u00a0 \u00a0}\r\n\u00a0 \u00a0}\r\n\r\n\u00a0 \u00a0db.put(ddoc)\r\n\u00a0 \u00a0 \u00a0\/\/ design document created\r\n\u00a0 \u00a0 \u00a0\/\/ call the design document view index immediately to trigger a build\r\n\u00a0 \u00a0 \u00a0.then(() =&gt; db.query('ecommerce\/by_doc_type', { limit: 0\u00a0}))\r\n\u00a0 \u00a0 \u00a0.catch((err) =&gt; { \/\/ it is fine if this fails and returns a document conflict that just means it doesnt need to be created\r\n\u00a0 \u00a0 \u00a0 \u00a0if\u00a0(err.status !== 409) {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0throw\u00a0err;\r\n\u00a0 \u00a0 \u00a0 \u00a0}\r\n\u00a0 \u00a0 \u00a0})\r\n\r\n\u00a0 \u00a0 \u00a0\/\/ get all of the doc types available\r\n\u00a0 \u00a0 \u00a0.then(() =&gt; db.query('ecommerce\/by_doc_type', { reduce: true, group: true\u00a0}))\r\n\u00a0 \u00a0 \u00a0.then((types) =&gt; {\r\n\u00a0 \u00a0 \u00a0 \u00a0this.types = types.rows.map((type) =&gt; type.key)\r\n\u00a0 \u00a0 \u00a0 \u00a0this.current_type = this.types[0]\r\n\u00a0 \u00a0 \u00a0})\r\n\u00a0}\r\n})<\/pre>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5675 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/05\/blog5-example4-compressor.gif\" alt=\"\" width=\"800\" height=\"505\" \/><\/p>\n<p>\uc804\uccb4 \uc0d8\ud50c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc740 \ub2e4\uc74c\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <u><a href=\"https:\/\/github.com\/bentonam\/fakeit-couchbase-mobile-example\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/bentonam\/fakeit-couchbase-mobile-example<\/a><\/u><\/p>\n<h3><strong>\uacb0\ub860<\/strong><\/h3>\n<p>\uc774 \uc2dc\ub9ac\uc988\ub97c \ud1b5\ud574 \ub2e4\uc74c\uacfc \uac19\uc740 \ubc29\ubc95\uc744 \uc0b4\ud3b4\ubcf4\uc558\uc2b5\ub2c8\ub2e4. <u><a href=\"https:\/\/github.com\/bentonam\/fakeit\" target=\"_blank\" rel=\"noopener\">FakeIt<\/a><\/u>\u00a0\ub294 \uac04\ub2e8\ud55c YAML \ubaa8\ub378\uc744 \uc0ac\uc6a9\ud574 \ubc29\ub300\ud55c \uc591\uc758 \uac00\uc9dc \ub370\uc774\ud130\ub97c \uc0dd\uc131\ud558\uace0 \ud574\ub2f9 \ub370\uc774\ud130\ub97c \uc5ec\ub7ec \ub300\uc0c1\uc5d0 \uc804\uc1a1\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub9ac\ud3ec\uc9c0\ud1a0\ub9ac\ub97c \ud655\uc778\ud558\uc2dc\uace0 \ud480 \ub9ac\ud018\uc2a4\ud2b8\ub97c \ud658\uc601\ud558\uba70, \ucee4\ubba4\ub2c8\ud2f0\uc5d0 \ub354 \uc720\uc6a9\ud55c \ub3c4\uad6c\ub97c \ub9cc\ub4e4\uae30 \uc704\ud574 \ud56d\uc0c1 \uac1c\uc120\uacfc \ud5a5\uc0c1\uc744 \ubaa8\uc0c9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uc790\ub9ac\ub97c \ube4c\ub824 \ud504\ub85c\uc81d\ud2b8\uc5d0 \uae30\uc5ec\ud574 \uc8fc\uc2e0 \ubd84\ub4e4\uaed8\ub3c4 \uac10\uc0ac\uc758 \ub9d0\uc500\uc744 \uc804\ud558\uace0 \uc2f6\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c\uacfc \uac19\uc740 \ubd84\ub4e4\uc758 \ub3c4\uc6c0\uc774 \uc5c6\uc5c8\ub2e4\uba74 1.0 \ubc84\uc804\uc740 \ucd9c\uc2dc\ub418\uc9c0 \ubabb\ud588\uc744 \uac83\uc785\ub2c8\ub2e4. \u00a0<u><a href=\"https:\/\/github.com\/tjbenton\" target=\"_blank\" rel=\"noopener\">\ud0c0\uc77c\ub7ec \ubca4\ud2bc<\/a><\/u>\u00a0(<u><a href=\"https:\/\/twitter.com\/tjbenton21\" target=\"_blank\" rel=\"noopener\">@tjbenton21<\/a><\/u>), \ub610\ud55c <u><a href=\"https:\/\/github.com\/tabrindle\" target=\"_blank\" rel=\"noopener\">\ud2b8\ub808\ubc84 \ube0c\ub9b0\ub4e4<\/a><\/u>\u00a0(<u><a href=\"https:\/\/twitter.com\/VinceKerrazzi\" target=\"_blank\" rel=\"noopener\">\ube48\uc2a4\ucf00\ub77c\uc9c0<\/a><\/u>), <u><a href=\"https:\/\/github.com\/mistersender\" target=\"_blank\" rel=\"noopener\">\uc81c\uc2dc\uce74 \ucf00\ub124\ub514<\/a><\/u>\u00a0(<u><a href=\"https:\/\/twitter.com\/mistersender\" target=\"_blank\" rel=\"noopener\">\ubbf8\uc2a4\ud130\uc13c\ub354<\/a><\/u>), <u><a href=\"https:\/\/github.com\/alburdette619\" target=\"_blank\" rel=\"noopener\">\uc544\ub2f4 \ubc84\ub383<\/a><\/u>\u00a0(<u><a href=\"https:\/\/twitter.com\/RavenStorms619\" target=\"_blank\" rel=\"noopener\">@RavenStorms619<\/a><\/u>) \ubc0f <u><a href=\"https:\/\/github.com\/brantburnett\" target=\"_blank\" rel=\"noopener\">\ube0c\ub79c\ud2b8 \ubc84\ub137<\/a><\/u>\u00a0(<u><a href=\"https:\/\/twitter.com\/btburnett3\" target=\"_blank\" rel=\"noopener\">@btburnett3<\/a><\/u>)<\/p>\n<h4><strong>\uc774\uc804 \uac8c\uc2dc\ubb3c<\/strong><\/h4>\n<ul>\n<li><u><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/fakeit-series-generating-fake-data\/\" target=\"_blank\" rel=\"noopener\">FakeIt \uc2dc\ub9ac\uc988 1\/5: \uac00\uc9dc \ub370\uc774\ud130 \uc0dd\uc131\ud558\uae30<\/a><\/u><\/li>\n<li><u><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/fakeit-series-shared-data-dependencies\/\" target=\"_blank\" rel=\"noopener\">FakeIt \uc2dc\ub9ac\uc988 2\/5: \uacf5\uc720 \ub370\uc774\ud130 \ubc0f \uc885\uc18d\uc131<\/a><\/u><\/li>\n<li><u><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/fakeit-series-3-5-lean-models-through-definitions\/\" target=\"_blank\" rel=\"noopener\">\ud398\uc774\ud06c\uc787 \uc2dc\ub9ac\uc988 3\/5: \uc815\uc758\ub97c \ud1b5\ud574 \ubcf8 \ub9b0 \ubaa8\ub378<\/a><\/u><\/li>\n<li><u><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/fakeit-series-working-existing-data\/\" target=\"_blank\" rel=\"noopener\">FakeIt \uc2dc\ub9ac\uc988 4\/5: \uae30\uc874 \ub370\uc774\ud130\ub85c \uc791\uc5c5\ud558\uae30<\/a><\/u><\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-2966 aligncenter\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/brand.devCommChampionLogo.champion.FINAL_-300x300.png\" alt=\"Couchbase Champion\" width=\"300\" height=\"300\" \/><\/p>","protected":false},"excerpt":{"rendered":"<p>\ubaa8\ubc14\uc77c \uac1c\ubc1c\uc744 \uc704\ud55c \ub85c\uceec \ud658\uacbd\uc744 \uc124\uc815\ud558\uace0 \uc2e4\ud589\ud558\uae30 \uc704\ud574 FakeIt + Couchbase Server + \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\ub97c \ud65c\uc6a9\ud558\ub294 \ubc29\ubc95. \uc774\ub97c \uc704\ud574 Docker\uc640 docker-compose\ub97c \uc0ac\uc6a9\ud558\uaca0\uc2b5\ub2c8\ub2e4. <\/p>","protected":false},"author":53,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1810,1816,2366],"tags":[1883,1519,1884],"ppma_author":[9026],"class_list":["post-3553","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-mobile","category-couchbase-server","category-sync-gateway","tag-data-modelling","tag-docker","tag-document-patterns"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>FakeIt Series: Rapid Mobile Development with Sync-Gateway<\/title>\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\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"FakeIt Series 5 of 5: Rapid Mobile Development with Sync-Gateway\" \/>\n<meta property=\"og:description\" content=\"How we can leverage FakeIt + Couchbase Server + Sync Gateway to get our local environment up and running for mobile development. We will be doing this by using Docker and docker-compose.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-05-10T12:21:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T02:58:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/aaronb-benton-headshot_1000x1000.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"1000\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Laura Czajkowski, Developer Community Manager, 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=\"Laura Czajkowski, Developer Community Manager, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/\"},\"author\":{\"name\":\"Laura Czajkowski, Developer Community Manager, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/5f1a0ece4e644bc8c037686fbc8f3220\"},\"headline\":\"FakeIt Series 5 of 5: Rapid Mobile Development with Sync-Gateway\",\"datePublished\":\"2017-05-10T12:21:49+00:00\",\"dateModified\":\"2025-06-14T02:58:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/\"},\"wordCount\":879,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"data modelling\",\"docker\",\"document patterns\"],\"articleSection\":[\"Couchbase Mobile\",\"Couchbase Server\",\"Sync Gateway\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/\",\"name\":\"FakeIt Series: Rapid Mobile Development with Sync-Gateway\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-05-10T12:21:49+00:00\",\"dateModified\":\"2025-06-14T02:58:32+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/#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\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"FakeIt Series 5 of 5: Rapid Mobile Development with Sync-Gateway\"}]},{\"@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\/5f1a0ece4e644bc8c037686fbc8f3220\",\"name\":\"Laura Czajkowski, Developer Community Manager, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/9deb07d5daaa00220534c31768bc4409\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g\",\"caption\":\"Laura Czajkowski, Developer Community Manager, Couchbase\"},\"description\":\"Laura Czajkowski is the Snr. Developer Community Manager at Couchbase overseeing the community. She\u2019s responsible for our monthly developer newsletter.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/ko\/author\/laura-czajkowski\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"FakeIt Series: Rapid Mobile Development with Sync-Gateway","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\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/","og_locale":"ko_KR","og_type":"article","og_title":"FakeIt Series 5 of 5: Rapid Mobile Development with Sync-Gateway","og_description":"How we can leverage FakeIt + Couchbase Server + Sync Gateway to get our local environment up and running for mobile development. We will be doing this by using Docker and docker-compose.","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-05-10T12:21:49+00:00","article_modified_time":"2025-06-14T02:58:32+00:00","og_image":[{"width":1000,"height":1000,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/aaronb-benton-headshot_1000x1000.jpg","type":"image\/jpeg"}],"author":"Laura Czajkowski, Developer Community Manager, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Laura Czajkowski, Developer Community Manager, Couchbase","Est. reading time":"9\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/"},"author":{"name":"Laura Czajkowski, Developer Community Manager, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/5f1a0ece4e644bc8c037686fbc8f3220"},"headline":"FakeIt Series 5 of 5: Rapid Mobile Development with Sync-Gateway","datePublished":"2017-05-10T12:21:49+00:00","dateModified":"2025-06-14T02:58:32+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/"},"wordCount":879,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["data modelling","docker","document patterns"],"articleSection":["Couchbase Mobile","Couchbase Server","Sync Gateway"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/","url":"https:\/\/www.couchbase.com\/blog\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/","name":"FakeIt Series: Rapid Mobile Development with Sync-Gateway","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-05-10T12:21:49+00:00","dateModified":"2025-06-14T02:58:32+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/#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\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"FakeIt Series 5 of 5: Rapid Mobile Development with Sync-Gateway"}]},{"@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\/5f1a0ece4e644bc8c037686fbc8f3220","name":"Laura Czajkowski, \uac1c\ubc1c\uc790 \ucee4\ubba4\ub2c8\ud2f0 \uad00\ub9ac\uc790, Couchbase","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/9deb07d5daaa00220534c31768bc4409","url":"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g","caption":"Laura Czajkowski, Developer Community Manager, Couchbase"},"description":"\ub85c\ub77c \ucc60\ucf54\ube0c\uc2a4\ud0a4\ub294 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc758 Snr. \uac1c\ubc1c\uc790 \ucee4\ubba4\ub2c8\ud2f0 \ub9e4\ub2c8\uc800\ub85c \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc758 \ucee4\ubba4\ub2c8\ud2f0\ub97c \ucd1d\uad04\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub140\ub294 \uc6d4\uac04 \uac1c\ubc1c\uc790 \ub274\uc2a4\ub808\ud130\ub97c \ub2f4\ub2f9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.","url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/laura-czajkowski\/"}]}},"authors":[{"term_id":9026,"user_id":53,"is_guest":0,"slug":"laura-czajkowski","display_name":"Laura Czajkowski, Developer Community Manager, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g","author_category":"","last_name":"Czajkowski","first_name":"Laura","job_title":"","user_url":"","description":"\ub85c\ub77c \ucc60\ucf54\ube0c\uc2a4\ud0a4\ub294 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc758 Snr. \uac1c\ubc1c\uc790 \ucee4\ubba4\ub2c8\ud2f0 \ub9e4\ub2c8\uc800\ub85c \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc758 \ucee4\ubba4\ub2c8\ud2f0\ub97c \ucd1d\uad04\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub140\ub294 \uc6d4\uac04 \uac1c\ubc1c\uc790 \ub274\uc2a4\ub808\ud130\ub97c \ub2f4\ub2f9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/3553","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\/53"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=3553"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/3553\/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=3553"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=3553"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=3553"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=3553"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}