사물인터넷(IoT)은 최근 IT 업계에서 가장 성장하는 기술 중 하나입니다. 스타트업부터 통신사, 대기업 등도 동참해 IoT 제품을 내놓고 있는데요. 소프트웨어 개발자들에게 사물인터넷 기술은 여전히 낯선 존재입니다. 무엇을 어떻게 시작해야 할지 막막할 수 있죠. 지난주 <블로터 플러스프럼>에서는 자바로 사물인터넷 개발을 시작하는 방법에 대해 이야기하는 자리를 마련했습니다. 발표는 양성일 자바 개발자이자 상명대 그린에너지연구소 책임연구원이 맡았습니다.

▲  양성일 상명대학교 그린에너지연구소 책임연구원
▲ 양성일 상명대학교 그린에너지연구소 책임연구원

1. 사물인터넷 구조

▲  사진:양성일 개발자 발표자료
▲ 사진:양성일 개발자 발표자료

양성일 책임연구원은 사물인터넷을 크게 2가지 구조로 나눠 설명했습니다. 클라우드에 직접 연결하는 형식과 중간에 한 과정을 추가한 게이트웨이 형식입니다. 두 방식은 일반사람들이 인터넷을 이용하는 방법과 비슷합니다. 먼저 야외에서 인터넷으로 이용할 때 우리는 LTE같은 이동통신사 서비스를 활용합니다. 하지만 집에서 인터넷을 이용할 때는 공유기를 통해 인터넷에 접속하죠.

[plus]그 원리를 사물인터넷에 대입해보면 됩니다. 바깥에 있는 사물들, 이를테면 자동차나 스마트 액세서리는 클라우드 환경에 바로 연결됩니다. 하지만 조명이나 보일러 같은 실내 장치는 내부에 있는 게이트웨이를 통해 조절됩니다. 이때 실내에 있는 사물들은 굳이 IP 통신을 이용하지 않습니다. 블루투스같은 다양한 프로토콜을 이용할 수 있죠.

2. 기업들의 사물인터넷 기술

사물인터넷 기술은 제조업체같은 대형 기업들이 많이 투자하고 있습니다. 어느정도 기술력을 확보한 기업은 자체적으로 만든 기술을 고도화하는 데 집중하고 있습니다. 반대로 후발주자로 사물인터넷 시장에 뛰어든 기업들은 연합체를 구성해 새로운 사물인터넷 기술을 개발하면서 주도권을 잡고 있습니다. 다음은 사물인터넷 기술을 만들고 있는 연합체와 기업입니다.

▲  사진:양성일 개발자 발표자료
▲ 사진:양성일 개발자 발표자료

주목할 만한 연합체는 올씬얼라이언스오픈 커넥티비티 재단(OCF)입니다. 올씬얼라이언스는 퀄컴이 '올조인'이라는 기술을 기증하면서 힘을 얻었는데요. 최근 올씬얼라이언스에 동참했던 기업과 재단이 하나둘 떠나고 인텔이 주도하는 OCF 쪽에 많이들 몰리고 있습니다. 양성일 연구원은 “현재 올씬얼라이언스에 대한 관심은 줄어들고 OCF 쪽이 활발하게 움직이고 있다”라며 “MS, 삼성전자 뿐만 아니라 퀄컴까지 OCF에 가입한 상태” 라고 설명했습니다. 아이오티비티는 리눅스재단이 주도하고 있으며, OCF 규격에 맞는 예제 오픈소스를 공개하고 있습니다.

▲  사진:양성일 개발자 발표자료
▲ 사진:양성일 개발자 발표자료

사물인터넷과 관련된 프로토콜도 점점 많아지고 있습니다. 아래 표는 현재 바로 실무에 쓰기 좋은 프로토콜이라고 하는데요. 양성일 책임연구원은 "하드웨어 개발자는 네트워크 프로토콜을, 소프트웨어 개발자는 애플리케이션 프로토콜을 알아두면 좋을 것"이라고 조언했습니다.

▲  사진:양성일 개발자 발표자료
▲ 사진:양성일 개발자 발표자료

3. 오픈소스 하드웨어 플랫폼의 공통점은 'ARM'

최근 사물인터넷이 뜨면서 덩달아 인기가 높아진게 오픈소스 하드웨어 플랫폼입니다. 기업뿐만 아니라 개인 개발자도 취미로 오픈소스 하드웨어를 이용하고 있죠. 오픈소스 하드웨어에는 아두이노, 라즈베리파이, 비글보드, 아틱이 대표적으로 있습니다. 이러한 오픈소스 하드웨어 플랫폼들은 대부분 ARM을 많이 사용하고 있다고 하네요. 이 중 ARM임베디드는 자바를 지원한다고 합니다.

▲  오픈소스 하드웨어 플랫폼. (왼쪽부터) 아두이노, 라즈베리파이, 비글보드, 아틱(사진:양성일 개발자 발표자료)
▲ 오픈소스 하드웨어 플랫폼. (왼쪽부터) 아두이노, 라즈베리파이, 비글보드, 아틱(사진:양성일 개발자 발표자료)

▲  ARM 종류에 따른 활용사례(사진:양성일 개발자 발표자료)
▲ ARM 종류에 따른 활용사례(사진:양성일 개발자 발표자료)

▲  사진:양성일 개발자 발표자료
▲ 사진:양성일 개발자 발표자료

4. 사물인터넷 개발 첫 시작은 '브레드보드'부터

양성일 개발자는 "사물인터넷 개발을 시작할 때 부품 용어나 정보에 대해 익숙해지면 좋다"라며 "임베디드 개발자에겐 익숙한 내용이지만 나같은 자바개발자에겐 시간이 걸렸다"라고 설명했습니다. 특히 가장 처음에는 '브레드보드'로 실험을 하는 게 좋다고 조언했습니다. 브레드보드란 납땜하지 않고 부품을 연결해 전자회로를 만들 수 있는 도구입니다. 브레드보드를 접한 이후에는 전압, 저항, 전류에 대한 법칙을 이해하고, 인터넷 검색과 책을 통해 전자부품의 활용법을 익히는 과정이 필요합니다. 마지막으로 전자부품에 대한 데이터시트를 찾고 읽는 습관을 가지면 좋다고 하네요. 개발자는 데이트시트를 읽으면서 어떤 명령어를 이용하면 어떤 값을 가져올 수 있을지, 부품의 핵심 기능은 무엇인지 등에 대해 이해할 수 있습니다.

▲  사진:양성일 개발자 발표자료
▲ 사진:양성일 개발자 발표자료

5. 자바SE와 자바ME

오라클은 자바8 이후부터 사물인터넷 환경에 좋은 기술을 지원하고 있습니다. 대표적으로 자바SE와 자바ME가 있는데요. 이를 활용해 사물인터넷 프로그래밍을 좀 더 쉽게 할 수 있습니다. 자바ME 임베디드는 제한된 자원을 가지는 임베디드 장치에 알맞는 플랫폼입니다. 자바SE 임베디드는 고성능 애플리케이션에서 활용할 수 있죠. 양성일 개발자는 자바SE는 "자바의 모든 기능을 사물인터넷 환경에 맞춰 경량화할 수 있다"라고 설명했습니다.

▲  사진:양성일 개발자 발표자료
▲ 사진:양성일 개발자 발표자료

▲  사진:양성일 개발자 발표자료
▲ 사진:양성일 개발자 발표자료

▲  사진:양성일 개발자 발표자료
▲ 사진:양성일 개발자 발표자료

6. 자바 개발자에게 맞는 사물인터넷 개발도구는?

자바 개발자는 사물인터넷 제품 개발 시 어떤 도구를 이용해야 할까요? 크게 2가지입니다. '이클립스'와 '넷빈즈'입니다. 이클립스에서 자바SE를 활용하려면 여러가지 환경설정을 따로 거쳐야 하는 번거로움이 있습니다. 넷빈즈는 원격실행, 디버깅, 설치 등을 자동화해서 조금 더 편하게 사물인터넷을 구현할 수 있다고 합니다. 넷빈즈는 여러 버전으로 나누어 제공하고 있는데요. 사물인터넷을 개발하고자 한다면 '올(ALL)'버전을 내려받아 이용하면 됩니다. 자바ME를 이용하려면 따로 SDK와 플러그인을 설치해야 하며, 이러한 도구를 이용하면 에뮬레이터를 이용할 수 있다고 합니다.

▲  사물인터넷을 개발할 때 이용할 수 있는 자바 개발 도구(사진:양성일 개발자 발표자료)
▲ 사물인터넷을 개발할 때 이용할 수 있는 자바 개발 도구(사진:양성일 개발자 발표자료)

7. 자바 진영의 IoT 기술, 성과가 있을까?

사실 사물인터넷 시장과 유사한 임베디드 시장에서는 전통적으로 자바보다는 C나 C++를 많이 이용했습니다. 이런 가운데 자바가 사물인터넷 시장에서 성장할 수 있을지는 아직 미지수입니다. 실제로 플러스포럼에서 한 참가자는 "최근 사물인터넷 업계에서 노드JS가 부상하고 있는 것에 비해 자바는 아직 사물인터넷 시장에서 걸음마 단계"라는 의견을 냈습니다. 이에 대해 양성일 책임연구원은 "노드JS는 임베디드 기술에서 사용하기에는 조금 무거운 기술"이라며 "자바는 원래 태생부터 임베디드를 고려해 만들어졌기 때문에 사물인터넷 시장에서 가치가 더 높아질 것"이라고 말했습니다. 또한 "최근 오라클이 자바8 이후 기술부터 ARM과 협력해 언어를 경량화하고 생산성을 높이는 방향으로 가고 있다"라며 "다만 아직 자바는 라이선스 비용을 내야 하는 걸림돌이 존재한다"라고 덧붙였습니다.

저작권자 © 블로터 무단전재 및 재배포 금지