웹 사물(Web of Things, WoT) 아키텍처 1.1

W3C 권고안

이 문서에 대한 자세한 정보
이 버전:
https://www.w3.org/TR/2023/REC-wot-architecture11-20231205/
최신 공개 버전:
https://www.w3.org/TR/wot-architecture11/
최신 편집자 초안:
https://w3c.github.io/wot-architecture/
이력:
https://www.w3.org/standards/history/wot-architecture11/
커밋 이력
구현 보고서:
https://w3c.github.io/wot-architecture/testing/report11.html
편집자:
Michael Lagally (Oracle Corp.)
Ryuichi Matsukura (Fujitsu Ltd.)
Michael McCool (Intel Corp.)
Kunihiko Toumura (Hitachi, Ltd.)
이전 편집자:
Kazuo Kajimoto (Panasonic Corp. 재직 당시)
Toru Kawaguchi (Panasonic Corp.)
Matthias Kovatsch (Huawei)
피드백:
GitHub w3c/wot-architecture (풀 요청, 새 이슈, 열린 이슈)
public-wot-wg@w3.org 로 제목 줄에 [wot-architecture11] … 메시지 주제 … 를 포함하십시오 (아카이브)
정오표:
정오표가 있습니다.
이전 권고안
https://www.w3.org/TR/2020/REC-wot-architecture-20200409/
기여자
GitHub 저장소에서
저장소
GitHub에 있습니다
버그 보고

번역도 참조하십시오.


개요

W3C 웹 사물(Web of Things, WoT)은 IoT 플랫폼 및 애플리케이션 도메인 전반의 상호운용성을 가능하게 합니다. WoT의 목표는 기존 IoT 표준과 솔루션을 보존하고 보완하는 것입니다. W3C WoT 아키텍처는 존재하는 것을 설명하도록 설계되었으며, 필요한 경우에만 새로운 메커니즘을 규정합니다.

WoT 아키텍처 명세는 W3C 웹 사물의 추상 아키텍처를 설명합니다. 이 추상 아키텍처는 여러 애플리케이션 도메인의 사용 사례에서 도출된 요구사항을 기반으로 합니다. 여러 모듈식 구성 요소가 식별되었으며, 그 상세 명세는 다른 문서에 제시되어 있습니다. 이 문서는 이러한 구성 요소들이 어떻게 관련되고 함께 동작하는지 설명합니다. WoT 추상 아키텍처는 다양한 구체적 배포 시나리오에 매핑될 수 있는 기본 개념적 프레임워크를 정의하며, 몇 가지 예도 제시합니다. 그러나 이 명세에서 설명하는 추상 아키텍처 자체는 구체적인 메커니즘을 정의하거나 구체적인 구현을 규정하지 않습니다.

이 문서의 상태

이 절은 발행 당시 이 문서의 상태를 설명합니다. 현재 W3C 발행물 목록과 이 기술 보고서의 최신 개정판은 https://www.w3.org/TR/ 의 W3C 기술 보고서 색인에서 확인할 수 있습니다.

이 문서는 추상 아키텍처를 설명합니다. 그러나 W3C 웹 사물 아키텍처를 따르는 일련의 구체적 구현을 설명하는 구현 보고서가 있습니다. 또한 다양한 WoT 구성 요소에 대한 다른 구현 보고서도 참조합니다.

이 명세의 향후 업데이트에는 새로운 기능이 포함될 수 있습니다.

이 문서는 Web of Things 워킹 그룹에 의해 권고안 트랙을 사용하여 권고안으로 발행되었습니다.

W3C는 웹 표준으로서 이 명세의 광범위한 배포를 권장합니다.

W3C 권고안은 광범위한 합의 형성을 거친 뒤 W3C와 그 회원들이 승인하고, 워킹 그룹 구성원들이 구현에 대해 로열티 없는 라이선스를 약속한 명세입니다.

이 문서는 W3C 특허 정책에 따라 운영되는 그룹에 의해 작성되었습니다. W3C는 해당 그룹의 산출물과 관련하여 이루어진 특허 공개의 공개 목록을 유지합니다. 그 페이지에는 특허를 공개하기 위한 안내도 포함되어 있습니다. 개인이 필수 청구항을 포함한다고 믿는 특허를 실제로 알고 있는 경우, 그 개인은 W3C 특허 정책 제6절에 따라 정보를 공개해야 합니다.

이 문서는 2023년 11월 03일 W3C 프로세스 문서의 적용을 받습니다.

1. 소개

이 절은 비규범적입니다.

웹 사물(Web of Things, WoT)의 목표는 사물 인터넷 (IoT)의 상호운용성과 사용성을 향상하는 것입니다. 여러 해 동안 많은 이해관계자가 참여한 협력을 통해 이러한 과제를 해결하는 데 도움이 되는 여러 구성 요소가 식별되었습니다.

다양한 애플리케이션 도메인을 위해 여러 산업 분야의 이해관계자들이 30개 이상의 WoT 사용 사례를 제출했습니다. 이러한 사용 사례는 수집되어 WoT 사용 사례 및 요구사항 https://www.w3.org/TR/wot-usecases/ 문서에 게시되었습니다.

사용 사례 모음은 두 범주로 분류됩니다:

이러한 사용 사례와 요구사항은 W3C WoT 명세 패밀리의 생성과 추가 발전을 이끕니다.

WoT 아키텍처 명세는 W3C WoT 표준화의 범위에 초점을 맞추며, 이는 이러한 구성 요소와 그것들이 어떻게 관련되는지를 정의하는 추상 아키텍처로 나눌 수 있습니다.

아키텍처 문서는 여러 목적을 수행합니다:

구성 요소는 별도의 명세에서 상세히 정의되고 설명됩니다. 이 명세는 추상 아키텍처와 그 용어 및 개념적 프레임워크를 정의하는 것 외에도 WoT 구성 요소에 대한 소개 역할을 하며, 그 상호작용을 설명합니다:

이 명세는 WoT 시스템의 배포를 위한 비규범적 아키텍처 측면과 조건도 다룹니다. 이러한 지침은 예시 배포 시나리오의 맥락에서 설명되지만, 이 명세가 특정 구체적 구현을 요구하지는 않습니다.

이 명세는 W3C WoT 명세의 우산 역할을 하며 용어와 W3C 웹 사물의 기반이 되는 추상 아키텍처와 같은 기본 사항을 정의합니다. 요약하면, 이 명세의 목적은 다음을 제공하는 것입니다:

추가 요구사항, 사용 사례, 개념적 기능 및 새로운 구성 요소는 향후 버전의 WoT 사용 사례 및 요구사항 https://www.w3.org/TR/wot-usecases/ 문서에 수집됩니다.

2. 적합성

비규범적으로 표시된 절뿐 아니라, 이 명세의 모든 작성 지침, 도표, 예제 및 참고는 비규범적입니다. 이 명세의 그 밖의 모든 것은 규범적입니다.

이 문서에서 MAY, MUST, MUST NOT, SHOULD, 및 SHOULD NOT 키워드는 여기에 보인 것처럼 모두 대문자로 나타날 때에만 BCP 14 [RFC2119] [RFC8174]에 설명된 대로 해석되어야 합니다.

3. 용어

이 절은 비규범적입니다.

이 명세는 여기에 정의된 다음 용어를 사용합니다. WoT 접두사는 Web of Things 개념을 위해 특별히 (재)정의된 용어의 모호성을 피하기 위해 사용됩니다.

다른 WoT 문서에서 사용되는 용어와 정의가 충돌하는 경우, WoT 아키텍처의 정의가 우선합니다.

액션
사물의 함수를 호출할 수 있게 하는 상호작용 어포던스입니다. 이 함수는 상태(예: 램프 켜기 또는 끄기)를 조작하거나 사물에서 프로세스(예: 시간에 따라 램프 밝기 낮추기)를 트리거합니다.
익명 TD
사용자 정의 식별자 (id 속성)가 없는 사물 기술입니다.
연결된 장치
장치의 동의어입니다.
바인딩 템플릿
사물 기술이 특정 프로토콜, 데이터 페이로드 형식 또는 이 둘을 특정 방식으로 결합한 IoT 플랫폼과 함께 사용될 수 있게 하는 재사용 가능한 청사진 모음입니다. 이는 사물과 소비자의 구현자를 안내하기 위한 추가 설명 어휘, 사물 모델 및 예제를 통해 이루어집니다.
소비된 사물
로컬 애플리케이션이 사용하는 원격 사물을 나타내는 소프트웨어 추상화입니다. 이 추상화는 네이티브 WoT 런타임에 의해 생성되거나 WoT 스크립팅 API를 통해 객체로 인스턴스화될 수 있습니다.
콘텐츠 타입
메시지 본문의 형식에 대한 식별자입니다. 미디어 타입 및 MIME 타입이라고도 합니다 [RFC2046].
사물 소비
TD 문서를 파싱하고 처리하여, 로컬 런타임 환경에서 애플리케이션을 위한 인터페이스로 소비된 사물 소프트웨어 추상화를 생성하는 것입니다.
소비자
WoT 사물 기술(JSON 기반 표현 형식 포함)을 처리하고 사물과 상호작용할 수 있는(즉, 사물을 소비할 수 있는) 엔터티입니다.
데이터 스키마
데이터 스키마는 상호작용 중에 사물소비자 사이에 전달되는 정보 모델과 관련 페이로드 구조 및 해당 데이터 항목을 설명합니다.
장치
장치는 네트워크 인터페이스를 가진 물리적 엔터티입니다. 장치는 사물 기술로 설명될 수 있으며 사물의 한 종류입니다. 연결된 장치의 동의어입니다. 서비스와 비교하십시오.
디지털 트윈
디지털 트윈은 클라우드 또는 에지 노드에 존재하는 가상 사물의 한 유형입니다. 디지털 트윈은 지속적으로 온라인 상태가 아닐 수 있는 실제 장치를 표현하고 그에 대한 네트워크 인터페이스를 제공하는 데 사용될 수 있으며(섀도도 참조), 새 애플리케이션과 서비스를 실제 장치에 배포하기 전에 시뮬레이션을 실행할 수 있고, 과거 상태 또는 동작의 이력을 유지할 수 있으며, 미래 상태 또는 동작을 예측할 수 있습니다. 디지털 트윈은 일반적으로 단순한 섀도보다 더 많은 기능을 가집니다.
디렉터리
다른 서비스, 서비스 또는 사물을 설명하는 데이터 또는 메타데이터 집합을 유지하는 서비스입니다. 예로는 WoT 사물 기술 디렉터리가 있습니다.
탐색
네트워크에서 로컬 또는 원격으로 WoT 사물 기술을 배포하고 접근하기 위해 WoT가 정의한 메커니즘입니다.
탐색자
WoT 탐색 과정의 클라이언트로 동작하여 사물 기술을 탐색하고 가져오는 엔터티입니다. 예를 들어 사물 기술 디렉터리 탐색 서비스에 소개되어 검색하거나, 사물의 well-known 엔드포인트에서 사물 기술을 직접 가져올 수 있습니다.
도메인별 어휘
WoT 사물 기술에서 사용할 수 있지만 W3C WoT가 정의하지 않은 링크드 데이터 어휘입니다.
에지 장치
기업 또는 서비스 제공자 코어 네트워크로의 진입점을 제공하는 장치입니다. 예로는 허브, 게이트웨이, 라우터, 스위치, 멀티플렉서 및 다양한 다른 접근 장치가 있습니다.
확장 TD
부기 및 탐색을 위한 추가 속성이 포함된 사물 기술입니다.
이벤트
이벤트 소스를 설명하는 상호작용 어포던스로, 이벤트 데이터를 소비자에게 비동기적으로 푸시합니다 (예: 과열 경고).
탐사
하나 이상의 사물 기술 형태로 상세 메타데이터에 접근할 수 있게 하는 탐색 메커니즘입니다. 탐사 메커니즘은 일반적으로 보안 메커니즘으로 보호되며 권한이 있는 사용자만 접근할 수 있습니다.
노출된 사물
원격 소비자가 네트워크를 통해 접근할 수 있는 로컬 호스팅 사물을 나타내는 소프트웨어 추상화입니다. 이 추상화는 네이티브 WoT 런타임에 의해 생성되거나 WoT 스크립팅 API를 통해 객체로 인스턴스화될 수 있습니다.
사물 노출
로컬 런타임 환경에서 노출된 사물 소프트웨어 추상화를 생성하여 사물의 상태를 관리하고 동작 구현과 인터페이스하는 것입니다.
하이퍼미디어 제어
하이퍼미디어에서 프로토콜 바인딩을 직렬화한 것입니다. 즉, 탐색을 위한 웹 링크 [RFC8288] 또는 다른 작업을 수행하기 위한 웹 폼입니다. 폼은 사물이 제공하고 소비자가 완성하여 전송하는 요청 템플릿으로 볼 수 있습니다.
상호작용 어포던스
소비자에게 가능한 선택지를 보여주고 설명하여 소비자가 사물과 어떻게 상호작용할 수 있는지를 제안하는 사물의 메타데이터입니다. 잠재적인 어포던스에는 여러 유형이 있지만, W3C WoT는 세 가지 유형의 상호작용 어포던스, 즉 속성, 액션 및 이벤트를 정의합니다. 네 번째 상호작용 어포던스는 탐색이며, 이는 링크를 통해 웹에서 이미 사용할 수 있습니다.
상호작용 모델
애플리케이션 의도에서 구체적 프로토콜 작업으로의 매핑을 형식화하고 좁히는 중간 추상화입니다. W3C WoT에서 정의된 상호작용 어포던스 집합은 상호작용 모델을 구성합니다.
중개자
소비자와 사물 사이에 있는 엔터티로, 사물을 프록시, 보강 또는 합성하고, 원래 사물 대신 중개자의 WoT 인터페이스를 가리키는 WoT 사물 기술을 다시 게시할 수 있습니다. 소비자에게는 REST의 계층화 시스템 제약을 따르는 중개자가 사물과 구별되지 않을 수 있습니다.
도입
결과가 탐사 메커니즘을 참조하는 URL인 "최초 접촉" 탐색 메커니즘입니다. 도입 메커니즘 자체는 메타데이터를 직접 제공해서는 안 되며, 일반적으로 개방적으로 설계됩니다.
IoT 플랫폼
OCF, oneM2M 또는 Mozilla Project Things와 같이 애플리케이션 대면 API, 데이터 모델, 프로토콜 또는 프로토콜 구성에 대한 자체 명세를 가진 특정 IoT 생태계입니다.
메타데이터
엔터티의 추상적 특성에 대한 설명을 제공하는 데이터입니다. 예를 들어 사물 기술사물에 대한 메타데이터입니다.
개인 식별 정보(PII)
그 정보와 관련된 자연인을 식별하는 데 사용될 수 있거나, 자연인과 직접 또는 간접적으로 연결되어 있거나 연결될 수 있는 모든 정보입니다. 우리는 [ISO-IEC-29100]과 동일한 정의를 사용합니다.
오케스트레이션
사물 모음의 동작을 자동화하는 것입니다. 오케스트레이션은 개별 사물을 규칙 또는 서비스와 결합하여 새로운 서비스나 가상 사물로 만드는 것입니다.
부분 TD
부분 TDTD 정보 모델과 동일한 계층 구조를 따르지만 모든 필수 요소를 포함할 필요는 없는 객체입니다.

참고: 부분 TD 사용 예는 WoT 스크립팅 API에 있으며, 여기서 노출된 사물의 생성 입력으로 사용됩니다.

개인정보 보호
개인에 관한 데이터를 부당하거나 불법적으로 수집하고 사용함으로써 발생하는 경우, 개인의 사생활이나 사적 사항에 대한 침해로부터의 자유입니다. 우리는 [ISO-IEC-2382]와 동일한 정의를 사용합니다. 개인 식별 정보보안, 그리고 [ISO-IEC-29100]의 다른 관련 정의도 참조하십시오.
비공개 보안 데이터
비공개 보안 데이터는 사물의 보안 구성 중 비밀로 유지되며 다른 장치나 사용자와 공유되지 않는 구성 요소입니다. 예로는 PKI 시스템의 개인 키가 있습니다. 이상적으로 이러한 데이터는 애플리케이션이 접근할 수 없는 별도 메모리에 저장되고, 이를 사용하는 애플리케이션에도 비밀 정보를 드러내지 않는 서명과 같은 추상 작업을 통해서만 사용됩니다.
생산자
특정 사물에 대한 WoT 사물 기술을 생성할 수 있는 엔터티입니다.
프로파일
소비자가 해당 단언을 준수하면 동일한 단언을 준수하는 모든 사물과 별도의 조정 없이 상호운용될 수 있도록 하는 단언 집합을 제공하는 기술 명세입니다.
속성
사물의 상태를 노출하는 상호작용 어포던스입니다. 이 상태는 검색(읽기)될 수 있고 선택적으로 업데이트 (쓰기)될 수 있습니다. 사물은 또한 상태 변경에 대해 소비자에게 알림으로써 속성을 관찰 가능하게 만들 수 있습니다.
프로토콜 바인딩
상호작용 어포던스를 특정 프로토콜의 구체적 메시지로 매핑하여, 소비자상호작용 어포던스를 활성화하는 방법을 알 수 있게 합니다. W3C WoT는 프로토콜 바인딩을 하이퍼미디어 제어로 직렬화합니다.
공개 보안 메타데이터
공개 보안 메타데이터는 사물의 보안 구성 중 사물에 접근하기 위해 필요한 보안 메커니즘과 접근 권한을 설명하는 구성 요소입니다. 여기에는 비밀 정보나 구체적 데이터(공개 키 포함)가 포함되지 않으며, 그 자체로 사물에 대한 접근을 제공하지도 않습니다. 대신 권한 있는 사용자가 접근을 얻을 수 있는 메커니즘, 그리고 사용자가 자신을 인증해야 하는 방법을 설명합니다.
등록자
사물 기술사물 기술 디렉터리에 등록하는 엔터티입니다. 이 엔터티는 등록된 사물 기술이 설명하는 사물일 수도 있고 아닐 수도 있습니다.
보안
정보의 기밀성, 무결성 및 가용성의 보존입니다. 진정성, 책임성, 부인 방지 및 신뢰성과 같은 속성도 포함될 수 있습니다. 이 정의는 [ISO-IEC-27000]의 정보 보안 정의에서 조정한 것이며, 해당 문서에는 언급된 더 구체적인 각 속성에 대한 추가 정의도 포함되어 있습니다. 다른 관련 정의는 이 문서를 참조하십시오. 또한 이러한 속성은 정상 동작 중뿐 아니라 시스템이 공격을 받을 때에도 유지되는 것이 바람직하다는 점을 덧붙입니다.
보안 구성
공개 보안 메타데이터, 비공개 보안 데이터 및 사물의 보안 메커니즘을 운영상 구성하는 데 필요한 기타 구성 정보(예: 공개 키)의 조합입니다.
서비스
서비스는 네트워크 인터페이스를 가진 소프트웨어 엔터티입니다. 서비스는 사물 기술로 설명될 수 있으며 사물의 한 종류입니다. 가상 사물도 참조하십시오. 장치와 비교하십시오.
서비언트
WoT 구성 요소를 구현하는 소프트웨어 스택입니다. 서비언트는 사물을 호스트하고 노출하거나, 사물을 소비하는 소비자를 호스트할 수 있습니다. 서비언트는 여러 IoT 플랫폼과의 상호작용을 가능하게 하기 위해 여러 프로토콜 바인딩을 지원할 수 있습니다.
섀도
섀도는 상태의 복사본을 유지하고 다른 사물과의 상호작용을 중재하는 가상 사물입니다. 섀도는 자신이 나타내는 사물의 상태와 최종적 일관성을 달성하는 것을 목표로 합니다. 섀도가 단순히 상태를 미러링하는 것보다 더 많은 기능을 가진다면 이를 디지털 트윈이라고 부르는 것이 더 적절할 수 있습니다.
서브프로토콜
성공적으로 상호작용하기 위해 알려져 있어야 하는 전송 프로토콜의 확장 메커니즘입니다. 예로는 HTTP의 롱 폴링이 있습니다.
시스템
여러 상호작용하는 구성 요소로 이루어진 엔터티입니다.
TD
WoT 사물 기술의 약어입니다.
TDD
WoT 사물 기술 디렉터리의 약어입니다.
TD 어휘
WoT 바인딩 템플릿의 통신 메타데이터를 포함하여 WoT 사물 기술에서 사물의 메타데이터에 태그를 붙이기 위해 W3C WoT가 제어하는 링크드 데이터 어휘입니다.
TD 컨텍스트 확장
JSON-LD[JSON-LD11]에 명시된 @context를 사용하여 사물 기술을 추가 어휘 용어로 확장하는 메커니즘입니다. 이는 프로토콜 바인딩, 보안 스킴 및 데이터 스키마와 같은 핵심 메커니즘에 대한 의미 주석과 확장의 기반입니다.
TD 서버
사물 기술 서버의 약어입니다.
사물 또는 웹 사물
메타데이터와 인터페이스가 WoT 사물 기술로 설명되는 물리적 또는 가상 엔터티의 추상화입니다. 여기서 가상 엔터티는 하나 이상의 사물의 합성입니다.
사물 기술 디렉터리
TD를 등록하고 조회할 수 있는 웹 인터페이스를 제공하는 TD용 디렉터리 서비스입니다(예: JSONPath 또는 SPARQL 쿼리 사용). 권장 API 및 기능 집합은 [WOT-DISCOVERY]에 정의되어 있으며, WoT 탐색 과정의 선택적 부분으로 사용됩니다.
TD 프래그먼트
TD 프래그먼트는 TD의 데이터 모델 하위 구조입니다. 이는 사물 기술 명세 5장에서 정의된 TD 정보 모델의 일부에 대해 구문적으로 검증될 수 있는 유효한 객체 구조이지만, 프래그먼트는 전체 검증을 허용하는 일부 컨텍스트를 생략할 수 있습니다.
사물 기술 서버
사물 기술 서버는 URL로 주소 지정되는 웹 리소스로, 접근될 때 사물 기술을 제공할 수 있습니다. 그 요구사항은 [WOT-DISCOVERY]에 정의되어 있으며, WoT 탐색 과정의 선택적 부분으로 사용됩니다.
사물 모델
사물 모델은 동일한 기능을 가진 사물 클래스에 대한 설명입니다. 이는 전체 사물 그룹에 공유되는 속성, 액션, 및 이벤트와 공통 메타데이터를 설명합니다. 사물 기술과 비교할 때, 사물 모델에는 사물 인스턴스를 식별하거나 그와 상호작용하기에 충분한 정보가 포함되어 있지 않습니다.
전송 프로토콜
옵션 또는 서브프로토콜 메커니즘에 대한 애플리케이션 특정 요구사항이나 제약이 없는 기반 표준화된 애플리케이션 계층 프로토콜입니다. 예로는 HTTP, CoAP 또는 MQTT가 있습니다.
신뢰할 수 있는 환경
서로의 신원 주장에 대해 증명 없이 진정하다고 가정하고 공통 보호 네트워크를 통해 서로에게 비교적 제한 없는 접근을 허용하는 장치 집합입니다.
가상 사물
하나 이상의 다른 사물을 표현하거나, 그 기능을 보강하거나, 개선된 인터페이스를 제공하거나, 대신하는 서비스입니다. 가상 사물은 종종 중개자로 동작합니다. 예로는 섀도디지털 트윈이 있습니다.
어휘
네임스페이스 IRI로 식별되는 어휘 용어의 모음입니다.
용어어휘 용어
문자 문자열입니다. 용어어휘의 일부인 경우, 즉 네임스페이스 IRI[RFC3987]가 접두된 경우, 이를 어휘 용어라고 합니다. 가독성을 위해 이 문서에 나타나는 어휘 용어는 항상 전체 IRI가 아니라 축약형으로 작성됩니다.
WoT 인터페이스
WoT 사물 기술로 설명되는 사물의 네트워크 대면 인터페이스입니다.
WoT 프로파일
프로파일의 동의어입니다.
WoT 런타임
애플리케이션의 실행 환경을 유지하며, 사물을 노출하거나 소비할 수 있고, WoT 사물 기술을 처리하며, 보안 구성을 유지하고, 프로토콜 바인딩 구현과 인터페이스할 수 있는 런타임 시스템입니다. WoT 런타임은 사용자 정의 API를 가질 수 있거나 선택적 WoT 스크립팅 API를 사용할 수 있습니다.
WoT 스크립팅 API
WoT 런타임에서 실행되는 동작 또는 애플리케이션의 구현을 쉽게 하기 위해 서비언트가 제공하는 애플리케이션 대면 프로그래밍 인터페이스입니다. 이는 웹 브라우저 API와 비교할 수 있습니다. WoT 스크립팅 API는 W3C WoT의 선택적 구성 요소입니다.
WoT 서비언트
서비언트의 동의어입니다.
WoT 사물 기술 또는 사물 기술
사물을 설명하는 구조화된 데이터입니다. WoT 사물 기술은 일반 메타데이터, 도메인별 메타데이터, 상호작용 어포던스(지원되는 프로토콜 바인딩 포함), 그리고 관련 사물에 대한 링크로 구성됩니다. WoT 사물 기술 형식은 W3C WoT의 중심 구성 요소입니다.

3.1 장치 범주

WoT 추상 아키텍처를 준수하는 WoT 배포에서는 다양한 서로 다른 장치 유형을 볼 수 있습니다. 이들은 (설치 공간과 기능 순으로 정렬하면) 작은 임베디드 노드 장치에서 게이트웨이 또는 허브, 강력한 에지 장치 및 클라우드 서버에 이르기까지 다양합니다. 이러한 장치 간 상호운용성은 핵심 기능과 기능성이 모든 장치에서 사용 가능함을 의미합니다.

다음 장치 범주는 이러한 클래스의 전형적인 대표에 대한 설치 공간과 특성을 설명합니다. 이는 이러한 장치 클래스에 가능한 기능과 사용 사례를 식별하는 데 사용됩니다.

이러한 범주는 제한된 장치에 대해 IETF [RFC7228]가 정의한 클래스와 정렬되어 있지만, 더 큰 장치로 클래스가 확장되었고 RAM 및 Flash/ROM의 일반적인 크기에 대한 경계가 제공됩니다. 메모리와 저장소 크기는 성능보다 정량화하기 쉽고 더 제한적이므로, 이것이 이 분류의 기준입니다. 이는 엄격한 분류가 아닙니다. 범주는 서로 겹칠 수 있으며 모든 메모리가 사용자 애플리케이션에 사용 가능하지 않을 수 있습니다.

범주 데이터 크기(RAM) 코드 크기(Flash, ROM, ...) 전형적 대표 비고, 일반적인 애플리케이션 시나리오
Class-0, C0 << 10 KiB << 100 KiB 소형 풋프린트 마이크로컨트롤러 보안 통신이 없는 센서 노드
Class-1, C1 ~ 10 KiB ~ 100 KiB 마이크로컨트롤러 TLS, DTLS와 같은 보안 통신 프로토콜을 일반적으로 지원하는 센서
Class-2, C2 ~ 64 KiB ~ 256 KiB 연결된 제한 장치 M2M 통신 노드, 스마트 미터, 센서 노드 및 기타 임베디드 기기, 가전제품, 저가형 TV 셋톱박스, 판매 시점 단말기와 같은 소형 임베디드 장치가 몇 가지 예입니다.
Class-3, C3 ~ 64-256 KiB ~ 256 KiB - several MBs ISP 게이트웨이 소형 가정 및 산업용 게이트웨이
Class-4, C4 ~ 256 KiB - several MB ~ 1 MB - several MB 게이트웨이/허브 대형 가정 및 산업용 게이트웨이
Class-5, C5 ~ 1 - 8 GB ~ 1 - 16 GB 에지 소형 에지 서버
Class-6, C6 ~ several GB ~ several GB 에지 대형 에지 서버
Class-7, C7 ~ several GB ~ several GB 클라우드 여러 컴퓨트 노드를 가진 클라우드 시스템
참고: 범주 경계

범주 경계는 부드러운 경계이며 범주는 배타적이지 않습니다. 즉, 여러 범주의 장치로 구현될 수 있는 애플리케이션 시나리오가 있습니다. 보안 통신의 경우 우리는 TLS/HTTP, DTLS/CoAP 및 유사한 보안 프로토콜을 지원하는 장치를 고려합니다.

4. 애플리케이션 도메인

이 절은 비규범적입니다.

이 절은 W3C WoT가 대상으로 하는 애플리케이션 도메인을 제시하며, 이는 7. WoT 구성 요소에서 논의하는 추상 아키텍처를 도출하는 데 사용됩니다.

이러한 애플리케이션 도메인은 [WOT-USE-CASES-REQUIREMENTS]에 설명된 사용 사례에 의해 동기가 부여되었습니다.

웹 사물 아키텍처는 사용 사례와 애플리케이션 도메인에 어떠한 제한도 두지 않습니다. 추상 아키텍처가 만족해야 하는 공통 패턴을 수집하기 위해 다양한 애플리케이션 도메인이 고려되었습니다.

다음 절들은 포괄적인 목록이 아닙니다. 오히려 연결된 사물이 추가적인 이점을 제공하거나 새로운 시나리오를 가능하게 할 수 있는 예시 역할을 합니다.

4.1 소비자

소비자 영역에는 연결됨으로써 이점을 얻는 여러 자산이 있습니다. 조명과 에어컨은 실내 점유 여부에 따라 꺼질 수 있습니다. 창문 블라인드는 날씨 조건과 존재 여부에 따라 자동으로 닫힐 수 있습니다. 에너지와 기타 자원 소비는 사용 패턴과 예측을 기반으로 최적화될 수 있습니다.

이 절의 소비자 시나리오는 스마트 홈 사용 사례를 설명합니다.

그림 1은 스마트 홈의 예를 보여줍니다. 이 경우 게이트웨이는 KNX, ECHONET, ZigBee, DECT ULE 및 Wi-SUN과 같은 해당 로컬 통신 프로토콜을 통해 센서, 카메라 및 가전제품과 같은 에지 장치에 연결됩니다. 하나의 가정에는 여러 게이트웨이가 존재할 수 있으며, 각 게이트웨이는 여러 로컬 프로토콜을 지원할 수 있습니다.

게이트웨이는 인터넷을 통해 클라우드에 연결될 수 있으며, 일부 가전제품은 클라우드에 직접 연결될 수 있습니다. 클라우드에서 실행되는 서비스는 에지 장치에서 데이터를 수집하고 데이터를 분석한 다음, 에지 장치와 기타 UX 장치를 통해 사용자에게 가치를 제공합니다.

스마트 홈 사용 사례
그림 1 스마트 홈

스마트 홈은 원격 접근 및 제어, 음성 제어 및 홈 자동화와 같은 소비자 이점을 제공합니다. 또한 스마트 홈은 장치 제조업체가 장치를 원격으로 모니터링하고 유지관리할 수 있게 합니다. 스마트 홈은 에너지 관리 및 보안 감시와 같은 부가가치 서비스를 실현할 수 있습니다.

4.2 산업

이 절의 산업 사용 사례는 서로 다른 산업 수직 분야에 적용될 수 있습니다.
애플리케이션 시나리오가 중첩되는 특성 때문에, 서로 다른 수직 분야는 유사한 사용 사례를 가집니다.

4.2.1 예: 스마트 팩토리

그림 2는 스마트 팩토리의 예를 보여줍니다. 이 경우 필드 수준, 셀 및 라인 컨트롤러는 PROFINET, Modbus, OPC UA TSN, EtherCAT 또는 CAN과 같은 산업용 통신 프로토콜을 기반으로 서로 다른 공장 장비를 자동화합니다. 산업용 에지 장치는 다양한 컨트롤러에서 선택된 데이터를 수집하여 클라우드 백엔드 서비스가 사용할 수 있게 합니다. 예를 들어 대시보드를 통한 원격 모니터링이나 예방적 유지관리를 위한 분석에 사용할 수 있습니다.

스마트 팩토리 사용 사례
그림 2 스마트 팩토리

스마트 팩토리는 연결된 제조 장비뿐 아니라 제조된 제품에 대해서도 고급 모니터링을 필요로 합니다. 기계 고장 예측과 이상 징후의 조기 발견은 비용이 큰 가동 중단과 유지관리 노력을 방지하는 데 도움이 됩니다.

또한 연결된 제조 장비와 생산 시설의 환경을 모니터링하여 유독 가스, 과도한 소음 또는 열의 존재를 확인하면 작업자의 안전이 향상되고 사건이나 사고의 위험이 줄어듭니다.

생산 장비의 실시간 모니터링과 KPI 계산은 생산성 문제를 감지하고 공급망을 최적화하는 데 도움이 됩니다.

4.3 운송 및 물류

차량, 연료 비용, 유지관리 필요성 및 배정을 모니터링하면 차량 집단의 전체 활용도를 최적화하는 데 도움이 됩니다.

운송 중인 상품의 일관된 품질과 상태를 보장하기 위해 배송물을 이동 중에 추적할 수 있습니다. 이는 창고에서 냉장 트럭, 배송에 이르는 콜드 체인의 무결성을 확인하는 데 특히 유용합니다.

창고와 야드의 재고를 중앙에서 모니터링하고 관리하면 재고 부족과 과도한 재고 상황을 방지할 수 있습니다.

4.4 유틸리티

주거용 및 C&I(상업 및 산업) 계량기의 자동 검침과 과금은 자원 소비와 잠재적 병목 현상에 대한 지속적인 통찰을 제공합니다.

분산 재생 에너지 발전 장비의 상태와 출력을 모니터링하면 분산 에너지 자원을 최적화할 수 있습니다.

배전 장비의 모니터링과 원격 제어는 배전 과정을 자동화하는 데 도움이 됩니다.

발전 및 배전 인프라의 지속적인 모니터링은 현장의 유틸리티 작업자 안전을 향상하고 있습니다.

4.5 석유 및 가스

해양 플랫폼 모니터링, 파이프라인의 누출 감지와 예측, 탱크와 저장소의 수위 모니터링 및 제어는 작업 인력뿐 아니라 환경을 위한 산업 안전을 향상하는 데 도움이 됩니다.

다양한 저장 탱크와 배송 파이프/트럭을 통한 분산 재고의 자동 계산은 개선된 계획과 자원 최적화를 가능하게 합니다.

4.6 보험

연결된 구조물, 차량 집단 등 고가치 자산의 사전 자산 모니터링은 예측과 사건의 조기 감지를 통해 심각한 손상과 높은 비용의 위험을 완화합니다.

사용량 추적과 맞춤형 보험 정책을 통해 사용 기반 보험을 제공할 수 있습니다.

예측적 기상 모니터링과 차량 집단을 지붕이 있는 차고로 재경로 지정하는 것은 우박 피해와 나무 피해로 인한 손실을 제한할 수 있습니다.

4.7 엔지니어링 및 건설

산업 안전을 위한 모니터링은 보안 위험의 리스크를 줄입니다. 건설 현장의 자산 모니터링은 손상과 손실을 방지할 수 있습니다.

4.8 농업

토양 상태 모니터링과 급수 및 비료 공급을 위한 최적 계획 수립, 그리고 농산물 상태 모니터링은 농산물의 품질과 산출량을 최적화합니다.

4.9 헬스케어

임상 시험 데이터의 데이터 수집과 분석은 새로운 영역에 대한 통찰을 얻는 데 도움이 됩니다.

원격 환자 모니터링은 고령자와 입원 후 환자에게 감지되지 않은 위급 상황의 위험을 완화합니다.

4.10 환경 모니터링

환경 모니터링은 일반적으로 측정 데이터를 공통 게이트웨이, 에지 장치 및 클라우드 서비스로 전송하는 많은 분산 센서에 의존합니다.

대기 오염, 수질 오염 및 미세먼지, 오존, 휘발성 유기 화합물, 방사능, 온도, 습도와 같은 기타 환경 위험 요인의 모니터링은 치명적인 환경 조건을 감지하여 회복 불가능한 건강 또는 환경 피해를 방지할 수 있습니다.

4.11 스마트 시티

교량, 댐, 제방, 운하의 재료 상태, 열화, 진동을 모니터링하면 유지보수 작업을 발견하고 중대한 손상을 방지할 수 있습니다. 고속도로 모니터링과 적절한 표지 제공은 최적화된 교통 흐름을 보장합니다.

스마트 주차는 주차 공간의 사용과 가용성을 최적화하고 추적하며 과금/예약을 자동화합니다.

존재 감지, 날씨 예측 등에 기반한 가로등의 스마트 제어는 비용을 줄입니다.

쓰레기통은 폐기물 관리와 쓰레기 수거 경로를 최적화하기 위해 모니터링될 수 있습니다.

4.12 스마트 빌딩

건물 전체의 에너지 사용량을 모니터링하면 자원 소비를 최적화하고 낭비를 줄이는 데 도움이 됩니다.

HVAC, 엘리베이터 등 건물 내 장비를 모니터링하고 문제를 조기에 해결하면 입주자의 만족도가 향상됩니다.

4.13 커넥티드 카

운영 상태 모니터링과 서비스 필요성 예측은 유지관리 필요성과 비용을 최적화합니다. 중요한 도로와 교통 상황에 대한 조기 경보 시스템 알림을 통해 운전자 안전이 향상됩니다.

4.13.1 커넥티드 카 예

그림 3은 커넥티드 카의 예를 보여줍니다. 이 경우 게이트웨이는 CAN을 통해 자동차 구성 요소에 연결되고, 독점 인터페이스를 통해 자동차 내비게이션 시스템에 연결됩니다. 클라우드에서 실행되는 서비스는 자동차 구성 요소에서 푸시된 데이터를 수집하고 여러 자동차의 데이터를 분석하여 교통 패턴을 결정합니다. 게이트웨이는 또한 이 경우 교통 데이터를 얻어 자동차 내비게이션 시스템을 통해 운전자에게 보여주기 위해 클라우드 서비스를 소비할 수 있습니다.

커넥티드 카 사용 사례
그림 3 커넥티드 카

5. 일반적인 배포 패턴

이 절은 비규범적입니다.

이 절은 장치/사물이 컨트롤러, 다른 장치, 에이전트 및 서버와 어떻게 상호작용하는지를 설명하는 일반적인 배포 패턴을 소개합니다. 이 절에서는 전송 프로토콜의 개시자로서 클라이언트 역할이라는 용어를 사용하고, 전송 프로토콜의 수동 구성 요소로서 서버 역할이라는 용어를 사용합니다. 이는 어떤 시스템 구성 요소에 특정 역할을 규정한다는 의미가 아닙니다. 장치는 동시에 클라이언트서버 역할을 할 수 있습니다.

이러한 이중 역할의 한 예는 클라우드 서비스에 자신을 등록하고 센서 판독값을 클라우드로 정기적으로 전송하는 센서입니다. 응답 메시지에서 클라우드는 센서 메시지의 전송 속도를 조정하거나 향후 메시지에서 전송될 특정 센서 속성을 선택할 수 있습니다. 센서는 자신을 클라우드에 등록하고 연결을 개시하므로 '클라이언트' 역할에 있습니다. 그러나 응답 메시지로 전송되는 요청에도 반응하므로 '서버' 역할도 수행합니다.

다음 절들은 복잡도가 증가하는 순서로 역할, 작업 및 사용 사례 패턴을 설명합니다. 이들은 포괄적이지 않으며, 이 명세의 이후 절에서 정의되는 WoT 아키텍처와 구성 요소의 동기를 제공하기 위해 제시됩니다.

이 절은 또한 서로에게 비교적 제한 없는 접근을 허용하는 장치 집합인 신뢰할 수 있는 환경의 개념을 사용합니다. 이는 일반적인 접근 방식이지만 일부 위험을 수반하며, 이러한 위험과 완화책은 10.4 신뢰할 수 있는 환경 위험 절에서 논의됩니다.

5.1 원격 측정

원격 측정은 원격 장치의 모니터링이며, 이는 측정값과 기타 데이터가 소비자에게 자동으로 전송되고 처리됨을 의미합니다. 데이터는 무선 및 유선 모두의 다양한 통신 채널을 통해 전송될 수 있습니다. 예로는 GSM 네트워크, Bluetooth, WiFi, Ethernet 및 기타 유선 표준이 있습니다.

원격 계량 장치는 하나 이상의 센서를 포함하며, 경우에 따라 액추에이터도 포함합니다. 많은 경우 센서 데이터는 정기적인 간격, 상태 변경 시 또는 소비자의 요청에 대한 응답으로 전송됩니다.

원격 계량 장치는 종종 매우 제한된 자원을 가진 소형 임베디드 시스템, 즉 Class-2 이하입니다. 배터리로 구동될 수 있으며, 예를 들어 절전 모드와 같은 다양한 조치를 통해 전력 소비를 최소화해야 합니다. 이러한 장치는 에너지를 절약하기 위해 대부분의 시간 동안 절전 상태에 있으며 데이터를 전송하지 않습니다. 특정 이벤트(예: 스위치가 토글될 때)에만 깨어납니다. 장치 상태가 변경되면 이벤트가 소비자에게 전송됩니다. 그 후 장치는 다시 절전 모드로 들어갑니다.

일반적인 사용자 시나리오는 다양한 자산의 모니터링이며, 예로는 스마트 시티, 공장, 차량 집단, 환경 모니터링 및 건강 모니터링이 있습니다. 일부 배포에서는 지리적으로 분산된 많은 수의 자산을 모니터링해야 할 수 있으며, 다른 배포는 스마트 홈처럼 몇 개의 장치만 포함할 수 있습니다. 일반적인 패턴은 하나의 소비자와 여러 장치 (사물) 사이의 일대다 관계입니다.

5.2 장치 컨트롤러

일반적인 배포 패턴은 그림 4에 묘사된 것처럼 사용자가 조작하는 원격 컨트롤러에 의해 제어되는 로컬 장치입니다.

원격 컨트롤러는 로컬 홈 네트워크를 통해 전자 기기에 직접 접근할 수 있습니다. 이 경우 원격 컨트롤러는 브라우저 또는 네이티브 애플리케이션으로 구현될 수 있습니다.

이 패턴에서는 전자 기기와 같은 적어도 하나의 장치가 다른 장치의 요청을 수락하고 이에 응답하며 때로는 기계적 동작을 개시할 수 있는 서버 역할을 가집니다. 원격 컨트롤러와 같은 다른 장치는 센서 값을 읽거나 장치를 켜는 요청과 함께 메시지를 보낼 수 있는 클라이언트 역할을 가집니다. 또한 장치의 현재 상태나 이벤트 알림을 방출하기 위해, 장치는 서버 역할을 가진 다른 장치로 메시지를 보낼 수 있는 클라이언트 역할을 가질 수 있습니다.

스마트 홈 장치 사용 사례
그림 4 장치 제어

5.3 사물 간

그림 5는 직접적인 사물 간 상호작용의 예를 보여줍니다. 시나리오는 다음과 같습니다. 센서는 예를 들어 온도가 임계값을 초과하는 것과 같은 실내 조건의 변화를 감지하고, 전자 기기에 "turn on"과 같은 제어 메시지를 발행합니다. 센서 장치는 다른 장치에 일부 트리거 메시지를 발행할 수 있습니다.

이 경우 서버 역할을 가진 두 장치가 연결되어 있을 때, 적어도 하나의 장치는 다른 장치를 작동시키거나 알리기 위해 메시지를 발행하는 클라이언트 역할도 가져야 합니다.

스마트 홈 t2t 배포 시나리오
그림 5 제어 에이전트

5.4 원격 접근

이 배포 시나리오는 그림 6에 보인 것처럼 모바일 원격 컨트롤러(예: 스마트폰)를 포함합니다. 원격 컨트롤러는 서로 다른 네트워크 연결과 프로토콜, 예를 들어 셀룰러 네트워크와 Wi-Fi 및 Bluetooth 같은 프로토콜을 사용하는 홈 네트워크 사이를 전환할 수 있습니다. 컨트롤러가 홈 네트워크에 있을 때는 신뢰할 수 있는 장치이며 추가 보안 또는 접근 제어가 필요하지 않습니다. 신뢰할 수 있는 네트워크 밖에 있을 때는 신뢰 관계를 보장하기 위해 추가 접근 제어와 보안 메커니즘을 적용해야 합니다. 이 시나리오에서는 서로 다른 네트워크 접근 지점 또는 셀룰러 기지국 사이의 전환 때문에 네트워크 연결성이 변경될 수 있다는 점에 유의하십시오.

이 패턴에서 원격 컨트롤러와 전자 기기는 그림 4의 관련 시나리오와 같이 클라이언트 및 서버 역할을 가집니다.

다중 네트워크 인터페이스를 가진 스마트 홈
그림 6 다중 네트워크 인터페이스

5.5 스마트 홈 게이트웨이

그림 7스마트 홈 게이트웨이의 배포 시나리오를 보여줍니다. 게이트웨이는 홈 네트워크와 인터넷 사이에 배치됩니다. 이는 집 안의 전자 기기를 관리하고, 이전 시나리오의 스마트폰처럼 인터넷을 통해 원격 컨트롤러에서 명령을 받을 수 있습니다. 또한 장치의 가상 표현이기도 합니다. 스마트 홈 게이트웨이는 일반적으로 프록시 및 방화벽 기능을 제공합니다.

이 패턴에서 홈 게이트웨이는 클라이언트와 서버 역할을 모두 가집니다. 원격 컨트롤러가 전자 기기를 작동시킬 때, 게이트웨이는 클라이언트 역할로 전자 기기에 연결하고 서버 역할로 원격 컨트롤러에 연결할 수 있습니다. 전자 기기가 원격 컨트롤러로 메시지를 방출할 때, 게이트웨이는 전자 기기에 대해서는 서버 역할로 동작하고, 원격 컨트롤러에 대해서는 클라이언트 역할로 동작합니다.

스마트 홈 게이트웨이 사용 사례
그림 7 스마트 홈 게이트웨이

5.6 에지 장치

에지 장치 또는 에지 게이트웨이는 스마트 홈 게이트웨이와 유사합니다. 우리는 이 용어를 에지 게이트웨이가 수행하는 추가 작업을 나타내기 위해 사용합니다. 그림 8의 홈 게이트웨이가 주로 공용 네트워크와 신뢰할 수 있는 네트워크 사이를 연결하는 데 그치는 반면, 에지 장치는 로컬 컴퓨팅 기능을 가지며 일반적으로 서로 다른 프로토콜 사이를 연결합니다. 에지 장치는 일반적으로 산업 솔루션에서 사용되며, 연결된 장치와 센서가 제공하는 데이터의 전처리, 필터링 및 집계를 제공할 수 있습니다.

에지 장치 사용 사례
그림 8 에지 장치

5.7 디지털 트윈

디지털 트윈은 클라우드 서버 또는 에지 장치에 존재하는 장치 또는 장치 그룹의 모델, 즉 가상 표현입니다. 이는 지속적으로 온라인 상태가 아닐 수 있는 실제 장치를 표현하거나, 새 애플리케이션과 서비스를 실제 장치에 배포하기 전에 시뮬레이션을 실행하는 데 사용될 수 있습니다.

디지털 트윈 사용 사례
그림 9 디지털 트윈

디지털 트윈은 단일 장치를 모델링할 수 있으며, 여러 장치를 결합한 가상 표현으로 집계할 수도 있습니다.

여러 장치의 디지털 트윈 사용 사례
그림 10 여러 장치를 위한 디지털 트윈

디지털 트윈은 장치가 이미 클라우드에 연결되어 있는지, 또는 클라우드에 연결된 게이트웨이에 연결되어 있는지에 따라 서로 다른 방식으로 실현될 수 있습니다.

5.7.1 클라우드 연결 장치

그림 11은 전자 기기가 클라우드에 직접 연결된 예를 보여줍니다. 클라우드는 가전제품을 미러링하고 디지털 트윈으로 동작하여 원격 컨트롤러 (예: 스마트폰)로부터 명령을 받을 수 있습니다. 디지털 트윈은 전역적으로 도달 가능하므로, 권한 있는 컨트롤러는 어디에나 위치할 수 있습니다.

스마트 홈 클라우드 사용 사례 1
그림 11 클라우드 연결 장치를 위한 가전제품 트윈

5.7.2 오케스트레이션

장치와 작업 흐름의 오케스트레이션은 장치를 단순히 독립적으로 사용하는 것을 넘어서는 기능을 제공합니다. 오케스트레이션된 장치 집합은 단일 작업으로 여러 장치의 상태에 영향을 주는 결합 작업을 제공할 수 있습니다.

이러한 작업은 개별 작업을 결합된 작업 흐름으로 결합하며, 흐름에는 일부 장치 상태 또는 속성 값에 따라 선택되는 여러 대체 경로가 있을 수 있습니다.

오케스트레이션된 장치는 다양한 토폴로지로 배포될 수 있고 서로 다른 네트워크를 통해 연결될 수 있습니다. 이러한 장치들로 구축된 시스템은 개별 장치의 기능을 결합하고 초과하는 기능을 제공할 수 있습니다.

전형적인 오케스트레이션 예는 스마트 홈으로, 다양한 센서(온도, 점유, 습도, 조도, 공기질, 문 센서)가 상호작용하며 집에 들어오거나 나가는 상황, 아침/저녁 루틴, 존재 여부에 따른 조명 및 온도 조절 등 여러 상황에 대한 작업 흐름을 제공합니다.

5.7.3 레거시 장치

그림 12는 레거시 전자 기기가 클라우드에 직접 연결되어 있지 않은 예를 보여줍니다. 여기서는 연결을 중계하기 위해 게이트웨이가 필요합니다. 게이트웨이는 다음과 같이 동작합니다:

  • 물리적 및 논리적 관점에서 다양한 레거시 통신 프로토콜의 통합자
  • 인터넷을 향한 방화벽
  • 실제 이미지 및/또는 음성을 대체하고 데이터를 로컬에 기록하는 개인정보 보호 필터
  • 네트워크 연결이 중단된 경우의 로컬 에이전트
  • 화재 경보 및 유사한 이벤트가 발생할 때 로컬에서 실행되는 긴급 서비스

클라우드는 연결된 모든 가전제품과 함께 게이트웨이를 미러링하고, 게이트웨이와 함께 클라우드에서 이들을 관리하는 디지털 트윈으로 동작합니다. 또한 클라우드는 어디에나 위치할 수 있는 원격 컨트롤러(예: 스마트폰)로부터 명령을 받을 수 있습니다.

스마트 홈 클라우드 사용 사례 2
그림 12 레거시 장치를 위한 디지털 트윈

5.8 멀티 클라우드

일반적인 IoT 배포는 여러(수천 개의) 장치로 구성됩니다. 표준화된 메커니즘이 없으면 특정 클라우드를 위한 펌웨어 업데이트 관리에는 많은 노력이 필요하며, 더 넓은 규모의 IoT 채택을 방해합니다.

장치와 장치 유형을 설명하기 위한 표준화된 메커니즘의 주요 이점은 장치 소프트웨어/펌웨어 수준에서 사용자 정의, 즉 장치에 클라우드별 코드를 설치할 필요 없이 장치를 서로 다른 클라우드 환경에 배포할 수 있는 능력입니다. 이는 솔루션이 여러 IoT 클라우드 환경에서 장치를 온보딩하고 사용할 수 있게 하는 방식으로 장치를 설명할 만큼 충분히 유연하다는 것을 의미합니다.

이는 기존 배포에서 새 장치를 쉽게 사용할 수 있게 하고, 기존 장치를 한 클라우드에서 다른 클라우드로 마이그레이션할 수 있게 하므로 웹 사물 장치의 채택을 촉진합니다.

5.9 가상 사물

가상 사물은 하나 이상의 다른 사물을 위한 자리 표시자로 동작하며 그 소비자에게 인터페이스를 제공하는 서비스입니다.

간단한 경우 이는 인터페이스 추상화로, 소비자를 변경하지 않고도 한 장치 모델을 다른 모델로 대체할 수 있는 장치에 대한 공통 인터페이스를 정의합니다.

더 복잡한 시나리오에서 가상 사물은 여러 장치에 대한 단일 인터페이스를 제공하고 그 소비자에게 더 높은 수준의 작업을 제공합니다. 개별 장치는 대체될 수 있고, 소프트웨어 업그레이드를 통해 새로운 작업이 제공될 수 있습니다.

가상 사물은 종종 중개자로 동작합니다. 예로는 섀도디지털 트윈이 있습니다.

5.10 도메인 간 협업

그림 13은 도메인 간 협업의 예를 보여줍니다. 이 경우 각 시스템은 스마트 팩토리와 스마트 시티, 스마트 시티와 스마트 홈과 같이 다른 도메인의 다른 시스템을 포함합니다. 이러한 유형의 시스템은 [IEC-FOTF]에 보인 것처럼 "공생" 생태계라고 부릅니다. 협업 모델에는 직접 협업과 간접 협업 두 가지가 있습니다. 직접 협업 모델에서 시스템은 피어 투 피어 방식으로 서로 직접 정보를 교환합니다. 간접 협업에서는 시스템이 어떤 협업 플랫폼을 통해 정보를 교환합니다. 이러한 협업을 유지하고 지속하기 위해 각 시스템은 자신의 기능과 인터페이스에 대한 메타데이터를 제공하고 다른 시스템에 맞게 스스로를 조정합니다.

도메인 간 직접 사용 사례 도메인 간 간접 사용 사례
그림 13 도메인 간 협업

5.11 시스템 통합

이전 절은 다양한 아키텍처 패턴을 설명했습니다. 이러한 패턴에서 레거시 장치를 포함한 장치, 컨트롤러, 게이트웨이 및 클라우드 서버와 같은 일부 기능적 엔터티는 건물 내부, 건물 외부 및 데이터 센터와 같은 물리적 위치에 배치됩니다. 그림 14는 이러한 엔터티의 조합과 통신 경로를 보여주는 개요입니다.

전송 프로토콜 계층에서 각 엔터티는 통신에 적합한 역할을 임의로 선택합니다. 예를 들어 장치가 불특정 다수의 애플리케이션에 서비스를 제공할 때 장치는 서버로 동작할 수 있습니다. 반면 장치의 네트워크 연결성이 제한적이거나 간헐적이라면, 네트워크를 사용할 수 있을 때 클라이언트로 동작하여 애플리케이션에 메시지를 능동적으로 보낼 수 있습니다. 이와 무관하게 애플리케이션 계층에서 애플리케이션은 장치가 상호작용을 위한 추상 인터페이스를 제공한다고 보고, 그 추상 인터페이스를 사용하여 장치와 상호작용할 수 있습니다.

시스템 통합
그림 14 시스템 통합

6. 추상 WoT 시스템 아키텍처

이 절은 규범적입니다.

[WOT-USE-CASES-REQUIREMENTS]에서 수집된 요구사항과 사용 사례를 다루기 위해 웹 사물(Web of Things, WoT)은 이른바 소비자가 사용할 수 있는 웹 사물 — 보통 단순히 사물이라고 부르는 개념 — 위에 구축됩니다. 소비자사물과 직접 상호작용할 수 있으며, 또는 간접 통신을 위해 중개자를 사용할 수 있습니다.

이러한 개념은 4. 애플리케이션 도메인 절의 다양한 애플리케이션 도메인에 적용할 수 있습니다.

이 절은 전체 W3C 웹 사물 아키텍처를 정의하기 위한 배경과 규범적 단언을 제공합니다.

웹 사물이 서로 다른 도메인의 이해관계자를 다루기 때문에, 웹 기술의 특정 측면, 특히 하이퍼미디어 개념을 더 자세히 설명합니다.

6.1 기본 개념

이 절은 웹 사물의 기본 개념을 소개합니다. 여기서는 사물 추상화를 소개하며, 이는 사물 기술사물 모델로 설명되고, 이후 소비자가 사용할 수 있습니다.

사물은 물리적 또는 가상 엔터티(예: 장치 또는 방)의 추상화이며 표준화된 메타데이터로 설명됩니다. 소비자는 해당 사물과 통신하기 위해 사물의 표준화된 메타데이터를 읽고 해석할 수 있는 엔터티입니다.

WoT 사물 기술(TD)은 표준화된 기계 판독 가능 메타데이터 표현 형식으로, 소비자사물의 기능을 발견하고 (의미 주석을 통해) 해석하며, 사물과 상호작용할 때 서로 다른 구현(예: 서로 다른 프로토콜 또는 데이터 구조)에 적응할 수 있게 하여, 서로 다른 IoT 플랫폼, 즉 서로 다른 생태계와 표준 전반의 상호운용성을 가능하게 합니다. 마찬가지로 WoT 사물 모델(TM)은 공통 기능을 가진 제품 라인의 장치와 같은 사물클래스를 설명하기 위한 표준화된 기계 판독 가능 메타데이터 표현 형식입니다.

소비자 사물
그림 15 소비자-사물 상호작용

사물가상 엔터티의 추상화일 수도 있습니다. 가상 엔터티는 하나 이상의 사물의 합성입니다(예: 여러 센서와 액추에이터로 구성된 방). 합성에 대한 한 가지 선택지는 가상 엔터티의 기능 조합을 포함하는 단일의 통합된 WoT 사물 기술을 제공하는 것입니다. 합성이 상당히 복잡한 경우, 그 TD는 합성 내의 계층적 하위 사물에 링크할 수 있습니다. 주 TD는 진입점 역할을 하며 일반 메타데이터와 잠재적인 포괄적 기능만 포함합니다. 이를 통해 더 복잡한 사물의 특정 측면을 그룹화할 수 있습니다.

6.1.1 메타데이터

WoT 아키텍처는 사물의 특정 인스턴스사물클래스를 모두 설명하기 위한 메타데이터 형식을 제공합니다. 인스턴스를 위한 메타데이터 형식은 사물 기술이라고 부르며, 클래스를 위한 형식은 사물 모델이라고 부릅니다.

6.1.1.1 사물 기술

사물 인스턴스는 표준화된 메타데이터로 설명됩니다. W3C WoT에서, 사물 인스턴스에 대한 설명 메타데이터는 WoT 사물 기술(TD) [WOT-THING-DESCRIPTION]로 제공되어야 MUST 합니다. 기반 정보 모델이 그래프 기반이고 그 직렬화가 JSON-LD 1.1 [JSON-LD11]과 호환되므로, 이 형식은 전통적인 JSON 라이브러리 또는 JSON-LD 프로세서를 통해 처리할 수 있습니다. TD 처리를 위해 JSON-LD 프로세서를 사용하면 RDF 트리플로의 변환, 의미 추론, 온톨로지 용어에 기반해 주어진 작업 수행을 포함한 의미 처리가 추가로 가능해져 소비자가 더 자율적으로 동작하게 할 수 있습니다. TD는 인스턴스별(즉, 사물의 유형이 아니라 개별 사물을 설명)이며, 사물의 기본 외부 텍스트형 (웹) 표현입니다. 사물의 다른 표현, 예를 들어 HTML 기반 사용자 인터페이스, 단순한 물리적 엔터티의 이미지, 또는 폐쇄 시스템의 비웹 표현도 있을 MAY 수 있습니다. 그러나 사물로 간주되기 위해서는 적어도 하나의 TD 표현이 제공되어야 MUST 합니다.

6.1.1.2 사물 모델

사물 모델은 예를 들어 제품 라인의 많은 장치처럼 사물 집합에 대해 사용 가능한 공통 기능을 설명하는 데 사용할 수 있습니다. 이 경우 사물 모델은 제품 라인에 있는 모든 장치의 공통 기능을 정의하지만, 특정 장치에 고유한 정보는 생략합니다.

사물 모델은 인스턴스에 대한 완전한 정보가 사용 가능하지 않거나 필요하지 않은 경우에도 사용할 수 있습니다. 예를 들어 일부 IoT 생태계는 통신을 별도로 암묵적으로 처리합니다. 그런 경우 통신 메타데이터가 포함된 완전히 상세한 사물 기술은 필요하지 않습니다. 새로운 엔터티가 아직 배포되지 않았기 때문에(예: IP 주소가 아직 알려지지 않음) 사물 생명주기 단계의 시작 시점에는 통신 메타데이터가 사용 가능하지 않을 수도 있습니다.

사물 모델은 이러한 종류의 시나리오를 다루기 위해 사물의 기본 정보 모델을 정의하는 데 사용됩니다. 사물 모델사물 기술을 위한 템플릿으로 볼 수 있지만, [WOT-THING-DESCRIPTION]의 "TD Information Model" 및 "Representation Format" 절에 정의된 것보다 제약이 적습니다. 일반적으로 사물 모델 예는 IP 주소와 같은 프로토콜별 데이터처럼 인스턴스별 정보를 포함하지 않습니다. 그러나 예를 들어 구체적 URL을 가지는 대신 사물 모델은 URL 템플릿 사용을 허용합니다.

사물 모델
그림 16 사물 모델과 사물 기술의 관계

사물 모델은 다음을 가능하게 합니다:

  • 예를 들어 클라우드 서비스에 의한 여러 사물 모델의 온보딩과 관리.
  • 아직 개발되지 않은 장치/사물의 시뮬레이션.
  • 공통 사물 모델을 공유하는 서로 다른 제조업체의 장치 전반에 걸친 공통 애플리케이션 개발.
  • 여러 모델을 하나의 사물로 결합.
  • 구체적인 사물의 구현 지원.

사물 모델사물속성, 액션이벤트와의 인터페이스와 가능한 상호작용에 대한 논리적 설명이지만, 구체적인 프로토콜 사용 (예: IP 주소), 또는 일련번호와 GPS 위치와 같은 사물 인스턴스별 정보는 포함하지 않습니다. 그러나 사물 모델은, 예를 들어 모델이 설명하는 전체 인스턴스 클래스에 적용되는 경우 보안 스킴을 포함할 수 있습니다. 이들은 (토큰 서버와 같은) URL을 가질 수 있으며, 많은 경우 이러한 URL이 제공될 수도 있지만 생략되거나 (템플릿으로) 매개변수화되어야 할 수도 있습니다.

사물 모델은 사물 기술과 동일한 JSON 기반 형식으로 직렬화될 수 있으며, 이는 JSON-LD 처리도 허용합니다. 모든 사물 기술의 필수 용어가 사물 모델에는 필요하지 않기 때문에, 사물 모델사물 기술 인스턴스와 같은 방식으로 검증될 수 없다는 점에 유의하십시오. 필수 용어가 누락되어 있습니다.

링크는 사물들 사이, 사물과 사물 모델 사이, 그리고 사물 모델들 사이의 관계를 나타낼 수 있습니다. 링크는 계층적 사물에만 적용되는 것이 아니라, 일반적으로 사물과 다른 리소스 사이의 관계에도 적용됩니다. 링크 관계 타입은 사물들이 어떻게 관련되는지, 예를 들어 스위치가 조명을 제어하거나 방이 동작 센서에 의해 모니터링되는 방식을 표현합니다. 사물과 관련된 다른 리소스는 문서 매뉴얼, 예비 부품 카탈로그, CAD 파일, 그래픽 UI, 또는 웹상의 다른 모든 문서일 수 있습니다. 전반적으로 사물 간 웹 링크는 인간과 기계 모두에게 웹 사물을 탐색 가능하게 만듭니다. 이는 일반적으로 TD 표현을 캐싱하여 사물 카탈로그를 관리하는 사물 기술 디렉터리를 제공함으로써 더욱 촉진될 수 있습니다.

요약하면, WoT 사물 기술WoT 사물 모델은 웹 사물을 형성하기 위해 다른 사물, WoT 사물 모델 및 웹상의 다른 리소스에 링크할 MAY 수 있습니다.

링크된 사물
그림 17 링크된 사물

사물은 네트워크 대면 인터페이스, 즉 사물WoT 인터페이스를 통한 상호작용을 실현하기 위해 소프트웨어 스택을 가진 네트워크화된 시스템 구성 요소에서 호스팅되어야 MUST 합니다. 이에 대한 한 예는 사물 추상화 뒤의 물리적 엔터티와 인터페이스하는 센서와 액추에이터가 있는 임베디드 장치에서 실행되는 HTTP 서버입니다. 그러나 W3C WoT는 사물이 어디에 호스팅되는지를 의무화하지 않습니다. 이는 IoT 장치 직접, 게이트웨이와 같은 에지 장치, 또는 클라우드에 있을 수 있습니다.

전형적인 배포 과제는 로컬 네트워크가 인터넷에서 도달 가능하지 않은 시나리오이며, 보통 IPv4 네트워크 주소 변환(NAT) 또는 방화벽 장치 때문입니다. 이 상황을 해결하기 위해 W3C WoT는 사물소비자 사이의 중개자를 허용합니다.

6.1.3 중개자

중개자사물의 프록시로 동작할 수 있으며, 여기서 중개자는 원래 사물과 유사하지만 중개자가 제공하는 WoT 인터페이스를 가리키는 WoT 사물 기술을 가집니다. 중개자는 기존 사물에 추가 기능을 보강하거나, 사용 가능한 여러 사물로부터 새로운 사물을 합성하여 가상 사물을 형성할 수도 있습니다. 소비자에게 중개자WoT 사물 기술을 가지고 WoT 인터페이스를 제공하므로 또 다른 종류의 사물일 뿐입니다. 이들은 웹 [REST]과 같은 계층화된 시스템 아키텍처에서 물리적 장치를 직접 나타내는 사물과 구별되지 않을 수 있습니다.

중개자
그림 18 중개자

제한된 로컬 네트워크를 위한 또 다른 해결책은 로컬 네트워크 내의 사물에서 공개적으로 도달 가능한 소비자로 연결을 설정하는 프로토콜에 WoT 인터페이스를 바인딩하는 것입니다.

W3C WoT의 개념은 IoT 애플리케이션과 관련된 모든 수준, 즉 장치 수준, 에지 수준 및 클라우드 수준에 적용할 수 있습니다. 이는 서로 다른 수준 전반에 걸친 공통 인터페이스와 API를 촉진하고, 사물-사물, 사물-게이트웨이, 사물-클라우드, 게이트웨이-클라우드, 나아가 클라우드 연합, 즉 IoT 애플리케이션을 위해 둘 이상의 서비스 제공자의 클라우드 컴퓨팅 환경을 상호 연결하는 것과 같은 다양한 통합 패턴을 가능하게 합니다. 그림 19는 위에서 소개한 WoT 개념을 적용하고 결합하여 WoT 사용 사례 및 요구사항 문서 [WOT-USE-CASES-REQUIREMENTS]에 설명된 사용 사례를 다루는 방법에 대한 개요를 제공합니다.

아키텍처 개요
그림 19 W3C WoT의 추상 아키텍처

6.2 어포던스

W3C WoT에서 중심적인 측면은 기계 판독 가능 메타데이터(즉, WoT 사물 기술)의 제공입니다. 이상적으로 이러한 메타데이터는 자기 설명적이어서 소비자사물이 제공하는 기능이 무엇인지, 그리고 제공된 기능을 어떻게 사용할 수 있는지 식별할 수 있어야 합니다. 이러한 자기 설명성의 핵심은 어포던스 개념에 있습니다.

어포던스라는 용어는 생태심리학에서 유래했지만, 인간-컴퓨터 상호작용 분야 [HCI]에서 Donald Norman의 정의에 기반해 채택되었습니다: "'어포던스'는 사물의 지각된 속성과 실제 속성, 주로 그 사물이 어떻게 사용될 수 있는지를 결정하는 기본 속성을 가리킨다." [NORMAN]

이에 대한 예는 손잡이가 있는 문입니다. 문손잡이는 문이 열릴 수 있음을 암시하는 어포던스입니다. 사람에게 문손잡이는 보통 문을 어떻게 열 수 있는지도 암시합니다. 미국식 노브는 돌리는 것을 암시하고, 유럽식 레버 손잡이는 아래로 누르는 것을 암시합니다.

REST 아키텍처 스타일 [REST]의 핵심 기반 중 하나인 하이퍼미디어 원칙은, 웹에서 사용 가능한 모든 정보 조각이 다른 정보 조각과 링크되어 정보 소비자가 웹을 탐색하고 웹 애플리케이션을 제어하는 방법에 대한 명시적 지식을 얻을 것을 요구합니다. 여기서 정보와 제어의 동시 제시(하이퍼링크 형태로 제공됨)는 웹 클라이언트에게 웹 애플리케이션을 구동할 수단을 제공하는 메커니즘입니다. 이 맥락에서 어포던스는 링크된 리소스를 어떻게 탐색하고, 가능하다면 어떻게 작동시킬지를 웹 클라이언트에게 제안하는 하이퍼링크의 설명(예: 링크 관계 타입과 링크 대상 속성을 통한 설명)입니다. 따라서 링크는 탐색 어포던스를 제공합니다.

이 하이퍼미디어 원칙에서 도출하여, 웹 사물은 상호작용 어포던스를 사물의 메타데이터로 정의합니다. 이는 소비자에게 가능한 선택지를 보여주고 설명하여, 소비자사물과 어떻게 상호작용할 수 있는지를 제안합니다. 일반적인 상호작용 어포던스는 링크를 따라감으로써 활성화되는 탐색이며, 이를 통해 소비자는 웹 사물을 둘러볼 수 있습니다. 6.5 상호작용 모델W3C WoT를 위한 세 가지 추가 상호작용 어포던스 유형을 정의합니다: 속성, 액션, 및 이벤트.

전반적으로 이 W3C WoT 정의는 물리적 사물을 만드는 HCI 및 상호작용 디자이너뿐 아니라, 일반적인 웹 서비스에 관해 작업하는 REST 및 마이크로서비스 커뮤니티와도 정렬되어 있습니다.

6.3 웹 사물

웹 사물에는 관심 대상이 되는 네 가지 아키텍처 측면이 있습니다: 그 동작, 상호작용 어포던스, 그 보안 구성, 그리고 그 프로토콜 바인딩이며, 이는 그림 20에 묘사되어 있습니다. 사물의 동작 측면은 자율 동작과 상호작용 어포던스에 대한 핸들러를 모두 포함합니다. 상호작용 어포던스소비자가 특정 네트워크 프로토콜이나 데이터 인코딩을 참조하지 않고 추상 작업을 통해 사물과 상호작용할 수 있는 방법의 모델을 제공합니다. 프로토콜 바인딩은 각 상호작용 어포던스를 특정 프로토콜의 구체적 메시지로 매핑하는 데 필요한 추가 세부사항을 더합니다. 일반적으로 서로 다른 구체적 프로토콜은 단일 사물 내에서도 상호작용 어포던스의 서로 다른 하위 집합을 지원하는 데 사용될 수 있습니다. 사물의 보안 구성 측면은 상호작용 어포던스에 대한 접근을 제어하는 데 사용되는 메커니즘과, 관련 공개 보안 메타데이터비공개 보안 데이터의 관리를 나타냅니다.

웹 사물
그림 20 사물의 아키텍처 측면

6.4 생명주기

WoT 아키텍처 원칙을 적용하는 배포에서는 서로 다른 엔터티가 상호작용하고 정보를 교환합니다. WoT 배포의 요소는 장치, 중개자, 소비자디렉터리입니다. 각 요소는 자체적인(내재적) 사물 생명주기를 가집니다. 이러한 요소들은 시스템을 구성하며, 전체 시스템은 시스템 생명주기, 즉 작동 가능해지기 위해 몇 가지 상태와 상태 전이를 거치는 생명주기를 가집니다. 이는 장치가 작동 가능해지기 위해 자신의 생명주기를 거치며, 사용될 수 있기 전에 다른 이들에게 알려져야 함을 의미합니다.

다음 절들은 시스템 생명주기사물 생명주기를 설명합니다. 여기에는 배포에서 사물의 서로 다른 상태와 단계를 설명하기 위한 샘플 흐름이 포함됩니다. 이 절의 목적 중 하나는 용어를 명확히 하고, 웹 사물 구현자가 공통 생명주기 모델의 개념을 고려하도록 보장하는 것입니다.

이 다이어그램의 왼쪽에 있는 행위자는 장치 소유자 또는 제조업체로 이해할 수 있습니다. 오른쪽의 행위자는 애플리케이션에서 장치를 사용하는 최종 사용자입니다.

6.4.1 단순 시스템 생명주기

다음 시퀀스 다이어그램은 직접 통신하는 두 장치로 구성된 시스템 흐름의 예를 보여줍니다.

이 시나리오에서 장치를 사용할 수 있기 전에는 소비자에 대해 부트스트랩되고 온보딩되어야 합니다. 온보딩 작업에서 소비자와 장치는 서로를 알게 됩니다. 이는 탐색 과정으로 수행될 수도 있고, 소비자가 장치에 등록되거나 그 반대로 장치가 소비자에 등록되는 등록 작업을 통해 수행될 수도 있습니다.

활성화 단계(프로비저닝, 구성 등 여러 작업으로 구성될 수 있음) 후, 장치소비자는 정규 동작 모드에 있습니다. 이 시나리오에서 장치가 더 이상 필요하지 않으면 소비자에서 오프보딩됩니다. 이 작업 후에는 폐기되고 파괴될 수 있습니다.

단순 시스템 생명주기
그림 21 단순 시스템 생명주기

6.4.2 등록을 포함한 시스템 생명주기

다음 시퀀스 다이어그램은 장치, 소비자 및 디렉터리라는 세 엔터티를 포함하는 시스템 흐름의 예를 보여줍니다.

이 흐름은 이전 절의 흐름과 매우 유사하지만, 장치 카탈로그를 유지하는 디렉터리 엔터티를 추가로 포함합니다. WoT에서 이 카탈로그는 사물 기술의 집합입니다. 장치가 이전 시나리오에서와 같이 부트스트랩된 후, 디렉터리에 등록됩니다.

디렉터리는 왼쪽의 행위자와 소비자 쪽 행위자 사이의 정보 브로커 역할을 합니다. 이는 장치 소유자를 소비자와 분리하며, 탐색이 소비자의 탐색을 가능하게 하는 중간자 역할을 하도록 합니다.

단순 시스템 생명주기
그림 22 등록을 포함한 시스템 생명주기

6.4.3 사물 생명주기

장치의 부트스트래핑과 프로비저닝은 모든 IoT 프로토콜 제품군에서 장치를 설정하는 데 필수적인 부분입니다.

WoT로 장치를 프로비저닝하기 위한 주요 시나리오는 다음과 같습니다:

  • 장치가 주어진 배포에서 이미 프로비저닝되어 작동 중입니다. 이를 WoT와 함께 작동하게 합니다.
  • 장치가 주어진 배포에서 이미 프로비저닝되어 작동 중입니다. 관리 목적을 위해 장치 생명주기 단계를 사물 기술설명합니다.
  • WoT에서 작동 가능해지도록 장치를 직접 WoT로 부트스트랩하고 프로비저닝합니다.

IoT 프로토콜 제품군에서는 다양한 프로비저닝 스킴이 사용되고 있습니다. 이 절의 텍스트는 OCF, OneM2M, Lightweight OneM2M, Thing to Thing Research Group (T2TRG), OPC-UA/Anima 등과 같은 다양한 프로비저닝 스킴을 비교한 자료 제안 및 연구에 기반합니다.

참고

이 절에서 제시하는 프로비저닝 모델은 T2TRG 프로비저닝 모델과 유사합니다.

다양한 IoT 프로토콜 제품군 전반에서 장치 부트스트래핑과 프로비저닝의 공통 요소는 다음과 같습니다:

  • 신뢰 사슬을 설정합니다. 예: 보안 저장소, 키, 인증서. 여기에는 제조업체 인증서, 대역 외 키 프로비저닝, 프로비저닝 서버에 연결하기 등 다양한 솔루션이 포함될 수 있습니다.
  • 프로비저닝 도구 또는 서비스를 사용하여 장치 소유권을 설정합니다. 예를 들어 장치는 네트워크 엔터티, 네트워크 서비스, 서비스 제공자 또는 최종 사용자가 소유할 수 있습니다.
  • 테넌트 또는 다양한 수준의 사용자를 위한 접근 제어 목록으로 장치를 프로비저닝합니다.
  • 장치가 사용하는 서비스에 대한 접근 권한으로 장치를 프로비저닝합니다.
  • 사용되는 서비스와 노출되는 서비스로 장치를 구성합니다.
  • 장치 내 WoT 런타임을 프로비저닝하고 구성합니다.
  • 구성 또는 프로비저닝 데이터를 업데이트합니다.
  • 사용자, 애플리케이션, 서비스 또는 프로비저닝을 폐기합니다.
  • 장치를 프로비저닝 전의 초기 상태로 되돌립니다 (예: 공장 초기화).
  • 장치를 폐기하고 되돌릴 수 없게 파괴합니다.

이러한 프로비저닝 흐름을 고려하면, 일반적으로 장치는 다음 상태 중 하나에 있을 수 있습니다:

  • 제조됨: 장치에 소프트웨어 이미지가 플래시됩니다. 특정 프로토콜 제품군에 대해 인증된 경우, 특정 부트스트래핑 절차와 같은 제한된 작업만 허용되거나 수행 가능할 수 있습니다.
  • 부트스트랩됨: 장치가 신원과 소유권을 확립했으며, 구성, 서비스 프로비저닝 등 다음 프로비저닝 단계를 위한 준비가 된 상태입니다. 이 상태는 다양한 프로토콜 제품군에서 서로 다른 이름을 가집니다. 예를 들어 OCF에서는 onboarded, T2TRG, OPC-UA, Anima, LwM2M에서는 bootstrapped, OneM2M에서는 initial provisioning이라고 부릅니다.
  • 작동 중: 장치가 프로비저닝 및 구성되어 정상 모드로 작동합니다. 이 상태를 벗어나지 않고도 일부 구성이 가능합니다. 여기에는 애플리케이션 설치 및 제거, 설정 재구성 등이 포함될 수 있습니다. 장치는 자체 네이티브 프로토콜 제품군에서 작동 중이고 WoT 게이트웨이가 관리할 수도 있고, WoT(장치의 애플리케이션일 수 있음)를 위해 작동 중일 수도 있으며, WoT를 위해 작동 중이고 WoT에 직접 프로비저닝되어 있을 수도 있습니다.
  • 유지관리: 장치 작동 상태가 소프트웨어 및/또는 구성 업데이트를 위해 중단됩니다.
  • 파괴됨: 장치의 모든 데이터와 소프트웨어가 삭제되었습니다. 하드웨어 킬 기능이 활성화될 수 있습니다. 장치는 물리적으로 파괴되어 다시 사용되지 않을 수 있습니다. 이 상태는 장치 관리 목적과 관련됩니다. 이는 OneM2M, LwM2M, OCF, T2TRG에는 존재하지 않으며 OPC-UA 및 Anima에서는 End-of-life라고 부릅니다.
장치 생명주기
그림 23 장치 생명주기

생명주기 상태 사이의 일반적인 전이는 다음과 같습니다:

  • 부트스트래핑(또는 온보딩): 장치에 신원이 프로비저닝되고, 보안 저장소, 키, 인증서와 같은 신뢰 사슬이 설정됩니다. 여기에는 제조업체 인증서, 대역 외 키 프로비저닝, 프로비저닝 서버에 연결(상당히 일반적인 시나리오)과 같은 다양한 솔루션이 포함될 수 있습니다. WoT에 직접 프로비저닝할 때, 장치는 이 단계에서 사물 기술 디렉터리에 등록될 수 있습니다. 이 과정 중 또는 이후에, 일부 프로토콜 제품군에서는 다른 동작 모드로 재부팅하는 것도 필요할 수 있습니다.
  • 프로비저닝, 구성, 커미셔닝: 장치에는 동작에 필요한 모든 리소스(서비스, 애플리케이션, 접근 제어, 데이터베이스 등)가 프로비저닝되고, 이러한 리소스는 동작을 위해 구성됩니다. 또한 장치는 주어진 환경에서 커미셔닝될 수 있습니다. 여기에는 예를 들어 사물 기술 디렉터리 또는 탐색 서비스와 같은 서버와의 통신이 포함될 수 있습니다.
  • 설정: 장치는 작동 중 상태에 머물지만 시스템, 서비스 또는 애플리케이션 설정을 업데이트할 수 있습니다. 경우에 따라 애플리케이션 설치 및 제거가 포함될 수 있습니다.
  • 업데이트: 장치는 프로비저닝 중의 것과 유사한 업데이트를 유지관리 상태에서 받기 위해 정상 동작을 중지합니다. 여기에는 새 소프트웨어 설치 또는 리소스와 그 구성의 제거, 설치 또는 업데이트가 포함될 수 있습니다. 재커미셔닝도 포함될 수 있습니다. 작동 중 상태로 돌아가는 것은 업데이트된 리소스로 동작을 재개함으로써 달성될 수 있거나, 서비스 재시작 또는 장치 재부팅이 필요할 수 있습니다.
  • 재부트스트래핑: 장치 신원, 소유자 및 관련 리소스는 부트스트래핑 과정에서 설명한 대로 변경될 수 있습니다.
  • 공장 초기화: 장치가 공장 기본 상태로 되돌아갑니다.
  • 파괴: 장치가 모든 데이터와 소프트웨어에서 삭제되고 물리적으로 파괴될 수 있습니다.

6.5 상호작용 모델

원래 웹 리소스는 보통 웹 클라이언트가 단순히 가져올 수 있는 월드 와이드 웹상의 문서를 나타냈습니다. 웹 서비스의 도입과 함께 리소스는 어떤 종류의 동작도 구현할 수 있는 더 일반적인 상호작용 엔터티가 되었습니다. 이러한 매우 높은 수준의 추상화는 다양한 상호작용 가능성 때문에 애플리케이션과 리소스 사이의 느슨한 결합을 제공하기 어렵게 만듭니다. 그 결과 작성 시점에 일반적인 API 설명은 애플리케이션 의도에서 리소스 주소, 메서드, 요청 페이로드 구조, 응답 페이로드 구조 및 예상 오류로의 정적 매핑으로 구성됩니다. 이는 웹 클라이언트와 웹 서비스 사이에 강한 결합을 부과합니다.

W3C WoT의 상호작용 모델은 애플리케이션 의도에서 구체적 프로토콜 작업으로의 매핑을 형식화하고, 상호작용 어포던스가 모델링될 수 있는 가능성을 좁히는 중간 추상화를 도입합니다.

탐색 어포던스(즉, 웹 링크) 외에도 사물은 이 명세가 정의하는 세 가지 다른 유형의 상호작용 어포던스, 즉 속성, 액션, 및 이벤트를 제공할 MAY 수 있습니다. 이 좁은 허리는 소비자사물을 분리할 수 있게 하면서도, 이 네 가지 유형의 상호작용 어포던스는 IoT 장치와 서비스에서 발견되는 사실상 모든 상호작용 종류를 여전히 모델링할 수 있습니다.

6.5.1 속성

속성사물의 상태를 노출하는 상호작용 어포던스입니다. 속성이 노출하는 상태는 검색 가능(읽기 가능)할 수 있습니다. 선택적으로 속성이 노출하는 상태는 업데이트(쓰기)될 수 있습니다. 사물은 변경 후 새 상태를 푸시함으로써 속성을 관찰 가능하게 만들 수 있습니다 (cf. Observing Resources [RFC7641]). 읽기 전용 상태의 경우, 액션을 사용하여 상태를 업데이트할 수 있습니다.

사용된 프로토콜 바인딩이 데이터 형식을 완전히 지정하지 않는 경우(예: 미디어 타입을 통해), 속성은 노출된 상태에 대한 하나의 데이터 스키마를 포함할 MAY 수 있습니다.

속성의 예로는 센서 값(읽기 전용), 상태를 가지는 액추에이터(읽기-쓰기), 구성 매개변수(읽기-쓰기), 사물 상태(읽기 전용 또는 읽기-쓰기), 또는 계산 결과(읽기 전용)가 있습니다.

6.5.2 액션

액션사물의 함수를 호출할 수 있게 하는 상호작용 어포던스입니다. 액션은 직접 노출되지 않은 상태(cf. 속성)를 조작하거나, 여러 속성을 동시에 조작하거나, 내부 로직(예: 토글)에 따라 속성을 조작할 MAY 수 있습니다. 액션을 호출하면 시간에 따라 상태(액추에이터를 통한 물리적 상태 포함)를 조작하는 사물의 프로세스도 트리거할 MAY 수 있습니다.

사용된 프로토콜 바인딩이 데이터 형식을 완전히 지정하지 않는 경우(예: 미디어 타입을 통해), 액션은 입력 매개변수와 출력 결과를 위한 데이터 스키마를 포함할 MAY 수 있습니다.

액션의 예로는 여러 속성을 동시에 설정하는 것, 조명의 밝기를 서서히 낮추는 것(디밍)처럼 시간에 따라 속성을 변경하는 것, 독점 제어 루프 알고리즘처럼 공개되어서는 안 되는 프로세스를 사용하는 것, 또는 문서 인쇄와 같은 오래 지속되는 프로세스를 호출하는 것이 있습니다.

6.5.3 이벤트

이벤트사물에서 소비자로 데이터를 비동기적으로 푸시하는 이벤트 소스를 설명하는 상호작용 어포던스입니다. 여기서는 상태가 아니라 상태 전이 (즉, 이벤트)가 전달됩니다. 이벤트는 속성으로 노출되지 않은 조건을 통해 트리거될 MAY 수 있습니다.

사용된 프로토콜 바인딩이 데이터를 완전히 지정하지 않는 경우(예: 미디어 타입을 통해), 이벤트는 이벤트 데이터와 구독 제어 메시지 (예: Webhook으로 구독하기 위한 콜백 URI)를 위한 데이터 스키마를 포함할 MAY 수 있습니다.

이벤트의 예로는 알람과 같은 개별 이벤트나 정기적으로 전송되는 시계열 샘플이 있습니다.

6.6 하이퍼미디어 제어

웹에서 어포던스는 정보와 제어의 동시 제시이며, 이를 통해 정보가 사용자가 선택지를 얻는 어포던스가 됩니다. 인간에게 정보는 보통 하이퍼링크를 설명하거나 장식하는 텍스트 또는 이미지입니다. 제어는 최소한 대상 리소스의 URI를 포함하는 웹 링크이며, 이는 웹 브라우저가 역참조할 수 있습니다(즉, 링크를 따라갈 수 있습니다). 그러나 웹 링크가 관계 타입과 대상 속성 집합으로 더 설명되면 기계도 의미 있는 방식으로 링크를 따라갈 수 있습니다. 하이퍼미디어 제어는 어포던스를 어떻게 활성화하는지에 대한 기계 판독 가능 설명입니다. 하이퍼미디어 제어는 보통 웹 서버에서 유래하며, 웹 클라이언트가 서버와 상호작용하는 동안 대역 내에서 발견됩니다. 이런 방식으로 웹 서버는 현재 상태와 권한 부여 같은 다른 요인을 고려하여 웹 애플리케이션을 통해 클라이언트를 동적으로 구동할 수 있습니다. 이는 클라이언트에 미리 설치되거나 하드코딩되어야 하는 대역 외 인터페이스 설명 (예: RPC, WS-* 웹 서비스, 고정 URI-메서드-응답 정의를 가진 HTTP 서비스)과 대조됩니다.

W3C WoT는 두 종류의 하이퍼미디어 제어를 사용합니다: 웹을 탐색하기 위한 잘 확립된 제어인 웹 링크 [RFC8288]와, 어떤 종류의 작업도 가능하게 하는 더 강력한 제어인 웹 폼입니다. 링크는 CoRE Link Format [RFC6690], OMA LWM2M [LWM2M], 및 OCF [OCF]와 같은 다른 IoT 표준과 IoT 플랫폼에서도 이미 사용되고 있습니다. W3C WoT 외에도 IETF가 정의한 Constrained RESTful Application Language (CoRAL) [CoRAL]에서 도입한 새로운 개념입니다.

6.6.2

폼은 소비자(또는 더 넓은 의미의 웹 클라이언트)가 URI를 역참조하는 것을 넘어서는 작업 (예: 사물의 상태 조작)을 수행할 수 있게 합니다. 소비자는 폼을 채우고 그 제출 대상으로 제출함으로써 그렇게 합니다. 이는 보통 링크가 제공할 수 있는 것보다 (요청) 메시지 내용에 대한 더 상세한 정보(예: 메서드, 헤더 필드 또는 기타 프로토콜 옵션)를 필요로 합니다. 폼은 요청 템플릿으로 볼 수 있으며, 제공자는 자신의 인터페이스와 상태에 따라 정보의 일부를 미리 채우고, 일부는 소비자(또는 일반적인 웹 클라이언트)가 채우도록 비워 둡니다.

W3C WoT는 새로운 하이퍼미디어 제어로 폼을 정의합니다. CoRAL의 정의도 사실상 동일하므로 호환된다는 점에 유의하십시오 [CoRAL]. CoRAL에서 폼은 다음으로 구성됩니다:

  • 폼 컨텍스트,
  • 작업 타입,
  • 제출 대상,
  • 요청 메서드, 및
  • 선택적 폼 필드.

폼은 " form context 에 대해 operation type 작업을 수행하려면, submission targetrequest method 요청을 발행하라"는 진술로 볼 수 있으며, 여기서 선택적 폼 필드는 필요한 요청을 추가로 설명할 수 있습니다.

폼 컨텍스트와 제출 대상은 모두 국제화 리소스 식별자 (IRI) [RFC3987]이어야 MUST 합니다. 그러나 일반적인 경우에는 많은 프로토콜(예: HTTP)이 IRI를 지원하지 않기 때문에 URI [RFC3986]이기도 합니다.

폼 컨텍스트와 제출 대상은 동일한 리소스 또는 서로 다른 리소스를 가리킬 MAY 수 있으며, 제출 대상 리소스는 컨텍스트에 대한 작업을 구현합니다.

작업 타입은 작업의 의미를 식별합니다. 작업 타입은 링크 관계 타입과 유사하게 표시됩니다.

요청 메서드는 제출 대상 URI 스킴이 식별하는 프로토콜의 표준 집합 중 하나의 메서드를 식별해야 MUST 합니다.

폼 필드는 선택 사항이며 주어진 작업에 대해 예상되는 요청 메시지를 추가로 지정할 MAY 수 있습니다. 이는 페이로드에만 국한되지 않으며 프로토콜 헤더에도 영향을 줄 수 있다는 점에 유의하십시오. 폼 필드는 URI 스킴에 지정된 제출 대상에 사용되는 프로토콜에 의존할 MAY 수 있습니다. 예로는 HTTP 헤더 필드, CoAP 옵션, 요청 페이로드를 위한 매개변수(즉, 전체 콘텐츠 타입)를 포함하는 프로토콜 독립적 미디어 타입 [RFC2046], 또는 예상 응답에 대한 정보가 있습니다.

참고

이 명세 기준으로, 잘 알려진 작업 타입은 WoT 상호작용 모델에서 비롯된 고정 집합입니다. 다른 명세는 각 문서 형식 또는 폼 직렬화에 유효한 추가적인 잘 알려진 작업 타입을 정의할 수 있습니다. 이 명세의 이후 버전 또는 다른 명세는 확장과 WoT 명세를 넘어 적용될 수 있는 더 일반적인 웹 폼 모델을 가능하게 하기 위해 향후 IANA 레지스트리를 설정할 수 있습니다.

6.7 프로토콜 바인딩

프로토콜 바인딩상호작용 어포던스에서 HTTP [RFC7231], CoAP [RFC7252], 또는 MQTT [MQTT]와 같은 특정 프로토콜의 구체적 메시지로의 매핑입니다. 이는 소비자에게 네트워크 대면 인터페이스를 통해 상호작용 어포던스어떻게 활성화하는지 알려줍니다. 프로토콜 바인딩은 상호운용성을 지원하기 위해 REST [REST]의 균일 인터페이스 제약을 따릅니다. 따라서 모든 통신 프로토콜이 W3C WoT를 위한 프로토콜 바인딩을 구현할 자격이 있는 것은 아닙니다. 요구사항은 아래의 단언에 제시되어 있습니다.

6.2 어포던스에서 제시한 문 예에서, 프로토콜 바인딩은 문을 어떻게 열 수 있는지를 암시하는 노브와 레버 수준의 문손잡이에 해당합니다.

6.7.1 하이퍼미디어 기반

상호작용 어포던스는 하나 이상의 프로토콜 바인딩을 포함해야 MUST 합니다. 프로토콜 바인딩상호작용 어포던스를 활성화하는 방법을 자기 설명적으로 만들기 위해 하이퍼미디어 제어로 직렬화되어야 MUST 합니다. 하이퍼미디어 제어의 권위는 사물 자체일 수 있으며, 이는 런타임에(현재 상태를 기반으로 하고 IP 주소와 같은 네트워크 매개변수를 포함하여) TD 문서를 생성하거나, 현재 네트워크 매개변수만 삽입하여 메모리에서 이를 제공할 수 있습니다. 권위는 네트워크 매개변수와 내부 구조(예: 소프트웨어 스택)를 포함한 사물에 대한 완전하고 최신의 지식을 가진 외부 엔터티일 수도 있습니다. 이는 사물소비자 사이의 느슨한 결합을 가능하게 하여 독립적인 생명주기와 진화를 허용합니다. 하이퍼미디어 제어는 신선도를 판단할 수 있는 캐싱 메타데이터가 사용 가능하다면 사물 외부에 캐시되어 오프라인 처리에 사용될 MAY 수 있습니다.

6.7.2 URI

하이퍼미디어 제어는 링크 및 제출 대상을 식별하기 위해 URI [RFC3986]에 의존합니다. 이에 따라 URI 스킴(첫 번째 구성 요소부터 ":"까지)은 사물과의 상호작용 어포던스에 사용할 통신 프로토콜을 식별합니다. W3C WoT는 이러한 프로토콜을 전송 프로토콜이라고 부릅니다.

6.8 미디어 타입

상호작용 어포던스를 활성화할 때 교환되는 모든 데이터(일명 콘텐츠)는 프로토콜 바인딩에서 미디어 타입 [RFC2046]으로 식별되어야 MUST 합니다. 미디어 타입은 표현 형식을 식별하는 레이블입니다. 예를 들어 JSON [RFC8259]의 application/json 또는 CBOR [RFC7049]의 application/cbor가 있습니다. 이들은 IANA가 관리합니다.

일부 미디어 타입은 사용된 표현 형식을 완전히 지정하기 위해 추가 매개변수가 필요할 수 있습니다. 예로는 text/plain; charset=utf-8 또는 application/ld+json; profile="http://www.w3.org/ns/json-ld#compacted"가 있습니다. 이는 특히 사물에 전송될 데이터를 설명할 때 고려해야 합니다. 콘텐츠 코딩 [RFC7231]과 같은 데이터에 대한 표준화된 변환도 있을 수 있습니다. 프로토콜 바인딩은 미디어 타입만으로 표현 형식을 지정하는 것보다 더 자세히 지정하는 추가 정보를 가질 MAY 수 있습니다.

많은 미디어 타입은 그 요소에 대한 추가 의미를 제공하지 않는 일반적인 직렬화 형식만 식별한다는 점에 유의하십시오 (예: XML, JSON, CBOR). 따라서 구조화된 데이터 타입에 대한 상호작용 어포던스는 교환되는 데이터에 대해 더 상세한 구문 메타데이터를 제공하기 위해 데이터 스키마와 연결되어야 SHOULD 합니다. 세부사항은 WoT 사물 기술 명세 [WOT-THING-DESCRIPTION]에서 추가로 설명합니다.

6.9 국제화

웹 사물은 상호운용 가능한 국제화를 지원하며, 사용자 인터페이스와 같은 다국어 데이터 작업을 가능하게 합니다. 다국어 웹 사물 구현의 설계와 구현은 사물 기술 [WOT-THING-DESCRIPTION] 명세의 지침을 따릅니다. 이 명세는 [JSON-LD] 및 [BCP47]와 같은 확립된 표준을 기반으로 서로 다른 언어의 사람이 읽을 수 있는 텍스트를 적용하는 방법을 설명합니다.

6.10 WoT 시스템 구성 요소와 그 상호연결성

6.1 기본 개념 절은 사물, 소비자중개자와 같은 추상 WoT 아키텍처 구성 요소의 관점에서 WoT 아키텍처를 설명했습니다. 이러한 구성 요소가 WoT 아키텍처에서 특정 역할을 수행하기 위한 소프트웨어 스택으로 구현될 때, 그러한 소프트웨어 스택을 서비언트라고 부릅니다. WoT 아키텍처를 기반으로 하는 시스템은 시스템의 목표를 달성하기 위해 서로 통신하는 서비언트를 포함합니다.

이 절은 시스템 구성 다이어그램을 사용하여 서비언트가 WoT 아키텍처를 기반으로 시스템을 구축하기 위해 어떻게 함께 동작하는지를 설명합니다.

사물서비언트에 의해 구현될 수 있습니다. 사물에서 서비언트 소프트웨어 스택은 노출된 사물이라고 부르는 사물의 표현을 포함하며, 사물WoT 인터페이스를 그 소비자에게 사용할 수 있게 합니다. 이 노출된 사물은 사물의 동작을 구현하기 위해 서비언트의 다른 소프트웨어 구성 요소(예: 애플리케이션)가 사용할 수 있습니다.

사물로서의 서비언트
그림 24 사물로서의 서비언트

반면 소비자는 항상 서비언트에 의해 구현됩니다. 이는 소비자가 사물 기술(TD) 형식을 처리할 수 있어야 하고, TD에 포함된 프로토콜 바인딩 정보를 통해 구성될 수 있는 프로토콜 스택을 가져야 하기 때문입니다.

소비자에서 서비언트 소프트웨어 스택은 소비된 사물이라고 부르는 사물의 표현을 제공하며, 이를 사물과 상호작용하기 위해 TD를 처리해야 하는 서비언트에서 실행 중인 애플리케이션에 사용할 수 있게 합니다.

소비자로서의 서비언트
그림 25 소비자로서의 서비언트

서비언트 소프트웨어 스택의 소비된 사물 인스턴스는 프로토콜 수준의 복잡성을 애플리케이션으로부터 분리하는 역할을 합니다. 이는 애플리케이션을 대신하여 노출된 사물과 통신합니다.

마찬가지로 중개자서비언트가 구현하는 또 다른 WoT 아키텍처 구성 요소입니다. 중개자사물과 그 소비자 사이에 위치하며, (사물에 대해서는) 소비자의 역할과, (소비자에 대해서는) 사물의 역할을 모두 수행합니다. 중개자에서 서비언트 소프트웨어 스택은 소비자(소비된 사물)와 사물 (노출된 사물)의 표현을 모두 포함합니다.

중개자로서의 서비언트
그림 26 중개자로서의 서비언트

6.10.1 직접 통신

그림 27사물소비자 사이의 직접 통신을 보여줍니다. 사물은 사물 기술을 통해 상호작용 어포던스를 노출하고, 소비자는 상호작용 어포던스를 수단으로 사물을 사용합니다. 직접 통신은 두 서비언트가 동일한 네트워크 프로토콜(들)을 사용하고 서로 접근 가능할 때 적용됩니다.

소비자와 사물의 고수준 아키텍처
그림 27 소비자와 사물의 고수준 아키텍처

노출된 사물사물 추상화의 소프트웨어 표현으로, 사물이 제공하는 상호작용 어포던스WoT 인터페이스를 제공합니다.

소비된 사물소비자가 소비하는 원격 사물의 소프트웨어 표현으로, 애플리케이션을 위한 원격 사물의 인터페이스 역할을 합니다. 소비자TD 문서를 파싱하고 처리하여 소비된 사물 인스턴스를 생성할 수 있습니다. 소비자사물 사이의 상호작용은 소비된 사물노출된 사물이 이들 사이의 직접 네트워크 연결을 통해 메시지를 교환함으로써 수행됩니다.

6.10.2 간접 통신

그림 28에서 소비자사물중개자를 통해 서로 연결됩니다. 서비언트가 서로 다른 프로토콜을 사용하거나, 인증을 요구하고 접근 제어를 제공하는 서로 다른 네트워크(예: 방화벽)에 있을 경우 중개자가 필요합니다.

중개자를 포함한 고수준 아키텍처
그림 28 중개자를 포함한 고수준 아키텍처

중개자노출된 사물소비된 사물 기능을 결합합니다. 중개자의 기능에는 소비자사물 사이의 상호작용 어포던스에 대한 메시지를 중계하고, 더 빠른 응답을 위해 선택적으로 사물의 데이터를 캐싱하며, 중개자에 의해 사물의 기능이 확장될 때 통신을 변환하는 것이 포함됩니다. 중개자에서 소비된 사물사물노출된 사물의 프록시 객체를 생성하며, 소비자는 자신의 소비된 사물을 통해 프록시 객체(즉, 중개자노출된 사물)에 접근할 수 있습니다.

소비자중개자중개자사물 사이와 다른 프로토콜로 통신할 수 있습니다. 예를 들어 중개자는 CoAP를 사용하는 사물과 HTTP를 사용하는 소비자의 애플리케이션 사이의 브리지를 제공할 수 있습니다.

중개자사물 사이에 여러 서로 다른 프로토콜이 사용되더라도, 소비자중개자를 통해 단일 프로토콜을 사용하여 이러한 사물과 간접적으로 통신할 수 있습니다. 인증에 대해서도 마찬가지입니다. 소비자소비된 사물은 단일 보안 메커니즘을 사용해 중개자노출된 사물에만 인증하면 되지만, 중개자는 서로 다른 사물에 인증하기 위해 여러 보안 메커니즘을 필요로 할 수 있습니다.

일반적으로 중개자는 원래 사물사물 기술을 기반으로 프록시 객체에 대한 사물 기술을 생성합니다. 사용 사례의 요구사항에 따라, 프록시 객체의 TD는 원래 사물의 TD와 동일한 식별자를 사용할 수도 있고, 새 식별자를 할당받을 수도 있습니다. 필요한 경우, 중개자가 생성한 TD는 다른 통신 프로토콜을 위한 인터페이스를 포함할 MAY 수 있습니다.

7. WoT 구성 요소

이 절은 비규범적입니다.

웹 사물(Web of Things, WoT) 구성 요소는 추상 WoT 아키텍처를 따르는 시스템의 구현을 가능하게 합니다. 이러한 구성 요소의 세부 사항은 별도의 명세에서 정의되며, 이 절은 개요와 요약을 제공합니다.

WoT 구성 요소는 사물의 각 아키텍처 측면을 지원합니다. 이는 6.3 웹 사물에서 논의되고 그림 20에 묘사되어 있습니다. 개별 구성 요소는 그림 29에서 추상 사물의 맥락으로 표시됩니다. 이는 추상적 관점이며 특정 구현을 나타내지 않습니다. 대신 구성 요소와 사물의 주요 아키텍처 측면 사이의 관계를 설명합니다. 이 그림에서 WoT 구성 요소는 검은 윤곽선으로 강조되어 있습니다. WoT 사물 기술사물과 그 네트워크 인터페이스를 설명하는 메타데이터를 제공하는 핵심 구성 요소입니다. 횡단적 관심사인 보안은 공개 구성 요소와 보호된 비공개 구성 요소로 분리됩니다. WoT 스크립팅 API는 선택 사항이며, 바인딩 템플릿은 정보성입니다. WoT 탐색 구성 요소는 사물 기술을 배포하기 위한 메커니즘을 정의합니다. 사물사물 기술을 직접 제공할 수 있고, 또는 사물 기술 디렉터리 서비스가 제공할 수도 있습니다.

wot 구성 요소
그림 29 WoT 구성 요소와 사물의 아키텍처 측면 사이의 관계.

다음 절에서는 각 WoT 구성 요소에 대한 추가 정보를 제공합니다: WoT 사물 기술, WoT 탐색 메커니즘, WoT 바인딩 템플릿, 및 WoT 스크립팅 API. 보안은 횡단적 관심사이지만 추가 구성 요소로 간주될 수 있습니다.

7.1 WoT 사물 기술

WoT 사물 기술(TD) 명세 [WOT-THING-DESCRIPTION]는 의미 어휘를 기반으로 한 정보 모델JSON 기반의 직렬화 표현을 정의합니다. TD는 사람이 읽을 수 있고 기계도 읽을 수 있는 방식으로 사물에 대한 풍부한 메타데이터를 제공합니다. TD의 정보 모델과 표현 형식은 모두 링크드 데이터 [LINKED-DATA]와 정렬되어 있으므로, 원시 JSON 처리 외에도 구현은 JSON-LD [JSON-LD11]와 그래프 데이터베이스를 사용하여 메타데이터의 강력한 의미 처리를 가능하게 할 수 있습니다.

사물 기술은 이름, ID, 설명과 같은 일반 메타데이터로 사물 인스턴스를 설명하며, 관련 사물 또는 다른 문서에 대한 링크를 통해 관계 메타데이터도 제공할 수 있습니다. TD는 또한 6.5 상호작용 모델에서 정의된 상호작용 모델을 기반으로 하는 상호작용 어포던스 메타데이터, 공개 보안 메타데이터, 그리고 프로토콜 바인딩을 정의하는 통신 메타데이터를 포함합니다. TD사물을 위한 index.html로 볼 수 있습니다. 이는 하이퍼미디어 제어를 사용하여 설명되는 사물이 제공하는 서비스와 관련 리소스에 대해 알아보기 위한 진입점을 제공하기 때문입니다.

의미 상호운용성을 위해 TD는 명시적 확장 지점이 제공되는 도메인별 어휘를 사용할 수 있습니다. 그러나 특정한 도메인별 어휘의 개발은 현재 W3C WoT 표준화 활동의 범위를 벗어납니다.

잠재적으로 유용한 외부 IoT 어휘의 세 가지 예는 SAREF [SAREF], Schema Extensions for IoT [IOT-SCHEMA-ORG], 그리고 W3C Semantic Sensor Network 온톨로지 [VOCAB-SSN]입니다. 이러한 외부 어휘를 TD에서 사용하는 것은 선택 사항입니다. 향후 추가 도메인별 어휘가 개발되어 TD와 함께 사용될 수 있습니다.

전반적으로 WoT 사물 기술 구성 요소는 두 가지 방식으로 상호운용성을 촉진합니다. 첫째, TD는 웹 사물에서 기계 간 통신을 가능하게 합니다. 둘째, TD는 개발자가 IoT 장치에 접근하고 그 데이터를 사용할 수 있는 애플리케이션을 만들기 위해 필요한 모든 세부사항을 문서화하고 검색할 수 있는 공통의 균일한 형식으로 기능할 수 있습니다.

TD가 다른 시스템과 장치에 유용하려면 알려져 있거나 접근 가능해야 합니다. 아래에서 더 자세히 설명하는 WoT 탐색 구성 요소는 자기 설명 장치와, 별도 서비스가 TD를 제공하는 것이 더 적합한 상황(브라운필드 장치, 제한 장치, 특수 프로토콜을 가진 장치, 절전 장치 등) 모두에 대해 이를 달성할 수 있는 메커니즘을 정의합니다.

7.2 사물 모델

사물 모델사물 기술 인스턴스를 위한 템플릿 기반 모델을 정의합니다. 사물 모델은 인스턴스별 정보가 없고, 통신 및 보안 기반 정보도 부분적으로만 가집니다. 이러한 종류의 정보는 사물 기술 인스턴스화 생성에 의해 보완됩니다.

사물 모델은 주로 속성, 액션, 및 이벤트와 공통 메타데이터를 설명하며, 이는 이후 인스턴스화된 모든 사물 기술에서 사용할 수 있습니다. 이 패러다임은 객체 지향 프로그래밍에서 객체(~사물 기술)를 만들기 위한 추상 클래스 또는 인터페이스 정의(~사물 모델)와 비교할 수 있습니다. 이러한 사물 모델은 예를 들어 IoT 장치의 대량 생산, 클라우드 서비스에서의 온보딩 시나리오, 또는 아직 개발되지 않은 장치를 시뮬레이션하는 데 관련됩니다.

7.3 프로파일

참고

현재 WoT 프로파일 명세는 작업 초안으로만 발행되었습니다.

WoT 프로파일 명세 [WOT-PROFILE]는 사물과 장치 사이의 즉시 사용 가능한 상호운용성을 가능하게 하는 프로파일을 정의합니다. 즉시 사용 가능한 상호운용성은 장치가 깊은 수준의 적응 없이 다양한 애플리케이션 시나리오에 통합될 수 있음을 의미합니다. 일반적으로 특정 시나리오에서 장치를 사용하려면 네트워크 키나 IP 주소 입력과 같은 사소한 구성 작업만 필요합니다. 이러한 작업은 특별한 교육 없이 누구나 수행할 수 있습니다.

7.3.1 프로파일링 방법론

프로파일은 WoT 사물 기술 명세에 적용되는 추가 의미 보장을 제공하는 제약과 규칙의 집합입니다. 이러한 제약은 WoT 사물 기술의 여러 측면에 추가 규칙을 정의함으로써 유효한 WoT 사물 기술의 부분집합을 정의합니다.

제약 대상 근거
사물 기술 클래스의 어휘 보장된 메타데이터 필드 집합 특정 어휘 용어를 필수로 만들고, 다른 용어를 제거
클래스 관계 모호하지 않은 구조 제한된 카디널리티, 예: 상호작용 어포던스당 작업당 하나의 폼만 허용.
어휘 용어의 값 단순화된 처리 문자열당 문자 길이를 제한합니다. 명세가 문자열 또는 문자열 배열을 허용하는 경우에도 항상 배열을 사용합니다.
데이터 스키마 단순화된 처리 임의로 중첩된 객체나 배열의 배열을 허용하지 않습니다.
보안 구현 노력 감소 제한된 보안 메커니즘 집합만 허용.
프로토콜 바인딩 보장된 프로토콜 의미 제한된 프로토콜 및 프로토콜 기능, 예: http 동사(GET/PUT)를 작업 동사에 미리 정의된 방식으로 매핑하고, 다른 프로토콜에도 유사한 제약을 적용.

이러한 제약과 규칙은 두 범주로 나뉩니다:

  • 데이터 모델에 대한 제약.
  • 프로토콜 바인딩에 대한 제약.

이 두 범주는 서로 직교합니다. 즉, 프로파일을 따르는 정보 모델은 서로 다른 프로토콜에 매핑될 수 있습니다. 각 프로토콜의 프로토콜 바인딩은 추가적인 (프로토콜별) 제약을 포함할 수 있습니다.

프로파일은 배타적이지 않습니다. 즉, 하나의 사물은 여러 프로파일을 따를 수 있습니다. 프로파일은 서로의 위에 구축되거나 중첩될 수 있으며, 확장 프로파일은 기준 프로파일 위에 구축될 수 있습니다.

WoT 프로파일
그림 30 프로파일 아키텍처

7.4 WoT 탐색

WoT 탐색 명세 [WOT-DISCOVERY]는 네트워크를 통해 WoT 사물 기술을 배포하고 접근하기 위한 메커니즘을 정의합니다. 이러한 메커니즘은 사물과 서비스에 대한 접근을 단순화하고 그 통합을 지원하기 위한 것입니다. WoT 탐색 메커니즘은 근거리 네트워크의 범위에 제한되지 않으며 원격 탐색도 지원할 수 있습니다. 또한 기존 검색 및 탐색 표준의 확장으로 동작하도록 설계되어 있습니다.

WoT 탐색 구성 요소의 주요 설계 요구사항 중 하나는 WoT 데이터 및 메타데이터의 소비자와 제공자 모두의 보안과 개인정보 보호를 보호하는 것입니다. 특히 WoT 탐색 메커니즘은 WoT 사물 기술에 대한 접근을 보호하고 제어할 뿐 아니라, 그러한 데이터와 메타데이터에 대한 쿼리를 보호하고, 직접적이거나 추론 가능한 메타데이터의 우발적 배포를 피하도록 설계되어 있습니다.

강력한 개인정보 보호와 보안을 제공하면서 기존 탐색 기술을 수용하기 위해 WoT 탐색은 두 단계 과정을 사용합니다. 첫 번째 단계에서는 여러 최초 접촉 메커니즘 중 하나를 사용하여 "도입"이 이루어집니다. 두 번째 단계는 "탐사"라고 부르며, 실제 TD가 제공되지만, 적절한 인증과 권한 부여 후에만 제공됩니다.

단일 TD의 배포와 여러 TD를 위한 디렉터리 서비스를 모두 지원하는 두 가지 탐사 메커니즘이 제공됩니다:

이러한 메커니즘의 사용은 권장되지만 필수는 아닙니다.

7.4.1 도입 메커니즘

도입 메커니즘은 강력한 보안 또는 개인정보 보호 보장을 제공하도록 의도된 것이 아니며, 따라서 다음 요구사항을 만족하는 한 비교적 약한 보안을 가진 다양한 기존 탐색 메커니즘을 사용할 수 있습니다:

  • WoT 탐색에 사용되는 모든 도입 메커니즘은 메타데이터를 제공해서는 안 되며, 대신 사용자가 인증할 수 있고 적절한 권한(접근권)을 가진 경우에만 메타데이터에 접근할 수 있는 하나 이상의 불투명 URL이 결과로 나와야 합니다.
  • 도입 URL 자체는 사람이 읽을 수 있는 장치 유형이나 이름과 같은 어떤 메타데이터도 포함해서는 안 됩니다. 무작위로 생성된 URL이 권장됩니다.

7.4.2 탐사 메커니즘

적절한 인증 및 권한 부여 과정(웹 서비스를 보호하기 위한 기존 메커니즘과 기존 프로토콜 보안 협상 메커니즘에 기반함) 후, WoT 탐색은 메타데이터에 대한 실제 접근을 제공하는 두 번째 단계의 "탐사" 메커니즘 집합을 정의합니다.

첫 번째이자 가장 단순한 탐사 메커니즘은 장치 자체에서 직접 TD를 가져오는 방법을 정의합니다. 이는 애드혹 피어 투 피어 탐색을 지원합니다. 그러나 많은 상황(다수의 TD 관리 등을 포함하되 이에 국한되지 않음)에서는 대체 탐사 메커니즘인 WoT 사물 기술 디렉터리(TDD) 서비스가 더 적절합니다.

TDD는 WoT 메타데이터를 탐사하고 검색하기 위한 정교한 (하지만 보호되는) 쿼리 메커니즘을 제공합니다. TDD는 또한 권한 있는 소비자에게 TD 업데이트를 안전하게 배포하기 위한 변경 알림 메커니즘도 제공합니다. 모든 WoT 탐색 "탐사" 구현은 적절한 모범 사례 인증 및 권한 부여 이후에만 메타데이터와 TD를 제공해야 합니다. 다양한 상황에서 인증과 권한 부여에 적합한 모범 사례 보안 메커니즘은 [WOT-SECURITY]에서 논의됩니다. 접근 제어와 키 관리를 위한 적합한 메커니즘도 [SOLID]에서 논의됩니다.

TDD는 단지 편의 기능이 아니라 여러 WoT 사용 사례에서 필수적입니다. TDD를 사용하는 것은 사물에 자원 제한(예: 제한된 메모리 공간, 제한된 전력)이 있는 경우(c.f. 장치 범주), 중개자에 의한 변환을 필요로 하는 특수 프로토콜을 사용하는 경우(이 경우 TDD가 제공하는 TD는 중개자가 지원하는 변환된 네트워크 인터페이스를 설명함), 또는 웹 사물의 일부로 기존 장치(흔히 "브라운필드" 장치라고 부름)를 사용해야 하지만 장치 자체를 쉽게 수정하여 TD를 자체 호스팅할 수 없는 경우에 적절합니다.

TD는 장치 자체 또는 외부 에이전트에 의해 TDD에 등록될 수 있습니다. 브라운필드 장치의 경우에는 보통 외부 에이전트의 사용이 필요합니다.

[WOT-DISCOVERY]에서 정의된 탐색 메커니즘은 필수는 아니지만, 위 요구사항을 충족하도록 설계되었으며 이를 사용하면 상호운용성과 사용성이 향상됩니다.

7.5 WoT 바인딩 템플릿

단일 프로토콜이 모든 맥락에 적합하지 않기 때문에 IoT는 장치에 접근하기 위해 다양한 프로토콜을 사용합니다. 따라서 웹 사물의 중심 과제는 수많은 서로 다른 IoT 플랫폼(예: OMA LWM2M, OPC UA, oneM2M)과, 특정 표준을 따르지는 않지만 적합한 네트워크 프로토콜을 통해 자격 있는 인터페이스를 제공하는 장치와의 상호작용을 가능하게 하는 것입니다. WoT는 여러 제약을 충족해야 하는 프로토콜 바인딩을 통해 이러한 다양성을 다룹니다(6.7 프로토콜 바인딩 참조).

바인딩 템플릿은 애플리케이션 클라이언트(소비자)가 사물 기술을 사용하여 프로토콜(예: HTTP, MQTT, Modbus 등), 페이로드 형식(바이너리, JSON, CBOR, EXI 등), 그리고 IoT 플랫폼 맥락(예: ECHONET, OPC UA)에서의 사용에 관한 특정 메타데이터를 추출할 수 있다는 측면을 다룹니다. 이 메타데이터는 사물과의 상호작용을 설정하고 페이로드 메시지를 직렬화/역직렬화하기 위해 네트워크 구현 인터페이스에 전달될 수 있습니다. 이 맥락에서 바인딩 템플릿은 세 가지 종류의 바인딩, 즉 프로토콜 바인딩, 페이로드 형식 바인딩, 플랫폼 바인딩을 포함합니다.

비규범적 WoT 바인딩 템플릿 명세 [WOT-BINDING-TEMPLATES]는 서로 다른 전송 프로토콜, 콘텐츠 타입을 사용하거나, 특정 전송 프로토콜콘텐츠 타입 조합을 사용하는 서로 다른 IoT 플랫폼 또는 표준 (예: OCF, oneM2M, OMA LWM2M, OPC UA)인 여러 사물과 상호작용하는 방법에 대한 지침을 제공하는 청사진 모음을 제공합니다. 특정 IoT 장치 또는 플랫폼을 설명할 때, 해당 바인딩 템플릿을 사용하여 그 플랫폼을 지원하기 위해 사물 기술에 제공되어야 하는 통신 메타데이터를 조회할 수 있습니다.

바인딩 템플릿
그림 31 바인딩 템플릿에서 프로토콜 바인딩으로

그림 31바인딩 템플릿이 어떻게 사용되는지를 보여줍니다. 프로토콜, 미디어 타입 또는 플랫폼 바인딩을 기반으로 TD가 생성됩니다. TD를 처리하는 소비자는 해당 프로토콜 스택, 미디어 타입 인코더/디코더 또는 플랫폼 스택을 포함하고, 메시지의 직렬화 형식과 헤더 옵션처럼 TD에 제공된 정보에 따라 스택 (또는 그 메시지)을 구성함으로써 TD에 존재하는 필요한 바인딩 템플릿을 구현합니다.

바인딩 템플릿은 세 가지 차원에 걸쳐 있습니다:

7.6 WoT 스크립팅 API

WoT 스크립팅 APIW3C WoT의 선택적 "편의" 구성 요소로, 웹 브라우저 API와 유사한 ECMAScript 기반 API [ECMAScript]를 제공하여 IoT 애플리케이션 개발을 쉽게 합니다. 스크립팅 런타임 시스템을 WoT 런타임에 통합함으로써, WoT 스크립팅 API사물, 소비자중개자의 동작을 정의하는 이식 가능한 애플리케이션 스크립트를 사용할 수 있게 합니다.

전통적으로 IoT 장치 로직은 펌웨어로 구현되며, 이는 비교적 복잡한 업데이트 과정을 포함하여 임베디드 개발과 유사한 생산성 제약을 초래합니다. 반면 WoT 스크립팅 API는 IoT 애플리케이션을 위한 런타임 시스템에서 실행되는 재사용 가능한 스크립트로 장치 로직을 구현할 수 있게 합니다. 이는 웹 브라우저와 유사하며, 생산성을 향상하고 통합 비용을 줄이는 것을 목표로 합니다. 또한 표준화된 API는 애플리케이션 모듈의 이식성을 가능하게 합니다. 예를 들어 계산 집약적 로직을 장치에서 로컬 게이트웨이로 올리거나, 시간에 민감한 로직을 클라우드에서 게이트웨이 또는 에지 노드로 내릴 수 있습니다.

비규범적 WoT 스크립팅 API 명세 [WOT-SCRIPTING-API]는 스크립트가 WoT 사물 기술을 탐색하고, 소비하고, 노출할 수 있게 하는 프로그래밍 인터페이스의 구조와 알고리즘을 정의합니다. WoT 스크립팅 API의 런타임 시스템은 다른 사물과 그 상호작용 어포던스(속성, 액션, 및 이벤트)에 대한 인터페이스로 동작하는 로컬 객체를 인스턴스화합니다. 또한 스크립트가 사물을 노출할 수 있게 합니다. 즉, 상호작용 어포던스를 정의 및 구현하고 사물 기술을 게시할 수 있게 합니다.

7.7 WoT 보안 및 개인정보 보호 지침

보안은 횡단적 관심사이며 시스템 설계의 모든 측면에서 고려되어야 합니다. WoT 아키텍처에서 보안은 TD공개 보안 메타데이터 지원과 WoT 스크립팅 API 설계에서의 관심사 분리와 같은 특정한 명시적 기능으로 지원됩니다. 각 구성 요소의 명세에는 해당 구성 요소의 특정 보안 및 개인정보 보호 고려사항에 대한 논의도 포함됩니다. 또 다른 비규범적 명세인 WoT 보안 및 개인정보 보호 지침 [WOT-SECURITY]은 추가적인 횡단적 보안 및 개인정보 보호 지침을 제공합니다.

8. 추상 서비언트 아키텍처

이 절은 비규범적입니다.

6.10 WoT 시스템 구성 요소와 그 상호연결성에서 정의한 것처럼, 서비언트는 이전 절에서 제시한 WoT 구성 요소를 구현하는 소프트웨어 스택입니다. 서비언트사물을 호스트하고 노출하거나, 사물을 소비할 수 있습니다(즉, 소비자를 호스트할 수 있습니다). 프로토콜 바인딩에 따라 서비언트는 서버와 클라이언트 역할을 모두 수행할 수 있으며, 그래서 이러한 혼성어 이름이 붙었습니다.

이전 절은 WoT 구성 요소가 개념적으로 서로 어떻게 관련되는지, 그리고 그것들이 추상 WoT 아키텍처(6. 추상 WoT 시스템 아키텍처 참조)에 어떻게 대응하는지를 설명합니다. 이러한 개념을 구현할 때에는 특정 기술적 측면을 고려한 더 상세한 관점이 필요합니다. 이 절은 서비언트 구현의 상세 아키텍처를 설명합니다.

그림 32는 (선택적) WoT 스크립팅 API 구성 요소를 사용하는 서비언트 구현을 보여줍니다. 여기서 WoT 런타임은 WoT 고유 측면을 관리하는 것에 더해 애플리케이션 스크립트를 해석하고 실행하는 스크립팅 런타임 시스템이기도 합니다. 서비언트WoT 스크립팅 API를 지원하는 것은 보통 강력한 장치, 에지 노드 또는 클라우드에서 실행됩니다(c.f. 장치 범주). WoT 아키텍처는 WoT 런타임의 애플리케이션 대면 API를 JavaScript/ECMAScript로 제한하지 않습니다. 다른 런타임 시스템도 서비언트를 구현하는 데 사용할 수 있습니다.

8.8.1 네이티브 WoT API 절은 WoT 스크립팅 API 구성 요소가 없는 대체 서비언트 구현을 제시합니다. WoT 런타임은 애플리케이션 대면 API에 어떤 프로그래밍 언어든 사용할 수 있습니다. 보통 이는 서비언트 소프트웨어 스택의 네이티브 언어입니다. 예를 들어 임베디드 서비언트에는 C/C++, 클라우드 기반 서비언트에는 Java를 사용할 수 있습니다. 또한 애플리케이션 스크립트의 이점과 낮은 자원 소비를 결합하기 위해 Lua와 같은 대체 스크립팅 언어일 수도 있습니다.

아키텍처 구현
그림 32 WoT 스크립팅 API를 사용하는 서비언트 구현

그림 32에 표시된 각 모듈의 역할과 기능은 다음 절들에서 설명합니다.

8.1 동작 구현

동작사물의 전체 애플리케이션 로직을 정의하며, 여기에는 여러 측면이 있습니다:

여기에는 사물자율 동작 (예: 센서 샘플링 또는 액추에이터 제어 루프), 상호작용 어포던스를 위한 핸들러(즉, 어포던스가 활성화될 때 취해지는 구체적 동작), 소비자 동작(예: 사물 제어 또는 매시업 실현), 그리고 중개자 동작 (예: 단순히 사물을 프록시하거나 가상 엔터티를 합성하는 것)이 포함됩니다. 서비언트 내부의 동작 구현은 이 구성 요소에서 어떤 사물, 소비자, 및 중개자가 호스트되는지를 정의합니다.

그림 32는 선택적 WoT 스크립팅 API 구성 요소를 구현하는 서비언트를 묘사하며, 여기서 JavaScript [ECMAScript]로 작성된 이식 가능한 애플리케이션 스크립트가 동작을 정의합니다. 이러한 스크립트는 WoT 런타임의 일부인 스크립팅 런타임 시스템에 의해 실행됩니다(WoT 스크립팅 API 또는 다른 스크립트 기반 API를 제공할 때). 이들은 공통 WoT 스크립팅 API 정의에 맞춰 작성되므로 이식 가능하며, 따라서 이 구성 요소를 갖춘 어떤 서비언트에서도 실행될 수 있습니다. 이는 예를 들어 네트워킹 요구사항을 충족하기 위해 소비자를 클라우드에서 에지 노드로 이동하거나, 증가하는 자원 요구를 충족하기 위해 중개자를 클라우드로 이동하는 등, 시스템 구성 요소 사이에서 애플리케이션 로직을 이동할 수 있게 합니다. 이식 가능한 애플리케이션은 서비언트 배포 이후 추가 동작을 '설치'할 수 있게 합니다.

원칙적으로, 상호작용 어포던스가 외부에 WoT 인터페이스를 통해 제시되는 한, 어떤 프로그래밍 언어와 API도 사물의 동작을 정의하는 데 사용할 수 있습니다. 애플리케이션 대면 API와 프로토콜 스택 사이의 적응은 WoT 런타임이 처리합니다. WoT 스크립팅 API 구성 요소 없이 동작을 구현하는 방법은 8.8.1 네이티브 WoT API를 참조하십시오.

8.2 WoT 런타임

기술적으로, 사물 추상화와 그 상호작용 모델은 런타임 시스템에서 구현됩니다. 이 WoT 런타임은 동작 구현을 위한 실행 환경을 유지하고, 사물을 노출하거나 소비할 수 있으므로, WoT 사물 기술을 가져오고, 처리하고, 직렬화하고, 제공할 수 있어야 합니다.

모든 WoT 런타임은 동작 구현을 위한 애플리케이션 대면 인터페이스(즉, API)를 가집니다. 그림 32에 표시된 선택적 WoT 스크립팅 API 구성 요소는 사물 추상화를 따르고 런타임 중 애플리케이션 스크립트를 통해 동작 구현을 배포할 수 있게 하는 애플리케이션 대면 인터페이스를 정의합니다. 대체 API는 8.8.1 네이티브 WoT API를 참조하십시오. 이 API들은 컴파일 시간에만 사용 가능할 수도 있습니다. 일반적으로 애플리케이션 로직은 애플리케이션 코드가 WoT 런타임의 관리 측면, 특히 비공개 보안 데이터에 무단 접근하지 못하게 하는 샌드박스형 실행 환경에서 실행되어야 합니다. 다중 테넌트 서비언트에서는 서로 다른 테넌트가 권한 없이 서로의 데이터에 접근하지 못하도록 해야 합니다.

WoT 런타임사물의 생명주기, 더 정확히는 그 소프트웨어 추상화와 설명을 관리하기 위한 특정 작업을 제공해야 합니다. 생명주기 관리(LCM) 시스템은 이러한 생명주기 작업을 서비언트 내부에 캡슐화하고 내부 인터페이스를 사용하여 생명주기 관리를 실현할 수 있습니다. 이러한 작업의 세부 사항은 구현마다 다릅니다. WoT 스크립팅 API는 LCM 기능을 포함하므로, 이러한 시스템의 가능한 구현 중 하나를 나타냅니다.

WoT 런타임서비언트의 프로토콜 스택 구현과 인터페이스해야 합니다. 이는 동작 구현을 프로토콜 바인딩의 세부사항에서 분리하기 때문입니다. WoT 런타임은 보통 기반 시스템과도 인터페이스합니다. 예를 들어 연결된 센서와 액추에이터 같은 로컬 하드웨어에 접근하거나 저장소 같은 시스템 서비스에 접근하기 위해서입니다. 두 인터페이스 모두 구현별로 다르지만, WoT 런타임은 자신이 구현하는 사물 추상화에 필요한 적응을 제공해야 합니다.

8.3 WoT 스크립팅 API

WoT 스크립팅 API 구성 요소는 WoT 사물 기술 명세 [WOT-THING-DESCRIPTION]를 밀접하게 따르는 ECMAScript API를 정의합니다. 이는 동작 구현과 스크립팅 기반 WoT 런타임 사이의 인터페이스를 정의합니다. 웹 브라우저 API를 위한 jQuery와 유사하게, 그 위에 다른 더 단순한 API를 구현할 수 있습니다.

자세한 내용은 [WOT-SCRIPTING-API]를 참조하십시오.

8.4 노출된 사물 및 소비된 사물 추상화

WoT 런타임TD를 기반으로 사물의 소프트웨어 표현을 인스턴스화합니다. 이러한 소프트웨어 표현은 동작 구현을 향한 인터페이스를 제공합니다.

노출된 사물 추상화는 로컬에서 호스트되고 서비언트의 프로토콜 스택 구현을 통해 외부에서 접근 가능한 사물을 나타냅니다. 동작 구현은 그 메타데이터와 상호작용 어포던스를 정의하고 자율 동작을 제공함으로써 노출된 사물을 완전히 제어할 수 있습니다.

소비된 사물 추상화는 통신 프로토콜을 사용해 접근해야 하는, 소비자를 위한 원격 호스트 사물을 나타냅니다. 소비된 사물은 프록시 객체 또는 스텁입니다. 동작 구현은 그 메타데이터를 읽고 해당 TD에 설명된 대로 상호작용 어포던스를 활성화하는 것으로 제한됩니다. 소비된 사물은 로컬 하드웨어나 독점 또는 레거시 통신 프로토콜 뒤에 있는 장치와 같은 시스템 기능을 나타낼 수도 있습니다. 이 경우 WoT 런타임은 시스템 API와 소비된 사물 사이에 필요한 적응을 제공해야 합니다. 또한 예를 들어 애플리케이션 대면 API(예: WoT 스크립팅 API [WOT-SCRIPTING-API]에 정의된 discover() 메서드)를 통해 WoT 런타임이 제공하는 어떤 탐색 메커니즘이든 확장함으로써 해당 TD를 제공하고 동작 구현에서 사용할 수 있게 해야 합니다.

WoT 스크립팅 API를 사용할 때, 노출된 사물소비된 사물은 JavaScript 객체이며, 애플리케이션 스크립트가 이를 생성, 조작, 파괴할 수 있습니다. 그러나 예를 들어 다중 테넌트 서비언트에서는 보안 메커니즘을 통해 접근이 제한될 수 있습니다.

8.5 비공개 보안 데이터

사물과 상호작용하기 위한 비밀 키와 같은 비공개 보안 데이터도 개념적으로 WoT 런타임이 관리하지만, 의도적으로 애플리케이션에 직접 접근 가능하게 만들지 않습니다. 실제로 가장 안전한 하드웨어 구현에서는 이러한 비공개 보안 데이터가 별도의 격리된 메모리(예: 보안 처리 요소 또는 TPM)에 저장되며, 공격 표면을 제한하고 이 데이터의 외부 공개를 방지하는 추상 작업 집합(격리된 프로세서와 소프트웨어 스택으로 구현될 수도 있음)만 제공됩니다. 비공개 보안 데이터는 상호작용을 승인하고 무결성과 기밀성을 보호하기 위해 프로토콜 바인딩이 투명하게 사용합니다.

8.6 프로토콜 스택 구현

서비언트의 프로토콜 스택은 노출된 사물WoT 인터페이스를 구현하고, 소비자가 (소비된 사물을 통해) 원격 사물WoT 인터페이스에 접근하는 데 사용됩니다. 이는 네트워크를 통해 상호작용하기 위한 구체적 프로토콜 메시지를 생성합니다. 서비언트는 여러 프로토콜을 구현할 수 있으며, 따라서 서로 다른 IoT 플랫폼과의 상호작용을 가능하게 하기 위해 여러 프로토콜 바인딩을 지원할 수 있습니다.

표준 프로토콜이 사용되는 많은 경우, 일반 프로토콜 스택을 사용하여 플랫폼별 메시지를 생성할 수 있습니다 (예: HTTP(S) 방언용 하나, CoAP(S) 방언용 하나, MQTT 솔루션용 하나 등). 이 경우 사물 기술의 통신 메타데이터는 올바른 스택을 선택하고 구성하는 데 사용됩니다(예: 올바른 헤더 필드를 가진 HTTP 또는 올바른 옵션을 가진 CoAP). 미디어 타입 [RFC2046]으로 식별되는 예상 페이로드 표현 형식(JSON, CBOR, XML 등)을 위한 파서와 직렬화기도 이러한 일반 프로토콜 스택 전반에서 공유될 수 있습니다.

자세한 내용은 [WOT-BINDING-TEMPLATES]를 참조하십시오.

8.7 시스템 API

WoT 런타임 구현은 통신 프로토콜을 통해 접근 가능한 것처럼 사물 추상화를 통해 동작 구현에 로컬 하드웨어 또는 시스템 서비스를 제공할 수 있습니다. 이 경우 WoT 런타임은 동작 구현이 프로토콜 스택 대신 내부적으로 시스템과 인터페이스하는 소비된 사물을 인스턴스화할 수 있게 해야 합니다. 이는 애플리케이션 대면 WoT 런타임 API가 제공하는 탐색 메커니즘의 결과에, 로컬 WoT 런타임에서만 사용할 수 있는 이러한 시스템 사물을 나열함으로써 수행될 수 있습니다.

장치는 서비언트 외부에 물리적으로 존재하지만, 독점 프로토콜이나 WoT 인터페이스로 적합하지 않은 프로토콜을 통해 연결될 수도 있습니다 (6.7 프로토콜 바인딩 참조). 이 경우 WoT 런타임은 독점 API를 통해 이러한 프로토콜 (예: ECHONET Lite, BACnet, X10, I2C, SPI 등)을 사용하는 레거시 장치에 접근할 수 있지만, 다시 사물 추상화를 통해 이를 동작 구현에 노출하도록 선택할 수 있습니다. 그러면 서비언트는 레거시 장치로 가는 게이트웨이 역할을 할 수 있습니다. 이는 레거시 장치를 WoT 사물 기술을 사용하여 직접 설명할 수 없는 경우에만 수행해야 합니다.

동작 구현은 독점 API나 다른 수단을 통해 로컬 하드웨어 또는 시스템 서비스(예: 저장소)에 접근할 수도 있습니다. 그러나 이는 이식성을 저해하므로 W3C WoT 표준화의 범위를 벗어납니다.

8.8 대체 서비언트 및 WoT 구현

WoT 스크립팅 API 구성 요소는 선택 사항입니다. WoT 런타임이 어떤 프로그래밍 언어로든 작성될 수 있는 애플리케이션 로직을 위한 대체 API를 제공하는 대체 서비언트 구현도 가능합니다.

또한 W3C WoT를 알지 못하는 장치나 서비스도, 잘 구성된 WoT 사물 기술을 제공할 수 있다면 여전히 소비될 수 있습니다. 이 경우 TD는 블랙박스 구현을 가진 사물WoT 인터페이스를 설명합니다.

8.8.1 네이티브 WoT API

개발자가 WoT 스크립팅 API를 사용하지 않고 서비언트를 구현하기로 선택할 수 있는 이유는 여러 가지가 있습니다. 메모리나 계산 자원이 부족하여 필요한 소프트웨어 스택이나 완전한 기능을 갖춘 스크립팅 엔진을 사용할 수 없기 때문일 수 있습니다. 또는 사용 사례(예: 독점 통신 프로토콜)를 지원하기 위해 특정 프로그래밍 환경이나 언어를 통해서만 사용할 수 있는 특정 함수나 라이브러리를 사용해야 할 수도 있습니다.

이 경우에도 WoT 런타임을 사용할 수 있지만, WoT 스크립팅 API 대신 대체 애플리케이션 대면 인터페이스를 사용하여 동등한 추상화와 기능을 노출합니다. 후자를 제외하면, 8. 추상 서비언트 아키텍처의 모든 블록 설명은 그림 33에도 유효합니다.

네이티브 구현
그림 33 네이티브 WoT API를 사용하는 서비언트 구현

8.8.2 기존 장치를 위한 사물 기술

기존 IoT 장치나 서비스를 W3C 웹 사물에 통합하고, 이러한 장치나 서비스를 위한 사물 기술을 생성하여 사물로 사용할 수도 있습니다. 이러한 TD는 수동으로 만들거나 도구 또는 서비스를 통해 만들 수 있습니다. 예를 들어 다른 생태계 의존적 기계 판독 가능 형식이 제공하는 메타데이터를 자동 변환하는 서비스가 TD를 생성할 수 있습니다. 그러나 이는 대상 장치가 프로토콜 바인딩을 사용해 설명될 수 있는 프로토콜을 사용하는 경우에만 가능합니다. 이에 대한 요구사항은 6.7 프로토콜 바인딩에 제시되어 있습니다. 앞선 논의의 상당 부분은 또한 사물이 자체 사물 기술을 제공한다는 점을 암시합니다. 이는 유용한 패턴이지만 필수는 아닙니다. 특히 기존 장치를 수정하여 자체 사물 기술을 직접 제공하게 하는 것이 불가능할 수 있습니다. 이 경우 사물 기술은 디렉터리와 같은 서비스 또는 다른 외부의 별도 배포 메커니즘을 사용하여 별도로 제공되어야 합니다.

기존 구현
그림 34 기존 IoT 장치를 W3C WoT에 통합

9. WoT 배포 예

이 절은 비규범적입니다.

이 절은 사물소비자 역할을 구현하는 장치와 서비스가 다양한 구체적 토폴로지와 배포 시나리오에서 연결될 때, 웹 사물(Web of Things, WoT) 추상 아키텍처가 어떻게 인스턴스화될 수 있는지에 대한 여러 예를 제공합니다. 이러한 토폴로지와 시나리오는 규범적이지 않지만, WoT 추상 아키텍처에 의해 가능해지고 지원됩니다.

구체적 토폴로지를 논의하기 전에, 먼저 사물소비자가 WoT 네트워크에서 수행할 수 있는 역할과, 노출된 사물소비된 사물 소프트웨어 추상화와의 관계를 검토합니다. 노출된 사물소비된 사물은 각각 사물소비자 역할의 서비언트의 동작 구현 내부에서 사용할 수 있습니다.

9.1 사물 및 소비자 역할

사물 역할의 서비언트사물 기술 (TD)을 기반으로 노출된 사물을 생성합니다. TD는 게시되어 소비자 또는 중개자 역할에 있는 다른 서비언트가 사용할 수 있게 됩니다. TD는 여러 다른 방식으로 게시될 수 있습니다: TD는 사물 기술 디렉터리 서비스와 같은 관리 시스템에 등록될 수 있고, 또는 사물이 TD에 대한 요청을 수신하면 요청자에게 TD를 제공할 수 있습니다. 특정 애플리케이션 시나리오에서는 TD를 사물과 정적으로 연결하는 것도 가능합니다.

소비자 역할의 서비언트는 탐색 메커니즘을 사용하여 사물의 TD를 얻고, 얻은 TD를 기반으로 소비된 사물을 생성합니다. 구체적인 탐색 메커니즘은 개별 배포 시나리오에 따라 달라집니다. 예를 들어 사물 기술 디렉터리와 같은 관리 시스템, 탐색 프로토콜, 정적 할당 등을 통해 제공될 수 있습니다. 다른 곳에서 논의한 것처럼, 가능할 때마다 [WOT-DISCOVERY]에 정의된 탐색 메커니즘을 사용하는 것이 권장됩니다.

그러나 식별 가능한 개인과 연결된 장치를 설명하는 TD는 개인정보에 민감한 정보를 추론하는 데 사용될 가능성이 있다는 점에 유의해야 합니다. 따라서 이러한 TD의 배포에 대한 제약은 구체적인 TD 탐색 메커니즘에 포함되어야 합니다. 가능하다면 특정 사용 사례에 엄격히 필요하지 않은 경우 ID나 사람이 읽을 수 있는 정보를 필터링하는 등 TD에 노출되는 정보를 제한하기 위한 조치도 취해야 할 수 있습니다. 개인정보 보호 문제는 11. 개인정보 보호 고려사항에서 높은 수준으로 논의되며, 더 자세한 논의는 [WOT-THING-DESCRIPTION] 명세에 제시되어 있고 [WOT-DISCOVERY] 명세에서 다루어집니다.

연결된 센서 및 액추에이터와 상호작용하는 것과 같은 장치의 내부 시스템 기능도 선택적으로 소비된 사물 추상화로 표현될 수 있습니다.

소비된 사물이 지원하는 기능은 프로그래밍 언어 인터페이스를 통해 소비자의 동작 구현에 제공됩니다. WoT 스크립팅 API에서, 소비된 사물은 객체로 표현됩니다. 사물에서 실행되는 동작 구현 (즉, 애플리케이션 로직)은 노출된 사물이 제공하는 프로그래밍 언어 인터페이스를 사용하여 소비자상호작용 어포던스를 통해 관여할 수 있습니다.

사물은 반드시 물리적 장치를 나타낼 필요는 없습니다. 사물은 장치 모음이나 게이트웨이 또는 클라우드에서 실행되는 가상 서비스를 나타낼 수도 있습니다. 마찬가지로 소비자는 게이트웨이 또는 클라우드에서 실행되는 애플리케이션이나 서비스를 나타낼 수 있습니다. 소비자는 에지 장치에서도 구현될 수 있습니다. 중개자에서는 단일 서비언트가 단일 WoT 런타임을 공유하면서 사물소비자 역할을 동시에 수행합니다.

9.2 WoT 시스템의 토폴로지 및 배포 시나리오

이 절에서는 WoT 시스템의 다양한 토폴로지와 배포 시나리오를 논의합니다. 이는 예시 패턴일 뿐이며 다른 상호연결 토폴로지도 가능합니다. 여기서 설명하는 토폴로지는 웹 사물 사용 사례 및 요구사항 [WOT-USE-CASES-REQUIREMENTS]에서 도출되었습니다.

9.2.1 동일한 네트워크의 소비자와 사물

그림 35에 보인 가장 단순한 상호연결 토폴로지에서는 소비자사물이 동일한 네트워크에 있으며, 중개자 없이 서로 직접 통신할 수 있습니다. 이러한 토폴로지가 나타나는 사용 사례 중 하나는 소비자가 게이트웨이에서 실행되는 오케스트레이션 서비스 또는 다른 IoT 애플리케이션이고, 사물이 센서 또는 액추에이터와 인터페이스하는 장치인 경우입니다. 그러나 클라이언트/서버 관계는 쉽게 반대로 될 수도 있습니다. 클라이언트가 소비자 역할의 장치이고, 게이트웨이 또는 클라우드에서 사물로 실행되는 서비스에 접근할 수도 있습니다.

동일한 네트워크의 소비자와 사물
그림 35 동일한 네트워크의 소비자와 사물

사물이 클라우드에 있고 소비자가 로컬 네트워크에 있는 경우(스마트 홈 사용 사례의 예는 그림 1 참조), 실제 네트워크 토폴로지는 더 복잡할 수 있습니다. 예를 들어 NAT 통과가 필요하고 특정 형태의 탐색이 허용되지 않을 수 있습니다. 이러한 경우에는 뒤에서 논의하는 더 복잡한 토폴로지 중 하나가 더 적절할 수 있습니다.

9.2.2 중개자를 통해 연결된 소비자와 사물

중개자는 네트워크에서 사물소비자 역할을 모두 수행하며, 그 WoT 런타임 내부에서 노출된 사물소비된 사물 소프트웨어 추상화를 모두 지원합니다. 중개자는 장치와 네트워크 사이의 프록시에 사용되거나 디지털 트윈에 사용될 수 있습니다.

9.2.2.1 프록시 역할을 하는 중개자

중개자의 간단한 적용 중 하나는 사물을 위한 프록시입니다. 중개자가 프록시로 동작할 때, 이는 두 개의 별도 네트워크 또는 프로토콜에 대한 인터페이스를 가집니다. 여기에는 TLS 엔드포인트 제공과 같은 추가 보안 메커니즘 구현이 포함될 수 있습니다. 일반적으로 프록시는 상호작용의 집합을 수정하지 않으므로, 중개자가 노출하는 TD는 소비된 TD와 동일한 상호작용을 가지지만 연결 메타데이터는 수정됩니다.

이 프록시 패턴을 구현하기 위해 중개자사물의 TD를 얻고 소비된 사물을 생성합니다. 이는 동일한 상호작용 어포던스를 가지는 소프트웨어 구현으로서 사물의 프록시 객체를 생성합니다. 그런 다음 새 식별자와, 가능하다면 새로운 통신 메타데이터(프로토콜 바인딩) 및/또는 새로운 공개 보안 메타데이터를 가진 프록시 객체용 TD를 생성합니다. 마지막으로 이 TD를 기반으로 노출된 사물이 생성되고, 중개자는 적절한 게시 메커니즘을 통해 다른 소비자 또는 중개자에게 TD를 알립니다.

프록시 역할을 하는 중개자를 통해 연결된 소비자와 사물
그림 36 프록시 역할을 하는 중개자를 통해 연결된 소비자와 사물
9.2.2.2 디지털 트윈 역할을 하는 중개자

더 복잡한 중개자디지털 트윈으로 알려질 수 있습니다. 디지털 트윈은 프로토콜을 수정하거나 네트워크 간 변환을 할 수도 있고 하지 않을 수도 있지만, 상태 캐싱, 지연 업데이트, 또는 대상 장치 동작의 예측 시뮬레이션과 같은 추가 서비스를 제공합니다. 예를 들어 IoT 장치의 전력이 제한되어 있다면, 비교적 드물게 깨어나 디지털 트윈과 동기화한 뒤 즉시 다시 절전 상태로 들어가도록 선택할 수 있습니다. 이 경우 일반적으로 디지털 트윈은 전력 제약이 더 적은 장치(예: 클라우드 또는 게이트웨이)에서 실행되며(c.f. 장치 범주), 제한 장치를 대신하여 상호작용에 응답할 수 있습니다. 속성의 현재 상태에 대한 요청도 캐시된 상태를 사용하여 디지털 트윈이 충족할 수 있습니다. 대상 IoT 장치가 절전 상태일 때 도착하는 요청은 큐에 저장되었다가 장치가 깨어날 때 전송될 수 있습니다. 이 패턴을 구현하려면 중개자, 즉 디지털 트윈이 장치가 언제 깨어 있는지 알아야 합니다. 장치를 사물로 구현할 때는 이를 위한 알림 메커니즘을 포함해야 할 수 있습니다. 이는 별도의 소비자/사물 쌍을 사용하거나, 이를 위해 이벤트 상호작용을 사용하여 구현할 수 있습니다.

9.2.3 클라우드 서비스에서 제어되는 로컬 네트워크의 장치

스마트 홈 사용 사례에서, 홈 네트워크에 연결된 장치(센서 및 가전제품)는 종종 클라우드 서비스에 의해 모니터링되고, 경우에 따라 제어되기도 합니다. 일반적으로 장치가 연결된 홈 네트워크와 클라우드 사이에는 NAT 장치가 있습니다. NAT 장치는 IP 주소를 변환하고, 종종 연결을 선택적으로 차단하는 방화벽 서비스도 제공합니다. 로컬 장치와 클라우드 서비스는 통신이 게이트웨이를 성공적으로 통과할 수 있는 경우에만 서로 통신할 수 있습니다.

ITU-T 권고 Y.4409/Y.2070 [Y.4409-Y.2070] 에서 채택된 전형적인 구조는 그림 37에 보입니다. 이 구조에는 로컬 및 원격 중개자가 모두 있습니다. 로컬 중개자는 여러 사물상호작용 어포던스를 하나의(또는 일련의) 노출된 사물로 집계하며, 이는 모두 공통 프로토콜(예: HTTP, 모든 상호작용을 공통 기반 서버와 단일 포트를 사용하는 단일 URL 네임스페이스에 매핑)로 매핑될 수 있습니다. 이는 로컬 중개자가 NAT 장치를 통과할 수 있는 수렴된 프로토콜을 사용했고 이 서비스를 인터넷에 노출할 방법(STUN, TURN, 동적 DNS 등)을 가지고 있다고 가정할 때, 원격 중개자가 NAT 장치 뒤의 모든 사물에 접근하는 간단한 방법을 제공합니다. 또한 로컬 중개자는 사물 프록시로 기능할 수 있으므로, 연결된 사물이 각각 다른 프로토콜(HTTP, MQTT, CoAP 등) 및/또는 서로 다른 생태계 관례 집합을 사용하더라도, 노출된 사물은 이를 단일 프로토콜로 수렴하여 소비자사물이 사용하는 다양한 프로토콜을 알 필요가 없도록 할 수 있습니다.

그림 37에는 NAT 경계 뒤에 있는 서비스를 집계하고 추가적인 프로토콜 변환 또는 보안 서비스를 제공할 수 있는 원격 중개자에 연결된 두 클라이언트가 있습니다. 특히 로컬 중개자가 용량이 제한된 네트워크에 있을 수 있으며, 해당 서비스를 모든 사용자에게 직접 제공하는 것은 실현 가능하지 않을 수 있습니다. 이 경우 로컬 중개자에 대한 접근은 원격 중개자에게만 제공됩니다. 그런 다음 원격 중개자는 더 일반적인 접근 제어 메커니즘을 구현하고, 과도한 트래픽으로부터 소비자를 보호하기 위해 캐싱이나 스로틀링도 수행할 수 있습니다. 이러한 소비자도 공개 인터넷에 적합한 단일 프로토콜 (예: HTTPS)을 사용하여 중개자와 통신하므로, 클라이언트 개발이 훨씬 단순해집니다.

이 토폴로지에서는 소비자와 사물 사이에 NAT 및 방화벽 기능이 있지만, 로컬 및 원격 중개자가 함께 작동하여 방화벽을 통해 모든 통신을 터널링하므로, 소비자와 사물은 방화벽에 대해 아무것도 알 필요가 없습니다. 쌍을 이룬 중개자는 접근 제어와 트래픽 관리를 제공함으로써 홈 장치도 보호합니다.

클라우드 애플리케이션
그림 37 쌍을 이룬 중개자를 통해 사물로 구현된 로컬 장치에 연결된 소비자로 구현된 클라우드 애플리케이션

더 어려운 경우에는 NAT 및 방화벽 통과가 그림에 보인 것과 정확히 같이 작동하지 않을 수 있습니다. 특히 ISP가 공개적으로 접근 가능한 주소를 지원하지 않거나, STUN/TURN 및/또는 동적 DNS가 지원되지 않거나 사용 불가능할 수 있습니다. 이 경우 중개자는 초기 연결을 설정하기 위해 그들 사이의 클라이언트/서버 역할을 대신 반대로 할 수 있습니다(로컬 중개자가 먼저 클라우드의 원격 중개자에 연결). 그런 다음 한 쌍의 중개자는 예를 들어 연결을 보호하기 위해 TLS를 사용하는 Secure WebSocket을 사용하여 터널을 설정할 수 있습니다. 그런 다음 이 터널을 사용하여 사용자 정의 프로토콜로 중개자 사이의 모든 통신을 인코딩할 수 있습니다. 이 경우 초기 연결은 여전히 표준 포트를 사용하는 HTTPS를 통해 이루어질 수 있으며, 로컬 중개자에서 원격 중개자로의 연결은 일반 브라우저/웹 서버 상호작용과 동일합니다. 이는 대부분의 홈 방화벽을 통과할 수 있어야 하며, 연결이 나가는 방향이므로 네트워크 주소 변환도 문제가 되지 않습니다. 그러나 사용자 정의 터널링 프로토콜이 필요하더라도, 원격 중개자는 여전히 이 사용자 정의 프로토콜을 표준 외부 프로토콜로 다시 변환할 수 있습니다. 연결된 소비자사물은 이에 대해 알 필요가 없습니다. 또한 이 예를 NAT 경계의 양쪽에 사물소비자가 모두 연결될 수 있는 사용 사례로 확장하는 것도 가능합니다. 그러나 이 경우도 두 중개자 사이에 양방향 터널이 설정되어야 합니다.

9.2.4 사물 기술 디렉터리를 사용한 탐색

로컬 장치(및 가능하면 서비스)가 클라우드상의 서비스에 의해 모니터링되거나 제어될 수 있게 되면, 그 위에 다양한 추가 서비스를 구축할 수 있습니다. 예를 들어 클라우드 애플리케이션은 수집된 데이터의 분석을 기반으로 장치의 동작 조건을 변경할 수 있습니다.

그러나 원격 중개자가 클라이언트 애플리케이션을 서비스하는 클라우드 플랫폼의 일부인 경우, 클라이언트는 예를 들어 연결된 장치의 디렉터리에 접근함으로써 장치 정보를 찾을 수 있어야 합니다. 아래 그림에서는 단순성을 위해 모든 로컬 장치가 사물로 구현되고, 모든 클라우드 애플리케이션이 소비자로 구현된다고 가정했습니다. 사물로 구현된 로컬 장치의 메타데이터를 클라우드 애플리케이션에서 사용할 수 있게 하기 위해, 그 메타데이터를 사물 기술 디렉터리 서비스에 등록할 수 있습니다. 이 메타데이터는 구체적으로 원격 중개자가 제공하는 공개 보안 메타데이터와 통신 메타데이터(프로토콜 바인딩)를 반영하도록 수정된 로컬 장치의 TD입니다. 그러면 클라이언트 애플리케이션은 사물 기술 디렉터리를 쿼리하여 자신의 기능을 달성하기 위해 로컬 장치와 통신하는 데 필요한 메타데이터를 얻을 수 있습니다.

클라우드 디렉터리
그림 38 사물 기술 디렉터리를 포함한 클라우드 서비스

그림에 표시되지 않은 더 복잡한 상황에서는 사물로 동작하는 클라우드 서비스도 있을 수 있습니다. 이들도 사물 기술 디렉터리에 자신을 등록할 수 있습니다. 사물 기술 디렉터리는 웹 서비스이므로, NAT 또는 방화벽 장치를 통해 로컬 장치에 보여야 하며, 그 인터페이스도 자체 TD와 함께 제공될 수 있습니다. 소비자로 동작하는 로컬 장치는 그런 다음 사물 기술 디렉터리를 통해 클라우드의 사물을 탐색하고, 예를 들어 프로토콜 변환이 필요한 경우 로컬 중개자를 통해 또는 직접 사물에 연결할 수 있습니다.

9.2.5 여러 도메인에 걸친 서비스 간 연결

서로 다른 IoT 플랫폼에 기반한 여러 클라우드 생태계는 함께 동작하여 더 큰 시스템-오브-시스템 생태계를 만들 수 있습니다. 앞서 논의한 클라우드 애플리케이션 생태계 구조를 바탕으로, 아래 그림은 두 생태계가 서로 연결되어 시스템-오브-시스템을 형성하는 모습을 보여줍니다. 한 생태계의 클라이언트 (즉, 아래의 소비자 A)가 다른 생태계의 서버(즉, 아래의 사물 B)를 사용해야 하는 경우를 고려해 보십시오. 이러한 교차 생태계 애플리케이션-장치 통합을 달성하는 메커니즘은 둘 이상입니다. 아래에서는 이를 어떻게 달성할 수 있는지 보여주기 위해 각각 그림을 사용하여 두 가지 메커니즘을 설명합니다.

9.2.5.1 사물 기술 디렉터리 동기화를 통한 연결

그림 39에서 사물 기술 디렉터리의 두 인스턴스는 정보를 동기화하며, 이를 통해 소비자 A가 사물 기술 디렉터리 A를 통해 사물 B의 정보를 얻을 수 있습니다. 이전 절에서 설명한 것처럼, 원격 중개자 B는 사물 B의 섀도 구현을 유지합니다. 이 섀도 장치의 TD를 얻음으로써, 소비자 A는 원격 중개자 B를 통해 사물 B를 사용할 수 있습니다.

서비스 동기화 디렉터리
그림 39 사물 기술 디렉터리 동기화를 통한 여러 클라우드 연결
9.2.5.2 프록시 동기화를 통한 연결

그림 40에서 두 원격 중개자는 장치 정보를 동기화합니다. 원격 중개자 B에서 사물 B의 섀도가 생성되면, 섀도의 TD가 동시에 원격 중개자 A로 동기화됩니다. 이어서 원격 중개자 A는 사물 B에 대한 자체 섀도를 생성하고, TD를 사물 기술 디렉터리 A에 등록합니다. 이 메커니즘에서는 사물 기술 디렉터리 서비스 사이의 동기화가 필요하지 않습니다.

서비스 동기화 중개자
그림 40 중개자 동기화를 통한 여러 클라우드 연결

10. 보안 고려사항

보안은 모든 WoT 구성 요소와 WoT 구현에서 고려되어야 하는 횡단적 문제입니다. 이 장은 구체적 WoT 구현의 보안을 유지하는 데 도움이 되는 몇 가지 일반적인 문제와 지침을 요약합니다. 그러나 이는 일반 지침일 뿐이며, 이 문서에서 설명하는 것과 같은 추상 아키텍처 자체가 보안을 보장할 수는 없습니다. 대신 구체적 구현의 세부 사항을 고려해야 합니다. 보안(및 개인정보 보호) 문제에 대한 더 상세하고 완전한 분석은 WoT 보안 및 개인정보 보호 지침 문서 [WOT-SECURITY]를 참조하십시오.

전반적으로 WoT의 목표는 보안을 포함하여 IoT 장치와 서비스의 기존 접근 메커니즘과 속성을 설명하는 것입니다. 일반적으로 W3C WoT는 무엇을 구현해야 하는지를 규정하기보다 존재하는 것을 설명하도록 설계되었습니다. 기존 시스템에 대한 설명은 그 시스템의 보안 동작이 이상적이지 않더라도 해당 시스템을 정확하게 설명해야 합니다. 시스템의 보안 취약점에 대한 명확한 이해는 보안 완화를 지원합니다. 물론 그러한 데이터는 이를 악의적으로 악용할 수 있는 사람들에게 배포될 필요가 없습니다.

그러나 특히 새로운 시스템의 경우 WoT 아키텍처는 모범 사례의 사용을 가능하게 해야 합니다. 일반적으로 WoT 보안 아키텍처는 연결되는 IoT 프로토콜과 시스템의 목표 및 메커니즘을 지원해야 합니다. 이러한 시스템은 보안 요구사항과 위험 허용도가 서로 다르므로, 보안 메커니즘도 이러한 요인에 따라 달라집니다.

IoT 장치는 자율적으로 작동해야 하며, 많은 경우 안전에 중요한 시스템을 제어할 수 있으므로 보안은 IoT 도메인에서 특히 중요합니다. IoT 장치는 IT 시스템과 서로 다르고 경우에 따라 더 높은 위험에 노출됩니다. 또한 IoT 시스템이 다른 컴퓨터 시스템에 대한 공격을 시작하는 데 사용되지 않도록 보호하는 것도 중요합니다.

일반적으로 보안은 보장될 수 없습니다. WoT가 안전하지 않은 시스템을 안전한 시스템으로 바꾸는 것은 불가능합니다. 그러나 WoT 아키텍처는 해를 끼치지 않아야 합니다. 즉, 자신이 설명하고 지원하는 시스템만큼은 최소한 보안을 지원해야 합니다.

10.1 WoT 사물 기술 위험

WoT 사물 기술(TD)에 포함된 메타데이터는 잠재적으로 민감할 수 있습니다. 모범 사례로서 TD는 적절한 무결성 보호 메커니즘 및 접근 제어 정책과 함께 사용되어야 하며, 권한 있는 사용자에게만 제공하는 것을 목표로 해야 합니다.

이러한 사항에 대한 추가 세부사항과 논의는 WoT 사물 기술 명세의 개인정보 보호 고려사항 절을 참조하십시오.

10.1.1 사물 기술 비공개 보안 데이터 위험

TD는 오직 공개 보안 메타데이터만 전달하도록 설계되었습니다. TD 명세에 정의된 내장 TD 보안 스킴은 의도적으로 비공개 보안 데이터의 인코딩을 지원하지 않습니다. 그러나 사람이 읽을 수 있는 설명과 같은 다른 필드가 이러한 정보를 인코딩하는 데 오용되거나, 이러한 정보를 인코딩하는 새로운 보안 스킴이 확장 메커니즘을 통해 정의되고 배포될 위험이 있습니다.

완화:
공개 보안 메타데이터비공개 보안 데이터는 엄격하게 분리되어야 SHOULD 합니다. 인증과 권한 부여는 별도로 관리되는 비공개 보안 데이터를 기반으로 설정되어야 SHOULD 합니다. TD의 생산자TD비공개 보안 데이터가 포함되지 않도록 보장해야 MUST 합니다.

10.1.2 사물 기술 통신 메타데이터 위험

보안 메커니즘의 모범 사례 구성이 없으면 IoT 장치와의 통신은 가로채기나 침해의 위험이 더 커집니다.

완화:
WoT와 함께 사용되는 IoT 플랫폼에 대한 통신 보안 메타데이터는 해당 IoT 플랫폼의 모범 사례에 따라 구성하십시오. 가능한 경우 TD 생성자는 WoT 바인딩 템플릿에 제공된 검증된 통신 메타데이터를 사용해야 SHOULD 합니다. WoT 바인딩 템플릿에서 다루지 않는 IoT 플랫폼을 위한 TD를 생성할 때, TD 생성자는 해당 IoT 플랫폼의 모든 보안 요구사항이 충족되도록 보장해야 SHOULD 합니다.

10.2 WoT 스크립팅 API 위험

WoT 런타임 구현과 WoT 스크립팅 API는 시스템에 대한 악의적 접근을 방지하고, 다중 테넌트 서비언트에서 스크립트를 격리하는 메커니즘을 가져야 합니다. 더 구체적으로, WoT 런타임 구현은 WoT 스크립팅 API와 함께 사용될 때 다음 보안 및 개인정보 보호 위험을 고려하고 권장 완화책을 구현해야 합니다.

일반적으로 이러한 위험과 완화책은 WoT 스크립팅 API뿐만 아니라 WoT 시스템을 위한 프로그래밍 가능한 동작을 지원하는 모든 시스템에도 적용되어야 합니다.

10.2.1 교차 스크립트 보안 위험

기본 WoT 설정에서는 WoT 런타임 내부에서 실행되는 모든 스크립트가 제조업체가 배포한 신뢰할 수 있는 것으로 간주되므로, 스크립트 인스턴스를 서로 강하게 격리할 필요가 없습니다. 그러나 장치 기능, 배포 사용 사례 시나리오 및 위험 수준에 따라 그렇게 하는 것이 바람직할 수 있습니다. 예를 들어 한 스크립트가 민감한 데이터를 처리하고 충분히 감사되었다면, 동일한 시스템 내부의 다른 스크립트가 런타임 중 침해될 경우 데이터 노출 위험을 최소화하기 위해 이를 나머지 스크립트 인스턴스와 분리하는 것이 바람직할 수 있습니다. 또 다른 예는 단일 WoT 장치에서 서로 다른 테넌트가 공존하는 경우입니다. 이 경우 각 WoT 런타임 인스턴스는 서로 다른 테넌트를 호스트하게 되며, 테넌트가 권한 없이 서로의 데이터에 접근하지 못하도록 방지하는 것이 일반적으로 필요합니다.

완화:
WoT 런타임은 스크립트가 민감한 데이터를 처리하는 경우 스크립트 인스턴스와 그 데이터를 서로 격리해야 SHOULD 합니다. 마찬가지로 WoT 장치에 둘 이상의 테넌트가 있는 경우, WoT 런타임 구현은 WoT 런타임 인스턴스와 그 데이터를 서로 격리해야 SHOULD 합니다. 실제로 스크립트와 런타임 인스턴스의 상호 격리는 모든 인스턴스를 환경의 나머지 부분에 대한 접근을 제어하는 "샌드박스" 환경에서 실행함으로써 달성할 수 있습니다. 자세한 내용은 WoT 보안 및 개인정보 보호 지침 명세 [WOT-SECURITY]의 WoT 서비언트 단일 테넌트 WoT 서비언트 다중 테넌트 절을 참조하십시오.

10.2.2 물리적 장치 직접 접근 위험

스크립트가 침해되거나 오작동하는 경우, 스크립트가 직접 노출된 네이티브 장치 인터페이스를 사용할 수 있다면 기반 물리적 장치(및 잠재적으로 주변 환경)가 손상될 수 있습니다. 그러한 인터페이스에 입력에 대한 안전 점검이 없다면 기반 물리적 장치(또는 환경)를 안전하지 않은 상태로 만들 수 있습니다.

완화:

스크립트가 침해된 경우 물리적 WoT 장치에 발생하는 손상을 줄이기 위해, 특정 스크립트에 노출되거나 접근 가능한 인터페이스의 수를 그 기능에 기반하여 최소화하는 것이 중요합니다. WoT 런타임은 저수준 장치 하드웨어 인터페이스를 스크립트 개발자에게 직접 노출해서는 안 SHOULD NOT 됩니다.

하드웨어 추상화 계층은 추가적인 보호 수준을 제공할 수 있습니다. 하드웨어 추상화 계층은 애플리케이션과 하드웨어 사이의 상호작용을 중재하는 소프트웨어 구성 요소이며, 단순한 소프트웨어 라이브러리일 수 있습니다. 그러나 더 정교한 구현은 시스템 호출을 통해 접근 가능한 드라이버로 구현되거나 하이퍼바이저에 의해 지원될 수 있습니다. 더 정교한 하드웨어 추상화 계층은 애플리케이션이 이를 우회하지 못하게 할 수 있습니다. WoT 런타임 구현은 저수준 장치 하드웨어 인터페이스에 접근하기 위한 하드웨어 추상화 계층을 제공해야 SHOULD 합니다. 하드웨어 추상화 계층은 장치(또는 환경)를 안전하지 않은 상태로 만들 수 있는 명령 실행을 거부해야 합니다. 이러한 "소프트웨어 인터록"은 시스템이 안전하지 않은 상태로 들어가는 것을 방지하는 유일한 메커니즘이어서는 안 됩니다. 이상적으로는 소프트웨어 및 하드웨어 인터록을 모두 포함하는 여러 계층의 안전 제어가 사용되어야 합니다.

10.3 WoT 런타임 위험

10.3.1 프로비저닝 및 업데이트 보안 위험

WoT 런타임 구현이 제조 이후 자체, 스크립트 또는 관련 데이터(보안 자격 증명 포함)의 프로비저닝이나 업데이트를 지원하는 경우, 이는 주요 공격 벡터가 될 수 있습니다. 공격자는 업데이트 또는 프로비저닝 과정에서 위에 설명한 어떤 요소든 수정하려 하거나, 공격자의 코드와 데이터를 직접 프로비저닝하려 할 수 있습니다.

완화:
제조 이후 스크립트, WoT 런타임 자체 또는 관련 데이터의 프로비저닝이나 업데이트는 안전한 방식으로 수행되어야 SHOULD 합니다. 보안 업데이트와 제조 이후 프로비저닝을 위한 권장사항 집합은 WoT 보안 및 개인정보 보호 지침 명세 [WOT-SECURITY]에서 찾을 수 있습니다.

10.3.2 보안 자격 증명 저장 위험

일반적으로 WoT 런타임은 네트워크에서 동작하기 위해 WoT 장치에 프로비저닝된 보안 자격 증명을 저장해야 합니다. 공격자가 이러한 자격 증명의 기밀성이나 무결성을 침해할 수 있다면, 자산에 접근하거나, 다른 WoT 사물, 장치 또는 서비스를 사칭하거나, 서비스 거부(DoS) 공격을 시작할 수 있습니다.

완화:
WoT 런타임은 프로비저닝된 모든 보안 자격 증명을 안전하게 저장하여 그 무결성과 기밀성을 보장해야 SHOULD 합니다. 단일 WoT 지원 장치에 둘 이상의 테넌트가 있는 경우, WoT 런타임 구현은 각 테넌트의 프로비저닝된 보안 자격 증명을 다른 테넌트로부터 격리해야 SHOULD 합니다. 프로비저닝된 보안 자격 증명이 침해될 위험을 최소화하기 위해, WoT 런타임 구현은 스크립트가 프로비저닝된 보안 자격 증명을 조회할 수 있는 API를 노출해서는 안 SHOULD NOT 됩니다. 그러한 자격 증명(또는 더 바람직하게는 자격 증명을 노출하지 않으면서 이를 사용하는 추상 작업)은 이를 사용하는 기반 프로토콜 구현에만 접근 가능해야 SHOULD 합니다.

10.4 신뢰할 수 있는 환경 위험

5. 일반적인 배포 패턴 절에서는 신뢰할 수 있는 환경과 보안 경계의 개념을 포함하는 여러 사용 시나리오가 제시됩니다. 신뢰할 수 있는 환경의 구성원인 엔터티는 모두 공통 리소스 집합(예: 로컬 네트워크)에 대한 접근을 공유하며, 서로에게 특정 접근 권한이 암묵적으로 부여됩니다. 일반적인 예는 가정의 WiFi LAN으로, WEP 비밀번호에 접근하면 장치가 추가 접근 제어 없이 서로 통신할 수 있습니다. 이처럼 암묵적 접근 권한을 허용하고 많은 수의 엔터티에 단일 공유 비밀을 사용하는 것은, 신뢰할 수 있는 환경에 접근할 수 있는 단일 악의적 행위자가 심각한 피해를 일으킬 수 있음을 의미합니다.

일반적인 IoT 상황 중 하나는 가정 환경에서 로컬로 호스팅되는 웹 서비스에 접근하기 위해 HTTP/HTML 브라우저를 사용하는 것입니다. 이러한 로컬 호스팅 웹 서비스는 공개적으로 보이는 URL을 갖지 않을 수 있으므로, 브라우저가 HTTP/TLS(HTTPS)를 사용할 수 있도록 기대하는 CA 시스템에 참여할 수 없습니다. 이 상황에서는 일반 HTTP가 사용되고, 통신을 보호하는 유일한 보안이 예를 들어 비교적 약한 WEP와 같은 네트워크 암호화뿐인 경우가 많습니다.

완화:
신뢰 관계는 가능한 한 제한되어야 SHOULD 하며, 이상적으로는 쌍별이고 정확히 필요한 접근으로 제한되어야 합니다. 앞서 언급했듯이, 일부 상황에서는 이를 관리하기 어렵고 설명한 것과 같은 암묵적 접근이 사용되며, 브라우저와 같은 특정 엔터티에서는 이를 가정할 수도 있습니다. 공통 네트워크에 대한 접근을 통한 암묵적 접근 제어의 경우, 세분화된 네트워크가 사용되어야 SHOULD 합니다. 예를 들어 가정 환경에서는 IoT 장치를 위한 별도 네트워크를 사용할 수 있습니다. 상업 및 산업 환경에서는 브라우저가 TLS를 사용하면서 로컬 서비스에 접근할 수 있도록 인증서를 명시적으로 설치해야 합니다. 인증서는 안전한 인증을 지원하며 TLS를 활성화하는 데 필요합니다. TLS가 활성화되면 API 키나 비밀번호처럼 안전한 전송을 가정하는 다른 보안 메커니즘을 사용하여 세밀한 접근 제어를 제공할 수 있습니다. 많은 수의 서비스에 단일 키를 사용하는 것은 위의 "암묵적 접근" 상황과 동일하다는 점에 유의하십시오.

10.5 보안 전송

10.4 신뢰할 수 있는 환경 위험에서 언급했듯이, 가정 내 로컬 LAN과 같이 TLS 같은 보안 전송이 실현 가능하지 않거나 설정하기 어려운 상황이 있습니다. 안타깝게도 일반적으로 HTTP의 접근 제어 메커니즘은 보안 전송과 함께 사용되도록 설계되어 있으며, 보안 전송 없이는 쉽게 우회될 수 있습니다. 특히 제3자가 가로챌 수 있는 암호화되지 않은 프로토콜 상호작용에서 비밀번호와 토큰을 포착하는 것은 비교적 쉽습니다. 또한 TLS가 서버 인증을 제공하지 않으면 중간자 공격도 쉽게 구현될 수 있습니다.

완화:

모든 상황에서 보안 전송을 설정하는 데 실무적 어려움이 있으므로, 항상 필요하다는 포괄적 단언을 할 수는 없습니다. 대신 서로 다른 사용 사례에 대한 요구사항 집합을 제공합니다:

공개 네트워크:
사물이 공용 인터넷에서 누구나 어디서든 접근할 수 있도록 제공되는 경우, TLS 또는 DTLS와 같은 보안 전송으로 보호되어야 MUST 합니다. 공용 인터넷에서 사용할 수 있는 사물은 공개 URL을 가지므로 인증서를 제공하기 위한 일반 CA 메커니즘을 사용할 수 있습니다. 엔드포인트에 접근 제어가 없는 경우, 예를 들어 공개 접근 가능한 서비스를 제공하는 경우에도 이는 수행되어야 합니다. 보안 전송은 요청자의 개인정보(예: 쿼리 내용)도 보호하기 때문입니다.
사설 네트워크:
사물이 사설 네트워크에서 제공되는 경우, TLS 또는 DTLS와 같은 보안 전송으로 보호되어야 SHOULD 합니다. 보호되는 데이터의 민감도, 피해 가능성, 그리고 사설 네트워크에 접근 권한을 부여받은 사람의 수가 증가할수록 위험도 증가합니다. 공장 네트워크와 같은 고위험 상황에서는 보안 전송의 우선순위가 더 높으며, 이러한 경우 사전 공유 키를 설치하는 것도 더 실용적입니다. 저위험 상황에서는 다음이 허용됩니다: 방화벽으로 보호되는 LAN과 같은 사설 네트워크는 네트워크 보안에만 의존하는 신뢰할 수 있는 환경 접근 방식을 사용할 MAY 수 있습니다. 이는 일반적으로 권장되지 않지만 실무적 이유로 필요할 수 있습니다. 이 접근 방식의 추가 위험과 완화책은 참조된 보안 고려사항을 참조하십시오.
브라운필드 장치:
WoT는 설명적이며, 기존 "브라운필드" 장치에 대한 정확한 설명은 해당 장치가 안전하지 않음을 드러낼 수 있습니다. 예를 들어 특정 장치는 TLS 없이 HTTP를 사용할 수 있으며, 이는 비밀번호와 같은 접근 제어를 사용하더라도 안전하지 않습니다. 이러한 장치를 더 강한 보안을 지원하도록 업그레이드하는 것은 종종 불가능합니다. 이러한 경우 위의 두 가지 완화책은 여전히 적용됩니다. 사설 네트워크에 노출되는 경우, 접근을 가능한 한 제한하면서 신뢰할 수 있는 환경 접근 방식을 사용해야 합니다. 이러한 장치를 공용 인터넷에 노출하려는 경우, 보안을 강화하기 위한 추가 조치를 취해야 합니다. 특히 공개 네트워크를 통한 통신이 보안 전송을 사용하도록 프록시를 사용할 수 있습니다. 프록시는 접근 제어를 제공하는 데에도 사용할 수 있습니다.

TCP를 통한 보안 전송이 적절한 경우, 최소한 TLS 1.3 [RFC8446]이 사용되어야 SHOULD 합니다. 호환성 이유로 TLS 1.3을 사용할 수 없지만 TCP를 통한 보안 전송이 적절한 경우, TLS 1.2 [RFC5246]를 사용할 MAY 수 있습니다. UDP를 통한 보안 전송이 적절한 경우에는 가능하다면 최소한 DTLS 1.3 [RFC9147]이 권장됩니다. 호환성 이유로 DTLS 1.3을 사용할 수 없지만 UDP를 통한 보안 전송이 적절한 경우, DTLS 1.2 [RFC6347]를 사용할 MAY 수 있습니다. 1.2보다 이전 버전의 DTLS 또는 TLS는 신규 개발에 사용되어서는 MUST NOT 안 됩니다. 이전 버전의 TLS 또는 DTLS를 사용하는 기존 사물은 WoT 메타데이터(예: 사물 기술)로 설명될 수 있지만, 안전하지 않은 것으로 간주해야 합니다.

사물이 개인 식별 정보(PII)를 드러낼 수 있는 경우 추가 고려사항이 적용됩니다. 11.2 개인 식별 정보에 대한 접근을 참조하십시오.

11. 개인정보 보호 고려사항

개인정보 보호는 모든 WoT 구성 요소 및 WoT 구현에서 고려되어야 하는 횡단적 문제입니다. 이 장은 구체적 WoT 구현의 개인정보 보호를 유지하는 데 도움이 되는 몇 가지 일반적인 문제와 지침을 요약합니다. 그러나 이는 일반 지침일 뿐이며, 이 문서에서 설명하는 것과 같은 추상 아키텍처 자체가 개인정보 보호를 보장할 수는 없습니다. 대신 구체적 구현의 세부 사항을 고려해야 합니다. 개인정보 보호(및 보안) 문제에 대한 더 상세하고 완전한 분석은 WoT 보안 및 개인정보 보호 지침 명세 [WOT-SECURITY]를 참조하십시오.

11.1 WoT 사물 기술 위험

WoT 사물 기술(TD)에 포함된 메타데이터는 잠재적으로 민감할 수 있으며, 명시적으로 개인 식별 정보(PII)를 포함하지 않더라도 여기에서 PII를 추론할 수 있을 수 있습니다. 모범 사례로서 TD는 적절한 무결성 보호 메커니즘 및 접근 제어 정책과 함께 사용되어야 하며, 권한 있는 사용자에게만 제공하는 것을 목표로 해야 합니다. 일반적으로 이전 절에서 논의한 많은 보안 고려사항도, 원하지 않거나 권한 없는 정보 공개와 관련될 때 개인정보 보호 위험으로 볼 수 있습니다.

이러한 사항에 대한 추가 세부사항과 논의는 WoT 사물 기술 명세의 개인정보 보호 고려사항 절을 참조하십시오.

11.1.1 사물 기술 개인 식별 정보 위험

사물 기술은 다양한 유형의 개인 식별 정보(PII)를 포함할 가능성이 있습니다. 명시적이지 않더라도, TD와 식별 가능한 개인의 연관성은 그 사람에 대한 정보를 추론하는 데 사용될 수 있습니다. 예를 들어 위치를 확인할 수 있는 모바일 장치가 노출하는 지문화 가능한 TD의 연관성은 추적 위험이 될 수 있습니다. 특정 장치 인스턴스를 식별할 수 없더라도, TD가 나타내는 장치 유형이 개인과 연관될 때 개인 정보가 될 수 있습니다. 예를 들어 의료 장치는 사용자가 의학적 상태를 가지고 있음을 추론하는 데 사용될 수 있습니다.

일반적으로 TD의 개인 식별 정보는 가능한 한 제한되어야 합니다. 그러나 어떤 경우에는 이를 피할 수 없습니다. TD에 직접적 및 추론 가능한 PII가 모두 존재할 가능성이 있다는 것은 TD 전체가 다른 형태의 PII처럼 취급되어야 함을 의미합니다. TD는 안전한 방식으로 저장 및 전송되어야 하고, 권한 있는 사용자에게만 제공되어야 하며, 제한된 시간 동안만 캐시되어야 하고, 요청 시 삭제되어야 하며, 사용자 동의하에 제공된 목적에만 사용되어야 하고, 그 밖에도 PII 사용에 대한 모든 요구사항(법적 요구사항 포함)을 충족해야 합니다.

완화:
TD에 명시적 PII를 저장하는 것은 가능한 한 최소화되어야 SHOULD 합니다. TD에 명시적 PII가 없더라도 추적 및 식별 개인정보 보호 위험이 존재할 수 있습니다. 개인과 연관될 수 있는 TD는 명시적으로 PII를 포함하지 않더라도 일반적으로 PII를 포함한 것처럼 취급되고, 다른 PII와 동일한 관리 정책의 적용을 받아야 SHOULD 합니다. TD의 배포 메커니즘은 TD가 권한 있는 소비자에게만 제공되도록 보장해야 SHOULD 합니다. WoT 탐색 메커니즘은 탐사 서비스에서 인증과 접근 제어와 함께 사용되는 한, 이러한 특정 문제를 다루도록 설계되어 있다는 점에 유의하십시오. 일반적인 정책 문제로서, 불필요한 정보는 가능한 경우 TD에 노출되어서는 안 됩니다. 예를 들어 TD의 명시적 유형 및 인스턴스 식별 정보는 사용 사례에 필요한 경우에만 포함되어야 합니다. 사용 사례에 필요하더라도 추적 위험을 최소화하기 위해, 가능한 경우 전역적으로 고유한 식별자보다 분산되고 제한된 범위의 식별자를 사용해야 합니다. 사람이 읽을 수 있는 설명과 같은 다른 형태의 정보도 지문화 위험을 줄이기 위해 일부 사용 사례에서 생략될 수 있습니다.

11.2 개인 식별 정보에 대한 접근

11.1.1 사물 기술 개인 식별 정보 위험에서 논의한 메타데이터를 통한 개인 식별 정보(PII) 공개 위험에 더해, 사물이 반환하는 데이터 자체도 민감할 수 있습니다. 예를 들어 사물은 특정 개인의 위치나 건강을 모니터링할 수 있습니다. 개인과 관련된 정보는 즉시 민감하다는 것이 명확하지 않더라도 PII로 취급되어야 합니다. 다른 정보와 결합되어 민감한 정보를 드러낼 수 있기 때문입니다.

완화:
개인과 관련된 데이터 또는 메타데이터(예: TD)를 반환하는 사물은 어떤 형태의 접근 제어를 사용해야 SHOULD 합니다. 이에 대한 특수한 경우는 [WOT-DISCOVERY]에 설명된 사물 기술 디렉터리로, 데이터를 사물 기술로 반환하는 사물입니다. 이러한 디렉터리 서비스는 위의 진술에 포함되며, TD가 식별 가능한 사람과 관련된 사물을 설명하는 경우 접근 제어를 사용해야 합니다. 사물 기술을 반환하는 서비스의 경우 다음도 적용됩니다: 불변 ID를 가진 사물 기술을 반환하는 서비스는 어떤 형태의 접근 제어를 사용해야 SHOULD 합니다. 특정 개인과 관련된 사물을 설명하는 사물 기술은 명시적으로 PII를 포함하지 않더라도 PII로 취급되어야 한다는 원칙에 따르면, 이러한 TD를 제공하는 디렉터리는 접근 제어를 사용해야 함을 의미합니다. 일반적으로 예외는 세분화된 네트워크처럼 TD 자체에 설명되지 않은 다른 메커니즘으로 접근이 제어되는 경우에만 해당해야 합니다. 또한 접근 제어는 일반적으로 보안 전송이 함께 사용될 때에만 효과적이라는 점에 다시 유의해야 합니다. 10.5 보안 전송을 참조하십시오. 보안 전송 없이 접근 제어를 사용하는 것은 기껏해야 권한 없는 당사자의 일상적인 접근을 억제할 뿐입니다.

12. 접근성 고려사항

이 절은 비규범적입니다.

일반적인 IoT, 특히 WoT는 접근성에 기회와 과제를 모두 제공합니다. 한편으로 인터넷 연결 장치의 기능에 대한 네트워크 접근은 장치 자체 하드웨어에 의해 제한되지 않는 대체 인터페이스를 그 기능에 대해 구축할 수 있게 합니다. 이러한 인터페이스는 웹 기반일 수도 있고 물리적일 수도 있습니다. 이러한 인터페이스는 접근성 모범 사례를 따를 수 있고 또 따라야 합니다. 다른 한편으로 IoT 장치는 다양하고, 비용과 공간 제약이 있는 경우가 많으며, 네트워크 연결이 설정되기 전의 온보딩처럼 장치 자체 하드웨어에 인터페이스를 의존해야 하는 상황은 접근 가능하게 만들기 어려울 수 있습니다.

접근성과 관련하여 WoT에서 고려해야 할 두 가지 상황이 있습니다. 처음부터 WoT와 함께 사용되도록 설계된 그린필드 장치와, WoT가 기존 시스템을 설명하는 데만 사용되는 브라운필드 장치입니다.

접근성과 관련된 여러 사용 사례는 WoT 사용 사례 및 요구사항 문서 [WOT-USE-CASES-REQUIREMENTS]에서 다룹니다.

12.1 그린필드 WoT 시스템

이상적으로는 모든 그린필드 WoT 시스템에서 구성 요소 개발의 시작부터 접근성을 고려해야 합니다. 구성 요소의 하드웨어가 자체 디스플레이나 다른 형태의 물리적 사용자 인터페이스를 가진 경우, 이는 가능한 한 접근 가능해야 합니다. 접근 가능하게 만들 수 없다면(예: 화면 크기 제한 때문에), 접근 가능한 인터페이스(예: 웹 또는 음성 인터페이스)를 대신 사용할 수 있도록 동등한 기능이 네트워크를 통해 제공되어야 합니다. 구성 요소가 네트워크를 통해 접근될 때는, 장치에 직접 호스팅되든 다른 구성 요소(예: 대시보드)가 제공하든 접근 가능한 웹 인터페이스를 위한 대비가 마련되어야 합니다. 온보딩 중처럼 온보드 하드웨어가 인터페이스의 유일한 선택지인 상황은 가능한 한 접근 가능하도록 신중하게 설계되어야 합니다.

일반적으로 사물은 WCAG와 EN 301 549에 따라 완전히 접근 가능한 사용자 인터페이스를 적어도 하나(직접 또는 네트워크 기반) 항상 가져야 합니다. 접근성은 제조업체, 설치자, 장치 소유자, 최종 사용자 등 모든 유형의 사용자에게 제공되는 인터페이스에 적용되어야 합니다.

사물의 사용자 인터페이스에 대한 접근성 상태는 사물의 메타데이터에 선언되어야 하며, 이를 통해 사용자가 자신에게 가장 적합한 사용자 인터페이스를 선택할 수 있어야 합니다. 사물이 웹 인터페이스를 가진 경우, 웹 인터페이스를 설명하는 기존 메커니즘을 사용해야 합니다. 웹과 물리적 인터페이스 사이의 연결을 더 잘 지원하기 위해, WoT 사물 기술에 설명된 어포던스는 장치의 물리적 인터페이스와의 관계를 이해할 수 있는 방식으로 주석 처리되어야 합니다.

직접 사용자 인터페이스를 제공하지 않는 구성 요소도 적절한 데이터와 함수를 제공함으로써 접근성을 지원해야 합니다. 예를 들어 공공 사물(예: 티켓 기계 또는 ATM)의 개발자는 사용자가 청각, 시각 또는 기타 신호를 통해 사물을 물리적으로 식별하고 위치를 찾을 수 있게 하는 위치 확인 기능을 고려해야 합니다.

12.2 브라운필드 WoT 시스템

WoT의 브라운필드 적용은 WoT 메타데이터가 기존 장치를 설명하는 데 사용되지만, 설계 시 WoT가 고려되지 않았던 상황을 다룹니다. 이 경우 위의 많은 대비책이 여전히 적용됩니다. 예를 들어 장치를 모니터링하거나 제어하기 위해 다른 시스템이 제공하는 웹 인터페이스는 WCAG의 지침을 따라야 하며, 사물 기술은 어포던스를 적절히 주석 처리해야 합니다. 장치 자체의 물리적 인터페이스가 접근성 문제를 제공하는 경우, 그 네트워크 어포던스를 기반으로 한 대체 인터페이스로 이를 극복할 가능성이 있습니다.

A. 최근 명세 변경사항

A.1 2023년 7월 11일 제안 권고안 이후 변경사항

A.2 2023년 1월 19일 후보 권고안 이후 변경사항

A.3 2022년 9월 7일 발행된 WD 이후 변경사항

A.4 FPWD 버전 이후 2022년 9월 7일 발행된 WD의 변경사항

A.5 [wot-architecture] 1.0 버전 이후 FPWD의 변경사항

B. 감사의 말

WoT 아키텍처 명세의 초기 버전을 공동 편집하고 많은 중요한 기여를 한 Kazuo Kajimoto, Toru Kawaguchi 및 Matthias Kovatsch에게 특별히 감사드립니다. Cristiano Aguzzi, Andrea Cimmino Arriaga, Kazuyuki Ashimura, Luca Barbato, Ben Francis, Christian Glomb, Klaus Hartke, Sebastian Käbisch, Takuki Kamiya, Ari Keränen, Zoltan Kis, Ege Korkan, Michael Koster, Philippe Le Hegaret, Kazuaki Nimura, Daniel Peintner, James Pullen, Elena Reshetova 및 Farshid Tavakolizadeh가 이 문서에 기여한 것에 특별히 감사드립니다.

WoT 아키텍처 태스크포스의 작업에 지속적인 도움과 지원을 제공한 W3C의 Dr. Kazuyuki Ashimura에게 특별히 감사드립니다.

이 문서의 개선으로 이어진 지원, 기술적 입력 및 제안을 제공한 W3C 직원과 W3C 웹 사물 관심 그룹(WoT IG) 및 작업 그룹(WoT WG)의 모든 다른 활동적인 참가자에게 깊이 감사드립니다.

WoT WG는 또한 "Web of Things" 개념에 관한 선구적 노력이, [WOT-PIONEERS-1] [WOT-PIONEERS-2] [WOT-PIONEERS-3] [WOT-PIONEERS-4] 와 같은 출판물의 형태를 가진 학술적 이니셔티브로 시작되었고, 2010년부터는 International Workshop on the Web of Things로 이어진 점에 감사하고자 합니다.

마지막으로 WoT IG를 출범부터 2년 동안 이끌고, 그룹이 사물 기술을 포함한 WoT 구성 요소의 개념을 마련하도록 이끈 Joerg Heuer에게 특별히 감사드립니다.

C. 참고문헌

C.1 규범 참고문헌

[BCP47]
언어 식별을 위한 태그. A. Phillips, Ed.; M. Davis, Ed.. IETF. 2009년 9월. 현재 모범 관행. URL: https://www.rfc-editor.org/rfc/rfc5646
[JSON-LD]
JSON-LD 1.0. Manu Sporny; Gregg Kellogg; Markus Lanthaler. W3C. 2020년 11월 3일. W3C 권고안. URL: https://www.w3.org/TR/json-ld/
[RFC2046]
다목적 인터넷 메일 확장(MIME) 제2부: 미디어 타입. N. Freed; N. Borenstein. IETF. 1996년 11월. 초안 표준. URL: https://www.rfc-editor.org/rfc/rfc2046
[RFC2119]
RFC에서 요구사항 수준을 나타내기 위해 사용하는 핵심 단어. S. Bradner. IETF. 1997년 3월. 현재 모범 관행. URL: https://www.rfc-editor.org/rfc/rfc2119
[RFC3986]
Uniform Resource Identifier (URI): 일반 구문. T. Berners-Lee; R. Fielding; L. Masinter. IETF. 2005년 1월. 인터넷 표준. URL: https://www.rfc-editor.org/rfc/rfc3986
[RFC3987]
국제화 리소스 식별자(IRI). M. Duerst; M. Suignard. IETF. 2005년 1월. 제안 표준. URL: https://www.rfc-editor.org/rfc/rfc3987
[RFC5246]
The Transport Layer Security (TLS) Protocol Version 1.2. T. Dierks; E. Rescorla. IETF. 2008년 8월. 제안 표준. URL: https://www.rfc-editor.org/rfc/rfc5246
[RFC6347]
Datagram Transport Layer Security Version 1.2. E. Rescorla; N. Modadugu. IETF. 2012년 1월. 제안 표준. URL: https://www.rfc-editor.org/rfc/rfc6347
[RFC8174]
RFC 2119 핵심 단어에서 대문자와 소문자의 모호성. B. Leiba. IETF. 2017년 5월. 현재 모범 관행. URL: https://www.rfc-editor.org/rfc/rfc8174
[RFC8259]
The JavaScript Object Notation (JSON) Data Interchange Format. T. Bray, Ed.. IETF. 2017년 12월. 인터넷 표준. URL: https://www.rfc-editor.org/rfc/rfc8259
[RFC8288]
웹 링크. M. Nottingham. IETF. 2017년 10월. 제안 표준. URL: https://httpwg.org/specs/rfc8288.html
[RFC8446]
The Transport Layer Security (TLS) Protocol Version 1.3. E. Rescorla. IETF. 2018년 8월. 제안 표준. URL: https://www.rfc-editor.org/rfc/rfc8446
[RFC9147]
The Datagram Transport Layer Security (DTLS) Protocol Version 1.3. E. Rescorla; H. Tschofenig; N. Modadugu. IETF. 2022년 4월. 제안 표준. URL: https://www.rfc-editor.org/rfc/rfc9147
[wot-architecture]
Web of Things (WoT) Architecture. Matthias Kovatsch; Ryuichi Matsukura; Michael Lagally; Toru Kawaguchi; Kunihiko Toumura; Kazuo Kajimoto. W3C. 2020년 4월 9일. W3C 권고안. URL: https://www.w3.org/TR/wot-architecture/
[WOT-DISCOVERY]
Web of Things (WoT) Discovery. Andrea Cimmino; Michael McCool; Farshid Tavakolizadeh; Kunihiko Toumura. W3C. 2023년 12월 5일. W3C 권고안. URL: https://www.w3.org/TR/wot-discovery/
[WOT-PROFILE]
Web of Things (WoT) Profile. Michael Lagally; Ben Francis; Michael McCool; Ryuichi Matsukura; Sebastian Käbisch; Tomoaki Mizushima. W3C. 2023년 1월 18일. W3C 작업 초안. URL: https://www.w3.org/TR/wot-profile/
[WOT-THING-DESCRIPTION]
Web of Things (WoT) Thing Description 1.1. Sebastian Kaebisch; Takuki Kamiya; Michael McCool; Victor Charpenay. W3C. 2023년 12월 5일. W3C 권고안. URL: https://www.w3.org/TR/wot-thing-description11/
[WOT-USE-CASES-REQUIREMENTS]
Web of Things (WoT) Use Cases and Requirements. Michael Lagally; Michael McCool; Ryuichi Matsukura; Tomoaki Mizushima. W3C. 2020년 10월. 편집자 초안. URL: https://www.w3.org/TR/wot-usecases/

C.2 정보 참고문헌

[CoRAL]
The Constrained RESTful Application Language (CoRAL). Christian Amsüss; Thomas Fossati. IETF. 2022년 3월. 인터넷 초안. URL: https://datatracker.ietf.org/doc/html/draft-ietf-core-coral/
[ECMAScript]
ECMAScript Language Specification. Ecma International. URL: https://tc39.es/ecma262/multipage/
[etsi-en-301-549]
ETSI EN 301 549 V2.1.2 (2018-08): ICT 제품 및 서비스의 접근성 요구사항. ETSI. 2018년 8월. 발행됨. URL: http://www.etsi.org/deliver/etsi_en/301500_301599/301549/02.01.02_60/en_301549v020102p.pdf
[HCI]
The Encyclopedia of Human-Computer Interaction, 2nd Ed. Interaction Design Foundation. 2013. URL: https://www.interaction-design.org/literature/book/the-encyclopedia-of-human-computer-interaction-2nd-ed
[HTML]
HTML Standard. Anne van Kesteren; Domenic Denicola; Ian Hickson; Philip Jägenstedt; Simon Pieters. WHATWG. 살아있는 표준. URL: https://html.spec.whatwg.org/multipage/
[IANA-RELATIONS]
링크 관계. IANA. URL: https://www.iana.org/assignments/link-relations/
[IEC-FOTF]
미래의 공장. IEC. 2015년 10월. URL: https://www.iec.ch/basecamp/factory-future
[IOT-SCHEMA-ORG]
IoT를 위한 Schema Extensions 커뮤니티 그룹. URL: https://www.w3.org/community/iotschema/
[ISO-IEC-2382]
정보 기술 — 어휘. ISO. 2015. URL: https://www.iso.org/obp/ui/#iso:std:iso-iec:2382:ed-1:v2:en
[ISO-IEC-27000]
정보 기술 — 보안 기법 — 정보 보안 관리 시스템 — 개요 및 어휘. ISO. 2018. URL: https://www.iso.org/obp/ui/#iso:std:iso-iec:27000:ed-5:v1:en
[ISO-IEC-29100]
정보 기술 — 보안 기법 — 개인정보 보호 프레임워크. ISO. 2011. URL: https://www.iso.org/obp/ui/#iso:std:iso-iec:29100:ed-1:v1:en
[JSON-LD11]
JSON-LD 1.1. Gregg Kellogg; Pierre-Antoine Champin; Dave Longley. W3C. 2020년 7월 16일. W3C 권고안. URL: https://www.w3.org/TR/json-ld11/
[LINKED-DATA]
링크드 데이터 설계 이슈. Tim Berners-Lee. W3C. 2006년 7월 27일. W3C 내부 문서. URL: https://www.w3.org/DesignIssues/LinkedData.html
[LWM2M]
Lightweight Machine to Machine Technical Specification: Core. OMA SpecWorks. 2018년 8월. 승인 버전: 1.1. URL: https://openmobilealliance.org/release/LightweightM2M/V1_1-20180710-A/OMA-TS-LightweightM2M_Core-V1_1-20180710-A.pdf
[MQTT]
MQTT Version 3.1.1 Plus Errata 01. Andrew Banks; Rahul Gupta. OASIS 표준. 2015년 12월. URL: https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html
[NORMAN]
The Psychology of Everyday Things. Donald A. Norman. Basic Books. 1988.
[OCF]
OCF Core Specification. Open Connectivity Foundation. 2019년 4월. 버전 2.0.2. URL: https://openconnectivity.org/developer/specifications/
[REST]
REST: 네트워크 기반 소프트웨어 아키텍처의 아키텍처 스타일과 설계. Roy Thomas Fielding. University of California, Irvine. 2000. 박사 학위 논문. URL: https://www.ics.uci.edu/~fielding/pubs/dissertation/fielding_dissertation.pdf
[RFC6202]
양방향 HTTP에서 롱 폴링 및 스트리밍 사용에 대한 알려진 문제와 모범 사례. S. Loreto; P. Saint-Andre; S. Salsano; G. Wilkins. IETF. 2011년 4월. 정보성. URL: https://www.rfc-editor.org/rfc/rfc6202
[RFC6690]
Constrained RESTful Environments (CoRE) Link Format. Z. Shelby. IETF. 2012년 8월. 제안 표준. URL: https://www.rfc-editor.org/rfc/rfc6690
[RFC7049]
Concise Binary Object Representation (CBOR). C. Bormann; P. Hoffman. IETF. 2013년 10월. 제안 표준. URL: https://www.rfc-editor.org/rfc/rfc7049
[RFC7228]
제약 노드 네트워크를 위한 용어. C. Bormann; M. Ersue; A. Keranen. IETF. 2014년 5월. 정보성. URL: https://www.rfc-editor.org/rfc/rfc7228
[RFC7231]
Hypertext Transfer Protocol (HTTP/1.1): 의미론 및 콘텐츠. R. Fielding, Ed.; J. Reschke, Ed.. IETF. 2014년 6월. 제안 표준. URL: https://httpwg.org/specs/rfc7231.html
[RFC7252]
The Constrained Application Protocol (CoAP). Z. Shelby; K. Hartke; C. Bormann. IETF. 2014년 6월. 제안 표준. URL: https://www.rfc-editor.org/rfc/rfc7252
[RFC7641]
Constrained Application Protocol (CoAP)에서 리소스 관찰. K. Hartke. IETF. 2015년 9월. 제안 표준. URL: https://www.rfc-editor.org/rfc/rfc7641
[SAREF]
Smart Appliances REFerence (SAREF) 온톨로지. ETSI. 2015년 11월. URL: https://sites.google.com/site/smartappliancesproject/ontologies/reference-ontology
[SOLID]
Solid 기술 보고서. W3C Solid CG. 2021년 4월. URL: https://solidproject.org/TR/
[VOCAB-SSN]
Semantic Sensor Network 온톨로지. Armin Haller; Krzysztof Janowicz; Simon Cox; Danh Le Phuoc; Kerry Taylor; Maxime Lefrançois. W3C. 2017년 10월 19일. W3C 권고안. URL: https://www.w3.org/TR/vocab-ssn/
[WCAG22]
웹 콘텐츠 접근성 지침(WCAG) 2.2. Michael Cooper; Andrew Kirkpatrick; Alastair Campbell; Rachael Bradley Montgomery; Charles Adams. W3C. 2023년 10월 5일. W3C 권고안. URL: https://www.w3.org/TR/WCAG22/
[WOT-BINDING-TEMPLATES]
Web of Things (WoT) Binding Templates. Michael Koster; Ege Korkan. W3C. 2023년 9월 28일. W3C 작업 그룹 노트. URL: https://www.w3.org/TR/wot-binding-templates/
[WOT-PIONEERS-1]
Mobile Service Interaction with the Web of Things. E. Rukzio, M. Paolucci; M. Wagner, H. Berndt; J. Hamard; A. Schmidt. 13th International Conference on Telecommunications(ICT 2006), 포르투갈 마데이라 섬 푼샬. 2006년 5월. URL: https://pdfs.semanticscholar.org/3ee3/a2e8ce93fbf9ba14ad54e12adaeb1f3ca392.pdf
[WOT-PIONEERS-2]
Putting Things to REST. Erik Wilde. UCB iSchool Report 2007-015, UC Berkeley, Berkeley, CA, USA. 2007년 11월. URL: https://escholarship.org/uc/item/1786t1dm
[WOT-PIONEERS-3]
Poster Abstract: Dyser – Towards a Real-Time Search Engine for the Web of Things. Benedikt Ostermaier; B. Maryam Elahi; Kay Römer; Michael Fahrmair; Wolfgang Kellerer. Proceedings of ACM SenSys 2008, Raleigh, NC, USA. 2008년 11월. URL: https://www.vs.inf.ethz.ch/publ/papers/ostermai-poster-2008.pdf
[WOT-PIONEERS-4]
A Resource Oriented Architecture for the Web of Things. Dominique Guinard; Vlad Trifa; Erik Wilde. Proceedings of Internet of Things 2010 International Conference (IoT 2010). 도쿄, 일본. 2010년 11월. URL: https://ieeexplore.ieee.org/abstract/document/5678452
[WOT-SCRIPTING-API]
Web of Things (WoT) Scripting API. Zoltan Kis; Daniel Peintner; Cristiano Aguzzi; Johannes Hund; Kazuaki Nimura. W3C. 2023년 10월 3일. W3C 작업 그룹 노트. URL: https://www.w3.org/TR/wot-scripting-api/
[WOT-SECURITY]
Web of Things (WoT) Security and Privacy Guidelines. ; Michael McCool; Elena Reshetova. W3C. 2019년 3월. URL: https://www.w3.org/TR/wot-security/
[Y.4409-Y.2070]
ITU-T Rec. Y.4409/Y.2070 (01/2015) 홈 에너지 관리 시스템 및 홈 네트워크 서비스의 요구사항과 아키텍처 . ITU-T. 2015년 1월. 권고안. URL: https://www.itu.int/rec/T-REC-Y.2070-201501-I