SimpleCORE
POWER & INDUSTRY / PROJECT

Penstock

대용량 데이터 수집을 위한 산업용 게이트웨이입니다.

자체 개발 · 산업용 데이터 게이트웨이

목차 6세부 내용 20
프로젝트 상세
01 / 06
BROWSER

데이터 수집과 운영을 함께 관리합니다.

Penstock Flow는 여러 수집·변환·저장 파이프라인을 한 프로세스에서 실행합니다. 디지털 변전소용 DSS 팩으로 산업용 프로토콜을 연결하고, Console과 Agent로 여러 노드의 구성·배포·상태를 관리합니다. 화면은 Ubuntu 노드 3대와 모의 장치 13개를 연결한 통합 시험 환경입니다. 실제 고객 운영 화면이나 처리 성능 측정 결과를 나타내지는 않습니다.

아키텍처 데이터 처리

01 / 03

프로세스 내부의 데이터 처리 구조

Source가 수신 데이터를 열 단위 RecordBatch로 변환합니다. 정수·실수 배열과 가변 길이 바이트 영역을 사용하고 배치를 재사용해 레코드마다 객체를 생성하는 비용을 줄입니다. 같은 프로세스에서는 배치 참조를 전달하므로 직렬화하지 않습니다.

키의 FNV-1a 해시 또는 라운드로빈으로 파티션을 선택합니다. 각 파티션의 SPSC 링 버퍼는 LMAX Disruptor를 사용하고, 변환을 같은 처리 경로에서 실행합니다. 배압과 파티션·코어 예산으로 수집 속도와 처리 자원을 조절합니다.

BatchBuffer는 행 수 또는 시간 기준으로 배치를 모읍니다. 별도 I/O 실행기가 DrainTarget으로 저장을 넘기며, 아웃박스와 회로 차단기가 장애 시 재처리를 돕습니다. 고속·대용량 처리는 이 구조의 설계 목표이며, 처리량은 프로토콜·변환·저장소·장비 조건에 따라 달라집니다.

지원 프로토콜 IEC 104

01 / 09
IEC 60870-5-104

같은 연결에서 감시와 제어를 처리합니다.

연결
TCP · 기본 포트 2404
역할
마스터 · 장치로 접속
제어
Select / Operate

게이트웨이가 장치의 TCP 서버에 접속해 감시 ASDU를 수신합니다. 자발 전송과 총소환(General Interrogation)을 처리하고, 주소·시각·품질 정보를 수집 데이터에 연결합니다.

동일한 세션에서 제어 ASDU를 전송합니다. Select·Operate 등 명령 단계는 명령 확장 팩의 정책 검사와 승인 절차를 거치며, 장치별 주소와 지원 명령을 설정해 사용합니다.

BROWSER

명령을 검토·승인하고 실행 이력을 기록합니다.

명령 확장 팩은 기본 거부 정책을 사용합니다. 프로토콜·명령·대상·사용자 역할을 허용 목록과 비교하고 호출 빈도, 정비 시간, 시계 상태와 중요도를 검사합니다. 두 사람의 승인, 긴급 명령 경로, 감사 저널과 클러스터 소유 노드로의 전달을 제공합니다. 관리 인증서의 사용자 식별자를 정책과 연결하며, 실제 장치의 응답과 프로토콜별 제어 단계를 확인합니다. 화면은 통합 시험에서 명령을 검토하는 승인 대기열입니다.

개발 기술 Flow 엔진

01 / 04
FLOW / DATA PLANE

Java 21 기반의 파티션 처리 런타임

환경
JDK 21 · Gradle Kotlin DSL
처리
LMAX Disruptor 4 · Netty
상태
Apache Ignite 3.1

별도 DI 프레임워크 없이 Java와 ServiceLoader로 모듈을 조합합니다. 커넥터·변환·확장 기능은 SPI로 등록하고 Typesafe HOCON으로 구성합니다. 데몬, 일회 실행과 예약 작업을 같은 런타임에서 다룹니다.

Disruptor가 파티션 링 버퍼를, Netty가 네트워크 입출력을 맡습니다. Apache Ignite는 분산 상태와 분석 윈도를 처리합니다. Agrona·DataSketches·fastdoubleparser를 처리 경로에 사용하며, 표현식은 미리 컴파일해 배치에 적용합니다.

Resilience4j는 재접속 대기 시간에 사용합니다. 저장 경로의 회로 차단기는 별도 heartbeat 기반 구현이며, 라이브러리의 일반 회로 차단기와 구분합니다.

© 2026 SIMPLECORE INC.CONTEXT. STRUCTURE. EXPERIENCE.