앱 구조
모든 IronFlock 앱은 애플리케이션 코드와 선택적인 .ironflock 구성 디렉터리가 포함된 Git으로 버전 관리되는 폴더입니다.
디렉터리 레이아웃
my-app/
├── Dockerfile # 필수: 컨테이너 이미지 정의
├── docker-compose.yml # 선택 사항: 다중 컨테이너 설정
├── main.py # 애플리케이션 코드 (모든 언어)
├── requirements.txt # 의존성
└── .ironflock/
├── board-template.yml # 대시보드 레이아웃
├── data-template.yml # 텔레메트리를 위한 데이터베이스 스키마
├── env-template.yml # 사용자 구성 가능한 파라미터
├── port-template.yml # 원격 접근 포트 정의
└── ai-template.yml # AI 에이전트 정의앱의 여섯 가지 구성 요소
1. 엣지 코드
핵심 애플리케이션 로직입니다. 이 코드는 디바이스의 Docker 컨테이너 내에서 실행되며 센서, PLC, 카메라, 또는 연결된 하드웨어와의 통신을 처리합니다.
엣지 코드는 모든 프로그래밍 언어 — Python, JavaScript, Go, Rust, C++, 또는 Docker 컨테이너에서 실행되는 모든 언어 — 로 작성할 수 있습니다.
2. 보드 (사용자 인터페이스)
노코드 Board Editor로 구축된 실시간 대시보드입니다. 보드는 프로젝트에서 앱을 실행하는 모든 디바이스의 데이터를 표시하고 메시징 시스템을 통해 자동으로 업데이트됩니다.
보드 구성은 board-template.yml에 저장되며 에디터에 의해 자동 생성됩니다.
3. 데이터 저장
각 프로젝트는 자체 물리적 데이터베이스(TimescaleDB로 구동)를 가집니다. 앱이 data-template.yml에서 테이블을 정의하면 사용자가 앱을 설치할 때 해당 테이블이 자동으로 프로비저닝됩니다. 데이터는 프로젝트별로 비공개 — 개발자는 사용자 데이터에 접근할 수 없습니다.
4. 메시징 영역
설치되면 앱은 다음을 연결하는 개인 메시지 영역을 얻습니다:
- 엣지 디바이스의 모든 앱 인스턴스
- 프로젝트 데이터베이스
- 보드 UI
통신은 IronFlock SDK(ironflock-py for Python, ironflock-js for JavaScript)를 통해 WAMP(Web Application Messaging Protocol)를 사용합니다.
5. 원격 접근
port-template.yml에서 포트와 프로토콜을 정의하여 디바이스 서비스에 대한 보안 터널링을 활성화합니다. 사용자는 이러한 터널을 디바이스별로 활성화/비활성화할 수 있습니다. 원격 접근을 참조하십시오.
6. AI 에이전트
ai-template.yml을 통해 도메인별 AI 에이전트를 노출하여 IronFlock AI 어시스턴트를 확장합니다. AI 기능을 참조하십시오.
디바이스의 영구 저장소
기본적으로 컨테이너 내의 데이터는 재시작 시 손실됩니다. 두 디렉터리는 재시작 후에도 유지됩니다:
| 경로 | 범위 |
|---|---|
/data | 이 앱에만 비공개 — 다른 앱은 접근할 수 없음 |
/shared | 디바이스의 모든 앱 간에 공유 |
Docker Compose를 사용하는 경우 docker-compose.yml에서 영구 볼륨을 구성합니다.
하드웨어 접근
앱이 로컬 하드웨어(센서, 카메라, 시리얼 디바이스)와 상호작용하는 경우 해당 디바이스가 컨테이너 내에서 /dev에 마운트됩니다.