웹사이트 검색

Managed Databases와 함께 Coreflux MQTT 브로커 배포


소개

MQTT 브로커는 게시-구독 메시징 패턴을 통해 IoT 장치와 애플리케이션을 연결하여 현대 IoT 인프라에서 필수적인 역할을 합니다. Coreflux는 실시간 데이터 처리 및 변환 기능을 추가한 저코드(low-code) MQTT 브로커로, 맞춤 통합 코드를 작성하지 않고도 Linux-Console.net 관리 데이터베이스와 직접 통합할 수 있으며, MongoDB, PostgreSQL, MySQL, OpenSearch를 포함한 데이터베이스를 지원합니다.

배울 내용: 이 튜토리얼에서는 완전한 IoT 데이터 파이프라인을 배포하는 과정을 안내합니다. Linux-Console.net에서 관리형 데이터베이스 클러스터와 Coreflux MQTT 브로커를 설정하고, 안전한 VPC 네트워킹을 구성하며, Coreflux의 사물 언어(LoT)를 사용하여 데이터 변환 모델을 구축하고, 처리된 IoT 데이터를 선택한 데이터베이스에 자동으로 저장하는 과정을 다룹니다. 결과적으로 실시간 메시징과 지속적인 저장을 처리할 수 있는 프로덕션 준비가 완료된 환경을 갖추게 됩니다.

주요 내용

단계별 배포 과정을 시작하기 전에, 여기서 여러분이 배우게 될 주요 사항은 다음과 같습니다:

  • 관리형 데이터베이스 클러스터(PostgreSQL, MongoDB, MySQL, 또는 OpenSearch)를 Linux-Console.net에 배포하여 확장 가능한 IoT 데이터 저장소를 구축하세요.
  • Coreflux MQTT 브로커 설정을 Marketplace 이미지 또는 Docker를 사용하여 Linux-Console.net 드롭렛에서 설정하세요.
  • 공용 노출 없이 MQTT 브로커와 데이터베이스를 연결하기 위해 안전한 VPC 네트워킹을 생성하세요.
  • 실시간 데이터 파이프라인 구축 - Coreflux의 사물 언어(LoT)를 사용하여 저코드 IoT 자동화를 구현하세요.
  • MQTT 토픽에서 데이터베이스 테이블, 컬렉션 또는 인덱스로 IoT 데이터를 자동으로 변환하고 저장
  • 시뮬레이션 센서에서 변환 모델을 거쳐 데이터베이스 저장까지의 종단 간 데이터 흐름을 검증하세요.

이 튜토리얼은 실시간 메시징과 영속적인 데이터 저장소, 검색, 분석, 관계형 쿼리와 같은 고급 기능이 결합된 IoT 애플리케이션을 위한 프로덕션 준비 기초를 제공합니다.

당신이 만들 것

이 자동화 가이드를 마칠 즈음에는 다음을 배포하게 될 것입니다:

  • 확장 가능한 스토리지를 위한 관리형 데이터베이스 클러스터(PostgreSQL, MongoDB, MySQL, 또는 OpenSearch)
  • 강력한 Coreflux MQTT 브로커를 실행하는 Linux-Console.net 드롭렛
  • 보안 IoT 통신을 위한 가상 사설 클라우드(VPC) 네트워크
  • LoT Notebook 확장을 사용한 실시간 데이터 시뮬레이션
  • 로우코드 데이터 변환 모델 및 데이터베이스 통합 경로
  • 완전한 데이터 통합 및 변환 파이프라인 for IoT 자동화

Coreflux & Linux-Console.net 파트너십

Coreflux는 Linux-Console.net에서 효율적인 IoT 통신을 위해 Language-of-Things 프로그래밍 언어를 통해 경량 MQTT 브로커와 데이터 파이프라인 도구를 제공합니다.

MQTT가 무엇인가요?

MQTT(메시지 큐잉 텔레메트리 전송)는 IoT 생태계에서 널리 채택된 경량의 퍼블리시-구독 네트워크 프로토콜입니다. 제한된 장치와 낮은 대역폭, 높은 지연 또는 불안정한 네트워크를 위해 설계된 MQTT는 대역폭이 제한된 환경에서 효율적이고 실시간 메시징을 가능하게 합니다.

코어플럭스 소개

Coreflux는 IoT 장치와 애플리케이션 간의 효율적이고 실시간 통신을 촉진하기 위해 가벼운 MQTT 브로커를 제공하며, 각 사용 사례에 필요한 실시간 데이터 변환 기능도 포함합니다. 확장성과 신뢰성을 위해 설계된 Coreflux는 낮은 지연 시간과 높은 처리량이 중요한 환경에 최적화되어 있습니다.

코어플럭스는 소규모 IoT 프로젝트를 구축하든 산업용 모니터링 시스템을 배포하든, 장치 간 메시지 라우팅과 데이터 흐름을 처리합니다.

Linux-Console.net에서 Coreflux를 사용하면 다음과 같은 혜택을 누릴 수 있습니다:

데이터 처리: 데이터가 존재하는 곳에서 데이터 처리 요구를 중앙 집중화하여 실시간 데이터 처리를 보장합니다.

데이터 통합: 관리형 데이터베이스(PostgreSQL, MongoDB, MySQL 또는 OpenSearch) 등 다른 Linux-Console.net 서비스와 손쉽게 통합하여 모든 데이터 요구 사항을 위한 단일하고 간편한 생태계를 제공합니다.

확장성: 성능을 저하시키지 않으면서 증가하는 데이터와 디바이스를 손쉽게 처리할 수 있습니다.

신뢰성: 모든 연결된 장치에서 일관되고 신뢰할 수 있는 메시징을 보장하세요.

전제 조건

이 MQTT 브로커 배포 튜토리얼을 시작하기 전에, 다음이 필요합니다:

  • 청구가 활성화된 Linux-Console.net 계정
  • MQTT 프로토콜 개념과 IoT 아키텍처에 대한 이해(배경 지식은 MQTT 소개를 참고하세요)
  • Visual Studio Code (LoT Notebook 확장용)

예상 소요 시간: 이 튜토리얼을 완료하는 데는 데이터베이스 프로비저닝 시간(일반적으로 데이터베이스 클러스터당 1~5분)에 따라 약 30~45분이 소요됩니다.

1단계 — IoT 자동화를 위한 네트워크 인프라 구축

안전한 MQTT 통신을 위한 VPC 네트워크 생성

먼저, 공용 접근 없이 IoT 서비스와 MQTT 브로커 간의 안전한 통신을 보장하기 위해 가상 사설 클라우드(VPC)를 생성합니다.

  1. Linux-Console.net 제어판에 로그인하세요
  2. 왼쪽 사이드바에서 네트워킹 → VPC로 이동하세요
  3. VPC 네트워크 생성 클릭

  1. 귀하의 VPC를 IoT 자동화용으로 구성하세요:

    1. 이름: coreflux-integrations-vpc (또는 귀하의 VPC 이름)
    2. 데이터센터 지역: 프랑크푸르트(또는 선호하는 지역)를 선택하세요
    3. IP 범위: 기본 설정을 사용하거나 필요에 따라 구성
    4. 설명: MQTT 브로커 및 데이터베이스 네트워크에 대한 의미 있는 설명을 추가하세요
  2. VPC 네트워크 생성을 클릭하세요

VPC는 모든 IoT 리소스에 대한 격리된 네트워킹을 제공하여 Coreflux MQTT 브로커와 관리형 데이터베이스 간의 안전한 통신을 보장합니다. VPC 구성에 대한 자세한 내용은 VPC 네트워크 생성 안내서를 참조하세요.

2단계 — 확장 가능한 스토리지를 위한 관리형 데이터베이스 설정

IoT 애플리케이션 요구사항에 따라 다음 데이터베이스 옵션 중 하나를 선택하세요:

  • PostgreSQL: 관계형 쿼리, ACID 준수 및 복잡한 관계가 필요한 구조화된 데이터에 이상적
  • MySQL: 강력한 일관성과 폭넓은 도구 지원을 갖춘 구조화된 워크로드와 트랜잭션 쿼리에 적합
  • MongoDB: 다양한 스키마와 빠른 개발에 적합한 유연한 문서 저장소
  • OpenSearch: 고급 검색, 분석, 로그 분석 및 시계열 데이터 시각화에 적합

PostgreSQL 관리형 데이터베이스 설정

Linux-Console.net에서 제공하는 관리형 PostgreSQL은 IoT 워크로드에 관계형 스키마, 강력한 일관성, 고급 SQL 분석이 필요하고 자동 백업, 모니터링 및 유지보수 지원이 필요한 경우에 적합합니다.

  1. Linux-Console.net 제어판에서 데이터베이스로 이동하세요

  2. 데이터베이스 클러스터 생성을 클릭하세요

  3. IoT 자동화를 위해 PostgreSQL 클러스터를 구성하세요:

    • 데이터베이스 엔진: PostgreSQL 선택
    • 버전: 최신 안정 버전을 선택하세요
    • 데이터센터 지역: 프랑크푸르트 선택 (VPC와 동일)
    • VPC 네트워크: 생성한 coreflux-integrations-vpc를 선택하세요
    • 데이터베이스 클러스터 이름: postgresql-coreflux-test
    • 프로젝트: 대상 프로젝트 선택
  4. 귀하의 IoT 요구 사항에 따라 요금제를 선택하세요:

    1. 개발용: 기본 요금제 1GB RAM
    2. 생산용: 범용 이상으로 확장 가능한 저장소
  5. 데이터베이스 클러스터 생성을 클릭하세요

관리형 데이터베이스 생성 과정은 일반적으로 1~5분 정도 소요됩니다. 생성이 완료되면 데이터베이스 개요 페이지로 이동하며, 여기서 연결 세부 정보를 확인하고 관리 작업을 수행할 수 있습니다.

MQTT 브로커 통합을 위한 PostgreSQL 데이터베이스 액세스 구성

연결 세부 정보가 표시되고 인바운드 액세스 규칙을 구성할 수 있는 시작하기 단계가 표시됩니다(권장: 내 IP 및 VPC로만 제한).

  1. 시작하기를 클릭하여 PostgreSQL 데이터베이스를 구성하세요
  2. [선택 사항] 인바운드 연결 제한:

    • 관리 액세스를 위해 로컬 컴퓨터의 IP를 추가하세요
    • 드롭릿은 VPC 네트워킹을 통해 자동으로 허용됩니다

연결 세부 정보에서는 두 가지 옵션을 확인할 수 있습니다 - 퍼블릭 네트워크와 VPC 네트워크. 첫 번째는 DBeaver와 같은 도구의 외부 접근을 위한 것이고, 두 번째는 Coreflux 서비스가 데이터베이스에 접근할 때 사용됩니다.

  1. 제공된 연결 세부 정보를 기록해 두세요. 공용 액세스용과 VPC 액세스용(각각 별도의 세부 정보)을 모두 포함합니다:

    • 호스트: 데이터베이스 호스트 이름
    • 사용자: 기본 관리자 사용자
    • 비밀번호: 자동 생성된 보안 비밀번호
    • 데이터베이스: 인증 데이터베이스 이름

PostgreSQL 데이터베이스 연결 테스트

제공된 연결 매개변수를 사용하여 공개 액세스 자격 증명으로 DBeaver를 통해 PostgreSQL 연결을 테스트할 수 있습니다:

PostgreSQL 애플리케이션 데이터베이스 및 사용자 생성 (선택 사항)

더 나은 보안과 관리를 위해, IoT 자동화 애플리케이션을 위해 전용 사용자와 데이터베이스를 생성하세요. 이는 DBeaver나 CLI를 통해서도 가능하지만, Linux-Console.net은 보다 사용자 친화적인 접근 방식을 제공합니다:

  1. 관리형 데이터베이스 클러스터에서 사용자 & 데이터베이스 탭으로 이동하세요
  2. 사용자 생성:

    • 사용자 이름: coreflux-broker-client
    • 비밀번호: 자동 생성됨
  3. 데이터베이스 생성:

    • 데이터베이스 이름: coreflux-broker-data

참고: 테이블을 생성하고 데이터를 삽입 및 조회할 수 있도록 데이터베이스 내에서 사용자 권한을 변경해야 할 수 있습니다. PostgreSQL의 경우, GRANT CREATE, INSERT, SELECT ON DATABASE coreflux-broker-data TO coreflux-broker-client;를 사용하여 필요한 권한을 부여하십시오. MySQL의 경우, GRANT CREATE, INSERT, SELECT ON coreflux-broker-data.* TO 'coreflux-broker-client'@'%';를 사용하십시오. 자세한 내용은 PostgreSQL 퀵스타트 및 MySQL 문서를 참고하세요.

MySQL 관리형 데이터베이스 설정

Linux-Console.net에서 제공하는 관리형 MySQL은 익숙한 SQL, 광범위한 에코시스템 지원, 백업, 업데이트, 모니터링을 처리하는 완전 관리형 서비스를 원하는 구조화된 트랜잭션 IoT 데이터에 이상적입니다.

  1. Linux-Console.net 제어판에서 데이터베이스로 이동하세요

  2. 데이터베이스 클러스터 생성을 클릭하세요

  3. IoT 자동화를 위해 MySQL 클러스터를 구성하세요:

    • 데이터베이스 엔진: MySQL 선택
    • 버전: 최신 안정 버전을 선택하세요
    • 데이터센터 지역: 프랑크푸르트 선택 (VPC와 동일)
    • VPC 네트워크: 생성한 coreflux-integrations-vpc를 선택하세요
    • 데이터베이스 클러스터 이름: mysql-coreflux-test
    • 프로젝트: 대상 프로젝트 선택
  4. 귀하의 IoT 요구 사항에 따라 요금제를 선택하세요:

    • 개발용: 기본 요금제 1GB RAM
    • 생산용: 범용 이상으로 확장 가능한 저장소
  5. 데이터베이스 클러스터 생성을 클릭하세요

관리형 데이터베이스 생성 과정은 일반적으로 1~5분 정도 소요됩니다. 생성이 완료되면 데이터베이스 개요 페이지로 이동하며, 여기서 연결 세부 정보를 확인하고 관리 작업을 수행할 수 있습니다.

MQTT 브로커 통합을 위한 MySQL 데이터베이스 액세스 구성

연결 세부 정보가 표시되고 인바운드 액세스 규칙을 구성할 수 있는 '시작하기' 단계가 안내됩니다(권장: IP와 VPC로만 제한).

  1. 시작하기를 클릭하여 MySQL 데이터베이스를 설정하세요
  2. [선택 사항] 인바운드 연결 제한:

    • 관리 액세스를 위해 로컬 컴퓨터의 IP를 추가하세요
    • 드롭릿은 VPC 네트워킹을 통해 자동으로 허용됩니다

연결 세부 정보에서는 두 가지 옵션을 확인할 수 있습니다 - 퍼블릭 네트워크와 VPC 네트워크. 첫 번째는 DBeaver와 같은 도구의 외부 접근을 위한 것이고, 두 번째는 Coreflux 서비스가 데이터베이스에 접근할 때 사용됩니다.

  1. 제공된 연결 세부 정보를 확인하세요. 공용 액세스와 VPC 액세스용 각각의 세부 정보가 다르게 제공됩니다:

    • 호스트: 데이터베이스 호스트 이름
    • 사용자: 기본 관리자 사용자
    • 비밀번호: 자동 생성된 보안 비밀번호
    • 데이터베이스: 인증 데이터베이스 이름

MySQL 데이터베이스 연결 테스트

제공된 연결 매개변수와 공개 접근 자격 증명을 사용하여 DBeaver로 MySQL 연결을 테스트할 수 있습니다.

참고: DBeaver의 드라이버 설정을 변경해야 할 수 있습니다 — allowPublicKeyRetrieval=true로 설정하세요.

MySQL 응용 프로그램 데이터베이스 및 사용자 생성 (선택 사항)

더 나은 보안과 관리를 위해, IoT 자동화 애플리케이션을 위해 전용 사용자와 데이터베이스를 생성하세요. 이는 DBeaver나 CLI를 통해서도 할 수 있지만, Linux-Console.net은 사용자 친화적인 접근 방식을 제공합니다:

  1. 관리형 데이터베이스 클러스터에서 사용자 & 데이터베이스 탭으로 이동하세요
  2. 사용자 생성:

    • 사용자 이름: coreflux-broker-client
    • 비밀번호: 자동 생성됨
  3. 데이터베이스 생성:

    • 데이터베이스 이름: coreflux-broker-data

MongoDB 관리형 데이터베이스 설정

Linux-Console.net에서 관리되는 MongoDB는 유연하거나 진화하는 IoT 페이로드에 적합하여, 엄격한 스키마 없이 다양한 센서 문서를 저장할 수 있으며, 플랫폼이 복제, 백업 및 모니터링을 처리합니다.

  1. Linux-Console.net 제어판에서 데이터베이스로 이동하세요

  2. 데이터베이스 클러스터 생성 클릭

  3. IoT 자동화를 위해 MongoDB 클러스터를 구성하세요:

    • 데이터베이스 엔진: MongoDB 선택
    • 버전: 최신 안정 버전을 선택하세요
    • 데이터센터 지역: 프랑크푸르트 선택 (VPC와 동일)
    • VPC 네트워크: 생성한 coreflux-integrations-vpc를 선택하세요
    • 데이터베이스 클러스터 이름: mongodb-coreflux-test
    • 프로젝트: 대상 프로젝트 선택
  4. 귀하의 IoT 요구 사항에 따라 요금제를 선택하세요:

    • 개발용: 기본 요금제 1GB RAM
    • 생산용: 범용 이상으로 확장 가능한 저장소
  5. 데이터베이스 클러스터 생성을 클릭하세요

관리형 데이터베이스 생성 과정은 일반적으로 1~5분 정도 소요됩니다. 생성이 완료되면 데이터베이스 개요 페이지로 이동하며, 여기서 연결 세부 정보를 확인하고 관리 작업을 수행할 수 있습니다.

MQTT 브로커 통합을 위한 MongoDB 데이터베이스 액세스 구성

연결 세부 정보가 표시되고 인바운드 액세스 규칙을 구성할 수 있는 시작하기 단계가 표시됩니다(권장: 내 IP와 VPC로만 제한).

  1. 시작하기를 클릭하여 MongoDB 데이터베이스를 설정하세요
  2. [선택 사항] 인바운드 연결 제한:

    • 관리 액세스를 위해 로컬 컴퓨터의 IP를 추가하세요
    • 드롭릿은 VPC 네트워킹을 통해 자동으로 허용됩니다

연결 세부 정보에서는 두 가지 옵션을 확인할 수 있습니다: 퍼블릭 네트워크와 VPC 네트워크. 첫 번째는 MongoDB Compass와 같은 도구의 외부 접근을 위한 것이고, 두 번째는 Coreflux 서비스가 데이터베이스에 접근할 때 사용됩니다.

  1. 제공된 연결 세부 정보를 기록해 두세요. 공용 액세스용과 VPC 액세스용(각각 별도의 세부 정보)을 모두 포함합니다:

    • 호스트: 데이터베이스 호스트 이름
    • 사용자: 기본 관리자 사용자
    • 비밀번호: 자동 생성된 보안 비밀번호
    • 데이터베이스: 인증 데이터베이스 이름

MongoDB 데이터베이스 연결 테스트

공용 접근 자격 증명을 사용하여 MongoDB Compass 또는 제공된 연결 문자열을 사용해 MongoDB 연결을 테스트할 수 있습니다:

mongodb://username:password@mongodb-host:27017/defaultauthdb?ssl=true

MongoDB 애플리케이션 데이터베이스 및 사용자 생성 (선택 사항)

더 나은 보안과 관리를 위해, IoT 자동화 애플리케이션을 위해 전용 사용자와 데이터베이스를 생성하세요. 이는 MongoDB Compass나 CLI를 통해서도 할 수 있지만, Linux-Console.net은 사용자 친화적인 접근 방식을 제공합니다:

  1. 관리형 데이터베이스 클러스터에서 사용자 및 데이터베이스 탭으로 이동하세요
  2. 사용자 생성:

    • 사용자 이름: coreflux-broker-client
    • 비밀번호: 자동 생성됨
  3. 데이터베이스 생성:

    • 데이터베이스 이름: coreflux-broker-data

OpenSearch 관리형 데이터베이스 설정

Linux-Console.net에서 제공하는 관리형 OpenSearch는 고용량 IoT 데이터를 대상으로 검색, 로그 분석, 시계열 대시보드를 위해 설계되었으며, 서비스가 클러스터 상태, 확장성, 인덱스 저장소 관리를 대신합니다.

  1. Linux-Console.net 제어판에서 데이터베이스로 이동하세요

  2. 데이터베이스 클러스터 생성 클릭

  3. IoT 자동화를 위해 OpenSearch 클러스터를 구성하세요:

    • 데이터베이스 엔진: OpenSearch 선택
    • 버전: 최신 안정 버전을 선택하세요
    • 데이터센터 지역: 프랑크푸르트 선택 (VPC와 동일)
    • VPC 네트워크: 생성한 coreflux-integrations-vpc를 선택하세요
    • 데이터베이스 클러스터 이름: opensearch-coreflux-test
    • 프로젝트: 대상 프로젝트 선택
  4. 귀하의 IoT 요구 사항에 따라 요금제를 선택하세요:

    1. 개발용: 기본 요금제 1GB RAM
    2. 생산용: 범용 이상으로 확장 가능한 스토리지
  5. 데이터베이스 클러스터 생성을 클릭하세요

관리형 데이터베이스 생성 과정은 일반적으로 1~5분 정도 소요됩니다. 생성이 완료되면 데이터베이스 개요 페이지로 이동하며, 여기서 연결 세부 정보를 확인하고 관리 작업을 수행할 수 있습니다.

MQTT 브로커 통합을 위한 OpenSearch 데이터베이스 액세스 구성

시작하기 단계가 표시되며, 여기서 연결 세부 정보를 확인하고 수신 액세스 규칙을 구성할 수 있습니다(권장: IP와 VPC로만 제한).

  1. 시작하기를 클릭하여 OpenSearch 데이터베이스를 구성하세요
  2. [선택 사항] 인바운드 연결 제한:

    • 관리 액세스를 위해 로컬 컴퓨터의 IP를 추가하세요
    • 드롭렛은 자동으로 VPC 네트워킹을 통해 허용됩니다.

연결 세부 정보를 확인하면 두 가지 옵션이 표시됩니다: 공개 네트워크(Public Network)와 VPC 네트워크(VPC Network). 첫 번째는 도구의 외부 접근용이며, 두 번째는 Coreflux 서비스가 데이터베이스에 접근할 때 사용됩니다. 또한 OpenSearch Dashboards에 접근하기 위한 URL과 파라미터도 확인할 수 있습니다.

  1. 제공된 연결 세부 정보를 기록해 두세요. 공용 액세스용과 VPC 액세스용(각각 별도의 세부 정보)을 모두 포함합니다:

    • 호스트: 데이터베이스 호스트 이름
    • 사용자: 기본 관리자 사용자
    • 비밀번호: 자동 생성된 보안 비밀번호
    • 데이터베이스: 인증 데이터베이스 이름

OpenSearch 데이터베이스 연결 테스트

제공된 자격 증명을 사용하여 OpenSearch Dashboards에서 OpenSearch 연결을 테스트할 수 있습니다:

3단계 — Linux-Console.net Droplet에 Coreflux MQTT 브로커 배포하기

Linux-Console.net 드롭릿 만들기

  1. 당신의 Linux-Console.net 제어판에서 Droplets로 이동하세요
  2. 클릭 드롭렛 생성

  1. MQTT 브로커 배포를 위해 드롭렛을 구성하세요:

    • 지역 선택: 프랑크푸르트 (관리되는 데이터베이스와 동일)
    • VPC 네트워크: coreflux-integrations-vpc 선택
    • 이미지 선택: 마켓플레이스 탭으로 이동
    • ‘Coreflux’를 검색하고 마켓플레이스에서 Coreflux를 선택하세요

  1. IoT 작업 부하에 맞는 크기 선택:

    • 개발용: 기본 요금제, 2GB 메모리
    • 프로덕션용: Basic 또는 General Purpose 플랜, 확장 가능한 성능을 위해 4GB 이상의 메모리
  2. 인증 방법 선택:

    • SSH 키: 보안 강화를 위해 권장

      1. ssh-keygen을 사용하여 키를 로컬에서 생성할 수 있습니다
    • 비밀번호: 대체 옵션
  3. 세부 사항 확정:

    • 호스트명: coreflux-test-broker
    • 프로젝트: 프로젝트를 선택하세요
    • 태그: DevOps 조직에 적합한 태그 추가
  4. 드롭렛 생성 클릭

  5. Droplet 홈페이지를 보고 배포가 완료될 때까지 기다리세요

대체 방법 - Docker 이미지 Droplet에 Docker로 Coreflux MQTT 브로커 설치

Coreflux Droplet과 동일한 방법을 사용하여 Marketplace 이미지로 Docker를 선택하세요.

드롭렛이 실행되면, 드롭렛 홈페이지에서 제공되는 웹 콘솔이나 정의된 인증 방법을 사용하여 SSH로 연결하세요:

ssh root@your-droplet-ip

Docker를 사용하여 Coreflux MQTT 브로커를 실행합니다:

docker run -d \
  --name coreflux \
  -p 1883:1883 \
  -p 1884:1884 \
  -p 5000:5000 \
  -p 443:443 \
  coreflux/coreflux-mqtt-broker-t:1.6.3

이 Docker 명령어:

  • 컨테이너를 분리 모드(-d)로 실행합니다
  • 컨테이너를 coreflux라고 이름 짓습니다
  • MQTT와 웹 인터페이스를 위해 필요한 포트를 노출합니다
  • 최신 Coreflux 이미지를 사용합니다

MQTT 브로커가 실행 중인지 확인하세요:

docker ps

실행 중인 컨테이너를 확인해야 합니다:

기본 값으로 연결하여 MQTT 브로커 배포를 검증하기

배포 방식에 상관없이 MQTT Explorer와 같은 MQTT 클라이언트를 통해 MQTT 브로커에 접속하여 브로커 접근을 확인할 수 있습니다.

4단계 — 안전한 IoT 통신을 위한 방화벽 규칙 구성(선택 사항)

생산용 IoT 자동화 배포를 위해 접근을 제한하는 방화벽 규칙을 구성하세요:

  1. 네트워킹 → 방화벽으로 이동

  2. 방화벽 생성을 클릭하세요

  3. MQTT 브로커 보안을 위한 인바운드 규칙 구성:

    • SSH: 귀하의 IP에서 포트 22
    • MQTT: 귀하의 IoT 애플리케이션 소스에서 포트 1883
    • TLS를 사용하는 MQTT: TLS를 사용하는 안전한 MQTT용 포트 1884
    • 웹소켓: 웹소켓을 통한 MQTT용 포트 5000
    • TLS가 적용된 WebSocket: TLS가 적용된 WebSocket을 통한 MQTT용 포트 443
  4. 방화벽을 드롭릿에 적용하세요

자세한 방화벽 구성은 Linux-Console.net의 방화벽 빠른 시작 가이드를 참조하세요. 운영 팁: MQTT 포트 1883은 특정 소스 IP 또는 VPC 범위로만 제한하고, 외부 장치 연결에는 포트 1884(TLS가 적용된 MQTT)를 사용하는 것이 좋습니다. 추가 보안 계층이 필요하다면 Linux-Console.net 앱 플랫폼의 프라이빗 네트워킹 사용을 고려해 보세요.

5단계 — Coreflux의 사물 언어를 활용한 IoT 데이터 통합 설정

LoT 노트북 확장 프로그램 설치

Visual Studio Code용 LoT(Language of Things) Notebook 확장은 MQTT 브로커 프로그래밍 및 IoT 자동화를 위한 통합 로우코드 개발 환경을 제공합니다. 로우코드 IoT 자동화를 위한 Coreflux의 Language of Things(LoT)에 대해 자세히 알아보세요.

  1. 비주얼 스튜디오 코드 열기
  2. 확장 프로그램으로 이동 (Ctrl+Shift+X)
  3. ‘LoT 노트북’ 검색
  4. Coreflux에서 제공하는 LoT VSCode 노트북 확장을 설치하세요

MQTT 브로커에 연결하기

위쪽 바에서 프롬프트가 나타날 때 또는 왼쪽 하단 바의 MQTT 버튼을 클릭하여 기본 자격 증명을 사용해 Coreflux MQTT 브로커에 연결을 설정하세요:

  • 사용자: 루트
  • 비밀번호: coreflux

오류가 없다고 가정하면, 하단 바 왼쪽에서 브로커와의 MQTT 연결 상태를 확인할 수 있습니다.

6단계 — 액션을 통해 MQTT 브로커에 데이터 생성하기

이 사용 사례에서는 원시 데이터를 변환 파이프라인을 통해 데이터베이스로 통합하는 작업을 진행할 것입니다. 그러나 데모에서는 MQTT 장치와 연결되어 있지 않기 때문에 LoT의 기능을 활용하여 장치 데이터를 시뮬레이션하는 액션을 사용할 것입니다.

LoT에서 액션(Action)은 시간 간격, 토픽 업데이트 또는 다른 액션이나 시스템 구성요소의 명시적 호출과 같은 특정 이벤트에 의해 실행되는 논리입니다. 액션은 MQTT 토픽, 내부 변수 및 페이로드와의 동적 상호작용을 가능하게 하여 복잡한 IoT 자동화 워크플로를 지원합니다.

따라서 우리는 정의된 시간 간격 내에서 특정 주제에 대한 데이터를 생성하는 액션을 사용할 수 있으며, 이는 이후에 아래에서 정의할 나머지 파이프라인에서 사용할 수 있습니다.

샘플 프로젝트가 포함된 깃허브 저장소를 다운로드할 수 있습니다.

모의 IoT 데이터 생성

Action을 생성하여 저코드 LoT () 인터페이스를 사용해 시뮬레이션 센서 데이터를 생성하세요:

DEFINE ACTION RANDOMIZEMachineData
ON EVERY 10 SECONDS DO
    PUBLISH TOPIC "raw_data/machine1" WITH RANDOM BETWEEN 0 AND 10
    PUBLISH TOPIC "raw_data/station2" WITH RANDOM BETWEEN 0 AND 60

제공된 노트북에는 제공된 액션의 대안으로 데이터를 시뮬레이션하기 위해 점진적으로 카운터를 증가시키는 액션도 포함되어 있습니다.

이 작업을 실행하면 다음과 같은 일이 발생합니다:

  • MQTT 브로커에 자동으로 배포
  • 10초마다 IoT 센서 데이터를 시뮬레이션 생성
  • 특정 MQTT 주제에 실시간 데이터 게시
  • LoT 노트북 인터페이스에서 동기화 상태 표시

    • 이 상태는 LoT 노트북의 코드가 브로커에서 실행 중인 코드와 다른지, 또는 코드가 완전히 없는지를 보여줍니다.

단계 7 — 실시간 처리를 위한 데이터 변환 모델 만들기

사물 언어를 사용한 데이터 모델 정의

코어플럭스(Coreflux)의 모델은 입력 MQTT 토픽에서 값을 변환, 집계, 계산하여 결과를 새로운 토픽으로 게시하는 데 사용됩니다. 이들은 여러 데이터 소스에 적용할 수 있는 시스템의 통합 네임스페이스(UNS)를 생성하는 기반 역할을 합니다.

이렇게 모델은 단일 장치 또는 여러 장치에 대해 와일드카드 +를 사용하여 원시 IoT 데이터를 어떻게 구조화하고 변환할지 정의할 수 있게 해줍니다. 또한 모델은 관리형 데이터베이스로의 확장 가능한 저장에 사용되는 핵심 데이터 스키마 역할을 합니다.

DEFINE MODEL MachineData WITH TOPIC "Simulator/Machine/+/Data"

    ADD "energy" WITH TOPIC "raw_data/+" AS TRIGGER

    ADD "energy_wh" WITH (energy * 1000)

    ADD "production_status" WITH (IF energy > 5 THEN "active" ELSE "inactive")

    ADD "production_count" WITH (IF production_status EQUALS "active" THEN (production_count + 1) ELSE 0)

    ADD "stoppage" WITH (IF production_status EQUALS "inactive" THEN 1 ELSE 0)

    ADD "maintenance_alert" WITH (IF energy > 50 THEN TRUE ELSE FALSE)

    ADD "timestamp" WITH TIMESTAMP "UTC"

이 로우 코드 모델:

  • 와일드카드 +를 사용하여 모든 머신에 자동으로 적용
  • 에너지를 1000을 곱하여 와트시(energy_wh)로 변환합니다
  • 에너지 임계값을 기반으로 생산 상태를 결정합니다
  • 생산 수량과 정지 이벤트를 추적합니다
  • 모든 실시간 데이터 포인트에 타임스탬프를 추가합니다
  • 토픽 구조에서 기계 ID를 추출합니다
  • 시뮬레이터/기계/데이터 주제에 구조화된 데이터를 게시합니다(트리거/원본 데이터 형식과 일치하는 각 주제에 +를 대체하여).

Action을 사용하여 두 개의 시뮬레이션 센서/기계를 생성했기 때문에, 모델 구조가 자동으로 두 개 모두에 적용되어 json 객체와 개별 토픽이 생성되는 것을 볼 수 있습니다.

단계 8 — 확장 가능한 스토리지를 위한 데이터베이스 통합 설정

2단계에서 선택한 데이터베이스와 일치하는 데이터베이스 통합 섹션을 선택하세요.

PostgreSQL 통합

이 섹션에서는 처리된 IoT 데이터를 Linux-Console.net의 PostgreSQL 관리형 데이터베이스에 저장하는 방법을 배우게 됩니다.

처리된 IoT 데이터를 PostgreSQL 관리형 데이터베이스에 저장하려면 Coreflux에서 Route를 정의해야 합니다. Route는 간단한 저코드 구성으로 MQTT 브로커에서 PostgreSQL 클러스터로 데이터를 전송하는 방법을 지정합니다.

DEFINE ROUTE PostgreSQL_Log WITH TYPE POSTGRESQL

    ADD SQL_CONFIG

        WITH SERVER "db-postgresql.db.onmyserver.com"

        WITH PORT 25060

        WITH DATABASE "defaultdb"

        WITH USERNAME "doadmin"

        WITH PASSWORD "AVNS_pass"

        WITH USE_SSL TRUE

        WITH TRUST_SERVER_CERTIFICATE FALSE

Linux-Console.net에서 PostgreSQL 연결 정보를 입력하고 LoT 노트북에서 Route를 실행하세요. 중요: 보안 강화와 지연 시간 감소를 위해 퍼블릭이 아닌 VPC 연결 정보를 사용하세요. VPC 호스트 이름과 포트는 퍼블릭 연결 문자열과 다르므로, 데이터베이스 클러스터의 연결 정보 페이지에서 두 가지 옵션을 모두 확인하세요.

PostgreSQL 데이터베이스 저장을 위한 모델 업데이트

모델의 끝에 다음을 추가하여 LoT 모델이 확장 가능한 저장소를 위해 데이터베이스 경로를 사용하도록 수정하세요:

STORE IN "PostgreSQL_Log"

    WITH TABLE "MachineProductionData"

또한 주제를 포함한 매개변수를 추가하여 관리되는 데이터베이스의 각 항목에 고유 식별자를 지정하세요.

DEFINE MODEL MachineData WITH TOPIC "Simulator/Machine/+/Data"

    ADD "energy" WITH TOPIC "raw_data/+" AS TRIGGER

    ADD "device_name" WITH REPLACE "+" WITH TOPIC POSITION 2 IN "+"

    ADD "energy_wh" WITH (energy * 1000)

    ADD "production_status" WITH (IF energy > 5 THEN "active" ELSE "inactive")

    ADD "production_count" WITH (IF production_status EQUALS "active" THEN (production_count + 1) ELSE 0)

    ADD "stoppage" WITH (IF production_status EQUALS "inactive" THEN 1 ELSE 0)

    ADD "maintenance_alert" WITH (IF energy > 50 THEN TRUE ELSE FALSE)

    ADD "timestamp" WITH TIMESTAMP "UTC"

    STORE IN "PostgreSQL_Log"

        WITH TABLE "MachineProductionData"

이 업데이트된 액션을 배포하면 모든 데이터가 수정될 때 자동으로 데이터베이스에 저장되어야 합니다.

MySQL 통합

MySQL은 널리 사용되는 관계형 데이터베이스 관리 시스템으로, IoT 데이터를 대규모로 저장하고 분석하는 데 훌륭한 선택입니다. 이 섹션에서는 Coreflux MQTT 브로커를 Linux-Console.net의 관리형 MySQL 데이터베이스에 연결하는 방법을 배우게 되며, 이를 통해 실시간 장치 데이터를 안전하고 안정적으로 저장하여 분석, 보고 또는 다른 애플리케이션과의 통합에 활용할 수 있습니다.

이 통합을 활성화하려면, 처리된 데이터를 어디로 어떻게 전송할지 지시하는 Route를 Coreflux의 LoT(Language of Things)에서 정의해야 합니다. 아래는 데이터를 MySQL 데이터베이스로 라우팅하기 위한 필수 로우코드 형식입니다. 필요에 따라 자신의 연결 정보를 반드시 교체하세요:

DEFINE ROUTE MySQL_Log WITH TYPE MYSQL
    ADD SQL_CONFIG
        WITH SERVER "db-mysql.db.onmyserver.com"
        WITH PORT 25060
        WITH DATABASE "defaultdb"
        WITH USERNAME "doadmin"
        WITH PASSWORD "AVNS_pass"
        WITH USE_SSL TRUE
        WITH TRUST_SERVER_CERTIFICATE FALSE

Linux-Console.net에서 제공하는 MySQL 연결 정보를 입력하고, LoT 노트북에서 Route를 실행하세요. 중요: 보안 강화와 지연 시간 감소를 위해 퍼블릭이 아닌 VPC 연결 정보를 사용하세요. 연결 문제 발생 시, MySQL 버전에 맞게 TRUST_SERVER_CERTIFICATE가 올바르게 설정되어 있는지 확인하세요. 일부 버전은 TRUE가 필요하고, 다른 버전은 FALSE로 작동합니다.

MySQL 데이터베이스 저장을 위한 모델 업데이트

모델의 끝에 다음을 추가하여 LoT 모델이 확장 가능한 저장소를 위해 데이터베이스 경로를 사용하도록 수정하세요:

STORE IN "MySQL_Log"
    WITH TABLE "MachineProductionData"

또한 주제를 포함한 매개변수를 추가하여 관리되는 데이터베이스의 각 항목에 고유 식별자를 지정하세요.

DEFINE MODEL MachineData WITH TOPIC "Simulator/Machine/+/Data"
    ADD "energy" WITH TOPIC "raw_data/+" AS TRIGGER
    ADD "device_name" WITH REPLACE "+" WITH TOPIC POSITION 2 IN "+"
    ADD "energy_wh" WITH (energy * 1000)
    ADD "production_status" WITH (IF energy > 5 THEN "active" ELSE "inactive")
    ADD "production_count" WITH (IF production_status EQUALS "active" THEN (production_count + 1) ELSE 0)
    ADD "stoppage" WITH (IF production_status EQUALS "inactive" THEN 1 ELSE 0)
    ADD "maintenance_alert" WITH (IF energy > 50 THEN TRUE ELSE FALSE)
    ADD "timestamp" WITH TIMESTAMP "UTC"
    STORE IN "MySQL_Log"
        WITH TABLE "MachineProductionData"

이 업데이트된 액션을 배포하면 모든 데이터가 수정될 때 자동으로 데이터베이스에 저장되어야 합니다.

MongoDB 통합

MongoDB는 유연한 스키마를 지원하는 IoT 데이터를 저장하고 쿼리하는 데 적합한 NoSQL 데이터베이스입니다. 이 섹션에서는 Coreflux MQTT 브로커를 Linux-Console.net의 관리형 MongoDB 데이터베이스에 연결하는 방법을 배워, 실시간 장치 데이터를 분석, 보고 또는 다른 애플리케이션과의 통합을 위해 안전하고 신뢰성 있게 저장할 수 있습니다.

이 통합을 활성화하려면, 처리된 데이터를 어디로 어떻게 전송할지 지시하는 Route를 Coreflux의 LoT(Language of Things)에서 정의해야 합니다. 아래는 데이터를 MongoDB 데이터베이스로 라우팅하기 위한 필수 로우코드 형식입니다. 필요에 따라 자신의 연결 정보를 반드시 교체하세요:

DEFINE ROUTE mongo_route WITH TYPE MONGODB
    ADD MONGODB_CONFIG
        WITH CONNECTION_STRING "mongodb+srv://<username>:<password>@<cluster-uri>/<database>?tls=true&authSource=admin&replicaSet=<replica-set>"
        WITH DATABASE "admin"

귀하의 MongoDB 연결 정보를 Linux-Console.net에서 가져와서 LoT 노트북에서 경로를 실행하세요. 중요: 가능한 경우 VPC 연결 문자열 형식을 사용하세요. 연결 문자열에는 tls=true 및 authSource=admin 매개변수가 포함되어야 합니다. MongoDB 연결 문제를 해결하려면, MongoDB 연결 가이드를 참조하세요.

MongoDB 데이터베이스 저장을 위한 모델 업데이트

모델의 끝에 다음을 추가하여 LoT 모델이 확장 가능한 저장소를 위해 데이터베이스 경로를 사용하도록 수정하세요:

STORE IN "mongo_route"
    WITH TABLE "MachineProductionData"

또한 주제를 포함한 매개변수를 추가하여 관리되는 데이터베이스의 각 항목에 고유 식별자를 지정하세요.

DEFINE MODEL MachineData WITH TOPIC "Simulator/Machine/+/Data"
    ADD "energy" WITH TOPIC "raw_data/+" AS TRIGGER
    ADD "device_name" WITH REPLACE "+" WITH TOPIC POSITION 2 IN "+"
    ADD "energy_wh" WITH (energy * 1000)
    ADD "production_status" WITH (IF energy > 5 THEN "active" ELSE "inactive")
    ADD "production_count" WITH (IF production_status EQUALS "active" THEN (production_count + 1) ELSE 0)
    ADD "stoppage" WITH (IF production_status EQUALS "inactive" THEN 1 ELSE 0)
    ADD "maintenance_alert" WITH (IF energy > 50 THEN TRUE ELSE FALSE)
    ADD "timestamp" WITH TIMESTAMP "UTC"
    STORE IN "mongo_route"
        WITH TABLE "MachineProductionData"

이 업데이트된 액션을 배포하면 모든 데이터가 수정될 때 자동으로 데이터베이스에 저장되어야 합니다.

오픈서치 통합

OpenSearch는 대규모 데이터 처리와 실시간 분석을 위해 설계된 분산 검색 및 분석 엔진입니다. 이 섹션에서는 Coreflux MQTT 브로커를 Linux-Console.net의 관리형 OpenSearch 데이터베이스에 연결하는 방법을 배웁니다. 이를 통해 실시간 장치 데이터를 안전하고 신뢰할 수 있게 저장하여 분석, 보고 또는 다른 애플리케이션과의 통합에 활용할 수 있습니다.

이 통합을 활성화하려면, 처리된 데이터를 어디로 어떻게 전송할지 지시하는 Route를 Coreflux의 LoT(Language of Things)에서 정의해야 합니다. 아래는 데이터를 OpenSearch 데이터베이스로 라우팅하기 위한 필수 로우코드 형식입니다. 필요에 따라 자신의 연결 정보를 반드시 교체하세요:

DEFINE ROUTE OpenSearch_log WITH TYPE OPENSEARCH
    ADD OPENSEARCH_CONFIG
        WITH BASE_URL "https://my-opensearch-cluster:9200"
        WITH USERNAME "myuser"
        WITH PASSWORD "mypassword"
        WITH USE_SSL TRUE
        WITH IGNORE_CERT_ERRORS FALSE

Linux-Console.net에서 OpenSearch 연결 세부정보를 교체하고 LoT 노트북에서 경로를 실행하십시오. 중요: 가능한 경우 VPC 기본 URL(공용 아님)을 사용하세요. 기본 URL 형식은 일반적으로 https://your-cluster-hostname:9200입니다. OpenSearch Dashboards에 접근하려면 데이터베이스 클러스터 세부정보에 제공된 별도의 Dashboards URL을 사용하십시오. 자세한 내용은 OpenSearch 빠른 시작 가이드를 참조하세요.

OpenSearch 데이터베이스 저장을 위한 모델 업데이트

모델의 끝에 다음을 추가하여 LoT 모델이 확장 가능한 저장소를 위해 데이터베이스 경로를 사용하도록 수정하세요:

STORE IN "OpenSearch_Log"
    WITH TABLE "MachineProductionData"

또한 주제를 포함한 매개변수를 추가하여 관리되는 데이터베이스의 각 항목에 고유 식별자를 갖도록 하세요.

DEFINE MODEL MachineData WITH TOPIC "Simulator/Machine/+/Data"
    ADD "energy" WITH TOPIC "raw_data/+" AS TRIGGER
    ADD "device_name" WITH REPLACE "+" WITH TOPIC POSITION 2 IN "+"
    ADD "energy_wh" WITH (energy * 1000)
    ADD "production_status" WITH (IF energy > 5 THEN "active" ELSE "inactive")
    ADD "production_count" WITH (IF production_status EQUALS "active" THEN (production_count + 1) ELSE 0)
    ADD "stoppage" WITH (IF production_status EQUALS "inactive" THEN 1 ELSE 0)
    ADD "maintenance_alert" WITH (IF energy > 50 THEN TRUE ELSE FALSE)
    ADD "timestamp" WITH TIMESTAMP "UTC"
    STORE IN "OpenSearch_Log"
        WITH TABLE "MachineProductionData"

이 업데이트된 액션을 배포하면 모든 데이터가 수정될 때 자동으로 데이터베이스에 저장되어야 합니다.

단계 9 — 완전한 IoT 자동화 파이프라인 검증

실시간 데이터 흐름 모니터링

  1. MQTT Explorer: MQTT 클라이언트를 사용하여 실시간 데이터 발행을 확인하세요
  2. 데이터베이스 클라이언트: 데이터의 저장소를 확인하기 위해 연결 (PostgreSQL용 DBeaver, MongoDB용 MongoDB Compass, 또는 OpenSearch용 OpenSearch Dashboards)

PostgreSQL 저장소 확인

DBeaver를 사용하여 PostgreSQL 관리형 데이터베이스에 연결하여 확장 가능한 스토리지를 확인하세요:

  1. Linux-Console.net 데이터베이스에서 연결 문자열을 사용하세요
  2. coreflux-broker-data 데이터베이스(또는 데이터베이스에 지정한 이름)로 이동하세요
  3. MachineProductionData 테이블에 저장된 기록을 확인하세요

앞서 살펴본 것처럼, 모든 데이터는 다른 용도와 통합을 위해 MQTT 브로커에서 이용할 수 있습니다.

MongoDB 저장소 검증

MongoDB Compass를 사용하여 MongoDB 관리형 데이터베이스에 연결하고 확장 가능한 스토리지를 확인하세요:

  1. Linux-Console.net 데이터베이스에서 연결 문자열을 사용하세요
  2. coreflux-broker-data 데이터베이스(또는 데이터베이스에 지정한 이름)로 이동하세요
  3. MachineProductionData 컬렉션에서 저장된 문서를 확인하세요

다음과 유사한 구조를 가진 실시간 데이터 문서를 확인해야 합니다:

{
  "_id": {
    "$oid": "68626dc3e8385cbe9a1666c3"
  },
  "energy": 36,
  "energy_wh": 36000,
  "production_status": "active",
  "production_count": 31,
  "stoppage": 0,
  "maintenance_alert": false,
  "timestamp": "2025-06-30 10:58:11",
  "device_name": "station2"
}

앞서 살펴본 것처럼, 모든 데이터는 다른 용도와 통합을 위해 MQTT 브로커에서 이용할 수 있습니다.

MySQL 저장소 검증

DBeaver를 사용하여 MySQL 관리형 데이터베이스에 연결하고 확장 가능한 스토리지를 확인하세요:

  1. Linux-Console.net 데이터베이스에서 연결 문자열을 사용하세요
  2. coreflux-broker-data 데이터베이스(또는 데이터베이스에 지정한 이름)로 이동하세요
  3. 저장된 기록을 확인하려면 MachineProductionData 테이블을 확인하세요

다른 통합과 마찬가지로, 모든 데이터는 다른 용도와 하위 통합을 위해 MQTT 브로커에서도 사용할 수 있습니다.

OpenSearch 저장소 검증

제공된 URL과 자격 증명을 사용하여 OpenSearch Dashboards를 열기:

  1. 메뉴를 열고 색인 관리 옵션을 선택하세요

    1. 메뉴에서 '인덱스' 옵션을 선택하고 목록에 테이블 이름이 있는지 확인하세요

  1. 메인 페이지로 돌아가서 메뉴에서 '발견하기' 옵션을 선택하세요

    1. 제공된 단계를 따라 인덱스 패턴을 생성하세요
    2. Discover 페이지로 돌아가면 데이터를 볼 수 있을 것입니다

앞서 살펴본 것처럼, 모든 데이터는 다른 용도와 통합을 위해 MQTT 브로커에서 이용할 수 있습니다.

단계 10 - 사용 사례와 통합 확장하기

LoT 기능 테스트

  • 샘플 데이터 게시: MQTT Explorer를 사용하여 Coreflux 브로커에 샘플 데이터를 게시하세요. 서로 다른 페이로드 구조와 다양한 모델/액션을 실험하여 선택한 데이터베이스에서 어떻게 처리되고 저장되는지 확인해 보세요.
  • 데이터 검증: 데이터베이스의 데이터가 게시한 페이로드와 일치하는지 확인하세요. 데이터베이스 클라이언트(DBeaver for PostgreSQL, MongoDB Compass for MongoDB, 또는 OpenSearch Dashboards for OpenSearch)를 사용하여 일관성과 정확성을 점검하고, IoT 자동화 통합이 예상대로 작동하는지 확인하세요. 타임스탬프, 필드 변환, 데이터 유형을 비교하여 실시간 데이터 파이프라인을 검증하세요.
  • 실시간 모니터링: 간단한 MQTT 연결 센서와 같은 다른 데이터 소스를 사용하여 지속적인 실시간 데이터 피드를 설정하세요. Coreflux와 데이터베이스가 들어오는 IoT 데이터 스트림을 어떻게 처리하는지 관찰하고, 데이터 검색 및 쿼리 응답 시간을 탐색해 보세요.

분석 및 시각화 구축

  • 대시보드 생성: Grafana와 같은 시각화 도구와 통합하여 라이브 MQTT 주제와 과거 데이터베이스 쿼리 모두에서 데이터를 가져와 IoT 데이터를 표시하는 대시보드를 생성하세요. 기기 가동 시간, 센서 측정값, 생산 수, 또는 자동화 시스템의 유지보수 알림과 같은 지표를 추적할 수 있습니다. Prometheus와 Grafana를 사용하여 Linux-Console.net 관리형 데이터베이스 모니터링을 설정하는 방법에 대한 가이드를 통해 모니터링 설정 방법을 배워보세요. 실시간 대시보드의 경우 MQTT 주제를 직접 구독하고, 과거 트렌드 및 집계 데이터를 위해서는 데이터베이스를 쿼리하세요.
  • 트렌드 분석: 데이터베이스의 기능을 활용하여 시간에 따른 트렌드를 분석하세요:

    • PostgreSQL: 복잡한 관계형 분석을 위해 SQL 쿼리 사용
    • MongoDB: 문서 기반 분석을 위해 집계 프레임워크를 사용하세요
    • OpenSearch: 전체 텍스트 검색과 시계열 분석을 위해 고급 분석 및 검색 기능 사용
  • 다중 데이터베이스 통합: MongoDB와 같은 비정형 데이터를 위한 관리형 데이터베이스, 관계형 데이터를 위한 PostgreSQL, 구조화된 쿼리를 위한 MySQL, 고급 분석 및 검색 기능을 위한 OpenSearch 등 추가적인 데이터베이스 통합을 탐색하세요. 데이터를 여러 목적지로 동시에 전송하려면 Coreflux 경로를 사용하세요.

IoT 인프라 최적화 및 확장

  • 부하 테스트: LoT 노트북이나 자동화 스크립트를 사용하여 여러 메시지를 동시에 게시함으로써 높은 트래픽을 시뮬레이션합니다. Coreflux MQTT 브로커와 데이터베이스 클러스터가 부하를 어떻게 처리하는지 모니터링하고, 데이터 파이프라인에서 발생할 수 있는 병목 현상을 식별합니다.
  • 확장: Linux-Console.net은 수직 및 수평 확장 옵션을 제공합니다. IoT 데이터 요구가 증가함에 따라 드롭렛 리소스(CPU, RAM 또는 스토리지)를 늘리세요. 더 큰 데이터셋을 처리하기 위해 관리형 데이터베이스 클러스터를 확장하고, 리소스 한계에 근접할 때 알림을 받을 수 있도록 자동 확장 알림을 설정하세요.

자주 묻는 질문

1. Coreflux MQTT 브로커를 관리형 데이터베이스와 어떻게 통합하나요?

Coreflux MQTT 브로커를 관리형 데이터베이스와 통합하려면, LoT에서 대상 서비스(PostgreSQL, MySQL, MongoDB 또는 OpenSearch)를 가리키는 Route를 정의하면 됩니다. 각 라우트는 적절한 연결 매개변수(서버 또는 연결 문자열, 포트, 데이터베이스 이름, 사용자 이름, 비밀번호, SSL/TLS 옵션)를 사용하며, MQTT 메시지 페이로드를 테이블, 컬렉션 또는 인덱스에 자동으로 저장합니다. 라우트를 정의한 후에는 Model에 STORE IN 지시문을 사용하여 연결하면, 처리된 모든 메시지가 선택한 데이터베이스에 기록됩니다.

2. 맞춤 통합 코드를 작성하지 않고도 MQTT 데이터를 직접 데이터베이스에 저장할 수 있나요?

네. Coreflux는 로우코드 통합 계층으로 설계되어 있어 데이터를 저장하기 위해 애플리케이션 코드를 작성하거나 외부 ETL 작업을 수행할 필요가 없습니다. 각 데이터베이스 유형에 대해 LoT 경로(예: PostgreSQL_Log, MySQL_Log, mongo_route, 또는 OpenSearch_Log)를 구성한 후 STORE IN "<route_name>" WITH TABLE "MachineProductionData"를 사용하여 모델을 확장하면 됩니다. Coreflux는 연결 풀링, 재시도 및 오류 처리를 관리하므로, 반복적인 데이터베이스 코딩 대신 주제 및 변환 모델링에 집중할 수 있습니다.

3. MQTT IoT 데이터 저장을 위해 어떤 관리형 데이터베이스를 선택해야 하나요?

MQTT IoT 데이터를 위한 최적의 관리형 데이터베이스는 데이터 구조, 쿼리 요구 사항 및 분석 목표에 따라 달라집니다. 아래 비교 표를 사용하여 결정을 내리는 데 도움을 받으세요:

데이터베이스최적예시 사용 사례
PostgreSQL강한 일관성, 관계형 스키마, 복잡한 SQL 쿼리산업용 센서 네트워크, 트랜잭션 이벤트, 분석
MySQL관계형 데이터, 구조화된 쿼리, 넓은 호환성재고 관리 시스템, 생산 지표, 전통적인 사업 기록
몽고DB유연하고 진화하는 스키마; 문서 저장가변 페이로드를 가진 연결된 장치, 형식이 바뀌는 IoT 원격 측정
오픈서치전체 텍스트 검색, 분석, 대시보드, 로그 인덱싱시계열 분석, 모니터링, 이벤트 로그, IoT 검색 및 시각화

팁: 여러 개의 Coreflux 경로를 구성하여 동시에 하나 이상의 관리형 데이터베이스를 사용할 수 있습니다. 이를 통해 동일한 MQTT 스트림에서 구조화된 IoT 데이터를 PostgreSQL이나 MySQL에 저장하고, 로그와 메트릭을 OpenSearch에 집계하며, 비정형 또는 스키마가 없는 데이터를 MongoDB에 수집할 수 있습니다.

4. 이 아키텍처는 실시간 분석과 과거 분석을 어떻게 처리합니까?

Coreflux는 처리된 모든 값을 MQTT 주제에서 실시간으로 사용할 수 있도록 제공하여 대시보드나 추가 파이프라인에서 활용할 수 있습니다. 반면 Routes는 동일하게 모델링된 데이터를 데이터베이스에 저장하여 과거 데이터 조회가 가능하게 합니다. 실제로, 즉각적인 반응(알림, 제어 루프)을 위해 주제를 구독하고, PostgreSQL/MySQL/MongoDB/OpenSearch를 통해 집계, 트렌드, 장기 분석을 수행할 수 있습니다. 이러한 이중 경로 설계는 브로커가 실시간 메시징을 제공하고 데이터베이스가 내구성 있는 저장소와 분석을 제공하는 MQTT 및 IoT 데이터 통합 가이드에서 흔히 볼 수 있는 패턴을 반영합니다.

5. Coreflux와 관리형 데이터베이스 간의 연결은 얼마나 안전한가요?

Linux-Console.net에 배포할 때 VPC 네트워킹을 사용하면 Coreflux MQTT 브로커와 데이터베이스 간의 모든 통신을 비공개로 유지할 수 있습니다. VPC는 리소스를 공용 인터넷 접근으로부터 분리하며, Linux-Console.net 관리형 데이터베이스는 연결에 대해 TLS 암호화를 지원합니다. 또한 최소 권한 원칙에 따라 Coreflux 애플리케이션을 위한 권한이 제한된 전용 데이터베이스 사용자를 생성할 수 있습니다.

6. 이 설정이 실제 IoT 배포에 적합한가요?

네. 이 아키텍처는 프로덕션 환경의 MQTT 및 데이터베이스 통합에서 사용되는 패턴을 반영하며, 브로커가 장치 트래픽을 프론트엔드로 처리하고 관리형 데이터베이스 계층이 내구성과 분석 기능을 제공합니다. Linux-Console.net 관리형 데이터베이스는 자동 백업, 고가용성 및 모니터링을 제공하며, Coreflux MQTT 브로커는 메시지 처리량이 높은 환경에서도 수평 확장이 가능합니다. 프로덕션 환경에서는 방화벽 규칙을 설정하고, 강력한 자격 증명을 사용하며, MQTT 및 데이터베이스 연결에 TLS를 활성화하고, 예상 메시지량에 따라 드롭릿과 클러스터의 크기를 조정하는 것이 좋습니다.

7. MQTT 브로커를 공용 인터넷 연결 없이 실행하거나 하이브리드 환경에서 실행할 수 있나요?

네. MQTT 브로커는 종종 사설 네트워크나 엣지 환경에 배치되며, 공개 자료에서도 클라이언트가 브로커에 도달할 수 있는 한 MQTT는 공용 인터넷 없이도 작동할 수 있다고 일관되게 언급합니다. Linux-Console.net을 사용하면 Coreflux와 데이터베이스를 VPC 안에 유지하고, 꼭 필요한 부분만 노출할 수 있습니다(예: VPN, 배스천 호스트 또는 제한된 방화벽 규칙). 필요한 경우 하이브리드 또는 다중 사이트 아키텍처를 위해 선택된 토픽을 다른 브로커나 클라우드 지역과 동기화할 수도 있습니다.

8. IoT 데이터에 MQTT를 데이터베이스와 함께 사용할 때 제한 사항이나 트레이드오프가 있나요?

MQTT는 경량화되고 이벤트 기반 메시징에 최적화되어 있으며, 데이터베이스는 저장 및 쿼리에 최적화되어 있습니다. 모든 원시 메시지를 저장하는 것은 비용이 많이 들거나 불필요하게 많은 데이터가 될 수 있으므로, 모범 사례에서는 데이터 모델링을 신중하게 할 것을 권장합니다(예: 지표 집계, 토픽 필터링 또는 다운샘플링). 매우 저전력 장치나 극도로 제한된 네트워크는 지속적인 연결이나 TLS 오버헤드에서 어려움을 겪을 수 있으며, 이 경우 QoS 수준, 배치 처리, 보존 정책을 조정해야 할 수도 있습니다. 이러한 트레이드오프를 염두에 두고 모델과 라우트를 설계하는 한편, MQTT와 관리형 데이터베이스를 함께 사용하면 대부분의 IoT 시나리오에서 잘 작동합니다.

9. 제 IoT 프로젝트에 대해 PostgreSQL, MySQL, MongoDB, OpenSearch 중 어떤 것을 선택해야 하나요?

IoT 데이터 구조, 확장성 및 장치 데이터를 쿼리하는 방식을 기준으로 관리형 데이터베이스를 선택해야 합니다. 아래 표는 각 옵션의 장점을 요약한 것입니다:

데이터베이스가장 좋을 때…일반적인 사용 사례주요 강점
PostgreSQL복잡한 관계형 쿼리, 강력한 일관성, 그리고 트랜잭션 무결성(ACID 지원)이 필요합니다.산업용 센서 네트워크, 장치 데이터를 생산과 연관시키고, 결합된 데이터셋에 대한 분석이 필요한관계형 스키마, 고급 SQL, 일관성
MySQL귀사의 작업 부하는 구조화되어 있으며, 광범위한 도구와 호환성 요구가 있습니다.재고 추적, 전통적인 비즈니스 시스템, 생산 지표더 단순한 관계적 욕구, 폭넓은 지원
몽고DB장치 페이로드와 스키마가 진화하거나, 유연한 문서 기반 저장소로 빠른 프로토타이핑을 원할 때.다양한 형식의 IoT 원격 측정, 신속한 개발, 반구조적 데이터유연한 스키마, 손쉬운 확장, 빠른 프로토타이핑
오픈서치IoT 데이터(로그, 시계열, 이벤트)를 분석하고 검색하거나 대시보드로 시각화해야 합니다.센서 데이터 검색, 로그 분석, 시각화, 키워드/시간 기반 쿼리검색, 전체 텍스트, 분석, 빠른 집계

결론

Coreflux MQTT 브로커를 Linux-Console.net의 관리형 데이터베이스 서비스(PostgreSQL, MongoDB, MySQL 또는 OpenSearch)와 통합하면 실시간 IoT 데이터 처리 및 저장을 위한 완벽한 환경을 갖출 수 있습니다. 이 튜토리얼을 따라가면서, 로우코드 개발 방식을 사용하여 IoT 데이터를 수집, 처리, 저장하는 자동화 파이프라인을 구축하게 되었습니다.

Coreflux의 아키텍처와 선택한 데이터베이스의 스토리지 기능을 활용하면 대량의 실시간 데이터를 처리하고 이를 분석할 수 있습니다. 산업 시스템을 모니터링하든, 환경 센서를 추적하든, 스마트 시티 인프라를 관리하든, 이 설정을 통해 실시간 MQTT 토픽과 과거 데이터베이스 쿼리 모두를 기반으로 데이터 기반 의사결정을 내릴 수 있습니다.

Linux-Console.net 관리 데이터베이스에 대해 더 알아보고 Linux-Console.net 문서에서 고급 Droplet 구성도 살펴볼 수 있습니다.

제공된 사용 사례를 시도해 보거나 Coreflux & Linux-Console.net을 사용하여 직접 사용 사례를 구현할 수 있습니다. 또한 Linux-Console.net Droplet 마켓플레이스나 Coreflux 웹사이트를 통해 무료 Coreflux MQTT 브로커를 받을 수 있습니다.

Coreflux Docs 및 튜토리얼에서 Coreflux와 LoT로 할 수 있는 것에 대해 자세히 알아보세요.

추가 자료 및 문서

참고: 이 튜토리얼에서는 간편한 배포를 위해 Coreflux 또는 Docker Marketplace 이미지를 사용하지만, Ubuntu에 Coreflux MQTT 브로커를 직접 설치할 수도 있습니다. 수동 설치 방법은 Coreflux 설치 가이드를 참조하세요.

Linux-Console.net 설정 가이드

프로젝트 관리

  • Linux-Console.net에서 프로젝트 생성 및 관리하는 방법 - IoT 인프라 리소스를 효율적으로 조직하세요

네트워크 인프라

  • VPC 네트워크 만드는 방법 - MQTT 브로커와 데이터베이스를 위한 안전한 사설 네트워킹 설정
  • 방화벽 빠른 시작 가이드 - 생산용 IoT 배포를 위한 보안 규칙 구성

드롭렛 배포

  • 드롭렛 생성 방법 - 가상 머신 배포를 위한 완전 가이드
  • Docker 1-Click 애플리케이션 - Linux-Console.net 마켓플레이스에서 사전 구성된 Docker 환경 배포
  • Docker 1-클릭 설치 튜토리얼 - 단계별 Docker 설정 안내

데이터베이스 관리

  • PostgreSQL 데이터베이스 시작하기 - Linux-Console.net에서 관리형 PostgreSQL을 설정하고 사용하는 빠른 시작 가이드
  • MongoDB 데이터베이스 관리 방법 - MongoDB 데이터베이스 및 사용자 생성과 관리
  • MongoDB에 연결하는 방법 - 애플리케이션에서 관리되는 MongoDB 클러스터에 연결하기
  • OpenSearch 소개 - OpenSearch 개념과 검색 기본 원리 이해하기

서버 관리

  • 권장 드롭릿 설정 - 서버 보안 및 구성 모범 사례
  • 콘솔을 통해 Droplet에 연결 - 웹 기반 콘솔을 통해 Droplet에 접근

관련 Linux-Console.net 튜토리얼

  • 우분투에 PostgreSQL 설치 및 사용 방법 - 자체 관리 배포를 위한 수동 PostgreSQL 설치 가이드
  • 우분투에서 MongoDB 설치 방법 - 자체 관리 배포를 위한 MongoDB 수동 설치 가이드
  • MongoDB 소개 - MongoDB 개념과 문서형 데이터베이스 기초 이해

Linux-Console.net 커뮤니티와 함께 학습해 주셔서 감사합니다.