안녕하세요 Hacker News 여러분! 저희는 Synnax(https://www.synnaxlabs.com)의 공동 창업자인 Emiliano, Elham, Patrick입니다. Synnax를 통해 엔지니어들은 센서 및 액추에이터(actuators)에 연결하고, 제어 및 후처리(post-processing)를 위한 텔레메트리(telemetry)를 스트리밍하며, 분석을 위해 과거 데이터를 쿼리(query)할 수 있습니다. 하드웨어 팀들은 로켓 엔진 점화부터 제조 라인 운영에 이르기까지 다양한 분야에서 저희 플랫폼을 사용합니다. 여기 영상이 있습니다:
하드웨어 팀의 소프트웨어 개발자들은 보통 자신들의 커스텀 소프트웨어를 구축할 인프라를 갖추고 있지 않습니다. 그들은 데이터를 단일 데이터베이스에 넣기 위해 수십 개의 데이터 획득(data acquisition) 장치와 작업해야 합니다. 종종 서로 다른 장치들과 통신하기 위해 여러 가지 다른 솔루션을 사용해야 합니다. National Instruments 하드웨어용 LabVIEW, 로보틱스용 ROS, 그리고 PLC를 위한 SCADA 소프트웨어가 그것입니다.
이 모든 장치들을 함께 조정할 수 있는 좋은 "접착제(glue)"가 없습니다. 개발자들은 스트리밍을 위해 Apache Kafka를, 저장(storage)을 위해 InfluxDB와 같은 도구들을 결국 사용하게 되지만, 이러한 도구들은 하드웨어와 연동하여 작동시키기가 어렵고, 또한 하드웨어 제어를 위해 명령이 전송될 때마다 데이터를 기록하고 스트리밍하도록 이 도구들을 설정하는 것도 매우 번거로운 일입니다.
이로 인해 개발자들은 하드웨어 장치로부터 데이터를 가져오기 위한 어댑터(adapters)를 반복적으로 구축해야 하며, 실시간 스트리밍, 데이터 저장, 하드웨어 제어를 위한 별도의 시스템들을 관리해야만 합니다.
저(Emiliano)는 항공우주 기업에서 테스트 엔지니어로 근무하며 이 문제를 발견했습니다. 저희는 데이터를 거대한 10GB 크기의 CSV 또는 TDMS 파일로 내뱉는 오래된 제어 소프트웨어를 사용했습니다. 밤낮으로 긴 테스트를 마친 후, 그 누구도 데이터를 검토하기 위해 그 모든 작업을 수행하고 싶어 하지 않았습니다.
어느 날, 제가 시스템을 작동시키고 있었는데 매우 값비싼 부품이 고장 났고, 이로 인해 수백만 달러 가치의 테스트 스탠드(test stand)가 폭발했습니다. 며칠간의 데이터 검토 끝에, 저희는 부품 결함을 나타내는 작은 이상 징후(anomaly)를 찾아낼 수 있었습니다.
그 후 저는 이 문제에 매료되었고, 그들의 데이터 파이프라인 (data pipeline)을 개선하기 위해 소프트웨어 엔지니어링 (software engineering) 역할로 옮겼습니다. 이 직장을 떠나 학교로 돌아간 후에는, 수업을 빠져가며 Synnax를 만드는 데 대부분의 시간을 보냈고, 결국 Patrick과 Elham을 만났습니다.
Synnax는 몇 가지 주요 부분으로 구성되어 있습니다. 저희는 수평적 확장성 (horizontally scalable)과 결함 허용 (fault-tolerant)을 고려하여 설계된 커스텀 시계열 데이터베이스 (time series-database)를 보유하고 있습니다. 이 데이터베이스는 OS 또는 컨테이너 (container)에 배포될 수 있습니다. 모든 센서 (sensor)와 액추에이터 (actuator)는 하나의 "채널 (channel)"에 포함될 수 있으며, C++, Python, TypeScript용 클라이언트 라이브러리 (client libraries)를 사용하여 데이터를 기록할 수 있습니다.
채널에 데이터를 기록할 때, 서버는 데이터를 데이터베이스에 영구 저장 (persist)하는 동시에 GUI, 자동화된 후처리 도구 (automated post-processing tools), 감독 제어 시퀀스 (supervisory control sequences)와 같은 모든 유형의 서비스에서 실시간으로 소비할 수 있도록 스트리밍 (stream)합니다.
마지막으로, 저희는 GUI 제작, 시각화 및 제어 데스크톱 애플리케이션 제작 과정을 단순화하는 React 컴포넌트 라이브러리 (React component library)를 구축했으며, National Instruments 하드웨어 및 OPC UA를 통한 PLC (Programmable Logic Controller)를 위한 사전 구축된 장치 통합 (pre-built device integrations) 기능도 제공합니다.
저희는 Synnax가 ROS, LabVIEW, SCADA 소프트웨어와 같은 기존 솔루션과 Apache Kafka 또는 InfluxDB와 같은 범용 도구 (general purpose tools) 사이의 가교 역할을 제공한다는 점에서 독보적이라고 생각합니다.
Synnax는 BSL 1.1 라이선스 하에 소스 공개 (source-available) 상태입니다 (GitHub: https://github.com/synnaxlabs/synnax, 문서: https://docs.synnaxlabs.com). 소프트웨어 사용은 최대 50개 채널까지 무료입니다. 저희는 아직 어떤 가격 정책을 확정할지 결정하지 못했습니다. 사용량 기반 (usage-based) 구현만 할지, 아니면 구현 비용을 추가할지에 대해 논의 중입니다.
이 내용이 흥미로우시다면, 저희를 확인해 주세요! 저희 문서 웹사이트(https://docs.synnaxlabs.com)를 통해 데이터베이스를 배포하고 데스크톱 시각화 대시보드 (desktop visualization dashboard)를 다운로드할 수 있습니다.
여러분의 피드백을 정말 듣고 싶으며, 모든 댓글을 기다리고 있겠습니다!