{"id":1335,"date":"2015-06-01T18:00:08","date_gmt":"2015-06-01T18:00:08","guid":{"rendered":"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/"},"modified":"2026-07-20T22:32:31","modified_gmt":"2026-07-20T22:32:31","slug":"thingplus-news_thingplus","status":"publish","type":"post","link":"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/","title":{"rendered":"[\ub9c8\uc18c \ud074\ub77c\uc6b0\ub4dc \ud2b9\uc9d1] (4) \ub2ec\ub9ac\uc6cd\uc2a4\uc758 \ud074\ub77c\uc6b0\ub4dc \uae30\ubc18 IoT \uac1c\ubc1c\u2026SaaS\uc778 \u2018\uc53d\ud50c\ub7ec\uc2a4\u2019"},"content":{"rendered":"<h1><\/h1>\n<p><!--:ko--><br \/>\n<img decoding=\"async\" src=\"http:\/\/photodb.imaso.co.kr\/2015\/05\/22\/yoojs@imaso.co.kr\/1989PP_150522_daliworks.jpg\" alt=\"\"><\/p>\n<p><a href=\"https:\/\/thingplus.net\">\uc53d\ud50c\ub7ec\uc2a4(Thing+)<\/a>\ub294 \uc0ac\ubb3c\uc778\ud130\ub137(IoT) \uc751\uc6a9\uc11c\ube44\uc2a4\ub97c \uc704\ud55c \uc11c\ube44\uc2a4\ud615 \uc18c\ud504\ud2b8\uc6e8\uc5b4(SaaS)\ub2e4. \uc0ac\uc6a9\uc790\uc5d0\uac8c IoT \uacbd\ud5d8\uc744 \uc81c\uacf5\ud558\ub824\ub294 \uc11c\ube44\uc2a4 \ud30c\ud2b8\ub108\uc5d0\uac8c \ud074\ub77c\uc6b0\ub4dc \uc778\ud504\ub77c\uc5d0\uc11c \uc218\ud589\ub418\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\ubfd0 \uc544\ub2c8\ub77c \uc784\ubca0\ub514\ub4dc \ubbf8\ub4e4\uc6e8\uc5b4\uc640 \ud074\ub77c\uc774\uc5b8\ud2b8 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uae4c\uc9c0 \ubaa8\ub450 \uc81c\uacf5\ud574 \uc27d\uace0 \ube60\ub974\uac8c \uc11c\ube44\uc2a4\ub97c \uc2dc\uc791\ud560 \uc218 \uc788\ub3c4\ub85d \ub3c4\uc640\uc900\ub2e4. \uc774\ubc88 \uae00\uc5d0\uc11c\ub294 \uc53d\ud50c\ub7ec\uc2a4 \uac1c\ubc1c \uacbd\ud5d8\uc744 \ubc14\ud0d5\uc73c\ub85c \ud074\ub77c\uc6b0\ub4dc \uae30\ubc18 \uc751\uc6a9\uc11c\ube44\uc2a4\ub97c \uac1c\ubc1c\ud560 \ub54c \uace0\ub824\ud574\uc57c \ud560 \uc810\uc744 \uc0b4\ud3b4\ubcf8\ub2e4.<\/p>\n<h4><i><\/i>&nbsp;<a href=\"#imaso_2\" data-parent=\"#collapse_f0bc-a059\" data-toggle=\"collapse\"><br \/>\n<strong>\ud544\uc790 \uc18c\uac1c<\/strong><\/a><\/h4>\n<p><strong>\uc774\uc601\uc218 yougsoo.lee@daliworks.net<\/strong>&nbsp;| \ub2ec\ub9ac\uc6cd\uc2a4\uc758 CTO\ub85c\uc11c \ub2ec\ub9ac\uc6cd\uc2a4\uc758 \ud480\uc2a4\ud0dd \uac1c\ubc1c\uc790\ub4e4\uacfc \ud568\uaed8 Thing+ \uc11c\ube44\uc2a4\ub97c \uac1c\ubc1c\ud558\uace0 \uc788\ub2e4. \uc544\ub85c\ub9c8\uc18c\ud504\ud2b8, \uc36c\ub9c8\uc774\ud06c\ub85c\uc2dc\uc2a4\ud15c\uc988, \uc624\ub77c\ud074\uc5d0\uc11c Java VM \ubc0f \uc784\ubca0\ub514\ub4dc \ubd84\uc57c\uc758 \uc81c\ud488 \uac1c\ubc1c \uacbd\ud5d8\uc744 \uac00\uc9c0\uace0 \uc788\ub2e4.<\/p>\n<p>\uc815\ub9ac| \uc720\uc7ac\uc11d \uae30\uc790 yoojs@imaso.co.kr<\/p>\n<p><strong>\ud655\uc7a5\uc131(Scalable)\uacfc \uace0\uac00\uc6a9\uc131(High availability)\uc5d0 \ub300\ud55c \uace0\ub824<\/strong><\/p>\n<p>\uc53d\ud50c\ub7ec\uc2a4\ub294 \uac1c\ubc1c\ud658\uacbd \uad6c\uc131\uc744 \uc704\ud574 \ud55c \ub300\uc758 \uac00\uc0c1\uba38\uc2e0(VM)\uc5d0\uc11c \ubaa8\ub4e0 \uc11c\ube44\uc2a4\ub97c \uc218\ud589\ud560 \uc218\ub3c4 \uc788\uace0, \uc0c1\uc6a9 \uc11c\ube44\uc2a4\ub97c \uc704\ud574 \uc218\uc2ed \ub300 \uc774\uc0c1\uc758 VM\uc5d0\uc11c\ub3c4 \uc218\ud589\ub420 \uc218 \uc788\ub294 \ud655\uc7a5 \uac00\ub2a5\ud55c \uad6c\uc870\ub97c \uac00\uc9c4\ub2e4. \ub610\ud55c, \uc7a5\uc560\uc870\uce58(failover)\ub97c \ud1b5\ud574 \uace0\uac00\uc6a9\uc131\uc744 \uc720\uc9c0\ud55c\ub2e4. \ud655\uc7a5\uc131\uacfc \uace0\uac00\uc6a9\uc131\uc744 \ub9cc\uc871\ud558\uae30 \uc704\ud574\uc11c \uc791\uc740 \uae30\ub2a5 \ud558\ub098\ub97c \ucd94\uac00\ud560 \ub54c\uc5d0\ub3c4 \ub2e4\uc74c\uc758 \uc694\uc18c\ub97c \uace0\ubbfc\ud574\uc57c \ud55c\ub2e4.<\/p>\n<p>\u2013 \ud558\ub098\uc758 \uc778\uc2a4\ud134\uc2a4(instance)\uc5d0\uc11c \ubb38\uc81c\uac00 \uc788\uc744 \ub54c \ubc14\ub85c \ub2e4\ub978 \uc778\uc2a4\ud134\uc2a4\uc5d0\uc11c \ud574\ub2f9 \uae30\ub2a5\uc744 \uc218\ud589\ud560 \uc218 \uc788\ub3c4\ub85d \uc7a5\uc560\uc870\uce58(failover)\uac00 \uac00\ub2a5\ud55c\uac00<\/p>\n<p>\u2013 \ubd80\ud558\uac00 \ub9ce\uc774 \uac78\ub9ac\uba74 \uc778\uc2a4\ud134\uc2a4\ub97c \ub354 \ub298\ub824\uc11c \ud574\uacb0\ud560 \uc218 \uc788\ub3c4\ub85d \ubd84\uc0b0\ud560 \uc218 \uc788\ub294\uac00. \uc0e4\ub529(sharding)\uc744 \ud560 \uc218 \uc788\ub294\uac00. \uc791\uc5c5\ud050(job queue)\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub098<\/p>\n<p>\u2013 \uc5ec\ub7ec \uac1c\uc758 \uc778\uc2a4\ud134\uc2a4\ub97c \uc5b4\ub5a4 \ud615\ud0dc(active\/standby, active\/active, master\/slave)\ub85c \uc218\ud589\ud560 \uac83\uc778\uac00<\/p>\n<p><strong>\ud480\uc2a4\ud0dd \uac1c\ubc1c\uc790\uc758 \uc0dd\uc0b0\uc131 \ud5a5\uc0c1\uc744 \uc704\ud55c \uace0\ub824<\/strong><\/p>\n<p>\uc53d\ud50c\ub7ec\uc2a4\ub294 \ub2e8\uc21c\ud55c \uae30\ub2a5 \ud558\ub098\ub97c \ucd94\uac00\ud558\ub354\ub77c\ub3c4, \uae30\uae30 \uc5f0\uacb0\uc744 \uc704\ud55c \uc784\ubca0\ub514\ub4dc \ubbf8\ub4e4\uc6e8\uc5b4, \ud074\ub77c\uc6b0\ub4dc \uc560\ud50c\ub9ac\ucf00\uc774\uc158, \ud074\ub77c\uc774\uc5b8\ud2b8 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ub4f1 \ub2e4\uc591\ud55c \ucf54\ub4dc\ub97c \uc218\uc815\ud574\uc57c \ud558\ub294 \uacbd\uc6b0\uac00 \ube48\ubc88\ud558\ub2e4. \ub530\ub77c\uc11c \ud480\uc2a4\ud0dd \uac1c\ubc1c\uc790\ub4e4\uc774 \uc774\ub7ec\ud55c \uae30\ub2a5\uc744 \uc27d\uac8c \ucd94\uac00\ud560 \uc218 \uc788\ub3c4\ub85d \uac00\ub2a5\ud55c \ub3d9\uc77c\ud55c \uac1c\ubc1c \uc5b8\uc5b4\uc778 \uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc774\uc6a9\ud558\uace0 \ub3d9\uc77c\ud55c \ub77c\uc774\ube0c\ub7ec\ub9ac \ubc0f \ucf54\ub529 \ud45c\uc900(coding convention)\uc744 \uc720\uc9c0\ud558\ub824\uace0 \ub178\ub825\ud55c\ub2e4. \uc608\ub97c \ub4e4\uba74 lodash(https:\/\/lodash.com\/) \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc784\ubca0\ub514\ub4dc \ubbf8\ub4e4\uc6e8\uc5b4, \uc11c\ubc84 \uce21\uacfc \uc6f9 \ube0c\ub77c\uc6b0\uc800 \ud074\ub77c\uc774\uc5b8\ud2b8 \ucf54\ub4dc\uc5d0\uc11c \ubaa8\ub450 \ub3d9\uc77c\ud558\uac8c \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n<p><strong>\uc790\ub3d9\ud654, \uc790\ub3d9\ud654 \uadf8\ub9ac\uace0 \uc790\ub3d9\ud654<\/strong><\/p>\n<p>\uc53d\ud50c\ub7ec\uc2a4\ub97c \uc6b4\uc601\ud558\uae30 \uc704\ud574\uc11c\ub294 \uc5ec\ub7ec \ub300 \uc11c\ubc84\ub97c \uad00\ub9ac\ud574\uc57c \ud558\uace0 \uc0c8\ub85c\uc6b4 \ubc84\uc804\uc758 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc801\uc6a9\ud558\uae30 \uc704\ud55c \ub9b4\ub9ac\uc988 \ub4f1 \ub2e4\uc591\ud55c \uc791\uc5c5\uc774 \ud544\uc694\ud558\ub2e4. \uadf8\ub7ec\ubbc0\ub85c \uc774\ub7ec\ud55c \uc791\uc5c5\uc744 \uc790\ub3d9\ud654\ud560 \uc218 \uc788\ub3c4\ub85d \ud074\ub77c\uc6b0\ub4dc\ub97c \uad6c\ucd95\ud574\uc57c \ud55c\ub2e4. \uc53d\ud50c\ub7ec\uc2a4\uc5d0\uc11c\ub294 \ub178\ub4dc \ucee8\ud2b8\ub864(node control)\uacfc \uc140 \uc2a4\ud06c\ub9bd\ud2b8(shell script) \ub4f1\uc744 \uc0ac\uc6a9\ud574 \uc790\ub3d9\ud654 \ucf54\ub4dc\ub97c \uc9c1\uc811 \uc791\uc131\ud558\uace0 \uc788\ub2e4. \uc55e\uc73c\ub85c\ub3c4 \uc11c\ubc84 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ubc0f \uc778\uc2a4\ud134\uc2a4\uc758 \uc790\ub3d9 \ubc30\ud3ec\ub97c \uc704\ud574 ansible \ub4f1\uacfc \uac19\uc740 \ub3c4\uad6c\uc758 \ub3c4\uc785\uc744 \uace0\ub824\ud558\uace0 \uc788\ub2e4.<\/p>\n<p>\ub610\ud55c, \ubcf5\uc7a1\ud55c \uc2dc\uc2a4\ud15c\uc744 \ud56d\uc0c1 \uc548\uc815\ub41c \uc0c1\ud0dc\ub85c \uc720\uc9c0\ud558\uae30 \uc704\ud574 \ub2e4\uc74c\uacfc \uac19\uc740 \uc790\ub3d9\ud654\ub41c \ud14c\uc2a4\ud2b8\ub97c \uc218\ud589\ud558\uace0 \uc788\ub2e4.<\/p>\n<p>\u2013 \ub2e8\uc704 \ud14c\uc2a4\ud2b8: \ub9e4 \uc18c\uc2a4\ucf54\ub4dc \ucee4\ubc0b(commit) \uc2dc CI(continous integration)\uac00 \uc218\ud589\ub418\uace0 \uc774\ub54c \ub2e8\uc704 \ud14c\uc2a4\ud2b8\ub97c \uc218\ud589\ud55c\ub2e4<\/p>\n<p>\u2013 \uc0ac\uc6a9\uc790 \uc778\ud130\ud398\uc774\uc2a4 \uc778\ud130\uc561\ud2f0\ube0c \ud14c\uc2a4\ud2b8: \uc8fc\uae30\uc801\uc73c\ub85c \uc0ac\uc6a9\uc790 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uc778\ud130\uc561\ud2f0\ube0c \uc0ac\uc6a9\uc790 \uc778\ud130\ud398\uc774\uc2a4 \ud14c\uc2a4\ud2b8\ub97c \uc218\ud589\ud55c\ub2e4.<\/p>\n<p>\u2013 \uc885\ub2e8\uac04(end to end) \ud14c\uc2a4\ud2b8: IoT \uae30\uae30\uc5d0\uc11c \ubc1c\uc0dd\ud55c \ub370\uc774\ud130\uac00 \uc11c\ubc84\uc5d0 \uc800\uc7a5\ub418\uace0 \uc774\uc5d0 \uc758\ud574 \uaddc\uce59\uc774 \uc218\ud589\ub418\uba70 \uacb0\uacfc\uac00 \ud0c0\uc784\ub77c\uc778\uc5d0 \ub0a8\ub294 \uc804 \uacfc\uc815\uc744 \uc9c0\uc18d\uc801\uc73c\ub85c \ud655\uc778\ud55c\ub2e4.<\/p>\n<p><strong>\ud074\ub77c\uc6b0\ub4dc \uc778\ud504\ub77c\uc5d0 \ub3c5\ub9bd\uc801\uc778 \uc544\ud0a4\ud14d\ucc98\uc640 \uc0ac\uc6a9 \ube44\uc6a9 \ucd5c\uc18c\ud654<\/strong><\/p>\n<p>\ud2b9\uc815 \ud074\ub77c\uc6b0\ub4dc \uc778\ud504\ub77c\uc5d0 \uc758\uc874\uc801\uc778 \uae30\ub2a5\uc740 \ucd5c\ub300\ud55c \uc904\uc774\uae30 \uc704\ud574 \ub3c4\ucee4(docker)\ub4f1\uc758 \ucee8\ud14c\uc774\ub108 \uae30\uc220\uc744 \uc774\uc6a9\ud558\uc5ec \uc544\ub9c8\uc874\uc6f9\uc11c\ube44\uc2a4(AWS), \uc560\uc800(Azure), \uc0ac\uc124 \ud074\ub77c\uc6b0\ub4dc\uc5d0\uc11c\ub3c4 \uc53d\ud50c\ub7ec\uc2a4\uc758 \uc218\ud589\uc774 \uac00\ub2a5\ud558\ub3c4\ub85d \ud55c\ub2e4. \uadf8\ub9ac\uace0 \ud074\ub77c\uc6b0\ub4dc \uc778\ud504\ub77c\uc758 \uc0ac\uc6a9 \ube44\uc6a9\uc5d0 \ub300\ud55c \uacfc\uae08 \ubc29\uc2dd\uc744 \uc815\ud655\ud558\uac8c \uc774\ud574\ud574 \ucd5c\uc18c \ube44\uc6a9\uc73c\ub85c \uc53d\ud50c\ub7ec\uc2a4 \uae30\ub2a5\uc774 \ub3d9\uc791\ud558\ub3c4\ub85d \uad6c\ud604\ud55c\ub2e4. \ub3d9\uc2dc\uc5d0 \uc0ac\uc6a9\uc790 \uacbd\ud5d8\uc744 \ud574\uce58\uc9c0 \uc54a\uc544\uc57c \ud558\ubbc0\ub85c \ud56d\uc0c1 \uc5b4\ub824\uc6b4 \ubd80\ubd84\uc774\ub2e4.<\/p>\n<p>\uc55e\uc5d0\uc11c \uba85\uc2dc\ud55c \uace0\ub824\ud560 \uc810\uc744 \uc801\uc6a9\ud558\uae30 \uc704\ud574 \uc8fc\ud0a4\ud37c(zookeeper)\ub97c \uc27d\uac8c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d \ub3c4\uc640\uc8fc\ub294 \u2018zkHelper\u2019\ub97c \uac1c\ubc1c\ud558\uc600\uace0, \ube0c\ub77c\uc6b0\uc800 \ud14c\uc2a4\ud2b8 \uc790\ub3d9\ud654 \ub3c4\uad6c\uc778 \u2018\ub098\uc774\ud2b8\uc640\uce58(nightwatch.js)\u2019\ub97c \ud65c\uc6a9\ud558\uace0 \uc788\ub2e4.<\/p>\n<p><strong>zkHelper-\uc8fc\ud0a4\ud37c\ub97c \uc774\uc6a9\ud55c \ubd84\uc0b0\ucc98\ub9ac \ub3c4\uc6b0\ubbf8<\/strong><\/p>\n<p>\uc53d\ud50c\ub7ec\uc2a4 \uc11c\ube44\uc2a4\ub294 \uc218\ubc31 \uac1c \uc11c\ubc84(\uc774 \uae00\uc5d0\uc11c\ub294 \ubb3c\ub9ac\uc801 \uc11c\ubc84\uac00 \uc544\ub2c8\ub77c, \ub2e8\uc704 \uc77c\uc744 \ucc98\ub9ac\ud558\ub294 \uc11c\ubc84 \uce21 \uc560\ud50c\ub9ac\ucf00\uc774\uc158)\uac00 \uc11c\ub85c \ud611\ub825\ud574 \ubcf5\uc7a1\ud55c \uc77c\uc744 \ub098\ub220 \uc218\ud589\ud55c\ub2e4.<\/p>\n<p>\ubd84\uc0b0 \ud658\uacbd\uc5d0\uc11c\ub294 \ub9ce\uc740 \uc11c\ubc84\ub97c \uad00\ub9ac\ud558\uace0 \uc5ed\ud560\uc744 \uc9c0\uc815\ud558\uae30 \uc704\ud574 \uc8fc\ud0a4\ud37c\uac00 \ub110\ub9ac \uc0ac\uc6a9\ub41c\ub2e4. \ub2e4\ub978 \ub300\uc548\ub4e4\ub3c4 \uc788\uc9c0\ub9cc \ubd84\uc0b0 \ud658\uacbd\uc758 \uc870\uc815\uc790 \uc5ed\ud560\uc744 \ud558\ub294 \uac00\uc7a5 \uc778\uae30 \uc88b\uc740 \ub3c4\uad6c\uc774\uae30 \ub54c\ubb38\uc774\ub2e4. \uc8fc\ud0a4\ud37c\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \ud2b9\uc131\uc774 \uc788\ub2e4.<\/p>\n<p>\u2013 znode \ub2e8\uc704\ub85c \uad00\ub9ac\ub41c\ub2e4.<\/p>\n<p>\u2013 znode\ub294 \ud30c\uc77c \uc2dc\uc2a4\ud15c\uacfc \uc720\uc0ac\ud55c \ub514\ub809\ud1a0\ub9ac \uad6c\uc870(path)\ub97c \uac00\uc9c4\ub2e4.<\/p>\n<p>\u2013 znode\ub294 \ubd80\ubaa8(parent) \ub178\ub4dc\ub97c \uac00\uc838\uc57c \ud558\uba70, \ub8e8\ud2b8(root) \ub178\ub4dc\uc758 path\ub294 \u2018\/\u2019\uc774\ub2e4.<\/p>\n<p>\u2013 znode\ub294 \ub370\uc774\ud130\ub97c \uc800\uc7a5\ud560 \uc218 \uc788\ub2e4.<\/p>\n<p>\u2013 znode\ub294 path\uc758 \ubcc0\ud654 \ub610\ub294 \uc800\uc7a5\ub41c \ub370\uc774\ud130\uc758 \ubcc0\ud654\ub97c \ud1b5\ubcf4\ubc1b\uc744 \uc218 \uc788\ub2e4.<\/p>\n<p>\u2013 znode\ub294 Zookeeper\uc640 \ud074\ub77c\uc774\uc5b8\ud2b8\uc758 \uc5f0\uacb0\uc774 \ub04a\uc5b4\uc9c0\uba74 \uc790\ub3d9\uc73c\ub85c \uc0ad\uc81c\ub418\ub294 Ephemeral \ub178\ub4dc\ub85c \uc124\uc815\ud560 \uc218 \uc788\ub2e4.<\/p>\n<p>\uc53d\ud50c\ub7ec\uc2a4 \uac1c\ubc1c\ud300\uc740 \uc774\ub7ec\ud55c \uc8fc\ud0a4\ud37c\uc758 \ud2b9\uc131\uc744 \uc0ac\uc6a9\ud574 \ubd84\uc0b0\ud658\uacbd\uc5d0\uc11c \ubcf4\ub2e4 \uc27d\uac8c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d zkHelper\ub97c \uc624\ud508 \uc18c\uc2a4 \uc18c\ud504\ud2b8\uc6e8\uc5b4\ub85c \uacf5\uac1c\ud588\ub2e4. \uc774\ub97c \uc0ac\uc6a9\ud574 \uc2e4\uc81c \ub9c8\uc2a4\ud130\ub97c \uc120\uc815\ud558\ub294 \uacbd\uc6b0 znode\uac00 \uc5b4\ub5bb\uac8c \ubcc0\uacbd\ub418\ub294\uc9c0\ub97c \uc0b4\ud3b4\ubcf4\uaca0\ub2e4.<\/p>\n<p>Node#1 \uc11c\ubc84 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c zkHelper\ub97c &lt;\ub9ac\uc2a4\ud2b8 1&gt;\uc758 \uc635\uc158\uc73c\ub85c \ucd08\uae30\ud654\ud558\uba74 &lt;\ub9ac\uc2a4\ud2b8 2&gt;\uc640 \uac19\uc774 \uc8fc\ud0a4\ud37c\uc5d0 \ub178\ub4dc\ub4e4\uc774 \uc0dd\uae34\ub2e4.<\/p>\n<p>node#2 \uc11c\ubc84 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \ucd94\uac00\ub85c \uc218\ud589\ub418\uba74 \/myapps\/votes\/n_00002\ub85c 2\ubc88 \ud2f0\ucf13\uc744 \ubc1b\ub294\ub2e4. \uadf8\ub7ec\ub098 node#1\uc774 1\ubc88 \ud2f0\ucf13(\uac00\uc7a5 \ube60\ub978 \ud2f0\ucf13)\uc744 \uac00\uc9c0\uace0 \uc788\uc73c\ubbc0\ub85c \ub9c8\uc2a4\ud130 \uc9c0\uc704\ub97c \uc720\uc9c0\ud55c\ub2e4.<\/p>\n<p>&lt;\ub9ac\uc2a4\ud2b8 1&gt; zkHelper \ucd08\uae30\ud654 \uc635\uc158<\/p>\n<pre style=\"border: 1px solid #ccc; background-color: #f5f5f5; padding: 9.5px;\">{\nbasePath: 'myapps'\nnode: node#1:1234 \/\/ {hostname}:{port}\n}\n<\/pre>\n<p>&lt;\ub9ac\uc2a4\ud2b8 2&gt; \uc8fc\ud0a4\ud37c\uc5d0 \uc0dd\uae34 \ub178\ub4dc<\/p>\n<pre style=\"border: 1px solid #ccc; background-color: #f5f5f5; padding: 9.5px;\">\/myapps<\/pre>\n<p>&lt;\ub9ac\uc2a4\ud2b8 3&gt; node#1 \ub9c8\uc2a4\ud130 \uc9c0\uc704 \uc720\uc9c0<\/p>\n<pre style=\"border: 1px solid #ccc; background-color: #f5f5f5; padding: 9.5px;\">\/myapps<\/pre>\n<p>\ub9c8\ucc2c\uac00\uc9c0\ub85c node#3, node#4 \uc11c\ubc84 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \ucd94\uac00\ub85c \ub354 \uc218\ud589\ub418\uba74 \/myapps\/nodes \ub178\ub4dc\uc640 \/myapps\/votes \ub178\ub4dc\uc5d0 \uc790\uc2dd \ub178\ub4dc\uac00 \uc0dd\uc131\ub420 \uac83\uc774\uace0 \ub9c8\uc2a4\ud130\ub3c4 \ubcc0\uacbd\ub418\uc9c0 \uc54a\ub294\ub2e4.<\/p>\n<p>\uc7a5\uc560\uac00 \ubc1c\uc0dd\ud574 \ub9c8\uc2a4\ud130\uc778 node#1 \uc11c\ubc84 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \uc8fc\ud0a4\ud37c\uc640 \uc5f0\uacb0\uc774 \ub04a\uc5b4\uc9c0\uba74 \ud574\ub2f9 \ub178\ub4dc(Ephemeral \ub178\ub4dc\ub85c \ub4f1\ub85d\ub3fc \uc788\uc73c\ubbc0\ub85c)\ub294 \uc0ac\ub77c\uc9c4\ub2e4. \uc774\ub85c \uc778\ud558\uc5ec \ub2e4\uc2dc \ub9c8\uc2a4\ud130\ub97c \uc120\ucd9c\ud558\ub294\ub370, \uc774\ub54c \ub9c8\uc2a4\ud130 \uc120\ucd9c\uc5d0 \ucc38\uc5ec\ud558\ub294 \ubaa8\ub4e0 \uc11c\ubc84\uac00 \uc7ac\uc2dc\uc791\ud55c\ub2e4. \ub530\ub77c\uc11c, \uacf5\uc815\ud558\uac8c \uacbd\uc7c1\ud574\uc11c \ud2f0\ucf13\uc744 \ucc28\ub840\ub85c \uac00\uc838\uac00\uace0 \ud2f0\ucf13\ubc88\ud638\uac00 \ub0ae\uc740 \uc11c\ubc84\uac00 \ub9c8\uc2a4\ud130\uac00 \ub41c\ub2e4.<br \/>\n&lt;\ub9ac\uc2a4\ud2b8 4&gt;\ub294 node#3\uc774 \ub9c8\uc2a4\ud130\uac00 \ub41c \uacbd\uc6b0\uc758 znode \uc0c1\ud0dc\ub2e4.<\/p>\n<p>&lt;\ub9ac\uc2a4\ud2b8 4&gt; \ub9c8\uc2a4\ud130\uac00 \ub41c node#3<\/p>\n<pre style=\"border: 1px solid #ccc; background-color: #f5f5f5; padding: 9.5px;\">\/myapps<\/pre>\n<p>\uc774\ubc88\uc5d0\ub294 \ub9c8\uc2a4\ud130 \uc120\ucd9c\uacfc \uad00\ub828\ud574 zkHelper\uc758 \uaddc\uce59\uc744 \uc54c\uc544\ubcf8\ub2e4. \uc8fc\ud0a4\ud37c\uc758 \uc2dc\uac04 \ub2e8\uc704(tick)\uac00 2\ucd08\ub85c \uc11c\ubc84\uac00 \ub04a\uc5b4\uc84c\ub2e4\uace0 \ud310\ub2e8\ud558\ub294 \uae30\uc900\uc2dc\uac04(sessionTimeout)\uc744 10\ucd08\ub85c \uac00\uc815\ud55c\ub2e4. \ub9c8\uc2a4\ud130\ub97c \uc120\ucd9c\ud560 \uc0c1\ud669\uc774 \ub418\uba74 \ubaa8\ub4e0 \uc11c\ubc84\ub294 \uacbd\uc7c1\ud558\uae30 \uc704\ud574\uc11c \uc7ac\uc2dc\uc791\ud55c\ub2e4. \ub2e8\uc21c \uc720\uc9c0\ubcf4\uc218 \ubaa9\uc801 \ub4f1\uc73c\ub85c \uc7ac\uc2dc\uc791\ud55c \uacbd\uc6b0\ub294 \uae30\ub4dd\uad8c\uc744 \uc8fc\uae30 \uc704\ud574 \ub9c8\uc2a4\ud130\uac00 10\ucd08(sessionTimeout) \ub0b4\uc5d0 \uc0b4\uc544\ub098\uac8c \ub418\uba74 \uacc4\uc18d \ub9c8\uc2a4\ud130\ub97c \uc720\uc9c0\ud55c\ub2e4. \uac04\ud639 \uc11c\ubc84 \uac04 \ub124\ud2b8\uc6cc\ud06c \uc0ac\uc815\uc774 \uc88b\uc9c0 \uc54a\uc544\uc11c \ub04a\uc5b4\uc9c0\ub294 \uacbd\uc6b0\uc5d0\ub294 \ub9c8\uc2a4\ud130 \uc120\ucd9c\uacfc\uc815\uc774 \ube48\ubc88\ud558\uac8c \ubc1c\uc0dd\ud55c\ub2e4. \uc774\ub97c \ucd5c\uc18c\ud654\ud558\uae30 \uc704\ud574 \uc77c\uc2dc\uc801\uc73c\ub85c \ub124\ud2b8\uc6cc\ud06c\uac00 \ub04a\uc5b4\uc9c0\ub354\ub77c\ub3c4 5\ucd08 \ud6c4\uc5d0 \ub2e4\uc2dc \uc2dc\ub3c4\ud558\ub3c4\ub85d \ud55c\ub2e4. 5\ucd08\ub85c \uc815\ud55c \uc774\uc720\ub294 \uc8fc\ud0a4\ud37c \uc2dc\uac04 \ub2e8\uc704(tick)\uac00 \ub450 \ubc30\uc5d0 50% \uc5ec\uc720\ub97c \ub450\uc5c8\uae30 \ub54c\ubb38\uc774\ub2e4.<\/p>\n<p>&lt;\ub9ac\uc2a4\ud2b8 5&gt;\ub97c \ud1b5\ud574 zkHelper\uc758 \uc0ac\uc6a9\ubc29\ubc95\uc744 \uc54c\uc544\ubcf8\ub2e4. \uc8fc\ud0a4\ud37c \uc138 \ub300\ub97c \uc6b4\uc6a9\ud558\uace0 \uc788\ub294 \ud658\uacbd\uc5d0\uc11c \ub9c8\uc2a4\ud130 \uc11c\ubc84 \uc120\ucd9c\uc5d0 \ucc38\uc5ec\ud574 \ub9c8\uc2a4\ud130\/\uc2ac\ub808\uc774\ube0c\ub97c \uacb0\uc815\ud558\ub294 \uc608\uc81c\ub2e4. \uc9c1\uc811 \ub9c8\uc2a4\ud130 \uc120\ucd9c\uc5d0 \ucc38\uc5ec \ud558\uc9c0 \uc54a\uace0, \uad00\ucc30\uc790(Observer mode)\uac00 \ub418\uc5b4 \ubaa8\ub2c8\ud130\ub9c1\ud558\ub294 \uc608\uc81c\ub3c4 \uc788\ub2e4. \uc11c\ubc84 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \ucd94\uac00\uac10\uc18c\ub418\ub294\uc9c0, \ub9c8\uc2a4\ud130\uac00 \ubc14\ub00c\ub294\uc9c0 \uc810\uac80\ud55c\ub2e4.<\/p>\n<p>&lt;\ub9ac\uc2a4\ud2b8 5&gt; \uc8fc\ud0a4\ud37c 3\uac1c\uac00 \uc6b4\uc6a9\ud558\ub294 \ud658\uacbd\uc5d0\uc11c \ub9c8\uc2a4\ud130 \uc11c\ubc84 \uc120\ucd9c\uc5d0 \ucc38\uc5ec<\/p>\n<pre style=\"border: 1px solid #ccc; background-color: #f5f5f5; padding: 9.5px;\">var zk = require('zkHelper'),\noptions = {\nbasePath: '\/myapps';\nconfigPath: '\/myapps\/config',\nnode: require('os').hostname(),\nservers: ['zk0:2181', 'zk1:2181', 'zk2:2181'], \/\/ zk servers\nclientOptons: {\nsessionTimeout: 10000,\nretries: 3\n}\n};\nzk.init(options, function (err, zkClient) {\nvar appConfiguration;\nif (zk.isMaster()) {\nconsole.info('i am master')\n} else {\nconsole.info('master', zk.getMaster() &amp;&amp; zk.getMaster().master)\n}\nappConfiguration = zk.getConfig();\n\/\/ do something\n});\n<\/pre>\n<p>&lt;\ub9ac\uc2a4\ud2b8 6&gt; \uad00\ucc30\uc790\uac00 \ub3fc \ub9c8\uc2a4\ud130 \uc120\ucd9c\uc744 \ubaa8\ub2c8\ud130\ub9c1 \ud568<\/p>\n<pre style=\"border: 1px solid #ccc; background-color: #f5f5f5; padding: 9.5px;\">var zk = require('zkHelper'),\n_ = require('lodash'),\noptions = {\nservers: ['zk0:2181', 'zk1:2181', 'zk2:2181'], \/\/ zk servers\nclientOptons: {\nsessionTimeout: 10000,\nretries: 3\n},\nobserverOnly: true\n};\nzk.init(options, function (err, zkClient) {\nvar observer = new Observer('\/otherApp');\nobserver.on('children', _.debounce(function (path, newVal, diff) {\nconsol.info('Master=%j', observer.getMaster());\nlogger.info('children:[%s] add=[%s] del=[%s]', newVal, diff.added, diff.deleted);\n}, 500));\nobserver.on('data', function (path, newVal, oldVal) {\nif (oldVal) {\nlogger.info('master change:' + path);\n}\nlogger.info('Master=%j', observer.getMaster());\nlogger.info('[%s] data: %j<\/pre>\n<p><strong>Nightwatch.js \u2013 \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ud14c\uc2a4\ud2b8 \uc790\ub3d9\ud654<\/strong><\/p>\n<p>\ub098\uc774\ud2b8\uc640\uce58\ub294 \uc6f9 \uac1c\ubc1c \ucf54\ub4dc\uc5d0 \ub300\ud55c \ub2e8\uc704 \ud14c\uc2a4\ud2b8\uac00 \uc544\ub2c8\ub77c \ube0c\ub77c\uc6b0\uc800 \uae30\ubc18\uc5d0 \uc2e4\uc81c \uc0ac\uc6a9\uc790\uc758 \ud658\uacbd\uacfc \ub3d9\uc77c\ud558\uac8c \ud14c\uc2a4\ud2b8\ud560 \uc218 \uc788\ub294 \uc790\ub3d9\ud654 \ud234\uc774\ub2e4.<\/p>\n<p>\uc6f9 \uac1c\ubc1c\uc5d0\uc11c \uc11c\ubc84\uc640 \ud074\ub77c\uc774\uc5b8\ud2b8\uc758 \ub2e8\uc704 \ud14c\uc2a4\ud2b8\uc5d0 \ub300\ud55c \ubc29\ubc95\uc5d0\ub294 \uc88b\uc740 \ud234\uacfc \ub2e4\uc591\ud55c \ubc29\ubc95\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc53d\ud50c\ub7ec\uc2a4 \uc11c\ube44\uc2a4\uc5d0\uc11c\ub3c4 \uc11c\ubc84\uc640 \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0\uc11c \ubaa8\ub450 \uc0ac\uc6a9\ud558\uace0 \uc788\uc9c0\ub9cc \ub2e8\uc704 \ud14c\uc2a4\ud2b8\ub9cc\uc73c\ub85c\ub294 \uc0ac\uc6a9\uc790\uc758 \uc6f9 \ud658\uacbd\uc5d0\uc11c \ubc1c\uc0dd\ud560 \uc218 \uc788\ub294 \uc624\ub958\ub97c \ub193\uce58\ub294 \uacbd\uc6b0\uac00 \ubc1c\uc0dd\ud55c\ub2e4. \uc774\ub97c \ubc29\uc9c0\ud558\uae30 \uc704\ud574 \uc0ac\uc6a9\uc790\uc758 \ud658\uacbd\uacfc \ub3d9\uc77c\ud558\uac8c \ud558\ub294 \uc885\ub2e8\uac04 \ud14c\uc2a4\ud2b8\uac00 \ud544\uc694\ud558\ub2e4. \ub098\uc774\ud2b8\uc640\uce58\ub294 \uc26c\uc6b4 \ubb38\ubc95\uacfc \uc124\uc815\uc73c\ub85c \ub2e4\uc591\ud55c \uc0ac\uc6a9\uc790 \ud658\uacbd\uc744 \ub9cc\ub4e4\uc5b4 \ud14c\uc2a4\ud2b8\ub97c \ud560 \uc218 \uc788\ub294 \uc720\uc6a9\ud55c \ud234\uc774\ub2e4.<\/p>\n<p><strong>\ub098\uc774\ud2b8\uc640\uce58 \uad6c\uc870<\/strong><\/p>\n<p>\ub098\uc774\ud2b8\uc640\uce58\ub294 \ube0c\ub77c\uc6b0\uc800 \uae30\ubc18\uc758 \ud14c\uc2a4\ud2b8 \ud504\ub808\uc784\uc6cd\uc744 \uc81c\uacf5\ud558\ub294 \uc624\ud508\uc18c\uc2a4 \ud504\ub85c\uc81d\ud2b8\uc778 \uc140\ub808\ub2c8\uc6c0(Selenium)\uc744 \uc774\uc6a9\ud55c node.js \uae30\ubc18 \uc790\ub3d9\ud654 \ud234\uc774\ub2e4. \uc140\ub808\ub2c8\uc6c0\uc740 \uc6f9 \ud14c\uc2a4\ud2b8\ub97c \uc704\ud55c \uc5ec\ub7ec \ud504\ub85c\uc81d\ud2b8\ub97c \uc624\ud508 \uc18c\uc2a4\ub85c \uc9c4\ud589\ud558\uace0 \uc788\uc73c\uba70, \ub098\uc774\ud2b8\uc640\uce58\ub294 \uadf8\uc911\uc5d0 \uc140\ub808\ub2c8\uc6c0 \uc6f9\ub4dc\ub77c\uc774\ubc84(Selenium Webdriver)\ub97c \uc0ac\uc6a9\ud574 \uc140\ub808\ub2c8\uc6c0 \uc11c\ubc84\uc640 \ud1b5\uc2e0\uc73c\ub85c \ube0c\ub77c\uc6b0\uc800\ub97c \uc81c\uc5b4\ud55c\ub2e4.<\/p>\n<p><strong>\ub098\uc774\ud2b8\uc640\uce58 \ud658\uacbd \uc124\uc815<\/strong><\/p>\n<p>\uba3c\uc800 node.js \uc124\uce58\ud55c \ud6c4\uc5d0 \ub098\uc774\ud2b8\uc640\uce58\ub97c \uc124\uce58\ud55c\ub2e4. \uc804\uccb4 \uc2dc\uc2a4\ud15c\uc5d0\uc11c \ub098\uc774\ud2b8\uc640\uce58\ub97c \uc0ac\uc6a9\ud558\uae30 \uc704\ud574\uc11c\ub294 -g \uc635\uc158\uc744 \uc774\uc6a9\ud55c\ub2e4.<\/p>\n<p>$ npm install nightwatch<\/p>\n<p>\uc140\ub808\ub2c8\uc6c0 \uc11c\ubc84\ub294 \uc790\ubc14 \uae30\ubc18\uc73c\ub85c \ub3fc \uc788\ub2e4. \uc790\ubc14 JDK \ubc84\uc804 6 \uc774\uc0c1\uc744 \uc124\uce58\ud55c\ub2e4. \uc790\ubc14 \uc124\uce58\uac00 \ub418\uba74 \uc140\ub808\ub2c8\uc6c0 \ub2e4\uc6b4\ub85c\ub4dc \ud398\uc774\uc9c0\uc5d0\uc11c \ucd5c\uc2e0 \ubc84\uc804\uc744 \ub2e4\uc6b4 \ubc1b\ub294\ub2e4. selenium-server-standalone-2.45.0. jar\uc774 \ucd5c\uc2e0 \ubc84\uc804\uc774\ub2e4. \ub2e4\uc6b4\ub85c\ub4dc \ubc1b\uc740 jar \ud30c\uc77c\uc740 \ub2e4\uc74c \uba85\ub839\uc73c\ub85c \uc2e4\ud589\uc744 \ud560 \uc218 \uc788\ub2e4.<\/p>\n<p>$ java -jar .\/selenium-server-standalone-2.45.0.jar<\/p>\n<p>\uc140\ub808\ub2c8\uc6c0\uc774 \uc815\uc0c1\uc801\uc73c\ub85c \uc2e4\ud589\ub418\uc5c8\ub2e4\ub294 \uba54\uc2dc\uc9c0\uac00 \ub098\uc624\uba74\uc11c \ub300\uae30 \uc0c1\ud0dc\uac00 \ub418\uba74 \uc815\uc0c1 \ub3d9\uc791\uc774\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uc73c\ub85c \ube0c\ub77c\uc6b0\uc800 \ub4dc\ub77c\uc774\ubc84\ub294 \uc140\ub808\ub2c8\uc6c0 \uc11c\ubc84\uc640 \ube0c\ub77c\uc6b0\uc800\uc758 \ud1b5\uc2e0\uc744 \uc704\ud55c WebDriver\u2019s wire protocol\uc744 \uc9c0\uc6d0\ud558\ub294 \ud50c\ub7ec\uadf8\uc778\uc774\ub2e4. \ud14c\uc2a4\ud2b8\ub97c \uc9c4\ud589\ud560 \ube0c\ub77c\uc6b0\uc800\ubcc4\ub85c \ud574\ub2f9\ud558\ub294 \ub4dc\ub77c\uc774\ubc84\ub97c \uc124\uce58\ud574 \uc918\uc57c \ud55c\ub2e4. \uc804\uccb4 \uc9c0\uc6d0\ud558\ub294 \ube0c\ub77c\uc6b0\uc800 \ub4dc\ub77c\uc774\ubc84\ub294 \uc140\ub808\ub2c8\uc6c0 \ub2e4\uc6b4\ub85c\ub4dc \ud398\uc774\uc9c0\uc758 \uc11c\ub4dc\ud30c\ud2f0 \ub4dc\ub77c\uc774\ubc84 \ud56d\ubaa9\uc5d0\uc11c \ucc3e\uc744 \uc218 \uc788\ub2e4.<\/p>\n<p><strong>\ub098\uc774\ud2b8\uc640\uce58 \uc2e4\ud589<\/strong><\/p>\n<p>\ub4dc\ub77c\uc774\ubc84\uae4c\uc9c0 \uc124\uce58\ub97c \uc644\ub8cc\ud588\uc73c\uba74 \uc774\uc81c \ub098\uc774\ud2b8\uc640\uce58 \uc2e4\ud589\uc5d0 \ud544\uc694\ud55c \ud658\uacbd\uc744 \uc124\uc815\ud574\uc57c \ud558\ub294\ub370 \ub098\uc774\ud2b8\uc640\uce58 \uae43\ud5c8\ube0c(github)\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 nightwatch.json \uc608\uc81c \ud30c\uc77c\uc744 \ucc38\uace0\ud558\uba74 \uc27d\uac8c \uc791\uc131\ud560 \uc218 \uc788\ub2e4.<\/p>\n<p>nightwatch.json \ud30c\uc77c\uc758 \uc791\uc131\uc774 \uc644\ub8cc\ub418\uba74 \uc544\ub798\uc640 \uac19\uc774 \ub098\uc774\ud2b8\uc640\uce58\ub97c \uc2e4\ud589\ud55c\ub2e4.<\/p>\n<p>$ nightwatch \u2013config .\/nightwatch.json \u2013env integration<\/p>\n<p>\u2013config \uc635\uc158\uc740 nightwatch.json\uc758 \uacbd\ub85c\ub97c \uc9c0\uc815\ud558\uace0 \u2013env \uc635\uc158\uc740 \uc704\uc5d0\uc11c \uc124\uc815\ud55c test_settings\uc758 \ub9ac\uc2a4\ud2b8 \uc911\uc5d0\uc11c \ud558\ub098\ub97c \uc785\ub825\ud55c\ub2e4. \u2013env \uc635\uc158\uc774 \uc9c0\uc815\ub418\uc9c0 \uc54a\uc73c\uba74 default\uac00 \uc2e4\ud589\ub429\ub2c8\ub2e4. \u2013help \ub85c \uc635\uc158\uc5d0 \ub300\ud55c \uc0c1\uc138 \uc815\ubcf4\ub97c \ud655\uc778 \ud560 \uc218 \uc788\ub2e4.<\/p>\n<p><strong>\ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4 \uc791\uc131<\/strong><\/p>\n<p>nightwatch.json\uc758 src_folders \uc124\uc815 \uacbd\ub85c\uc5d0 \uc544\ub798\uc758 \uc0d8\ud50c\uc744 \ud30c\uc77c\ub85c \uc800\uc7a5\ud558\uace0 \ub098\uc774\ud2b8\uc640\uce58\ub97c \uc2e4\ud589\ud558\uba74 \uc140\ub808\ub2c8\uc6c0 \uc11c\ubc84\uac00 \ube0c\ub77c\uc6b0\uc800\ub97c \uc2e4\ud589\ud574 \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4\ub97c \uc790\ub3d9\uc73c\ub85c \uc9c4\ud589\ud558\ub294 \uac83\uc744 \ubcfc \uc218 \uc788\ub2e4.<\/p>\n<p>&lt;\ub9ac\uc2a4\ud2b8 7&gt; \ud14c\uc2a4\ud2b8 \uc0d8\ud50c \ud30c\uc77c<\/p>\n<pre style=\"border: 1px solid #ccc; background-color: #f5f5f5; padding: 9.5px;\">module.exports = {\n'step one' : function (browser) {\nbrowser\n.url('http:\/\/www.google.com')\n.waitForElementVisible('body', 1000)\n.setValue('input[type=text]', 'nightwatch')\n.waitForElementVisible('button[name=btnG]', 1000)\n}\n};\n<\/pre>\n<p>\uc0d8\ud50c \uc18c\uc2a4\uc758 \u201cstep one\u201d \ud568\uc218\uc758 \u201cbrowser\u201d \uc778\uc218\ub294 \ub098\uc774\ud2b8\uc640\uce58\uc758 Object\ub2e4. \uc774 Object\ub97c \ud1b5\ud574\uc11c \ub098\uc774\ud2b8\uc640\uce58\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 API\ub97c \ud638\ucd9c\ud558\uace0 \ud544\uc694\ud55c \ud14c\uc2a4\ud2b8\ub97c \uc9c4\ud589\ud55c\ub2e4. \uadf8\ub9ac\uace0 \ud14c\uc2a4\ud2b8 \ub9c8\uc9c0\ub9c9\uc5d0\ub294 \ubc18\ub4dc\uc2dc end()\ub97c \ud638\ucd9c\ud574 \uc140\ub808\ub2c8\uc6c0 \uc11c\ubc84\uc640\uc758 \uc138\uc158\uc744 \uc885\ub8cc\ud574\uc57c \ub2e4\uc74c \ud14c\uc2a4\ud2b8\ub97c \uc9c4\ud589\ud560 \uc218 \uc788\ub2e4.<\/p>\n<p>\uc568\ub9ac\uba3c\ud2b8 \uc9c0\uc815 \ubc29\uc2dd\uc740 CSS selector \uc640 XPath \ub450 \uac00\uc9c0 \ubc29\ubc95\uc744 \ubaa8\ub450 \uc81c\uacf5\ud55c\ub2e4. \uae30\ubcf8 \uc124\uc815\uc740 CSS selector\ub85c \ub418\uc5b4 \uc788\uae30 \ub54c\ubb38\uc5d0 XPath\ub97c \uc0ac\uc6a9\ud558\uae30 \uc704\ud574\uc11c\ub294 nightwatch.json\uc758 test_settings\uc5d0 \u201cuse_xpath\u201d: true\ub97c \ucd94\uac00\ud558\uac70\ub098 \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4 \ub0b4\ubd80\uc5d0\uc11c\ub3c4 \ub2e4\uc74c\uacfc \uac19\uc774 \ubcc0\uacbd \uac00\ub2a5\ud558\ub2e4.<\/p>\n<p>&lt;\ub9ac\uc2a4\ud2b8 8&gt; \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4 \ucf54\ub4dc \ubcc0\uacbd<\/p>\n<pre style=\"border: 1px solid #ccc; background-color: #f5f5f5; padding: 9.5px;\">this.demoTestGoogle = function (browser) {\nbrowser\n.useXpath() \/\/ every selector now must be xpath\n.click(\"\/\/tr[@data-recordid]\/span[text()='Search Text']\")\n.useCss() \/\/ we're back to CSS now\n.setValue('input[type=text]', 'nightwatch')\n};\n<\/pre>\n<p>\uc774\uc0c1\uc73c\ub85c \ub098\uc774\ud2b8\uc640\uce58 \ud658\uacbd \uc124\uc815\uacfc \uac04\ub2e8\ud55c \ud14c\uc2a4\ud2b8 \ud30c\uc77c \uc791\uc131\uc744 \ud588\ub2e4. \ub098\uc774\ud2b8\uc640\uce58\ub294 \uc9c0\uc18d\uc801\uc778 \uac1c\ubc1c\uc774 \uc9c4\ud589\ub418\uba74\uc11c \uc548\uc815\uc131\uacfc \ub2e4\uc591\ud55c \uae30\ub2a5\uc774 \ucd94\uac00\ub418\uace0 \uc788\ub2e4. \uc880 \ub354 \uc0c1\uc138\ud55c \ub0b4\uc6a9\uc740 \ub098\uc774\ud2b8\uc640\uce58 \ud648\ud398\uc774\uc9c0\uc5d0\uc11c \ubcfc \uc218 \uc788\ub2e4.<\/p>\n<h4><i><\/i>&nbsp;<a href=\"#imaso_4\" data-parent=\"#collapse_f0bc-a059\" data-toggle=\"collapse\"><br \/>\n<strong>INTERVIEW \uc774 \uc601 \uc218 \ub2ec\ub9ac\uc6cd\uc2a4 CTO<\/strong><\/a><\/h4>\n<p><strong>Q \ub2ec\ub9ac\uc6cd\uc2a4\uc758 \uc53d\ud50c\ub7ec\uc2a4\ub294 \uc5b4\ub5a4 \uc5ed\ud560\uc744 \ud558\ub294\uc9c0 \uad81\uae08\ud558\ub2e4.<\/strong><\/p>\n<p>A \uc9e7\uac8c \uc124\uba85\ud558\uba74 \uc53d\ud50c\ub7ec\uc2a4\ub294 IoT \uc751\uc6a9 \uc11c\ube44\uc2a4\ub97c \uc704\ud55c SaaS\ub2e4. \uc790\uc138\ud55c \uc124\uba85\uc740 \ub2ec\ub9ac\uc6cd\uc2a4 \ud648\ud398\uc774\uc9c0(www.daliworks.net)\ub97c \ud1b5\ud574 \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<\/p>\n<p><strong>Q \uc53d\ud50c\ub7ec\uc2a4\ub97c \uac1c\ubc1c\ud558\uae30 \uc704\ud574 \uc8fc\uc548\uc810\uc744 \ub454 \ubd80\ubd84\uc740 \ubb34\uc5c7\uc778\uac00?<\/strong><\/p>\n<p>A \uccab\uc9f8, \ub2e4\uc591\ud55c IoT \uae30\uae30\ub4e4\uc740 \uc5f0\uacb0\uc744 \uc27d\uac8c \ud574\uc57c \ud55c\ub2e4. \ub458\uc9f8, \uc11c\ube44\uc2a4\ud615 \uc778\ud504\ub77c(IaaS) \ub3c5\ub9bd\uc801\uc774\uc5b4\uc57c \ud55c\ub2e4. AWS, \uc560\uc800, \uc0ac\uc124 \ud074\ub77c\uc6b0\ub4dc \ub4f1 \uc5b4\ub514\uc11c\ub098 \uc218\ud589\ub420 \uc218 \uc788\uc5b4\uc57c \ud55c\ub2e4. \uc14b\uc9f8, \ud655\uc7a5\uc131\uc774 \uc788\uc5b4\uc57c \ud55c\ub2e4. \ubd80\ud558\uac00 \uc788\uc744 \ub54c\ub294 \uc218\uc2ed\ub300\uc758 \uac00\uc0c1\uba38\uc2e0\uc5d0\uc11c \uc218\ud589\ud560 \uc218 \uc788\uace0, \uc2ec\uc9c0\uc5b4\ub294 \uac00\uc0c1\uba38\uc2e0 \ud55c \ub300\uc5d0\uc11c\ub3c4 \ubaa8\ub4e0 \uc11c\ube44\uc2a4\uac00 \uc218\ud589\ub420 \uc218 \uc788\ub2e4.<\/p>\n<p><strong>Q \uc53d\ud50c\ub7ec\uc2a4 \uad00\ub828 \ud50c\ub7ab\ud3fc\uc740 \ud074\ub77c\uc6b0\ub4dc\uc5d0\ub9cc \uc62c\ub77c\uac00\ub294\uc9c0, \ubcc4\ub3c4 \uc11c\ubc84\uc5d0 \uad6c\ucd95\ub3fc \uacf5\uc7a5 \uc548\uc5d0\uc11c\ub3c4 \uad6c\ucd95\ud560 \uc218 \uc788\ub294 \uac74\uc9c0 \uad81\uae08\ud558\ub2e4.<\/strong><\/p>\n<p>A \ud604\uc7ac\ub294 \ud074\ub77c\uc6b0\ub4dc\uc5d0 \uc62c\ub77c\uac00\ub294 \uc11c\ube44\uc2a4 \uc704\uc8fc\ub85c \ube44\uc988\ub2c8\uc2a4 \ud558\uace0 \uc788\uc9c0\ub9cc, \uaddc\ubaa8\uac00 \uc788\ub294 \uacbd\uc6b0\uc5d0\ub294 \uc0ac\uc124 \ud074\ub77c\uc6b0\ub4dc \uc6b4\uc601\ub3c4 \uc9c0\uc6d0\ud55c\ub2e4.<\/p>\n<p style=\"text-align: right;\">by <a href=\"https:\/\/www.imaso.co.kr\/news\/article_view.php?article_idx=20150520201143\">\ub9c8\uc774\ud06c\ub85c\uc18c\ud504\ud2b8\uc6e8\uc5b4<\/a> \uc720\uc7ac\uc11d \uae30\uc790 | yoojs@imaso.co.kr<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uc53d\ud50c\ub7ec\uc2a4(Thing+)\ub294 \uc0ac\ubb3c\uc778\ud130\ub137(IoT) \uc751\uc6a9\uc11c\ube44\uc2a4\ub97c \uc704\ud55c \uc11c\ube44\uc2a4\ud615 \uc18c\ud504\ud2b8\uc6e8\uc5b4(SaaS)\ub2e4. \uc0ac\uc6a9\uc790\uc5d0\uac8c IoT \uacbd\ud5d8\uc744 \uc81c\uacf5\ud558\ub824\ub294 \uc11c\ube44\uc2a4 \ud30c\ud2b8\ub108\uc5d0\uac8c \ud074\ub77c\uc6b0\ub4dc \uc778\ud504\ub77c\uc5d0\uc11c \uc218\ud589\ub418\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\ubfd0 \uc544\ub2c8\ub77c \uc784\ubca0\ub514\ub4dc \ubbf8\ub4e4\uc6e8\uc5b4\uc640 \ud074\ub77c\uc774\uc5b8\ud2b8 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uae4c\uc9c0 \ubaa8\ub450 \uc81c\uacf5\ud574 \uc27d\uace0 \ube60\ub974\uac8c \uc11c\ube44\uc2a4\ub97c \uc2dc\uc791\ud560 \uc218 \uc788\ub3c4\ub85d \ub3c4\uc640\uc900\ub2e4. \uc774\ubc88 \uae00\uc5d0\uc11c\ub294 \uc53d\ud50c\ub7ec\uc2a4 \uac1c\ubc1c \uacbd\ud5d8\uc744 \ubc14\ud0d5\uc73c\ub85c \ud074\ub77c\uc6b0\ub4dc \uae30\ubc18 \uc751\uc6a9\uc11c\ube44\uc2a4\ub97c \uac1c\ubc1c\ud560 \ub54c \uace0\ub824\ud574\uc57c \ud560 \uc810\uc744 \uc0b4\ud3b4\ubcf8\ub2e4.<\/p>\n","protected":false},"author":1,"featured_media":705009,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"uix_meta_title":"","uix_meta_description":"","uix_canonical_url":"","footnotes":""},"categories":[11],"tags":[],"class_list":["post-1335","post","type-post","status-publish","format-standard","has-post-thumbnail","category-press_k"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.7 (Yoast SEO v26.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[\ub9c8\uc18c \ud074\ub77c\uc6b0\ub4dc \ud2b9\uc9d1] (4) \ub2ec\ub9ac\uc6cd\uc2a4\uc758 \ud074\ub77c\uc6b0\ub4dc \uae30\ubc18 IoT \uac1c\ubc1c\u2026SaaS\uc778 \u2018\uc53d\ud50c\ub7ec\uc2a4\u2019 - Daliworks<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[\ub9c8\uc18c \ud074\ub77c\uc6b0\ub4dc \ud2b9\uc9d1] (4) \ub2ec\ub9ac\uc6cd\uc2a4\uc758 \ud074\ub77c\uc6b0\ub4dc \uae30\ubc18 IoT \uac1c\ubc1c\u2026SaaS\uc778 \u2018\uc53d\ud50c\ub7ec\uc2a4\u2019\" \/>\n<meta property=\"og:description\" content=\"\uc53d\ud50c\ub7ec\uc2a4(Thing+)\ub294 \uc0ac\ubb3c\uc778\ud130\ub137(IoT) \uc751\uc6a9\uc11c\ube44\uc2a4\ub97c \uc704\ud55c \uc11c\ube44\uc2a4\ud615 \uc18c\ud504\ud2b8\uc6e8\uc5b4(SaaS)\ub2e4. \uc0ac\uc6a9\uc790\uc5d0\uac8c IoT \uacbd\ud5d8\uc744 \uc81c\uacf5\ud558\ub824\ub294 \uc11c\ube44\uc2a4 \ud30c\ud2b8\ub108\uc5d0\uac8c \ud074\ub77c\uc6b0\ub4dc \uc778\ud504\ub77c\uc5d0\uc11c \uc218\ud589\ub418\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\ubfd0 \uc544\ub2c8\ub77c \uc784\ubca0\ub514\ub4dc \ubbf8\ub4e4\uc6e8\uc5b4\uc640 \ud074\ub77c\uc774\uc5b8\ud2b8 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uae4c\uc9c0 \ubaa8\ub450 \uc81c\uacf5\ud574 \uc27d\uace0 \ube60\ub974\uac8c \uc11c\ube44\uc2a4\ub97c \uc2dc\uc791\ud560 \uc218 \uc788\ub3c4\ub85d \ub3c4\uc640\uc900\ub2e4. \uc774\ubc88 \uae00\uc5d0\uc11c\ub294 \uc53d\ud50c\ub7ec\uc2a4 \uac1c\ubc1c \uacbd\ud5d8\uc744 \ubc14\ud0d5\uc73c\ub85c \ud074\ub77c\uc6b0\ub4dc \uae30\ubc18 \uc751\uc6a9\uc11c\ube44\uc2a4\ub97c \uac1c\ubc1c\ud560 \ub54c \uace0\ub824\ud574\uc57c \ud560 \uc810\uc744 \uc0b4\ud3b4\ubcf8\ub2e4.\" \/>\n<meta property=\"og:url\" content=\"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/\" \/>\n<meta property=\"og:site_name\" content=\"Daliworks\" \/>\n<meta property=\"article:published_time\" content=\"2015-06-01T18:00:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-20T22:32:31+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/test.daliworks.net\/wp-content\/uploads\/2015\/06\/61764-scaled-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"http:\/\/test.daliworks.net\/#\/schema\/person\/3e27584084cfeed9ca01e2b2c4341bb4\"},\"headline\":\"[\ub9c8\uc18c \ud074\ub77c\uc6b0\ub4dc \ud2b9\uc9d1] (4) \ub2ec\ub9ac\uc6cd\uc2a4\uc758 \ud074\ub77c\uc6b0\ub4dc \uae30\ubc18 IoT \uac1c\ubc1c\u2026SaaS\uc778 \u2018\uc53d\ud50c\ub7ec\uc2a4\u2019\",\"datePublished\":\"2015-06-01T18:00:08+00:00\",\"dateModified\":\"2026-07-20T22:32:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/\"},\"wordCount\":222,\"commentCount\":0,\"image\":{\"@id\":\"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/test.daliworks.net\/wp-content\/uploads\/2015\/06\/61764-scaled-1.jpg\",\"articleSection\":[\"Press_k\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/\",\"url\":\"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/\",\"name\":\"[\ub9c8\uc18c \ud074\ub77c\uc6b0\ub4dc \ud2b9\uc9d1] (4) \ub2ec\ub9ac\uc6cd\uc2a4\uc758 \ud074\ub77c\uc6b0\ub4dc \uae30\ubc18 IoT \uac1c\ubc1c\u2026SaaS\uc778 \u2018\uc53d\ud50c\ub7ec\uc2a4\u2019 - Daliworks\",\"isPartOf\":{\"@id\":\"http:\/\/test.daliworks.net\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/#primaryimage\"},\"image\":{\"@id\":\"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/test.daliworks.net\/wp-content\/uploads\/2015\/06\/61764-scaled-1.jpg\",\"datePublished\":\"2015-06-01T18:00:08+00:00\",\"dateModified\":\"2026-07-20T22:32:31+00:00\",\"author\":{\"@id\":\"http:\/\/test.daliworks.net\/#\/schema\/person\/3e27584084cfeed9ca01e2b2c4341bb4\"},\"breadcrumb\":{\"@id\":\"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/#primaryimage\",\"url\":\"http:\/\/test.daliworks.net\/wp-content\/uploads\/2015\/06\/61764-scaled-1.jpg\",\"contentUrl\":\"http:\/\/test.daliworks.net\/wp-content\/uploads\/2015\/06\/61764-scaled-1.jpg\",\"width\":2560,\"height\":1600},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/test.daliworks.net\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[\ub9c8\uc18c \ud074\ub77c\uc6b0\ub4dc \ud2b9\uc9d1] (4) \ub2ec\ub9ac\uc6cd\uc2a4\uc758 \ud074\ub77c\uc6b0\ub4dc \uae30\ubc18 IoT \uac1c\ubc1c\u2026SaaS\uc778 \u2018\uc53d\ud50c\ub7ec\uc2a4\u2019\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/test.daliworks.net\/#website\",\"url\":\"http:\/\/test.daliworks.net\/\",\"name\":\"Daliworks\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/test.daliworks.net\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"http:\/\/test.daliworks.net\/#\/schema\/person\/3e27584084cfeed9ca01e2b2c4341bb4\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/test.daliworks.net\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/90362a7be3c47eda1f6836481a440f9bf1e51d1b3c18ec5178ffc06afaa55e98?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/90362a7be3c47eda1f6836481a440f9bf1e51d1b3c18ec5178ffc06afaa55e98?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/test.daliworks.net\"],\"url\":\"http:\/\/test.daliworks.net\/index.php\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"[\ub9c8\uc18c \ud074\ub77c\uc6b0\ub4dc \ud2b9\uc9d1] (4) \ub2ec\ub9ac\uc6cd\uc2a4\uc758 \ud074\ub77c\uc6b0\ub4dc \uae30\ubc18 IoT \uac1c\ubc1c\u2026SaaS\uc778 \u2018\uc53d\ud50c\ub7ec\uc2a4\u2019 - Daliworks","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"[\ub9c8\uc18c \ud074\ub77c\uc6b0\ub4dc \ud2b9\uc9d1] (4) \ub2ec\ub9ac\uc6cd\uc2a4\uc758 \ud074\ub77c\uc6b0\ub4dc \uae30\ubc18 IoT \uac1c\ubc1c\u2026SaaS\uc778 \u2018\uc53d\ud50c\ub7ec\uc2a4\u2019","og_description":"\uc53d\ud50c\ub7ec\uc2a4(Thing+)\ub294 \uc0ac\ubb3c\uc778\ud130\ub137(IoT) \uc751\uc6a9\uc11c\ube44\uc2a4\ub97c \uc704\ud55c \uc11c\ube44\uc2a4\ud615 \uc18c\ud504\ud2b8\uc6e8\uc5b4(SaaS)\ub2e4. \uc0ac\uc6a9\uc790\uc5d0\uac8c IoT \uacbd\ud5d8\uc744 \uc81c\uacf5\ud558\ub824\ub294 \uc11c\ube44\uc2a4 \ud30c\ud2b8\ub108\uc5d0\uac8c \ud074\ub77c\uc6b0\ub4dc \uc778\ud504\ub77c\uc5d0\uc11c \uc218\ud589\ub418\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\ubfd0 \uc544\ub2c8\ub77c \uc784\ubca0\ub514\ub4dc \ubbf8\ub4e4\uc6e8\uc5b4\uc640 \ud074\ub77c\uc774\uc5b8\ud2b8 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uae4c\uc9c0 \ubaa8\ub450 \uc81c\uacf5\ud574 \uc27d\uace0 \ube60\ub974\uac8c \uc11c\ube44\uc2a4\ub97c \uc2dc\uc791\ud560 \uc218 \uc788\ub3c4\ub85d \ub3c4\uc640\uc900\ub2e4. \uc774\ubc88 \uae00\uc5d0\uc11c\ub294 \uc53d\ud50c\ub7ec\uc2a4 \uac1c\ubc1c \uacbd\ud5d8\uc744 \ubc14\ud0d5\uc73c\ub85c \ud074\ub77c\uc6b0\ub4dc \uae30\ubc18 \uc751\uc6a9\uc11c\ube44\uc2a4\ub97c \uac1c\ubc1c\ud560 \ub54c \uace0\ub824\ud574\uc57c \ud560 \uc810\uc744 \uc0b4\ud3b4\ubcf8\ub2e4.","og_url":"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/","og_site_name":"Daliworks","article_published_time":"2015-06-01T18:00:08+00:00","article_modified_time":"2026-07-20T22:32:31+00:00","og_image":[{"width":2560,"height":1600,"url":"http:\/\/test.daliworks.net\/wp-content\/uploads\/2015\/06\/61764-scaled-1.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/#article","isPartOf":{"@id":"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/"},"author":{"name":"admin","@id":"http:\/\/test.daliworks.net\/#\/schema\/person\/3e27584084cfeed9ca01e2b2c4341bb4"},"headline":"[\ub9c8\uc18c \ud074\ub77c\uc6b0\ub4dc \ud2b9\uc9d1] (4) \ub2ec\ub9ac\uc6cd\uc2a4\uc758 \ud074\ub77c\uc6b0\ub4dc \uae30\ubc18 IoT \uac1c\ubc1c\u2026SaaS\uc778 \u2018\uc53d\ud50c\ub7ec\uc2a4\u2019","datePublished":"2015-06-01T18:00:08+00:00","dateModified":"2026-07-20T22:32:31+00:00","mainEntityOfPage":{"@id":"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/"},"wordCount":222,"commentCount":0,"image":{"@id":"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/#primaryimage"},"thumbnailUrl":"http:\/\/test.daliworks.net\/wp-content\/uploads\/2015\/06\/61764-scaled-1.jpg","articleSection":["Press_k"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/#respond"]}]},{"@type":"WebPage","@id":"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/","url":"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/","name":"[\ub9c8\uc18c \ud074\ub77c\uc6b0\ub4dc \ud2b9\uc9d1] (4) \ub2ec\ub9ac\uc6cd\uc2a4\uc758 \ud074\ub77c\uc6b0\ub4dc \uae30\ubc18 IoT \uac1c\ubc1c\u2026SaaS\uc778 \u2018\uc53d\ud50c\ub7ec\uc2a4\u2019 - Daliworks","isPartOf":{"@id":"http:\/\/test.daliworks.net\/#website"},"primaryImageOfPage":{"@id":"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/#primaryimage"},"image":{"@id":"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/#primaryimage"},"thumbnailUrl":"http:\/\/test.daliworks.net\/wp-content\/uploads\/2015\/06\/61764-scaled-1.jpg","datePublished":"2015-06-01T18:00:08+00:00","dateModified":"2026-07-20T22:32:31+00:00","author":{"@id":"http:\/\/test.daliworks.net\/#\/schema\/person\/3e27584084cfeed9ca01e2b2c4341bb4"},"breadcrumb":{"@id":"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/#primaryimage","url":"http:\/\/test.daliworks.net\/wp-content\/uploads\/2015\/06\/61764-scaled-1.jpg","contentUrl":"http:\/\/test.daliworks.net\/wp-content\/uploads\/2015\/06\/61764-scaled-1.jpg","width":2560,"height":1600},{"@type":"BreadcrumbList","@id":"http:\/\/test.daliworks.net\/index.php\/2015\/06\/01\/thingplus-news_thingplus\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/test.daliworks.net\/"},{"@type":"ListItem","position":2,"name":"[\ub9c8\uc18c \ud074\ub77c\uc6b0\ub4dc \ud2b9\uc9d1] (4) \ub2ec\ub9ac\uc6cd\uc2a4\uc758 \ud074\ub77c\uc6b0\ub4dc \uae30\ubc18 IoT \uac1c\ubc1c\u2026SaaS\uc778 \u2018\uc53d\ud50c\ub7ec\uc2a4\u2019"}]},{"@type":"WebSite","@id":"http:\/\/test.daliworks.net\/#website","url":"http:\/\/test.daliworks.net\/","name":"Daliworks","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/test.daliworks.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"http:\/\/test.daliworks.net\/#\/schema\/person\/3e27584084cfeed9ca01e2b2c4341bb4","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/test.daliworks.net\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/90362a7be3c47eda1f6836481a440f9bf1e51d1b3c18ec5178ffc06afaa55e98?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/90362a7be3c47eda1f6836481a440f9bf1e51d1b3c18ec5178ffc06afaa55e98?s=96&d=mm&r=g","caption":"admin"},"sameAs":["http:\/\/test.daliworks.net"],"url":"http:\/\/test.daliworks.net\/index.php\/author\/admin\/"}]}},"_links":{"self":[{"href":"http:\/\/test.daliworks.net\/index.php\/wp-json\/wp\/v2\/posts\/1335","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/test.daliworks.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/test.daliworks.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/test.daliworks.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/test.daliworks.net\/index.php\/wp-json\/wp\/v2\/comments?post=1335"}],"version-history":[{"count":2,"href":"http:\/\/test.daliworks.net\/index.php\/wp-json\/wp\/v2\/posts\/1335\/revisions"}],"predecessor-version":[{"id":795100,"href":"http:\/\/test.daliworks.net\/index.php\/wp-json\/wp\/v2\/posts\/1335\/revisions\/795100"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/test.daliworks.net\/index.php\/wp-json\/wp\/v2\/media\/705009"}],"wp:attachment":[{"href":"http:\/\/test.daliworks.net\/index.php\/wp-json\/wp\/v2\/media?parent=1335"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/test.daliworks.net\/index.php\/wp-json\/wp\/v2\/categories?post=1335"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/test.daliworks.net\/index.php\/wp-json\/wp\/v2\/tags?post=1335"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}