[IoT] OCF(Open Connectivity Foundation)

이 글은 TTA Journal Vol.166에 OCF 오픈소스 워킹그룹 의장인 박수홍 삼성전자 소프트웨어센터 오픈소스그룹 수석연구원님이 작성한 '오픈소스 플랫폼 표준 동향' 글을 정리한 것입니다.

1. OCF 배경

OCF의 시작은 OIC(Open Interconnect Consortium) 단체이다. OIC는 2014년 9월 삼성전자, 인텔, 시스코, 미디어택 4개사가 창립 보드멤버로 신설한 사물인터넷 표준 단체로 2016년 2월까지 활동하였다. OIC는 2015년 12월 스마트홈의 대표적 국제표준단체인 UPnP포럼을 통합 흡수하면서 회원사가 100개 이상으로 성장하였고, UPnP의 다양한 기술을 OIC로 통합하면서 기술발전과 연결기기 확대를 지속하고 있다.

2. OCF의 오픈 소스와 표준 규격 개발 운영 방법

OCF는 오픈소스와 표준규격을 동시에 개발하는 매우 독창적인 운영방법을 채택하고 있다. 즉 OCF에서 표준규격을 개발함과 동시에 픈소스를 개발하여 외부에 확산하는 역할을 동시에 수행하고 있다. 이를 통해 규격서 개발 이후 각 업체가 자체적으로 소프트웨어를 개발해야 하는 부담을 줄이는 한편 OCF 표준개발과 동시에 시장에서 제품에 즉시 탑재되어 확산될 수 있도록 하는 목적이다. 특히아래 그림에서 볼 수 있듯이 OCF는 오픈소스개발의 외부 개발자 참여 확산을 가속화하기 위해 오픈소스 프로젝트 운영을 전담으로 하는 비영리단체(리눅스 재단)를 통해 OCF 오픈소스를 운영하고 있으며, 프로젝트명도 IoTivity라는 별도의 네이밍을 가지고 오픈소스 개발자들과 소통하며 소프트웨어를 공동 개발 중에 있다.

3. IoTivity

IoTivity(https://www.iotivity.org)는 OCF 표준규격을 기반으로 개발되며, 그 외에 다양한 사물인터넷 기술들도 수용하면서 개발되고 있고 IoTivity 개발에 필요한 운영비용은 OCF에서 지원하고 있다. 즉 외부 오픈소스 개발자들이 볼 때 IoTivity는 OCF와는 무관한 순수 오픈소스 프로젝트이며 IoTivity를 채용하는 제품은 OCF 표준을 자연스럽게 준용할 수 있도록 하여 제품 간 연동성 확보를 하고 있다. 또한 OCF는 회원제 표준단체이므로 OCF 참여를 위해선 회원가입을 필수로 해야 하지만 IoTivity는 순수 오픈소스 프로젝트이므로 OCF 회원으로 가입하지 않아도 사용을 원하는 개발자는 누구나 사용하고 수정 및 재배포, 상품화가 가능토록 하고 있다.
특히 OCF는 표준규격을 준수하여 개발된 제품에 대해 인증하는 프로그램을 운영 중이며, 회원사 제품 간 호환성 테스트 행사(Plugfest)를 통해 인증에 필요한 검사를 통과한 제품에 대해 OCF 공식 로고를 부여함으로써 소비자가 쉽게 OCF 인증 제품을 확인하고 구매할 수 있도록 하고 있다.
OIC 1.1 표준규격 및 IoTivity 1.1.0 오픈소스 모두 해당 홈페이지에 공개되어 있으므로 누구나 확인 가능하다. 현재 IoTivity 1.1.0 버전은 리눅스(Ubuntu), 타이젠(Tizen), 안드로이드(Android) 등 다양한 소프트웨어 플랫폼상에서 동작 가능하며 특히 아두이노(Arduino)와 같은 경량플랫폼에서도 탑재 가능하다.
OIC 1.1 이후 버전에서는 올신관련 요구사항을 수렴하여 기기 간 상호 호환성을 보장할 수 있도록 확대 개발될 예정이다.

4. OCF Framework

다음은 OCF 아키텍처 개념도이다..


그리고 다음은 OCF 서비스 구조이다. OCF는 현재 사용자들이 가장 폭넓게 사용하는 인터넷/웹 구조인 RESTful 방식[5]을 채용하고 있다. 즉 Client-Server 모델로 각 Server는 자신들이 제공 가능한 다양한 사물인터넷 서비스를 리소스 형태로 정의하고 있다. 예를 들자면 전등은 OCF Server고 전등이 제공하는 서비스들[ON/OFF/DIMMING/COLOR/...]은 리소스로 정의되어 OCF Client(예: 사용자 스마트폰)에서 원하는 서비스를 사용할 수 있는 것이다([그림 5]). 특히 사물인터넷 특성상 경량 기기들이 많아질 것을 예상하여 OCF 는 CoAP(Constrained Application Protocol) 표준을 채택하여 OCF 기기를 탐색하고, 발견하고 제어하는 프로토콜로 사용 중이며 이를 통해 구현 부담을 최소화함으로써 경량 기기에도 탑재 및 동작이 가능토록 하였다. 또한, OCF 기기 발견을 지원하는 RD(Resource Directory) 기능도 제공하여 사용자가 원하는 OCF 기기를 한 곳에서 쉽게 발견할 수 있다.
현재 OCF 1.0 표준기술은 스마트홈 서비스를 중심으로 하는 기능들로 구성되어 있으며, 이후 버전에서는 자동차, 물류, 헬스케어 등 다양한 서비스를 수용하는 기능들로 확대 개발 중에 있다.


사물인터넷 서비스 특징상 향후 다양한 서비스가 개발되고 확장될 것이며 이를 위해 쉽게 확장할 수 있는 데이터 모델이 필요하다. 이를 위해 OCF는 RAML(RESTful API Modeling Language)과 JSON(JavaScript Object Notation) 언어를 이용해 데이터 모델을 정의하고 있으며 이를 공개 사이트를 통해 오픈하고 있다. 다음은 OCF 데이터 모델 정의 방법이다.



댓글

이 블로그의 인기 게시물

C++로 프로그래밍할 때 인자 또는 리턴 값으로 std::vector 등 STL 데이터 타입 처리하는 좋은 방법

macOS가 갑자기 부팅이 되지 않을 경우 데이터 복구 또는 백업 방법

Git 저장소를 병합하는 방법(How to merge repositories in Git)