Introduction
그랜드뷰 시스템의 구조와 인터페이스 방법을 소개합니다.
Last updated
그랜드뷰 시스템의 구조와 인터페이스 방법을 소개합니다.
Last updated
다음은 그랜드뷰 의 시스템 아키텍처입니다. 중요한 요소들만 표현되어 있습니다.
그랜드뷰 서비스는 마이크로소프트 Azure 클라우드에서 제공됩니다. 낮은 지연시간을 보장하기 위하여 모든 시스템 구성요소들은 Azure 클라우드 한국 중부 리전에 위치합니다.
구름(클라우드) 바깥에 위치한 외부 시스템 또는 IoT 디바이스가 보내는 데이터는 화살표를 따라 순차적으로 이동하여 메타트론 그랜드뷰에 전달됩니다.
시스템은 크게 두 부분로 나뉘어집니다.
IoT 플랫폼
그랜드뷰
IoT 플랫폼은 연결성을 담당합니다. 인터페이스들을 통해 흘러 들어오는 시계열 데이터를 순차적으로 그랜드뷰에 전달합니다. 그리고 IoT 디바이스를 관리하기 위한 여러가지 기능들을 갖고 있습니다.
그랜드뷰는 수집된 시계열 데이터들을 머신러닝 또는 AI 기법을 통해 분석하여 공장 설비들에 대한 APM(asset performance monitoring) 솔루션을 제공합니다. 사용자는 PC 환경 또는 모바일 전용 앱으로 현장에 위치한 공장 설비 데이터를 모니터링하거나 위험 지표에 대한 모바일 푸시 알람을 수신할 수 있고, 예지보전과 같은 고급 서비스를 제공 받을 수 있습니다.
그랜드뷰에 데이터를 전송하기 위해서는 다음 인터페이스들에 연결하여 데이터를 송신하여야 합니다.
서버 투 서버 인터페이스 서버 투 서버 인터페이스는 애져 서비스 버스(Azure Service bus)를 인터페이스로 활용하는 방식입니다. 애져 서비스 버스는 메시지 큐(message queue) 입니다. 수신된 데이터들은 큐에 저장되어 있다가 지정된 시간마다 실행되는 큐 소비자 프로그램에 의해 데이터가 인출되고 경로를 따라 전달합니다. 서버-투-서버 인터페이스는 초당 수백 건의 데이터 입력 성능을 보장할 수 있으며, 선형적 성능 확장이 가능합니다. 따라서 이미 대량의 데이터를 수집하고 있는 외부 시스템이 이 인터페이스를 활용하여 데이터를 미러링하는데 적합합니다.
IoT hub 인터페이스 IoT hub 인터페이스는 IoT 디바이스 전용 인터페이스입니다. IoT 디바이스들은 MQTT 프로토콜 기반으로 IoT hub 를 통해 데이터를 그랜드뷰에 전송할 수 있습니다. IoT hub 에는 기본적인 데이터 전송 기능 이외에도 디지털 트윈을 통한 비동기적 클라이언트-서버 간 상태 메시지 교환, 디바이스 수명 관리(프로비저닝, 펌웨어 OTA), 디바이스에 대한 원격 명령 전송 등을 제공하고 있으므로 IoT 디바이스(센서, 엣지 컴퓨터, 게이트웨이 등)가 개별적으로 데이터를 전송하는 시나리오에 적합합니다.
기술 협의를 통해 협업 모델과 기술 환경을 고려하여 어떤 인터페이스를 사용하게 될지 최종 결정 될 것입니다. 뿐만 아니라 필요하다고 판단되는 경우 SK 텔레콤에서 인터페이스를 추가 개발하여 제공 드릴 수 있습니다.
전송구간의 암호화
인터페이스 역할을 수행하는 IoT hub 나 애져 서비스 버스(Azure Service bus) 는 각각 MQTTS 와 HTTPS 프로토콜 사용을 강제합니다.
이 프로토콜은 클라이언트-서버 간 메시지를 비밀키로 암호화 하여, 패킷 감청 등과 같은 중간자 공격을 방지 할 수 있습니다.
이 프로토콜들은 Azure 클라우드에서 TLS 1.3 이라는 가장 최신의 암호화 방식을 적용 받습니다.
IoT hub & Azure service bus
그랜드뷰에 데이터를 전송하기 위해 처음 접속하게 되는 진입점(entry point)입니다.
Event hub
대규모 메시지 교환 플랫폼입니다.
수신된 메시지들은 지정된 경로를 따라 소비자 그룹(consumer group)에 전달됩니다.
메시지는 여러 소비자 그룹에 자동으로 브로드캐스팅(broad casting) 되어 같은 메시지를 모든 소비자(consumer)가 받을 수 있도록 합니다.
Azure cosmos DB / Table storage
추가로 데이터를 저장하는 공간입니다.
운영 상의 목적으로 SK 텔레콤 운영자들에 의해 활용됩니다.
허가 받은 사용자만 이 시스템에 접속할 수 있습니다.
Flink
Event hub 에 저장된 데이터를 소비하여 Druid 시계열 DB 에 저장합니다.
SaaS 형 서비스를 제공하기 위하여 지정된 식별자를 확인합니다.
Druid DB
시계열 DB 로서 대용량 데이터 저장 / 쿼리가 가능합니다.
그랜드뷰 서비스는 SaaS 서비스이므로, 특정 고객사만을 위한 환경을 제공하지 않고 플랫폼을 지향합니다. 그러므로 모든 사용자와 파트너들이 따라줘야 하는 표준 체계들이 있습니다.
그랜드뷰에 메시지를 전달할 때에는 정해진 표준 체계에 따라 메시지 전문을 만들어야 합니다. 다음은 메시지 전문의 예제입니다.
예제는 temperature 라는 변수에 36.5 값을 전달할 수 있는 메시지입니다.
메시지 전문의 형식은 JSON 입니다. 모든 개발 언어들은 JSON 을 다룰 수 있는 자체 라이브러리나 서드 파티 라이브러리가 있습니다. 이것들을 활용하여 데이터를 구조화하고, JSON 으로 변형하여 전달해야 합니다.
필드
값의 데이터 형식
설명
serviceId
문자열(String)
고객사를 구분할 수 있는 식별자
deviceId
문자열(String)
디바이스를 구분할 수 있는 식별 그랜드뷰에서 설비 데이터 구분자로 역할
timestamp
정수(Integer)
데이터가 수집된 시간을 UTC 로케일 / 밀리세컨드로 표현
contents
객체(Object)
수집된 실제 데이터들
데이터 필드에 대해 JSON 구조에서 contents 필드 아래에 실제 서버로 전송할 데이터들을 위치시키면 됩니다. 예제 JSON 에서는 현재 온도 값을 temperature 라는 변수에 36.5 라는 값을 전송하고 있습니다. 데이터 변수들의 값은 -1, 1, 2, 3 같은 정수나 36.5 같은 유리수만 처리될 수 있습니다. 객체 타입이 오거나({ 와 } 로 둘러싸인) 배열 타입이 올 수 없습니다.
위의 예제 JSON 에서 ok1 와 ok2 는 정수와 유리수를 데이터 값으로 갖고 있으므로, 정상적으로 처리될 수 있습니다. 하지만 객체를 값으로 갖는 no1 과 배열을 값으로 갖는 no2 는 처리되지 않습니다. 또한 문자열 타입을 값으로 갖는 no3 도 처리되지 않습니다.
timestamp 에 대해서 timestamp 필드는 데이터가 수집된 시각을 기록한 것입니다. 이 timestamp 는 반드시 유닉스 시간을 밀리세컨드로 변환한 것이어야 합니다. 유닉스 시간이란 UTC 시간대 기준으로 1970년 1월 1일부터 흘러간 초의 합을 나타냅니다. 유닉스 시간을 얻기 위해서는 현재 시각을 UTC 로 변환하고 밀리세컨드로 다시 변환하면 됩니다. 이런 작업은 대부분의 프로그래밍 언어에서 시간 관련 라이브러리를 사용해서 간편하게 구현할 수 있습니다. 개발하시는 동안 반드시 아래 사이트를 활용해서 구한 값이 정확하게 맞는지 점검하도록 합니다.
만들어진 유닉스 시간을 붙여놓고 오른쪽 버튼을 누르면 아래 "Your time zone" 항목에서 한국 시간으로 변환해줍니다. 유닉스 시간이 만들어진 시각과 맞는지 비교하십시오.
다음 각 페이지에서 인터페이스 별 개발 가이드를 확인하시기 바랍니다. 개발 가이드들은 Azure 클라우드 무료 계층을 활용하도록 되어 있습니다.
그랜드뷰 서비스를 함께하는 파트너 여러분들은 다음과 같은 개발 단계를 거쳐서 그랜드뷰 서비스를 고객사에 제공할 수 있습니다.
사업 방향 검토를 통해 유스케이스 정의 IoT 디바이스/시스템이 어떤 기능을 구현하고 제공할지 명확히 함
그랜드뷰에 전송할 데이터와 전송 주기 결정, 그랜드뷰 설비 등록 정보 작성
인터페이스 방식에 따라 파트너에서 어플리케이션 개발 SK 텔레콤은 필요한 클라우드 자원, 기술 지원을 제공
테스트 환경에서 메시지 포맷 확인 후 상용 환경 정보 제공
상용 환경 데이터 전송 테스트
그랜드뷰 설비 등록
실제 환경에서 데이터 전송 시작 / 검증