{"id":1980,"date":"2015-10-06T14:55:47","date_gmt":"2015-10-06T14:55:47","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1980"},"modified":"2025-06-13T23:54:05","modified_gmt":"2025-06-14T06:54:05","slug":"let-your-devices-talk-to-each-other-p2p","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/let-your-devices-talk-to-each-other-p2p\/","title":{"rendered":"\ub514\ubc14\uc774\uc2a4\ub07c\ub9ac \uc11c\ub85c \ub300\ud654\ud558\uae30"},"content":{"rendered":"<p>\uc9c0\ub09c \uc8fc\uc5d0 \uc800\ub294\u00a0<a href=\"https:\/\/2015.webcampzg.org\/\">\uc6f9\ucea0\ud504 \uc790\uadf8\ub808\ube0c<\/a>\ub294 \uac1c\ubc1c\uc790\uc640 \ub514\uc790\uc774\ub108\ub97c \uc704\ud55c \ud6cc\ub96d\ud55c \ucee8\ud37c\ub7f0\uc2a4\uc785\ub2c8\ub2e4. \uc800\ub294 '\ub514\ubc14\uc774\uc2a4\uac00 \uc11c\ub85c \ub300\ud654\ud558\uac8c \ud558\uc138\uc694'\ub77c\ub294 \uc81c\ubaa9\uc73c\ub85c \ud504\ub808\uc820\ud14c\uc774\uc158\uc744 \ud588\uc2b5\ub2c8\ub2e4. \ub370\ubaa8 \ubd80\ubd84\uc5d0\uc11c\ub294 \uac19\uc740 \ub124\ud2b8\uc6cc\ud06c\uc5d0\uc11c \uc2e4\ud589 \uc911\uc778 \ub2e4\ub978 \uc0ac\ub78c\uacfc \uc790\ub3d9\uc73c\ub85c \ub3d9\uae30\ud654\ub418\ub294 \uc544\uc8fc \uac04\ub2e8\ud55c \uba54\uc2dc\uc9c0 \uc571\uc744 \ub9cc\ub4e4\uc5c8\uc2b5\ub2c8\ub2e4. \uc2ac\ub77c\uc774\ub4dc \ubc0f \ub370\ubaa8 \ucf54\ub4dc\uac00 \ucf1c\uc838 \uc788\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/github.com\/ldoguin\/couchbase-messages-p2p-sample\">github<\/a>. \ud504\ub808\uc820\ud14c\uc774\uc158\uc740 \ucd2c\uc601\uc774 \uc644\ub8cc\ub418\uc5c8\uc73c\uba70 \uace7 \uc628\ub77c\uc778\uc5d0 \uacf5\uac1c\ub420 \uc608\uc815\uc785\ub2c8\ub2e4.<\/p>\n<p>\uc774\ubc88 \ubc1c\ud45c\uc758 \uc8fc\uc81c\ub294 IoT(\uc0ac\ubb3c \uc778\ud130\ub137), M2M(<a href=\"https:\/\/en.wikipedia.org\/wiki\/Machine_to_machine\">\uba38\uc2e0 \ud22c \uba38\uc2e0<\/a>) \uadf8\ub9ac\uace0 \ud0c8\uc911\uc559\ud654. \uc778\ud130\ub137\uc758 \uc774\ub7ec\ud55c \ubaa8\ub4e0 \uac83\ub4e4\uc740 \uc77c\ubc18\uc801\uc73c\ub85c \ub370\uc774\ud130(\ub300\ubd80\ubd84\uc758 \uacbd\uc6b0 \ub9e4\uc6b0 \uc0ac\uc801\uc778 \ub370\uc774\ud130, \uc608, \uc815\ub7c9\ud654\ub41c \uc790\uae30 \uc6c0\uc9c1\uc784)\ub97c \ud074\ub77c\uc6b0\ub4dc \uc5b4\ub518\uac00\uc5d0 \uc788\ub294 \uc11c\ubc84\ub85c \uc804\uc1a1\ud569\ub2c8\ub2e4. \uc774\ub294 \uae30\ubcf8\uc801\uc73c\ub85c \ub354 \uc774\uc0c1 \uc0ac\uc6a9\uc790\uc758 (\uac1c\uc778) \ub370\uc774\ud130\uac00 \uc544\ub2c8\ub77c\ub294 \uac83\uc744 \uc758\ubbf8\ud569\ub2c8\ub2e4. \uc774\uac83\uc740 \ub9e4\uc6b0 \uc2ac\ud508 \uc77c\uc785\ub2c8\ub2e4. \uc774\uac83\uc774 \uc81c\uac00 \uc774 \uac15\uc5f0\uc744 \ud558\uac8c \ub41c \uc8fc\ub41c \uc774\uc720\uc785\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \ub514\ubc14\uc774\uc2a4\uac00 \uc11c\ub85c \ub300\ud654\ud574\uc57c \ud558\ub294 \ub2e4\ub978 \uc88b\uc740 \uc774\uc720\ub3c4 \ub9ce\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub9ac\uace0 \uc774\uac83\uc740 \uc0c8\ub85c\uc6b4 \uac83\uc774 \uc544\ub2d9\ub2c8\ub2e4. \ud604\uc7ac \uc6b0\ub9ac\uac00 M2M\uc774\ub77c\uace0 \ubd80\ub974\ub294 \uac83\uc740 \uc218\ub144 \ub3d9\uc548 \uc5c5\uacc4\uc5d0\uc11c \ub9e4\uc6b0 \uc77c\ubc18\uc801\uc774\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ud558\uc9c0\ub9cc \ub2e4\uc2dc \uc6d0\ub798 \uc8fc\uc81c\ub85c \ub3cc\uc544\uac00 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uc911\uc559 \uc9d1\uc911\ud654\ub97c \ud53c\ud558\ub294 \ud55c \uac00\uc9c0 \ubc29\ubc95\uc740 \uc778\ud130\ub137\uc758 \uc0ac\ubb3c\uc774 \uc778\ud130\ub137\uc758 \uc0ac\ubb3c\uc774 \uc544\ub2cc \ud648 \ub124\ud2b8\uc6cc\ud06c\uc758 \uc0ac\ubb3c\uc774 \ub418\ub294 \uac83\uc785\ub2c8\ub2e4. \uc774\ub4e4\uc740 \uc11c\ub85c \ud1b5\uc2e0\uc744 \uc2dc\uc791\ud558\uace0, \ub77c\uc988\ubca0\ub9ac\ud30c\uc774 \ub610\ub294 JVM\uc744 \uc9c0\uc6d0\ud558\ub294 \ub2e4\ub978 \uc18c\ud615 \uc7a5\uce58\uc5d0\uc11c \uc2e4\ud589\ub418\ub294 Couchbase Lite \uc778\uc2a4\ud134\uc2a4\ucc98\ub7fc \uc0ac\uc6a9\uc790\uac00 \uacb0\uc815\ud55c \uacf3\uc5d0\uc11c \ub370\uc774\ud130\ub97c \uc804\uc1a1\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p>\ubb3c\ub860 \uae30\uae30\uac00 \uc11c\ub85c \ub300\ud654\ud560 \uc218 \uc788\ub3c4\ub85d \ud558\ub294 \ud55c \uac00\uc9c0 \ubc29\ubc95\uc740 \uc774\ub4e4 \uae30\uae30\uc5d0 Couchbase Lite\ub97c \uc124\uce58\ud558\uace0 P2P \ub3d9\uae30\ud654\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\uc785\ub2c8\ub2e4. \uc774\ubbf8 <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/photodrop\/\">\uc5ec\ub7ec<\/a> <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/how-to-use-sync-gateway-and-peer-to-peer-sync-on-android\/\">\ube14\ub85c\uadf8 \uac8c\uc2dc\ubb3c<\/a> \uc774 \ubb38\uc81c\uac00 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub798\uc11c \uc774 \ubb38\uc81c\ub97c \ud574\uacb0\ud558\uae30 \uc704\ud574 \uc790\ub3d9 \ub3d9\uae30\ud654\ub97c \uc124\uc815\ud558\ub294 \ubc29\ubc95\uc744 \uc54c\ub824\ub4dc\ub9ac\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub3d9\uae30\ud654\ub294 \ubcf5\uc81c \ub9c1\ud06c\ub97c \uae30\ubc18\uc73c\ub85c \ud569\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c \uc8fc\uc18c\uc640 \uc790\uaca9 \uc99d\uba85\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. \uc800\ub294 \ucd5c\ub300\ud55c \ub9c8\ucc30\uc744 \uc904\uc774\uace0 \uc2f6\uc5b4\uc11c \uc790\uaca9 \uc99d\uba85\/\ubcf4\uc548 \ubd80\ubd84\uc744 \uc0dd\ub7b5\ud588\uc2b5\ub2c8\ub2e4. \uadf8 \ub355\ubd84\uc5d0 \ud504\ub808\uc820\ud14c\uc774\uc158 \ub370\ubaa8\ub97c \ud6e8\uc52c \uc27d\uac8c \ub9cc\ub4e4 \uc218 \uc788\uc5c8\uc2b5\ub2c8\ub2e4. \uadf8\ub807\ub2e4\uba74 \uc8fc\uc18c\ub9cc \uc788\uc73c\uba74 \uc5b4\ub5bb\uac8c \uc790\ub3d9\uc73c\ub85c \uc8fc\uc18c\ub97c \ubc1b\uc744 \uc218 \uc788\uc744\uae4c\uc694?<\/p>\n<p>P2P \ub3d9\uae30\ud654\uac00 \uc791\ub3d9\ud558\ub824\uba74 \ub3d9\uae30\ud654\ub418\ub294 \ub514\ubc14\uc774\uc2a4\uac00 \ub3d9\uc77c\ud55c \ub124\ud2b8\uc6cc\ud06c\uc5d0 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4. \ub2e4\ud589\ud788\ub3c4 \uc790\ub3d9 \uc11c\ube44\uc2a4 \uac80\uc0c9\uc744 \uc704\ud55c \uc5ec\ub7ec \ub124\ud2b8\uc6cc\ud06c \ud504\ub85c\ud1a0\ucf5c\uc774 \uc874\uc7ac\ud569\ub2c8\ub2e4. \ubd09\uc96c\ub974, \ub791\ub370\ubd80, \uc81c\ub85c\ucee8\ud504, \uc548\ub4dc\ub85c\uc774\ub4dc NSD, mDNS, DLNA, UPnP \ub4f1\uc744 \ub4e4\uc5b4\ubcf4\uc168\uc744 \uac81\ub2c8\ub2e4. \ub300\ubd80\ubd84\uc740 DNS \uc11c\ube44\uc2a4 \ub808\uc9c0\uc2a4\ud2b8\ub9ac\ub97c \uae30\ubc18\uc73c\ub85c \ud569\ub2c8\ub2e4. DNS\ub294 IP\ub97c \ud638\uc2a4\ud2b8\uc5d0 \ub9e4\ud551\ud558\ub294 \uac83 \uc774\uc0c1\uc758 \uc5ed\ud560\uc744 \ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4. \uc8fc\uc18c, \uc774\ub984, \uc124\uba85\uc774 \ud3ec\ud568\ub41c \uc11c\ube44\uc2a4 \ubaa9\ub85d\ub3c4 \uc800\uc7a5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc774\uac83\uc774 \uc81c\uac00 \ub370\ubaa8\uc5d0\uc11c \uc0ac\uc6a9\ud55c \uac83\uc785\ub2c8\ub2e4. \uc800\ub294 \uac04\ub2e8\ud55c Java \uad6c\ud604\uc744 \uc120\ud0dd\ud588\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/github.com\/openhab\/jmdns\">JmDNS \ub77c\uc774\ube0c\ub7ec\ub9ac<\/a>. \uc774\ub807\uac8c \ud558\uba74 Java \ub124\uc774\ud2f0\ube0c \uc571\uacfc Android\uc5d0\uc11c \uac70\uc758 \ub3d9\uc77c\ud55c \uc784\ud329\ud2b8\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. UDP \ube0c\ub85c\ub4dc\uce90\uc2a4\ud305\uc744 \ud1b5\ud574 \uc791\ub3d9\ud569\ub2c8\ub2e4. \ub124\ud2b8\uc6cc\ud06c\uc5d0 \uc5f0\uacb0\ub41c \ub2e4\ub978 \uc0ac\ubb3c\uc5d0 \ud328\ud0b7\uc744 \ubcf4\ub0c5\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uc740 \uac00\uc7a5 \uad00\ub828\uc131\uc774 \ub192\uc740 \ucf54\ub4dc\ub97c \uac04\ub7b5\ud558\uac8c \uc0b4\ud3b4\ubcf4\ub294 \ub0b4\uc6a9\uc785\ub2c8\ub2e4.<\/p>\n<p>\uc7a5\uce58\uc5d0\uc11c \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ub77c\uc774\ud2b8 \ub9ac\uc2a4\ub108\ub97c \uc2dc\uc791\ud558\uc5ec \uc5f0\uacb0\uc744 \uc218\uc2e0\ud560 \uc218 \uc788\ub3c4\ub85d \ud569\ub2c8\ub2e4.<\/p>\n<pre><code>\r\n    public int startCBLiteListener(int port) {\r\n        LiteListener ls = new LiteListener(database.getManager(), port, null);\r\n\r\n        Thread thread = new Thread(ls);\r\n        thread.start();\r\n        return ls.getListenPort();\r\n    }\r\n<\/code><\/pre>\n<p>JmDNS\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc0c8 \uc11c\ube44\uc2a4 \ub178\ucd9c\ud558\uae30<\/p>\n<pre><code>\r\n    public void exposeService(int port) throws IOException {\r\n        ServiceInfo sInfos = ServiceInfo.create(SERVICE_TYPE, serviceName, port, SERVICE_DESCRIPTION);\r\n        jmdns.registerService(sInfos);\r\n    }\r\n<\/code><\/pre>\n<p>JmDNS\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud2b9\uc815 \uc11c\ube44\uc2a4 \ub4e3\uae30. DiscoveryListener \ub9ac\uc2a4\ub108\ub294 \uc2e4\uc81c\ub85c \ub3d9\uae30\ud654\ub97c \uc124\uc815\ud560 \uc218 \uc788\ub294 \uacf3\uc774\uae30 \ub54c\ubb38\uc5d0 \uc911\uc694\ud569\ub2c8\ub2e4.<\/p>\n<pre><code>\r\n    public void listenForService(){\r\n        jmdns.addServiceListener(SERVICE_TYPE, new DiscoveryListener(database, jmdns, serviceName));\r\n    }\r\n<\/code><\/pre>\n<p>\uac00\uc7a5 \uae54\ub054\ud55c \uad6c\ud604\uc740 \uc544\ub2c8\uc9c0\ub9cc \uc544\uc774\ub514\uc5b4\ub97c \uc5bb\uc744 \uc218 \uc788\uc744 \uac83\uc785\ub2c8\ub2e4. serviceResolved \uba54\uc11c\ub4dc\ub97c \uc790\uc138\ud788 \uc0b4\ud3b4\ubcf4\uc138\uc694. \ub124\ud2b8\uc6cc\ud06c\uc5d0\uc11c \uc0c8 \uc11c\ube44\uc2a4\uac00 \ubc1c\uacac\ub418\uc5c8\uc744 \ub54c \ud638\ucd9c\ub418\ub294 \uba54\uc11c\ub4dc\uc785\ub2c8\ub2e4. \uc774 \uba54\uc11c\ub4dc\ub294 \uc11c\ube44\uc2a4\uc758 URL\uc744 \uc81c\uacf5\ud558\ubbc0\ub85c \ud074\ub798\uc2dd \ubcf5\uc81c \ub9c1\ud06c\ub97c \uad6c\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre><code>\r\npackage org.couchbase.devex;\r\n\r\nimport com.couchbase.lite.Database;\r\nimport com.couchbase.lite.listener.LiteListener;\r\nimport com.couchbase.lite.replicator.Replication;\r\n\r\nimport javax.jmdns.JmDNS;\r\nimport javax.jmdns.ServiceEvent;\r\nimport javax.jmdns.ServiceListener;\r\nimport java.io.IOException;\r\nimport java.net.URL;\r\n\r\n\/**\r\n * Created by ldoguin on 13\/02\/15.\r\n *\/\r\npublic class DiscoveryListener implements ServiceListener {\r\n\r\n    private Database database;\r\n    private JmDNS jmdns;\r\n    private String serviceName;\r\n\r\n    public DiscoveryListener(Database database, JmDNS jmdns, String serviceName) {\r\n        this.database = database;\r\n        this.jmdns = jmdns;\r\n        this.serviceName = serviceName;\r\n    }\r\n\r\n    @Override\r\n    public void serviceAdded(ServiceEvent event) {\r\n        if (! serviceName.equals(event.getName())){\r\n            jmdns.requestServiceInfo(event.getType(), event.getName(), 10);\r\n        }\r\n    }\r\n\r\n    @Override\r\n    public void serviceRemoved(ServiceEvent event) {\r\n        System.out.println(event.getName() + \" removed\");\r\n    }\r\n\r\n    @Override\r\n    public void serviceResolved(ServiceEvent event) {\r\n        System.out.println(\"RESOLVED\");\r\n        String[] serviceUrls = event.getInfo().getURLs();\r\n        for (String url : serviceUrls) {\r\n            System.out.println(url);\r\n            setupSync(database, url + \"\/messages\");\r\n        }\r\n\r\n    }\r\n\r\n    public void setupSync(Database database, String syncUrl) {\r\n        try {\r\n            URL url = new URL(syncUrl);\r\n            Replication pullReplication = database.createPullReplication(url);\r\n\r\n            pullReplication.setContinuous(true);\r\n            pullReplication.start();\r\n\r\n            Replication pushReplication = database.createPushReplication(url);\r\n            pushReplication.setContinuous(true);\r\n            pushReplication.start();\r\n        } catch (IOException e){\r\n            throw new RuntimeException(e);\r\n        }\r\n    }\r\n}\r\n\r\n<\/code><\/pre>\n<p>\uadf8\ub9ac\uace0 \uc774\ub294 \ubaa8\ub4e0 Couchbase Lite \uc7a5\uce58\uac00 \uc27d\uac8c \ub3d9\uae30\ud654\ub420 \uc218 \uc788\ub3c4\ub85d \uad6c\ud604\ud558\uae30 \uc26c\uc6b4 \uc7ac\ubbf8\uc788\ub294 \uc2e4\ud5d8 \ud504\ub85c\uc81d\ud2b8\uc785\ub2c8\ub2e4. \ubb3c\ub860 \ud560 \uc218 \uc788\ub294 \uc77c\uc740 \ud6e8\uc52c \ub354 \ub9ce\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 \ubcf4\uc548 \ubd80\ubd84\uc744 \ucd94\uac00\ud558\ub294 \uac83\uc774\uc8e0. \uc790\uaca9 \uc99d\uba85\uc744 \ud55c \ubc88\ub9cc \uad50\ud658\ud558\ub294 \uccab \ubc88\uc9f8 \uc218\ub3d9 \ub3d9\uae30\ud654\ub97c \uc218\ud589\ud55c \ub2e4\uc74c \ub2e4\ub978 \ubaa8\ub4e0 \uc791\uc5c5\uc744 \uc790\ub3d9\uc73c\ub85c \uc218\ud589\ud558\ub294 \uac83\uc744 \uc0c1\uc0c1\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub3c4\uc6c0\uc774 \ub418\uc168\uae30\ub97c \ubc14\ub78d\ub2c8\ub2e4. \uc8fc\uc800\ud558\uc9c0 \ub9c8\uc2dc\uace0 \uc758\uacac\uc744 \ub0a8\uaca8 \uc8fc\uc138\uc694!<\/p>","protected":false},"excerpt":{"rendered":"<p>Last week I was speaking at\u00a0WebCamp Zagreb, a great conference for developers and designers. I gave a presentation entitled \u2018Let your devices talk to each other\u2019. For the demo part I did a very simple message app that syncs automatically [&hellip;]<\/p>","protected":false},"author":49,"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],"tags":[1337,1338,1475],"ppma_author":[9023],"class_list":["post-1980","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-mobile","tag-iot","tag-m2m","tag-p2p"],"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>Let your Devices talk to each other - The Couchbase Blog<\/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\/let-your-devices-talk-to-each-other-p2p\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Let your Devices talk to each other\" \/>\n<meta property=\"og:description\" content=\"Last week I was speaking at\u00a0WebCamp Zagreb, a great conference for developers and designers. I gave a presentation entitled \u2018Let your devices talk to each other\u2019. For the demo part I did a very simple message app that syncs automatically [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/let-your-devices-talk-to-each-other-p2p\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-10-06T14:55:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T06:54:05+00:00\" \/>\n<meta name=\"author\" content=\"Laurent Doguin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ldoguin\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"unstructured.io\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/let-your-devices-talk-to-each-other-p2p\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/let-your-devices-talk-to-each-other-p2p\/\"},\"author\":{\"name\":\"Laurent Doguin\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c0aa9b8f1ed51b7a9e2f7cb755994a5e\"},\"headline\":\"Let your Devices talk to each other\",\"datePublished\":\"2015-10-06T14:55:47+00:00\",\"dateModified\":\"2025-06-14T06:54:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/let-your-devices-talk-to-each-other-p2p\/\"},\"wordCount\":683,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/let-your-devices-talk-to-each-other-p2p\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"IoT\",\"M2M\",\"p2p\"],\"articleSection\":[\"Couchbase Mobile\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/let-your-devices-talk-to-each-other-p2p\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/let-your-devices-talk-to-each-other-p2p\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/let-your-devices-talk-to-each-other-p2p\/\",\"name\":\"Let your Devices talk to each other - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/let-your-devices-talk-to-each-other-p2p\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/let-your-devices-talk-to-each-other-p2p\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2015-10-06T14:55:47+00:00\",\"dateModified\":\"2025-06-14T06:54:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/let-your-devices-talk-to-each-other-p2p\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/let-your-devices-talk-to-each-other-p2p\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/let-your-devices-talk-to-each-other-p2p\/#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\/let-your-devices-talk-to-each-other-p2p\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Let your Devices talk to each other\"}]},{\"@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\/c0aa9b8f1ed51b7a9e2f7cb755994a5e\",\"name\":\"Laurent Doguin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/12929ce99397769f362b7a90d6b85071\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b8c466908092b46634af916b6921f30187a051e4367ded7ac9b1a3f2c5692fd2?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b8c466908092b46634af916b6921f30187a051e4367ded7ac9b1a3f2c5692fd2?s=96&d=mm&r=g\",\"caption\":\"Laurent Doguin\"},\"description\":\"Laurent is a nerdy metal head who lives in Paris. He mostly writes code in Java and structured text in AsciiDoc, and often talks about data, reactive programming and other buzzwordy stuff. He is also a former Developer Advocate for Clever Cloud and Nuxeo where he devoted his time and expertise to helping those communities grow bigger and stronger. He now runs Developer Relations at Couchbase.\",\"sameAs\":[\"https:\/\/x.com\/ldoguin\"],\"honorificPrefix\":\"Mr\",\"birthDate\":\"1985-06-07\",\"gender\":\"male\",\"award\":[\"Devoxx Champion\",\"Couchbase Legend\"],\"knowsAbout\":[\"Java\"],\"knowsLanguage\":[\"English\",\"French\"],\"jobTitle\":\"Director Developer Relation & Strategy\",\"worksFor\":\"Couchbase\",\"url\":\"https:\/\/www.couchbase.com\/blog\/ko\/author\/laurent-doguin\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Let your Devices talk to each other - The Couchbase Blog","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\/let-your-devices-talk-to-each-other-p2p\/","og_locale":"ko_KR","og_type":"article","og_title":"Let your Devices talk to each other","og_description":"Last week I was speaking at\u00a0WebCamp Zagreb, a great conference for developers and designers. I gave a presentation entitled \u2018Let your devices talk to each other\u2019. For the demo part I did a very simple message app that syncs automatically [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/let-your-devices-talk-to-each-other-p2p\/","og_site_name":"The Couchbase Blog","article_published_time":"2015-10-06T14:55:47+00:00","article_modified_time":"2025-06-14T06:54:05+00:00","author":"Laurent Doguin","twitter_card":"summary_large_image","twitter_creator":"@ldoguin","twitter_misc":{"Written by":"unstructured.io","Est. reading time":"4\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/let-your-devices-talk-to-each-other-p2p\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/let-your-devices-talk-to-each-other-p2p\/"},"author":{"name":"Laurent Doguin","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c0aa9b8f1ed51b7a9e2f7cb755994a5e"},"headline":"Let your Devices talk to each other","datePublished":"2015-10-06T14:55:47+00:00","dateModified":"2025-06-14T06:54:05+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/let-your-devices-talk-to-each-other-p2p\/"},"wordCount":683,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/let-your-devices-talk-to-each-other-p2p\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["IoT","M2M","p2p"],"articleSection":["Couchbase Mobile"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/let-your-devices-talk-to-each-other-p2p\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/let-your-devices-talk-to-each-other-p2p\/","url":"https:\/\/www.couchbase.com\/blog\/let-your-devices-talk-to-each-other-p2p\/","name":"Let your Devices talk to each other - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/let-your-devices-talk-to-each-other-p2p\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/let-your-devices-talk-to-each-other-p2p\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2015-10-06T14:55:47+00:00","dateModified":"2025-06-14T06:54:05+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/let-your-devices-talk-to-each-other-p2p\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/let-your-devices-talk-to-each-other-p2p\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/let-your-devices-talk-to-each-other-p2p\/#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\/let-your-devices-talk-to-each-other-p2p\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Let your Devices talk to each other"}]},{"@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\/c0aa9b8f1ed51b7a9e2f7cb755994a5e","name":"\ub85c\ub791 \ub3c4\uadc4","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/12929ce99397769f362b7a90d6b85071","url":"https:\/\/secure.gravatar.com\/avatar\/b8c466908092b46634af916b6921f30187a051e4367ded7ac9b1a3f2c5692fd2?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b8c466908092b46634af916b6921f30187a051e4367ded7ac9b1a3f2c5692fd2?s=96&d=mm&r=g","caption":"Laurent Doguin"},"description":"Laurent\ub294 \ud30c\ub9ac\uc5d0 \uc0ac\ub294 \uad34\uc9dc \uae08\uc18d\uacf5\ud559\ub3c4\uc785\ub2c8\ub2e4. \uc8fc\ub85c Java\ub85c \ucf54\ub4dc\ub97c \uc791\uc131\ud558\uace0 AsciiDoc\uc73c\ub85c \uad6c\uc870\ud654\ub41c \ud14d\uc2a4\ud2b8\ub97c \uc791\uc131\ud558\uba70 \ub370\uc774\ud130, \ub9ac\uc561\ud2f0\ube0c \ud504\ub85c\uadf8\ub798\ubc0d \ubc0f \uae30\ud0c0 \uc720\ud589\uc5b4\uc5d0 \ub300\ud574 \uc790\uc8fc \uc774\uc57c\uae30\ud569\ub2c8\ub2e4. \ub610\ud55c Clever Cloud\uc640 Nuxeo\uc758 \uac1c\ubc1c\uc790 \uc639\ud638\uc790\ub85c \ud65c\ub3d9\ud558\uba70 \ud574\ub2f9 \ucee4\ubba4\ub2c8\ud2f0\uac00 \ub354 \ud06c\uace0 \uac15\ub825\ud558\uac8c \uc131\uc7a5\ud560 \uc218 \uc788\ub3c4\ub85d \uc790\uc2e0\uc758 \uc2dc\uac04\uacfc \uc804\ubb38\uc131\uc744 \ubc14\ucce4\uc2b5\ub2c8\ub2e4. \ud604\uc7ac Couchbase\uc5d0\uc11c \uac1c\ubc1c\uc790 \uad00\uacc4\ub97c \uc6b4\uc601\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.","sameAs":["https:\/\/x.com\/ldoguin"],"honorificPrefix":"Mr","birthDate":"1985-06-07","gender":"male","award":["Devoxx Champion","Couchbase Legend"],"knowsAbout":["Java"],"knowsLanguage":["English","French"],"jobTitle":"Director Developer Relation & Strategy","worksFor":"Couchbase","url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/laurent-doguin\/"}]}},"authors":[{"term_id":9023,"user_id":49,"is_guest":0,"slug":"laurent-doguin","display_name":"Laurent Doguin","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/b8c466908092b46634af916b6921f30187a051e4367ded7ac9b1a3f2c5692fd2?s=96&d=mm&r=g","author_category":"","last_name":"Doguin","first_name":"Laurent","job_title":"","user_url":"","description":"Laurent\ub294 \ud30c\ub9ac\uc5d0 \uc0ac\ub294 \uad34\uc9dc \uae08\uc18d\uacf5\ud559\ub3c4\uc785\ub2c8\ub2e4. \uc8fc\ub85c Java\ub85c \ucf54\ub4dc\ub97c \uc791\uc131\ud558\uace0 AsciiDoc\uc73c\ub85c \uad6c\uc870\ud654\ub41c \ud14d\uc2a4\ud2b8\ub97c \uc791\uc131\ud558\uba70 \ub370\uc774\ud130, \ub9ac\uc561\ud2f0\ube0c \ud504\ub85c\uadf8\ub798\ubc0d \ubc0f \uae30\ud0c0 \uc720\ud589\uc5b4\uc5d0 \ub300\ud574 \uc790\uc8fc \uc774\uc57c\uae30\ud569\ub2c8\ub2e4. \ub610\ud55c Clever Cloud\uc640 Nuxeo\uc758 \uac1c\ubc1c\uc790 \uc639\ud638\uc790\ub85c \ud65c\ub3d9\ud558\uba70 \ud574\ub2f9 \ucee4\ubba4\ub2c8\ud2f0\uac00 \ub354 \ud06c\uace0 \uac15\ub825\ud558\uac8c \uc131\uc7a5\ud560 \uc218 \uc788\ub3c4\ub85d \uc790\uc2e0\uc758 \uc2dc\uac04\uacfc \uc804\ubb38\uc131\uc744 \ubc14\ucce4\uc2b5\ub2c8\ub2e4. \ud604\uc7ac Couchbase\uc5d0\uc11c \uac1c\ubc1c\uc790 \uad00\uacc4\ub97c \uc6b4\uc601\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/1980","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\/49"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=1980"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/1980\/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=1980"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=1980"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=1980"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=1980"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}