3

노드와 엔드포인트와 클러스터

데이터 모델

학습 목표
  • 네 계층의 관계를 인덕션 레인지로 설명할 수 있다
  • 클러스터의 Server 와 Client 역할을 구분한다

인덕션 레인지 한 대를 나눠 보면

노드(node)는 망에 참여하는 기기 인스턴스 하나입니다. 고유한 노드 식별자와 운영 인증서를 가지며, 대개 사람이 「기기 하나」로 알아보는 그것입니다. 인덕션 레인지 한 대가 노드 하나입니다.

노드 안에는 엔드포인트(endpoint)가 여럿 있습니다. 기기 안의 기능 단위이지요. 화구가 넷인 쿡탑이면 화구마다 엔드포인트를 부여해 개별 제어를 표현합니다. 화구 하나를 켜도 나머지는 그대로여야 하니까요.

인덕션 레인지를 노드와 엔드포인트와 클러스터로 나눈 모습

클러스터는 재사용하는 기능 블록

엔드포인트 안에는 클러스터(cluster)가 들어갑니다. 재사용 가능한 기능 블록이고, 켜고 끄는 것과 화력 단계를 다루는 것이 따로 있습니다. 클러스터 하나가 어트리뷰트(상태) + 커맨드(동작) + 이벤트(알림) 의 묶음입니다.

여기서 하나 더 알아 둘 것이 있습니다. 클러스터는 Server 와 Client 역할로 나뉩니다. 기능을 제공하는 쪽이 Server 이고 그것을 쓰는 쪽이 Client 입니다. 조명은 켜고 끄는 기능의 Server 이고, 벽 스위치는 같은 기능의 Client 입니다. 이 구분을 모르면 「스위치에도 On/Off 클러스터가 있는데 왜 스위치를 켜는 게 아니지」에서 막힙니다.

0번 엔드포인트는 항상 기기 자체 관리용으로 예약돼 있습니다. 기기를 찾고 주소를 붙이고 진단하고 펌웨어를 갱신하는 일이 여기 모입니다. 그래서 실제 기능은 1번부터 들어갑니다.

설계 함의

이 구조가 실무에서 뜻하는 것은 분명합니다. 자사 제품을 Matter 로 모델링한다는 것은 「우리 기기를 어떤 엔드포인트와 클러스터 조합으로 표현할까」를 정하는 일입니다.

화구 넷을 엔드포인트 넷으로 볼지, 아니면 쿡탑 하나를 엔드포인트 하나로 두고 화구를 모드로 표현할지가 판단입니다. 앞엣것이 규격의 뜻에 맞고, 뒤엣것은 구현이 단순한 대신 사용자가 화구를 따로 제어할 수 없습니다.

계층이 넷인 이유는 한 상자가 여러 기기 노릇을 할 수 있기 때문입니다. 칸을 나누지 않으면 화구 넷을 표현할 길이 없습니다.

용어