← 블로그로 돌아가기

Ondium 클러스터 아키텍처 — 4개 사업부 통합 설계

2026-04-24ondium심층

Growdium·Biodium·Foodium·Smartium을 하나로 이으면서 각자 독립성을 유지하는 분산형 아키텍처 설계 원칙

아키텍처 원칙: 느슨한 결합, 견고한 연결

Ondium의 4개 사업부는 독립적인 비즈니스 단위이면서 동시에 공유 데이터 계층으로 연결됩니다.

┌─ Growdium ────────┐  ┌─ Biodium ────────┐
│  Nursery API      │  │  Nutrient API    │
│  (육묘 시점 역산)   │  │  (토양 진단)      │
└────────┬──────────┘  └────────┬─────────┘
         │                      │
         └──────┬───────────────┘
                │
          ┌─────▼──────┐
          │ Shared Core │
          │ (Plot ID)   │
          └─────┬───────┘
                │
         ┌──────┴───────────────┐
         │                      │
┌────────▼──────────┐  ┌───────▼────────┐
│  Foodium          │  │  Smartium      │
│  (가공/추적)      │  │  (예측/대시보드)│
└───────────────────┘  └────────────────┘

핵심 개념: Plot ID

모든 데이터는 Plot ID(필지 단위 고유번호)로 수렴합니다.

  • 생성: Growdium (육묘 단계에서 개별 모종에 부여)
  • 전파: 본포 정식 → Biodium 투입재 기록 → Foodium 수확 분류 → Smartium 최종 분석
  • 사용: 소비자 QR 스캔 시 원산지 추적
Plot ID 구성:
PLOT_20260407_GR_001_KIM

├─ 20260407: 생성 날짜
├─ GR: 육묘장 코드 (Growdium)
├─ 001: 시퀀스
└─ KIM: 작업자 초성

4개 사업부 API 스펙

Growdium API — 육묘 단계 (Port 5000)

POST /tools/seedling-plan
요청:
  하우스_구조, M_실경작, 구수, 덤, 배달희망일, 작물코드

응답:
  총줄, 총묘종수, 계산판수, 배달판수, 필요파종일, 육묘기간
  → 각 라운드별 Plot ID 생성

GET /plots/{plot_id}
응답:
  모종 특성 (건강도, 모양, 크기), 상태 이력, 배달 예정일

Biodium API — 투입재 단계 (Port 5001)

POST /soil/analyze
요청:
  plot_id, 샘플_날짜, pH, 질소, 인산, 칼리, ...

응답:
  진단_결과, 추천_비료, 적용_시기, 예상_효과

GET /market/price/{crop_code}
응답:
  KAMIS 시세 최신값, 변동률, 예측 (from Smartium)

Foodium API — 가공 단계 (Port 5002)

POST /harvest/register
요청:
  plot_id[], 수확_날짜, 수량, 품질등급

응답:
  배치_번호, QR_코드, 원가_계산

GET /batch/{batch_id}/traceability
응답:
  [Plot 1 → 모종 특성 → 투입재 이력 → 최종 상품]

Smartium API — 데이터 분석 (Port 5003)

POST /predict/harvest
요청:
  plot_id, 생육_스테이지, 현재_조건 (온습도, 양분, 질병 위험)

응답:
  수확_적기_예측, 신뢰도 80%+, 추천_액션

GET /dashboard/overview
응답:
  전체 농장 상태 (생육률, 투입재 효율, 예상 수익)

데이터 흐름: 실제 사례

Case: 깻잎 "04월 파종" → "05월 배달"

1단계: Growdium (04/01)

POST /tools/seedling-plan
├─ 배달희망일: 2026-05-10
├─ 작물코드: "perilla"
└─ 응답: 필요파종일 2026-04-01
  └→ Plot ID 50건 생성: PLOT_20260401_GR_001~050_...

2단계: Biodium (04/07)

POST /soil/analyze
├─ plot_ids: [PLOT_20260401_GR_001~050]
├─ 토양 샘플 분석
└─ 응답: "칼슘 부족 → 굴 패각 비료 3kg/동 추천"
  └→ 투입재 기록 + Foodium에 원가 전송

3단계: Foodium (04/21)

POST /harvest/register
├─ plot_ids: [PLOT_20260401_GR_001~050]
├─ 수확량: 2,400kg
├─ 품질등급: A급 80%, B급 20%
└─ 응답: BATCH_20260421_GR_001
  └→ QR 코드 생성, 소비자 추적 가능

4단계: Smartium (실시간)

GET /dashboard/overview
├─ Plot 001~050 생육 진행률
├─ Biodium 투입 효과 분석
├─ 예상 수익: ₩3.2M (vs. 목표 ₩3.0M)
└─ 다음 라운드 최적화 제안

기술 스택

| 계층 | 기술 | 이유 | |---|---|---| | Backend | FastAPI (Python) | 빠른 프로토타이핑, 비동기 처리 | | DB | MySQL | 관계형 데이터 + 트랜잭션 무결성 | | 호스팅 | Railway | 무료 티어, MySQL 내장, Cold start 없음 | | Frontend | Next.js 15 | 서버 컴포넌트, 정적 생성 최적화 | | Analysis | Looker Studio | 실시간 대시보드, Google Sheets 연동 | | AI | Claude API | 의사결정 자동화 (caching) |

확장성: Phase 3 이후

IoT 센서 수집 (Year 2)

  • 온실 온습도 센서 → Smartium 실시간 입력
  • 스프레이 로봇 → Biodium 투입 자동화
  • 수확 무게 센서 → Foodium 품질 상관관계 분석

금융 통합 (Year 2.5)

  • Smartium 예측 신뢰도 기반 농가 신용등급 산출
  • 은행/보험사 자동 평가 API 제공
  • 수확 예측 → 사전 대금 결제

마켓플레이스 (Year 3)

  • Foodium 제품 → Ondium.shop 직영 판매
  • QR 추적 기반 "데이터 농산물" 브랜딩
  • B2B/B2C 동시 지원

다음: 각 사업부 페이지에서 API 상세 스펙과 운영 사례를 확인하세요.

#아키텍처#API#데이터모델#클러스터#마이크로서비스