【9】 스마트플러그 IoT 데이터 활용 스마트팩토리 구축 사례 : kt NexR 기술블로그 ‘21 테크리포트

생성일
2021/12/07 01:41
태그
2021년
상반기
테크리포트
kt NexR
기술블로그
글쓴이
matthew.Im
속성
ktNexR_techreport_스마트플러그 IoT 구축사례-202107.pdf
속성 1

1. 개요

본격적인 IoT 시대가 열린다.
우리는 수 많은 데이터가 존재하는 시대에 살아가고 있습니다. 이제 스마트폰 뿐만 아니라 냉장고, 자동차, 공기청정기 등의 전자기기에 센서 장비를 추가하고 그 데이터를 기반으로 한 서비스가 등장합니다. 그렇다면 어떤 과정을 거쳐서 IoT 장비의 데이터가 서비스 받을 수 있도록 가공되는지 확인해보려고 합니다.
Network topology showing edge nodes and devices. Source: Alibaba Cloud 2020. https://devopedia.org/edge-computing
IoT Devices의 데이터가 컴퓨팅이 수행되는 곳에 직접적으로 전달되면 너무 많은 네트워크 Traffic이 발생됩니다. 일반적으로 Edge Node(Server) 라는 중간 수집/연산/처리 하는 곳을 두고 이 공간에서 어느 정도 가공되고 이렇게 정제된 데이터가 복잡한 컴퓨팅이 수행되는 곳으로 전달됩니다. Device 단계에서부터 어떤 흐름으로 데이터가 생성되고 수집되어 가는지 알아보도록 하겠습니다.

2. Edge(IoT) Device data

센서 장비를 이용해서 나온 결과 수치 컴퓨터에서 인식 가능한 표현의 문자 or 숫자로 표현하고, 그 결과의 묶음을 정의된 순서대로 나열한 1개의 Row 로 표현 되도록 합니다. IoT device는 IoT 프로토콜을 사용하여 네트워크 통신을 합니다. IoT Device는 IoT 프로토콜 사용하기 위한 Gateway 역할을 하며, 정의된 형태로 출력된 row 데이터를 IoT 프로토콜을 사용하여 Server 에 전달합니다.
IoT 프로토콜 종류
AMQP(고급 메시지 큐 프로토콜)
CoAP(제한된 애플리케이션 프로토콜)
DDS(데이터 분산 서비스)
MQTT(메시지 큐 원격 분석 전송)
Broker pattern (Publisher-Broker-Subscriber)을 채택하여 개발된 경량형 메시징 프로토콜로 IoT 통신에서 가장 많이 사용됩니다. Broker 역할을 수행하는 서버에서는 Topic 을 기반으로 publish 된 message 를 보관하고 subscribe이 있으면 전달(Publish)해주는 방식입니다. IoT Device 는 개별 Topic 을 만들어 해당 Topic 에 메시지를 보내면 1:1 통신 뿐만 아니라 1:N, N:N 통신도 쉽게 구현이 가능합니다. 통신 대역폭이 제한적인 IoT 통신에 적합합니다. MQTT는 신뢰성 있는 메시지 전달을 위해QoS도 지원합니다.

3. Edge Server MessageQueue 시스템

Message Oriented Middleware(MOM)는 비동기 메시지를 사용하는 다른 응용 프로그램 사이에서 데이터 송수신을 의미하며, MOM 을 구현한 시스템을 MessageQueue(MQ) 라 합니다.

4. Data Pipeline

1) Architecture

사례 : 호전실업㈜ 의료공장에서 미싱기계의 전기신호 패턴을 파악/분석하고 물류 관리, 모니터링 등으로 활용하기 위한 시스템 구축
1.
Smart Plugs 라는 IoT device 를 이용하여 전기 신호세기를 MQTT 프로토콜 사용하여 네트워크 통신합니다.
2.
MQTT 프로토콜 전용 message broker(Mosquitto) 를 사용하여 Edge Server 에 전달합니다.
3.
Nifi 수집 프로그램을 통해 Mosquitto 에 전달된 메시지를 Cloud 에 설치된 Kafka MessageQueue 서비스로 전달합니다.
4.
Kafka 에서 분산파일시스템(Hadoop 의 HDFS) 으로 저장합니다.
5.
누적된 데이터는 Hive, Presto, Hbase, Spark 등의 빅데이터 eco 서비스를 통해 유의미한 마트, 통계 데이터로 생성합니다.
6.
마트, 통계 데이터를 딥러닝, 머신러닝 등의 알고리즘을 적용하여 예측 모델 생성합니다.
* MQTT : Message Queuing Telemetry Transport

2) Smart-plugsv

IoT device의 설정을 변경하여 구축된 Edge 서버와 통신이 가능하도록 설정하는 부분이 중요 합니다.
IoT Device 의 설정에 Edge Server 로 지정해서 데이터를 전송하도록 설정합니다. 설정이 되었다면 Device 에서는 센서에서 발생되는 데이터를 비동기 방식으로 Edge Server로 전송하고 있습니다.
Edge 서버에서는 전송되고 있는 데이터를 받아 줄 수 있도록 MessageQueue 시스템 구축이 필요합니다.

3) Mosquitto

Edge Server 에 설치된 MessageQueue 시스템인 Mosquitto 란 MQTT(MQ Telemetry Trasport) 3.1 과 3.1.1 을 구현한 오픈소스 입니다.
MQTT는 publisher, subscriber 모델을 이용한 메시지 이동에 대한 간단한 메소드를 제공합니다. 발행/구독 방식은FIFO로 전달 됩니다
매우 가벼운 시스템으로 IoT 데이터를 핸들링 하기에 용이합니다.
기본적으로 1883 의 port 를 사용합니다
Smart-Plug 의 통신이 Edge 를 향하도록 설정이 완료되고, Edge 서버에서 MQTT 데이터를 받을 수 있도록 MQ 시스템 설치도 완료 되었다면, Edge 서버로 데이터가 전송되고 있을 것으로 예상됩니다.
MQTT Explorer 라는 툴을 설치하여 Edge 서버 정보를 입력하면, 정상적인 MQTT 네트워크 통신이 수행되고 있는지, 메시지 내용 등을 확인 할 수 있습니다.

4) Nifi, Kafka

Mosquitto 를 통해서 Smart-Plug의 데이터가 Edge Server 로 전달되는 것은 확인이 되었습니다. 이제 전달받고 있는 IoT 데이터를 Edge-Server  클라우드 환경에 구축된 서버로 전달해야 합니다. 데이터 파이프라인 구축 전 선행 작업으로는 Edge Server에 Nifi 설치가 되어야 하며, Cloud 환경에서는 Zookeeper 와 연계된Kafka가 설치되어 있어야 합니다. 먼저 Nifi 는 시스템 간 데이터 처리/관리/전달/모니터링에 최적화된 시스템입니다.
Web Server : NiFi의 HTTP 기반의 명령과 제어 API를 제공
Flow Controller : NiFi의 핵심으로 데이터를 가공하고 분배하는 작업 영역
FlowFile Repository : 현재 만들어진 FlowFile의 Meta Data가 저장되어있는 저장소
Content Repository : 과거 및 현재의 FlowFile의 Content Data가 저장되어 있는 저장
Provenance Repository : FlowFile의 History Data가 저장되어 있는 저장소
Kafka 또한 Mosquitto와 같은 MQ 시스템 입니다. publish-subscribe 모델을 구현한 분산 메세징 시스템으로Producer, Consumer, Broker 로 구성된 Loosely Coupled 시스템 입니다. Topic 이라는 단위로 Producer/Consumer Message 전달의 Queue 역할을 수행합니다. 일반적인 MQ 서비스가 메모리에서 수행되지만 Kafka 는 파일시스템(Disk)에 Topic 의 데이터가 저장됩니다. 수평적 확장을 위해서 Zookeeper 를 활용합니다.
다수의 IoT 데이터가 cloud 환경으로 수집되기 때문에 일반적인 MQ시스템을 사용한다면 데이터 유실이 발생될 수 있습니다. Kafka는 파일시스템을 저장소로 사용하고, Topic에 동시 접근가능하며, 확장성도 손쉽게 가능하기 때문에 여러 가지를 고려하여 구축에 사용하였습니다. Smart-plugs를 사용하는 공장 라인 (Producer P)에 따라 특정 이름을 지정하여 발행하며(Topic T), 빅데이터 클러스터에서는 원하는 메시지를 구독합니다.
[Flow 정리]
1.
Smart-Plug 의 데이터가 Edge 서버로 전송되도록 Device 의 설정을 합니다.
2.
Mosquitto 서비스를 Edge 서버에 설치해서 MQTT 프로토콜 사용하는 데이터를 받을 수 있도록 합니다.
3.
Cloud 서버에 kafka, Zookeeper를 설치하고 smart-plugs 용도의 Topic 을 생성합니다.
4.
Edge 서버에 설치된 Nifi 서비스를 활용해서 파이프라인(Smart-Plugs  Edge Server Queue  Cloud kafka Topic) 만듭니다.
5.
Cloud 수집서버에 설치된 Nifi 에서 kafka Topic(Queue) 에 저장된 smart-plugs 데이터를 Hadoop 클러스터의 HDFS에 적재 합니다.

5) KT Cloud, NDAP, Hive

사내(KtNexR) 제품인 NDAP 은 빅데이터 기반의 데이터 분석 플랫폼입니다. HDFS 의 데이터를 SQL로 처리 할 수 있는 SQL 쿼리 엔진 중 Hive(SQL on Hadoop)가 도입되어 있습니다. Hive 는 Divide and conquer 알고리즘을 기초로 둔 Map/Reduce 라는 프레임워크를 java 코딩이 아닌 SQL 질의형태로 수행 될 수 있도록 도와주는 서비스 입니다.
Kafka 에서 가져온 Smart-plugs 데이터는 시간단위의 HDFS 특정 위치에 적재 합니다.
Hive 를 이용해서 Table 형태로 구조화 합니다.
NDAP 제품(KTNexR 사내 솔루션)을 이용해서 작업 스케줄링을 등록하고 시간마다 데이터를 table 에 적재 합니다. (NDAP 솔루션 없이 Hive Beeline 을 이용한 적재 용 쉘 스크립트 + crontab(Linux 스케줄) 을 사용으로 경량화한 구축도 가능합니다.)
NDAP 솔루션- Task 단계에 따른 hive 작업 수행

6) Flow

[Flow 정리]
1.
Smart-Plug 의 데이터가 Edge 서버로 전송되도록 Device 의 설정을 합니다.
2.
Mosquitto 서비스를 Edge 서버에 설치해서 MQTT 프로토콜 사용하는 데이터를 받을 수 있도록 합니다.
3.
Cloud 서버에 kafka, Zookeeper를 설치하고 smart-plugs 용도의 Topic 을 생성합니다.
4.
Edge 서버에 설치된 Nifi 서비스를 활용해서 파이프라인(Smart-Plugs  Edge Server Queue  Cloud kafka Topic) 만듭니다.
5.
Cloud 수집서버에 설치된 Nifi 에서 kafka Topic(Queue) 에 저장된 smart-plugs 데이터를 Hadoop 클러스터의 HDFS에 적재 합니다.
6.
시간단위 or 분단위로 HDFS에 적재된 smart-plugs 데이터를 Hive 를 이용해 DB의 table 형태로 구조화 합니다.
7.
구조화된 테이블은 여러 차원(dimension) 정보와 조합과 분석을 통해 통계/마트 데이터를 생성합니다.
8.
머신러닝 or 딥러닝 알고리즘을 적용한 학습을 통해 예측모델을 생성하고, 예측모델을 활용한 분석을 수행합니다. 정확도 올리기 위해 분석결과를 통한 예측모델을 재생성하고 반복 작업을 수행합니다.

5. 마무리

IoT device에서 출발한 데이터가 Edge 서버를 통해 Cloud 환경의 클러스터로 적재되는 데이터 파이프 라인 구축과정에 대해서 설명하였습니다. IoT 네트워크에는 수 많은 장비들에서 발생되기 때문에 낮은 대역폭과 전력 등을 감안하여 경량화된 프로토콜과 그에 맞는 서비스가 필요합니다. 프로토콜로는 MQTT 프로토콜을 사용하였고, Broker 역할은 Mosquitto 로 구축하여 Edge 서버 경량화에 힘을 주었습니다. Cloud 환경에서 분석을 위해 구축한 클러스터에서는 데이터의 유실이 발생되지 않고 확장성과 동시성을 확보 할 수 있는 Kafka 라는 MQ 시스템을 도입하였습니다. Edge-Server가 증가한다면 Cloud로 전송되는 데이터 증가로 확장성도 고려해야 하며, 장애상황에도 대처할 수 있어야 하기 때문입니다. 이제 모인 IoT 데이터를 활용해서 분석하는 방법을 선택하면 됩니다. 빅데이터 서비스를 이용한 분석방법은 소개한 것처럼 Hive 가 될 수 있고, Spark, Hbase, Presto 등 여러 가지가 될 수 있습니다. AI를 위한 학습데이터 생성 또한 어떤 알고리즘을 적용할지 선택하기에 따라 달라질 수 있습니다. 중요한 점은 IoT device는 센서의 종류도 다양하고 사용하는 프로토콜도 다르겠지만, Edge 서버를 통해서 Cloud 로 전달되어 데이터가 구조화 되어가는 과정은 유사한 흐름으로 진행된다고 말씀드릴 수 있을 것 같습니다. 구축하고자 하는 요구사항에 맞는 IoT 서비스의 아키텍처에 도움이 되었으면 합니다.
【9】 스마트플러그 IoT 데이터 활용 스마트팩토리 구축 사례 : kt NexR 기술블로그 ‘21 테크리포트
Reference
본 기술블로그에 게재되는 모든 컨텐츠의 저작권은 케이티넥스알(kt NexR)에서 가지고 있으며, 동의 없는 컨텐츠 수정 및 무단 복제는 금하고 있습니다. 컨텐츠(글/사진/영상 등)를 공유하실 경우 반드시 출처를 밝혀주시기 바랍니다. Copyright(c) 2021 kt NexR, Inc. All Rights Reserved.