onem2m 기반의서버플랫폼 OpenMobius 설치및실행가이드 2015 8 월 경북대학교통신프로토콜연구실 정중화, 강형우 godopu16@gmail.com, hwkang0621@gmail.com 요약 사물인터넷 (Internet of Things: IoT) 의시대가도래하고있다. 다양한분야에서사물인터넷을활용한서비스가개발되고있다. 본문서에서는사물인터넷국제표준인 onem2m을기반으로만들어진사물인터넷디바이스플랫폼인 &Cube에대한설명과함께설치및구동방법에대하여설명하도록한다. 목 차 1. 서론... 4 2. OPENMOBIUS 란?... 4 2.1 OPENMOBIUS의정의... 4 2.2 OPENMOBIUS 플랫폼이란?... 5 2.2.1 MOBIUS 서버플랫폼개요... 5 2.2.2 MOBIUS 서버플랫폼주요기능... 6 2.2.3 MOBIUS 서버플랫폼시스템구성... 6 2.2.4 MOBIUS 서버플랫폼 S/W 아키텍쳐... 7 2.2.5 MOBIUS 서버플랫폼개발환경... 7 1
3. MOBIUS 서버플랫폼의 SOURCE 구조몇구성... 8 3.1 MOBIUS 서버플랫폼 SOURCE 구조... 8 3.2 MOBIUS 서버플랫폼의구성... 9 4. MOBIUS 서버설치 (WINDOWS)... 10 4.1 REDIS DB 설치... 10 4.1.1 REDIS DB 다운로드... 10 4.1.2 REDIS DB 실행... 11 4.1.3 REDIS DB 테스트... 12 4.2 MONGO DB 설치... 14 4.2.1 MONGO DB 다운로드... 15 4.2.2 MONGO DB 설치... 15 4.2.3 MONGO DB 실행... 16 4.2.4 데이터베이스구축을위한스크립트실행... 17 4.2.5 MONGODB 설치테스트... 19 4.3 MQTT 서버설치... 22 4.3.1 MOQUITTO 서버다운로드... 23 4.3.2 MOQUITTO 서버설치... 24 4.3.3 MOSQUITTO 서버실행... 25 4.3.4 MQTT 서버테스트... 25 4.4 JRE 7 설치... 27 4.4.1 3.4.1 JRE7 다운로드... 28 4.4.2 JRE7 설치... 30 4.5 APACHE TOMCAT 설치... 33 4.5.1 TOMCAT 다운로드... 34 4.5.2 TOMCAT 설치... 35 4.5.3 TOMCAT 실행... 36 4.5.4 TOMCAT 테스트... 37 4.6 인증서버설치... 37 4.6.1 인증서버다운로드... 38 4.6.2 인증서버실행... 38 4.6.3 인증서버테스트... 39 4.7 MOBIUS 서버플랫폼설치... 40 4.7.1 MOBIUS 서버플랫폼다운로드... 40 4.7.2 MOBIUS 서버플랫폼실행... 40 2
4.7.3 MOBIUS 서버플랫폼테스트... 41 5. 결론... 43 참고문헌... 44 3
1. 서론 사물인터넷의시대가도래하고있다. 세계각국에서스마트홈, 스마트시티, 헬스케어, 스마트카등다양한분야에서사물인터넷의개념을활용한서비스들이연구, 개발되고있다. 우리나라역시사물인터넷에대한연구및투자를하고있으며, 그중심에사물인터넷플랫폼인 OpenMobius와 &Cube가있다. OpenMobius와 &Cube는국내에서개발한 onem2m 기반의사물인터넷플랫폼으로 OpenMobius가서버플랫폼, &Cube가디바이스플랫폼이다. OpenMobius와 &Cube는사물인터넷국제표준인 onem2m Release1 기반으로구현되었고, 사물인터넷 Alliance인 Ocean을통해공개되었다. 본문서에서는 OpenMobius 플랫폼에대하여설치및실행하는방법에대하여기술하도록하겠다. 2. OpenMobius 란? 2.1 OpenMobius 의정의 OpenMobius 플랫폼은 IoT(Internet of Things) 서비스제공을위해다양한 IoT Device 정보를관리하고, 이들 IoT Device 서비스를위한 Device의접근제어, 인증, 사용자관리, 복수의 IoT서비스를조합한서비스를제공하여어플리케이션을통해서비스하기위한플랫폼이다. 4
Figure 1. OpenMobius 플랫폼개념도 2.2 OpenMobius 플랫폼이란? 2.2.1 OpenMobius 서버플랫폼개요 OpenMobius 플랫폼은사물간에인터넷을할수있는물리적기반인통신네트워크가원 활하게작동하도록하는운영체제를말한다. Mobius Server Platfrom 은디바이스와어플 리케이션의통신연결을쉽고편리하게하며, 개방형개발환경에서누구든지 IoT 서비스를 만들어내고사용할수있는생태계를구축한다. 5
Figure 2. OpenMobius 플랫폼개요 2.2.2 OpenMobius 서버플랫폼주요기능 OpenMobius 플랫폼은디바이스와어플리케이션을연결하는중간매개체다. 디바이스는서 버플랫폼으로데이터를전송하고, 플랫폼은데이터를저장하고어플리케이션으로전달하기 도하며, 어플리케이션은디바이스의데이터를조회하거나, 디바이스를제어할수도있다. Figure 3. OpenMobius 플랫폼주요기능 2.2.3 OpenMobius 서버플랫폼시스템구성 OpenMobius 플랫폼은디바이스와어플리케이션을연결하며, 디바이스는 HTTP, CoAP, MQTT 프로토콜을지원하며, Application 은 HTTP 를지원한다. OpenMobius 서버의 DB 는 대용량데이터처리를위한 Redis DB 와데이터를저장하는 Mongo DB 로구성되어있다. 6
Figure 4. OpenMobius 플랫폼시스템구성 2.2.4 OpenMobius 서버플랫폼 S/W 아키텍쳐 OpenMobius 플랫폼은 Spring framework 기반으로구성되어있으며, JAVA 언어로개발되었고 Tomcat WAS(Web Application Server) 에서동작하도록구성되어있다. DB 는메모리기반의 Redis DB와 NoSQL DB인 Mongo DB 를지원하고있으며, 통신프로토콜로는 HTTP, MQTT, CoAP 을지원할수있도록구성되어있다. Figure 5. OpenMobius S/W 아키텍처 2.2.5 OpenMobius 서버플랫폼개발환경 7
OpenMobius 플랫폼은다양한프로토콜과 Open API를제공한다. onem2m 표준을준수하여, 계층적인리소스구조를가지고있으며, 기본적으로 RESTful 방식을제공한다. OpenMobius 플랫폼은 Open API 서버와 DB 서버로구성되어있으며, NoSQL DB인 Mongo DB와메모리기반의 Redis DB를사용한다. 또한, 구축환경으로는 JAVA 7, Tomcat 7 및 Spring 기반으로구성되어있으며, 리소스접근제어를위한 Access Key 발급및인증을수행하는인증서버를포함하고있다. &Cube는 IoT 디바이스속에서여러 IoT 기능을수행한다. 예를들면각종센서가탑재된다른기기로부터수집한데이터를 Mobius 서버에전송하기도하며, Mobius로부터명령을받아연결된다른기기들을조정하기도한다. Figure 6. OpenMobius H/W 및 S/W 환경 Linux 기반 주의 ) 윈도우환경에서구성시계정이름이 Administrator 로되어있으면설치시문제 가발생하오니반드시계정이름은다른이름으로하길권장한다. 계정유형은관리자를사 용하면된다. 3. OpenMobius 서버플랫폼의 Source 구조몇구성 3.1 OpenMobius 서버플랫폼 Source 구조 OpenMobius 서버플랫폼은디자인패턴중의하나인 MVC(Model View Control) 모델로개 8
발되어있다. Model은 Domain 패키지가담당하고, View는 xml 또는 json을제공한다. Control은 Controller 패키지가담당하며, 이는 DAO(Data Access Object) 패턴으로구성되어있다. 추가적으로배치기능을위한 Batch 패키지, 다양한프로토콜을지원하는 Driver 패키지, 기타유틸리티를제공하는 Util 패키지로구성되어있다. Figure 7. OpenMobius 플랫폼 Source 구조 3.2 OpenMobius 서버플랫폼의구성 OpenMobius 플랫폼은 2 개의 DB 를사용합니다. Redis DB(Memory DB), Mongo DB(File DB) 를설치후, MQTT 서버, 인증서버, Mobius 서버플랫폼을설치하면동작한다. 추가기능 으로 CoAP 프로토콜사용을위해 CoAP Proxy 서버를제공하고있습니다. Figure 8. OpenMobius 플랫폼구성 9
4. OpenMobius 서버설치 (Windows) 4.1 Redis DB 설치 OpenMobius 플랫폼은대용량데이터처리를위한보조적인역할로 Redis DB를사용한다. Redis DB는디바이스로부터수신된데이터를모아 Mongo DB로저장하는버퍼역할을합니다. 이는대용량서버구축시 Mongo DB의잦은호출에따른부하를감소시켜주며, DB 성능을극대화한다. Figure 9. Redis DB 설치개요 4.1.1 Redis DB 다운로드 http://redis.io/download 에접속하여아래와같은화면을통해 Redis DB 를다운받는다. 10
Figure 10. Redis DB 다운로드 1 Figure 11. Redis DB 다운로드 2 4.1.2 Redis DB 실행 다운로드받은 zip 파일의압축을해제후실행한다. bin\release\redis-2.8.17\redisserver.exe 를실행시키면 redis 서버가실행된다. 11
Figure 12. Redis-server 설치및실행 4.1.3 Redis DB 테스트 Redis DB Client 를통해 Redis DB 접속을테스트를해볼수있다. Redis DB Client 를다 운로드받기위해 http://redisdesktop.com/ 에접속하여프로그램을다운로드받는다. Figure 13. Redis DB 테스트 1 프로그램을실행시킨후 Add New Connection 을눌러 connection 설정을한후연결을 시도하여제대로설치가되었는지테스트를할수있다. 12
Figure 14. Redis DB 테스트 2 Figure 15. Redis DB 테스트 3 13
Figure 16. Redis DB 테스트 4 4.2 Mongo DB 설치 OpenMobius Platform 은 Mongo DB 를기반으로동작한다. Mongo DB 는 NoSQL DB 로대 용량분산처리에유리하여, 다양한 IoT 디바이스의데이터처리에적합하다. Mobius 에서는 Mongo DB 에 DB Table 과 Index 를생산하는 Script 를제공한다. Figure 17. Mongo DB 설치개요 14
4.2.1 Mongo DB 다운로드 먼저 Mongo DB 설치파일을다운로드받기위해 https://www.mongodb.org/downloads 에접속하여아래와같은화면을통해 Mongo DB 를다운로드를받는다. Figure 18. Mongo DB 다운로드 다운로드페이지에서 Previous Release 를선택한후 Windows 2.6.11 버전을선택하여설 치파일을다운로드한다. 참고로 Download(MSI) 버튼을누른후이동하는페이지에서는 아무것도하지말고기다리면다운로드가완료된다. 4.2.2 Mongo DB 설치 그림 19 와같이 Mongo DB 를설치한다. 15
Figure 19. Mongo DB 설치 4.2.3 Mongo DB 실행 다음과같은순서로 Mongo DB를실행한다. 1) 설치후 CMD창실행 2) 디렉토리실행 : mkdir C:\mongodb\data 3) 실행파일이있는디렉토리로이동 ex) cd C:\program Files\MongoDB 2.6 Standard\bin 4) 명령어 : mongod dbpath C:\mongodb\data 아래의성공화면이나타나야하며, 실패화면이나타난다면 dbpath 가잘못설정된것이다. C 드라이브안에 mongodb 라는디렉터리와 data 라는디렉터리가있는지확인후다시실 행해보자. Figure 20. Mongo DB 실행성공화면 16
Figure 21. Mongo DB 실행실패화면 4.2.4 데이터베이스구축을위한스크립트실행 사물인터넷 Alliance 인 Ocean 홈페이지 (http://www.iotocean.org) 에접속하여아래와같 은화면을통해 mongodb script.txt 를다운로드하자. Ocean 에서는회원사에게만다운로드 를제공하고있으니, 회원가입후다운로드를받을수있다. Figure 22. Mongo DB Script.txt 다운로드 1 17
Figure 23. Mongo DB Script.txt 다운로드 2 다운로드받은후에는아래의절차를따라스크립트를실행한다. 1) 다운로드받은 mongodb_script.txt를편집기를사용하여파일열기한후전체내용을 copy 2) cmd 창실행 ( 윈도우키 + R -> cmd) 3) mongodb 실행파일이설치된경로로이동 ex) cd Program Files\MongoDB 2.6 Standard\bin 4) mongo.exe 실행 ex)mongo.exe 주의 ) 반드시 mongod.exe dbpath C:\mongodb\data 명령어를사용하여 mongodb 를실행시킨후 mongo.exe 프로그램을실행. 그렇지않으면 mongo.exe 가실행되지않음. 5) copy 한 mongodb_script.txt 내용을 cmd창에 paste [cmd 창에마우스오른쪽키 - > 붙여넣기 ] 후 Enter -> exit 종료 Figure 24. mongo.exe 실행화면 18
Figure 25. Mongo DB Script 내용복사후실행화면 4.2.5 mongodb 설치테스트 설치가완료되었다면 Mongo DB client program인 robomongo 를통해 Mongo DB에접속해제대로설치되었는지확인해볼수있다. 아래의절차를따라 Robomongo를설치하고테스트를진행한다. 반드시다음의화면과함께 Mongo DB 가실행된상태에서아래의테스트를진행하여야한다. 혹시실행상태가아니라면 cmd 창을켜고, 다음의명령어를사용하여실행시킨다. > cd C:\Program Files\C:\Program Files\MongoDB 2.6 Standard\bin > mongod dbpath C:\mongodb\data Figure 26. Mongo DB 실행명령어 19
Figure 27. Mongo DB 실행화면 1) http://robomongo.org/download.html 에가서 Robomongo 다운로드 Figure 28. Robomongo 다운로드 2) Mongo DB 에접속 20
Figure 29. Robomongo 실행 1 Figure 30. Robomongo 실행 2 21
Figure 31. Robomongo 접속환경설정 Figure 32. Robomongo 접속성공 4.3 MQTT 서버설치 OpenMobius 플랫폼은디바이스와의통신을위해 HTTP, CoAP, MQTT 를제공한다. Mobius 는기본적으로 HTTP, MQTT 를지원하고있다. MQTT 프로토콜을지원하기위해서는오픈 소스로제공되는 Mosquitto 서버를설치한다. 22
Figure 33. MQTT 서버설치개요 4.3.1 Moquitto 서버다운로드 http://mosquitto.org/download/ 에접속하여아래와같은화면을통해 MQTT 를다운로드 한다. Figure 34. Mosquitto 설치파일다운로드 1 23
Figure 35. Mosquitto 설치파일다운로드 2 4.3.2 Moquitto 서버설치 다운받은 mosquitto-1.4.3-install-win32.exe 를실행시키고아래의그림과같이설치를시작 한다. 24
Figure 36. Mosquitto 설치 4.3.3 Mosquitto 서버실행 다음과같은순서로 Mosquitto를실행한다. 1) 설치된 MQTT 서버디렉터리로이동 ex)cd C:\Program Files (x86)\mosquitto 2) mosquitto.exe 실행 ex) > mosquitto.exe -v Figure 37. MQTT 서버 (Mosquitto) 실행 4.3.4 MQTT 서버테스트 MQTT가제대로설치되었는지알아보기위해다음과같은순서로 MQTT 서버테스트를진행한다. 1) 설치된 MQTT 서버디렉터리로이동 ex) cd C:\Program Files (X86)\mosquitto 25
2) mosquitto_sub.exe 실행 ex) mosquitto_sub.exe h loacalhost t /mytopic/1 3) mosquitto_pub.exe 실행 ex) mosquitto_pub.exe h localhost t /mytopic/1 m Hello MQTT test Figure 38. mosquito_sub.exe 실행화면 26
Figure 39. mosquito_pub.exe 실행화면 Figure 40. mosquito_sub.exe 메시지수신화면 4.4 JRE 7 설치 27
4.4.1 3.4.1 JRE7 다운로드 OpenMobius 서버플랫폼은자바로구현되어졌기때문에실행하기위해서는 JRE 가필요하다. OpenMobius 서버플랫폼이 JDK-7버전으로구현되어졌기때문에 JRE7을다운받는것을권장한다. 그렇지않으면 Mobius 서버플랫폼을실행시예외가발생할수있다. 해당내용은 OpenMobius 서버플랫폼설치를설명할때좀더자세하게다루도록한다. 그럼일단 JRE7을설치는다음의순서로진행된다. 우선 http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html 주소로접속하여 JRE7 파일을다운로드합니다. Figure 41. JRE 7 다운로드 1 위홈페이지에접속하면가장위에있는 JDK 파일은 8 버전이다. JRE7 을다운받기위해 스크롤을내려서 JRE 7 을찾아다운받는다. 28
Figure 42. JRE 7 다운로드 2 Figure 43. JRE 7 다운로드 3 29
Figure 44. JRE 7 다운로드 4 위의그림과같이 java SE Development Kit 링크를누르면로그인을요구한다. 로그인을 한후다운로드를받는다 ( 회원이아니라면회원가입절차가필요하다 ). 4.4.2 JRE7 설치 다운받은실행파일을실행시키면아래와같은화면이나온다. 별다른변경사항없이 next 를눌러설치를완료한다. 30
Figure 45. JRE 7 설치 1 설치를완료했다고해서끝난것이아니라환경변수를잡아주어야한다. 일단제어판으로들어가 [ 시스템및보안 -> 시스템 ] 으로들어가서아래의절차를따라환경변수설정을완료하도록한다. 1) 고급시스템설정클릭!! 2) 시스템변수탭에서새로만들기버튼클릭 3) 변수이름에 JRE_HOME 변수값에 JRE 디렉터리경로를입력 4) 다시시스템변수탭에서새로만들기버튼클릭 5) 변수이름에 JAVA_HOME 변수값에 JRE7 디렉터리경로를입력 31
Figure 46. JRE 7 설치 2 Figure 47. JRE 7 설치 3 32
Figure 48. JRE 설치 4 Figure 49. JRE 설치 5 4.5 Apache Tomcat 설치 OpenMobius 서버플랫폼은 tomcat 위에서실행되는 war 형식이므로먼저 tomcat 을설치 33
한다. 아래의절차에따라 Tomcat 을설치한다. 4.5.1 Tomcat 다운로드 http://tomcat.apache.org/ 로접속하여 tomcat 을다운받는다. Figure 50. Tomcat 다운로드 1 위의그림과같이 Download 탭의 Tomcat 7.0 을클릭한다. 그리고아래의그림과같이자 신의운영체제에맞는 zip 파일을다운로드하면된다. 본문서에서는설치환경이 windows7-64bit 이기때문에 64-bit Windows zip 을클릭하여다운로드하였다. 34
Figure 51. Tomcat 다운로드 2 4.5.2 Tomcat 설치 다운로드받은 zip파일의압축을해제하면 Tomcat의설치가완료된다. 하지만 JRE와같이 Tomcat을실행시키기위해선환경변수를설정해야한다. 아래의그림과같이압축을푼디렉터리로이동후 bin 디렉터리가보이는디렉터리까지이동해해당경로를복사하여 JRE 설치시했던것처럼 CATALINA_HOME 환경변수를설정한다. 35
Figure 52. Tomcat 설치 1 Figure 53. Tomcat 설치 2 4.5.3 Tomcat 실행 다음의순서로 Tomcat을실행한다. 1) cmd 창을켜고 Tomcat 이설치된디렉터리의 bin 디렉터리로이동합니다. ex) > cd %CATALINA_HOME%\bin\ 2) startup.bat 파일을실행시킵니다. ex) > startup 36
Figure 54. Tomcat 실행화면 4.5.4 Tomcat 테스트 http://localhost:8080/ 주소로들어갔을때다음과같은화면을본다면 Tomcat 실행이정 상적으로설치되고실행되었다고볼수있다. Figure 55. Tomcat 테스트 4.6 인증서버설치 OpenMobius 서버플랫폼은보안을위해인증서버를도입하였다. 인증서버에서는 Client 등록시 Access Key 발급, Access Key 인증을수행한다. 또한, OpenMobius 플랫폼을통하지않는 p2p 제어 ( 디바이스직접제어 ) 시에는 OAuth 인증방식을도입하여보안을강화하였다. 37
4.6.1 인증서버다운로드 인증서버다운로드및설치는다음이진행하면된다. 인증서버역시 Ocean의홈페이지에서받을수있으며, 회원가입후다운로드를받도록하자. 1) http://www.iotocean.org 에접속하여아래와같은화면을통해인증서버를다운받는다. 2) 다운로드파일을압축푼후 ROOT.war 생성여부확인 Figure 56. OpenMobius 인증서버다운로드 4.6.2 인증서버실행 인증서버실행순서는다음과같다. 1) ROOT.war 파일을구동시킬 tomcat/webapps 폴더에 copy&paste 2) Tomcat/bin/startup.bat 실행 38
Figure 57. 인증서버실행 1 Figure 58. 인증서버실행 2 4.6.3 인증서버테스트 인증서버가제대로설치및실행되는지확인을위해서다음과같이인터넷브라우저에서테 스트를수행한다 (Figure 59 와같이 URL 을입력하여확인 ). Figure 59. 인증서버실행 3 39
4.7 OpenMobius 서버플랫폼설치 OpenMobius 서버플랫폼역시 OCEAN Alliance 가입사를대상으로 Mobius 서버플랫폼 바이너리및소스를공개하고있다. OpenMobius 서버플랫폼실행바이너리를다운로드받 은후제공된매뉴얼에따라 IP, Port 정보등의 Configuration 정보를설정한다. 4.7.1 Mobius 서버플랫폼다운로드 다음의순서에따라 OpenMobius 플랫폼을다운및설치한다. 1) http://www.iotocean.org 에접속하여아래와같은화면을통해 Mobius 서버 다운로드 2) 다운로드파일을압축푼후 ROOT.war 생성여부확인 Figure 60. OpenMobius 플랫폼다운로드 4.7.2 Mobius 서버플랫폼실행 1) ROOT.war 파일을구동시킬 tomcat/webapps 폴더에 copy&paste 2) Tomcat/bin/startup.bat 실행 40
Figure 61. OpenMobius 플랫폼실행 1 Figure 62. OpenMobius 플랫폼실행 2 4.7.3 Mobius 서버플랫폼테스트 Google 에서제공하는 POSTMAN REST Client 를통해 Mobius 서버테스트를테스트한다. 41
Figure 63. OpenMobius 플랫폼테스트 1 42
Figure 64. OpenMobius 플랫폼테스트 2 5. 결론 지금까지사물인터넷서버플랫폼인 OpenMobius의설치및실행방법을알아보았다. Mobius는메모리기반의 Redis DB와 NoSQL DB인 Mongo DB를지원하고, HTTP, MQTT, CoAP 등의다양한프로토콜을지원한다. OpenMobius 플랫폼은 Spring Framework 기반으로구현되어있으며, 사물인터넷디바이스플랫폼인 &Cube와의연동을통해서사물들의정보를저장, 관리및제어한다. 그리고사물인터넷국제표준인 onem2m Release1 기반으로구현되어있어서상호운용성을지원한다. 또한, 사물인터넷시대에서가장중요한요소인보안을고려하여인증서버를사용하여보안적인측면도강화하였다. 이와같이, 사물인터넷플랫폼인 OpenMobius 플랫폼은쉽게설치및사용할수있을뿐 43
아니라표준기반에보안적인측면까지고려한훌륭한플랫폼이라생각되며, 중소기업및스 타트업기업들, 심지어개인개발자들도쉽게사물인터넷서비스를개발하고서비스하는 데큰도움을줄수있을것으로생각된다. 참고문헌 [1] 사물인터넷 Allinace Ocean 홈페이지, http://www.iotocean.org/main/ [2] OpenMobius 설치가이드문서, Installation Guide_OpenMobius_v1.0.pdf 44