Google Cloud IoT는 완전 관리형 통합 서비스로, 간편하고 안전하게 전 세계에 분산된 기기에서 IoT 데이터에 대한 연결, 관리, 내부 데이터 처리를 대규모로 진행할 수 있습니다.
또한, 이 데이터를 실시간으로 처리하고 분석 및 시각화하여 작업 변경사항을 적용하고 필요에 따라 조치할 수 있습니다.
뉴스레터 가입
클라우드 관련 최신 소식을 업데이트 받으실 수 있습니다.
– Cloud IoT Core :
전 세계에 분산되어 있는 수백만 대의 장치에서 데이터를 쉽고 안전하게 연결, 관리 및 수집 할 수 있는 완벽하게 관리되는 서비스 입니다.
이 서비스는 표준 Message Queue Telemetry Transport(MQTT) 프로토콜을 사용하는 IoT 기기를 다른 Google Cloud Platform 데이터 서비스에 연결 합니다.
그림1 Google Cloud 기반 IoT 표준 아키텍처
이 글에서는 GCP의 IoT 서비스에 대해 알아보고, 실습 과정을 통한 IoT Analytics Pipeline에 대해 설명합니다.
- Cloud IoT Core를 사용하여 MQTT 기반 장치를 연결하고 관리
- Cloud Pub/Sub를 사용하여 Cloud IOT Core의 정보 스트림을 수집
- Cloud DataFlow를 사용하여 IoT 데이터를 처리
- BigQuery를 사용하여 IoT 데이터를 분석
실습 절차
1. 수행에 필요한 API활성화 여부 확인
- GCP Console의 왼쪽 메뉴에서 APIs & Services 선택
- 아래의 3가지 서비스의 활성화 여부 확인
(비 활성화인 경우 ENABLE API버튼을 클릭)
2. Cloud Pub/Sub Topic 만들기
- GCP Console의 왼쪽 메뉴에서 Pub/Sub > Topics 선택
- Create Topic을 선택한 후 Topic 이름을 입력
3. Topic 생성 후 계정 추가 및 권한 부여
- Pub/Sub > Pub/Sub Publisher 권한 부여
- cloud-iot@system.gserviceaccount.com
4. BigQuery dataset 생성
- GCP Console의 왼쪽 메뉴에서 BIG DATA > BigQuery 선택
- 새로운 Dataset 생성을 위해 Create new dataset을 선택
- iotlab에서 “Add table” 아이콘을 클릭하면, Create Table 대화창을 확인 가능
Table 생성
- Source Data : Create empty table
- Table name : sensordata
5. Cloud Storage Bucket 생성
Cloud Storage를 사용하면 언제든지 모든 양의 데이터를 전세계에 저장하고 검색 할 수 있습니다.
웹 사이트 콘텐츠 제공, 보관 및 재해 복구를 위한 데이터 저장, 직접 다운로드를 통한 대용량 데이터 객체 배포 등 다양한 시나리오에 Cloud Storage를 사용할 수 있습니다.
이 실습에서는 Cloud Storage를 사용하여 Cloud Dataflow Pipeline의 작업 공간을 제공합니다.
6. Cloud Dataflow Pipeline 설정
Cloud Dataflow는 서버없이 데이터 분석을 수행 가능합니다.
이 실습에서는 Pub / Sub에서 센서 데이터를 읽고, 최대 온도를 계산하고 이를 BigQuery에 저장하도록 스트리밍 데이터 파이프 라인을 설정합니다.
- GCP Console의 왼쪽 메뉴에서 BIG DATA > Dataflow 선택
7. Compute Engine VM 준비하기
sudo apt-get remove google-cloud-sdk -y
curl https://sdk.cloud.google.com | bash
gcloud init
gcloud components update
gcloud components install beta
sudo apt-get update
sudo apt-get install python-pip openssl git –y
sudo pip install pyjwt paho-mqtt cryptography
git clone http://github.com/GoogleCloudPlatform/training-data-analyst
8. IoT 장치들을 위한 Registry 생성
시뮬레이션 장치를 등록하기 위한 Registry를 생성해야 합니다.
Registry는 장치에 대한 제어 지점입니다.
export PROJECT_ID=[ Your Project ID ]
export MY_REGION=[ asia-east1 ]
gcloud beta iot registries create iotlab-registry \
–project=$PROJECT_ID \
–region=$MY_REGION \
–event-notification-config=topic=projects/$PROJECT_ID/topics/iotlab
9. 암호화 키 쌍 생성
IoT장치를 Cloud IoT Core에 안전하게 연결하기 위한 암호화 키 쌍을 만들어야 합니다.
cd $HOME/training-data-analyst/quests/iotlab/
openssl req -x509 -newkey rsa:2048 -keyout rsa_private.pem \
-nodes -out rsa_cert.pem -subj “/CN=unused”
10. Registry에 시뮬레이션 장치 등록
장치를 cloud IoT Core에 등록하기 위해서는 반드시 Registry에 우선적으로 등록되어야 합니다.
아래 명령어를 통하며 두 대의 장치를 등록할 수 있습니다.
gcloud beta iot devices create temp-sensor-buenos-aires \
–project=$PROJECT_ID \
–region=$MY_REGION \
–registry=iotlab-registry \
–public-key path=rsa_cert.pem,type=rs256
gcloud beta iot devices create temp-sensor-istanbul \
–project=$PROJECT_ID \
–region=$MY_REGION \
–registry=iotlab-registry \
–public-key path=rsa_cert.pem,type=rs256
11. 시뮬레이션 장치 실행
시뮬레이션 장치에서 생성된 데이터는 Cloud IoT Core를 통해 Cloud Pub/Sub Topic으로 전송됩니다.
Dataflow job은 Topic으로부터 메시지를 읽어 BigQuery에 데이터를 저장합니다.
cd $HOME/training-data-analyst/quests/iotlab/
wget https://pki.google.com/roots.pem
python cloudiot_mqtt_example_json.py \
–project_id=$PROJECT_ID \
–cloud_region=$MY_REGION \
–registry_id=iotlab-registry \
–device_id=temp-sensor-buenos-aires \
–private_key_file=rsa_private.pem \
–message_type=event \
–algorithm=RS256 > buenos-aires-log.txt 2>&1
python cloudiot_mqtt_example_json.py \
–project_id=$PROJECT_ID \
–cloud_region=$MY_REGION \
–registry_id=iotlab-registry \
–device_id=temp-sensor-istanbul \
–private_key_file=rsa_private.pem \
–message_type=event \
–algorithm=RS256
12. BigQuery를 이용한 Sensor Data 분석
아래 쿼리를 이용하여 시뮬레이션 장치를 통해 입력된 센서 데이터 값을 확인 가능합니다.
#standardsql
SELECT timestamp, device, temperature from iotlab.sensordata
ORDER BY timestamp DESC
LIMIT 100
구글 클라우드 플랫폼(GCP)에 대해 더 알고 싶으세요?
베스핀글로벌의 GCP 전문 엔지니어가 답해드립니다.