2016.02.18

“세상을 프로그래밍하라” 사물 인터넷 시대의 필수 개발 기술 12가지

Peter Wayner | InfoWorld

많은 신생업체들이 세상을 바꾸겠다는 포부를 가지고 출발하지만, 이들이 말하는 것은 세상 자체나 세상 속의 물리적인 사물을 의미하진 않는다. 사실상 이들이 말하는 변화의 구체적 모습은 데이터 패킷을 교환하거나 데이터베이스에 엔트리를 배치하는 등인 경우가 대부분이다. 물론 그것들이 중요하지 않은 것은 아니지만, 이는 어디까지나 비트(bit)로 이루어진 세계일 뿐이다. 반면 우리가 사는 세상은 원자로 이루어져 있다.

이런 비트와 원자 간의 경계가 사라지고 있으며, 프로그래머가 더 이상 가상 영역에 제한되지 않게 됐다. 이런 변화에는 한층 더 현실화되고 있는 사물 인터넷이 한몫을 하고 있다. 이제는 디스크에 1과 0의 두 가지 숫자만 쓸 수 있는 단계를 지나 원자를 압출, 절단, 변형하는 구체적 방식에 대한 코드 자체를 입력하는 것이 가능해졌다. 소프트웨어를 통해 불을 켜고, 공간의 모습을 바꾸고, 차를 운전하며, 벽을 옮기는 것이 가능해진 것이다.

덕분에 이제는 개발자들도 가상 세계뿐 아니라 실제 세계에서도 새로운 시장과 기회를 모색할 수 있게 됐다. 무인 자동차, 스마트 홈, 인텔리전트 오피스, 대량 맞춤 생산(Mass Customization) 분야의 급격한 발전은 이제 프로그래머들에게도 데이터 구조의 변화가 어떻게 물질의 변화로 이어지는지에 대한 이해가 요구됨을 의미한다. 이러한 개념은 ‘객체 지향 프로그래밍(object-oriented programming)’ 이라는 단어로 완벽하게 표현할 수 있을 것 같다.

물리적 변화에 초점을 맞춘 이러한 프로그래밍에는 새로운 언어가 필요하다. 아니면, 적어도 기존 언어를 토대로 한 새로운 규약이 있어야 한다. 세상을 바꾼다는 것은 이러한 언어와 프로토콜들의 작동 원리를 이해하고, 이들을 어떻게 배치, 활용할 지를 이해한다는 의미다. 그런 의미에서, 정말로 세상을 바꾸고 싶다면 반드시 알아야 할 몇 가지 언어와 프로토콜들을 소개한다. 일단 세상을 바꾸는 비트에 한 번 맛을 들이면, 다시 데이터베이스로 돌아가기 어려울 지도 모른다.

베이직(Basic)
초기 마이크로컴퓨터의 변혁을 주도한 고전적 프로그래밍 언어인 베이직은 아직도 몇몇 하드웨어 컨트롤러에서 그 흔적을 찾아볼 수 있다. 특히 ESP8266 컨트롤러 보드 제작에 이 언어가 사용되는데, 제작자들의 말에 따르면 베이직 언어는 “컴퓨터 과학을 배우지 않고도 놀라운 일들을 할 수 있게 해주는, 단순하면서도 매우 강력한 언어”이기 때문이다.

베이직은 고전 언어답게 goto를 비롯한 클래식한 구조를 유지하고 있다. 물론 웹 페이지나 이메일 전송을 위한 비교적 새로운 명령도 없는 것은 아니다. 베이직 언어를 사용할 경우 인터페이스 상의 핀을 통해 인터넷으로 전달할 데이터를 모으는 데 대부분 시간을 쓰게 되겠지만 말이다.

베이직 언어에 대한 더 자세한 정보는 ESP8266 커뮤니티나 이 언어 관련 웹사이트를 참조하길 바란다.

X10
처음에 프로그래머들을 가상의 세계에서 나와 실제 세계와 만나게 해 준 언어가 바로 X10이다. 결코 세밀하거나, 복잡한 프로토콜은 아니다. 스티브 잡스와 워즈니악이 애플 I을 출시하기도 전인 1975년에 만들어진 것도 그 이유 중 하나일 것이다. 이렇게 오래된 프로토콜임에도 불구하고, 다양한 저비용 기기들에서 지원이 된다는 이유 때문에 아직까지도 널리 사용되고 있다.

X10 프로토콜은 몇 가지 단순한 메시지들로 구성되어 있다. 비트를 통해 스위치를 켜고, 끄고, 밝기를 조절하는 것이 가능하다. 그게 전부다. 원격 스위치를 조절하거나 데이터를 약간 더 내장할 수는 있지만, 대부분의 기능은 뭔가를 켜고 끄는 데 집중되어 있다. 데이터 패킷은 X10의 파이어크래커(FireCracker) 등 별도의 기기를 통해 생성되며 일반 가정의 120V 전선을 통해 전달된다.

플리핏(Flipit), 보틀 로켓(Bottle Rocket) 등 몇몇 소프트웨어 프로젝트를 통해 파이어크래커에서의 데이터 패킷 생성 프로세스를 단순화할 수 있다. 아니면 파이어크래커를 탄생시킨 장본인이자 1978년부터 가전 제품의 1인자 자리를 지켜왔다고 자부하는 기업인 X10를 거치는 방법도 있다.

인스테온(Insteon)
2005년, 인스테온은 새로운 프로토콜을 발표했다. 더 다양한 메시지 전달과 더 나은 신소 송신을 장점으로 앞세워 X10 프로토콜을 대체하기 위해 만들어진 프로토콜이었다. X10 신호의 경우 집의 크기가 커지거나 배선이 복잡하면 잘 잡히지 않는다는 문제가 있었기 때문이다. 그런가 하면 신호가 노이즈에 영향을 받는다는 불평도 있었다. 반면 인스테온의 프로토콜은 각 노드 및 스위치가 하나의 리피터로 기능하여 신호를 더 멀리, 그리고 배선의 구석 구석까지 닿을 수 있도록 하는 메커니즘을 추가해 이러한 단점들을 보완했다. 신호를 널리 송신할 수 있는 똑똑한 전략을 쓴 것이다.

더욱 풍부하고 복잡성과 중복 수준이 높다는 점도 이 프로토콜의 주요한 특징이다. 인스태온 패킷은 한정적인 2비트의 명령이 아닌, (명령에 전속으로 할당된 2바이트를 포함해) 10바이트까지 확장된 형태로 구성된다. 대역폭을 많이 소모하는 사용자라면, 기기로 전달되는 패킷 내에 추가로 14바이트를 혼합하는 것도 가능하다. 주요 기능 자체는 여전히 대상을 켜고 끄는데 초점이 맞춰져 있지만, 그밖에 득표 센서, 스마트 온도계 제작 등과 관련한 옵션들 역시 이용할 수 있다.

인스테온의 프로토콜은 현재 아마존의 에코(Echo)나 로지텍의 하모니(Harmony) 등 여러 스마트 허브 및 홈 자동화 툴에서 이용되고 있다. 또한 리눅스 홈 자동화(Linux Home Automation) 프로젝트나 오픈리모트(OpenRemote) 같은 오픈소스 툴이 데이터 패킷을 송신하는 전선 컨트롤러와 통합되기도 했다.



2016.02.18

“세상을 프로그래밍하라” 사물 인터넷 시대의 필수 개발 기술 12가지

Peter Wayner | InfoWorld

많은 신생업체들이 세상을 바꾸겠다는 포부를 가지고 출발하지만, 이들이 말하는 것은 세상 자체나 세상 속의 물리적인 사물을 의미하진 않는다. 사실상 이들이 말하는 변화의 구체적 모습은 데이터 패킷을 교환하거나 데이터베이스에 엔트리를 배치하는 등인 경우가 대부분이다. 물론 그것들이 중요하지 않은 것은 아니지만, 이는 어디까지나 비트(bit)로 이루어진 세계일 뿐이다. 반면 우리가 사는 세상은 원자로 이루어져 있다.

이런 비트와 원자 간의 경계가 사라지고 있으며, 프로그래머가 더 이상 가상 영역에 제한되지 않게 됐다. 이런 변화에는 한층 더 현실화되고 있는 사물 인터넷이 한몫을 하고 있다. 이제는 디스크에 1과 0의 두 가지 숫자만 쓸 수 있는 단계를 지나 원자를 압출, 절단, 변형하는 구체적 방식에 대한 코드 자체를 입력하는 것이 가능해졌다. 소프트웨어를 통해 불을 켜고, 공간의 모습을 바꾸고, 차를 운전하며, 벽을 옮기는 것이 가능해진 것이다.

덕분에 이제는 개발자들도 가상 세계뿐 아니라 실제 세계에서도 새로운 시장과 기회를 모색할 수 있게 됐다. 무인 자동차, 스마트 홈, 인텔리전트 오피스, 대량 맞춤 생산(Mass Customization) 분야의 급격한 발전은 이제 프로그래머들에게도 데이터 구조의 변화가 어떻게 물질의 변화로 이어지는지에 대한 이해가 요구됨을 의미한다. 이러한 개념은 ‘객체 지향 프로그래밍(object-oriented programming)’ 이라는 단어로 완벽하게 표현할 수 있을 것 같다.

물리적 변화에 초점을 맞춘 이러한 프로그래밍에는 새로운 언어가 필요하다. 아니면, 적어도 기존 언어를 토대로 한 새로운 규약이 있어야 한다. 세상을 바꾼다는 것은 이러한 언어와 프로토콜들의 작동 원리를 이해하고, 이들을 어떻게 배치, 활용할 지를 이해한다는 의미다. 그런 의미에서, 정말로 세상을 바꾸고 싶다면 반드시 알아야 할 몇 가지 언어와 프로토콜들을 소개한다. 일단 세상을 바꾸는 비트에 한 번 맛을 들이면, 다시 데이터베이스로 돌아가기 어려울 지도 모른다.

베이직(Basic)
초기 마이크로컴퓨터의 변혁을 주도한 고전적 프로그래밍 언어인 베이직은 아직도 몇몇 하드웨어 컨트롤러에서 그 흔적을 찾아볼 수 있다. 특히 ESP8266 컨트롤러 보드 제작에 이 언어가 사용되는데, 제작자들의 말에 따르면 베이직 언어는 “컴퓨터 과학을 배우지 않고도 놀라운 일들을 할 수 있게 해주는, 단순하면서도 매우 강력한 언어”이기 때문이다.

베이직은 고전 언어답게 goto를 비롯한 클래식한 구조를 유지하고 있다. 물론 웹 페이지나 이메일 전송을 위한 비교적 새로운 명령도 없는 것은 아니다. 베이직 언어를 사용할 경우 인터페이스 상의 핀을 통해 인터넷으로 전달할 데이터를 모으는 데 대부분 시간을 쓰게 되겠지만 말이다.

베이직 언어에 대한 더 자세한 정보는 ESP8266 커뮤니티나 이 언어 관련 웹사이트를 참조하길 바란다.

X10
처음에 프로그래머들을 가상의 세계에서 나와 실제 세계와 만나게 해 준 언어가 바로 X10이다. 결코 세밀하거나, 복잡한 프로토콜은 아니다. 스티브 잡스와 워즈니악이 애플 I을 출시하기도 전인 1975년에 만들어진 것도 그 이유 중 하나일 것이다. 이렇게 오래된 프로토콜임에도 불구하고, 다양한 저비용 기기들에서 지원이 된다는 이유 때문에 아직까지도 널리 사용되고 있다.

X10 프로토콜은 몇 가지 단순한 메시지들로 구성되어 있다. 비트를 통해 스위치를 켜고, 끄고, 밝기를 조절하는 것이 가능하다. 그게 전부다. 원격 스위치를 조절하거나 데이터를 약간 더 내장할 수는 있지만, 대부분의 기능은 뭔가를 켜고 끄는 데 집중되어 있다. 데이터 패킷은 X10의 파이어크래커(FireCracker) 등 별도의 기기를 통해 생성되며 일반 가정의 120V 전선을 통해 전달된다.

플리핏(Flipit), 보틀 로켓(Bottle Rocket) 등 몇몇 소프트웨어 프로젝트를 통해 파이어크래커에서의 데이터 패킷 생성 프로세스를 단순화할 수 있다. 아니면 파이어크래커를 탄생시킨 장본인이자 1978년부터 가전 제품의 1인자 자리를 지켜왔다고 자부하는 기업인 X10를 거치는 방법도 있다.

인스테온(Insteon)
2005년, 인스테온은 새로운 프로토콜을 발표했다. 더 다양한 메시지 전달과 더 나은 신소 송신을 장점으로 앞세워 X10 프로토콜을 대체하기 위해 만들어진 프로토콜이었다. X10 신호의 경우 집의 크기가 커지거나 배선이 복잡하면 잘 잡히지 않는다는 문제가 있었기 때문이다. 그런가 하면 신호가 노이즈에 영향을 받는다는 불평도 있었다. 반면 인스테온의 프로토콜은 각 노드 및 스위치가 하나의 리피터로 기능하여 신호를 더 멀리, 그리고 배선의 구석 구석까지 닿을 수 있도록 하는 메커니즘을 추가해 이러한 단점들을 보완했다. 신호를 널리 송신할 수 있는 똑똑한 전략을 쓴 것이다.

더욱 풍부하고 복잡성과 중복 수준이 높다는 점도 이 프로토콜의 주요한 특징이다. 인스태온 패킷은 한정적인 2비트의 명령이 아닌, (명령에 전속으로 할당된 2바이트를 포함해) 10바이트까지 확장된 형태로 구성된다. 대역폭을 많이 소모하는 사용자라면, 기기로 전달되는 패킷 내에 추가로 14바이트를 혼합하는 것도 가능하다. 주요 기능 자체는 여전히 대상을 켜고 끄는데 초점이 맞춰져 있지만, 그밖에 득표 센서, 스마트 온도계 제작 등과 관련한 옵션들 역시 이용할 수 있다.

인스테온의 프로토콜은 현재 아마존의 에코(Echo)나 로지텍의 하모니(Harmony) 등 여러 스마트 허브 및 홈 자동화 툴에서 이용되고 있다. 또한 리눅스 홈 자동화(Linux Home Automation) 프로젝트나 오픈리모트(OpenRemote) 같은 오픈소스 툴이 데이터 패킷을 송신하는 전선 컨트롤러와 통합되기도 했다.



X