Files

6.1 KiB

TO-DO.md — 추후 개발 항목

본 파일은 ARCHITECTURE.md와 CLAUDE.md 등에 정의되었으나 아직 구현되지 않은 항목들을 추적한다. Phase 0 (데모 UI)는 완료되었으며, Phase 1부터 순차적으로 진행 예정이다.


1. 서버·전송 계층 구현 (Phase 1)

1.1. Proto 정의 및 코드 생성

  • proto/aiot/inference/inference.proto — AI 추론 요청/응답
  • proto/aiot/device/device.proto — 디바이스 등록·상태 보고
  • proto/aiot/gateway/gateway.proto — 게이트웨이 데이터 전달 서비스
  • make proto — protoc + protoc-gen-go + protoc-gen-go-grpc 설치 및 자동화

1.2. 전송 계층 (internal/transport/)

  • transport.go — Listener/Dialer 인터페이스 정의
  • h2_listener.go — HTTP/2 (TCP) 리스너
  • quic_listener.go — QUIC 리스너 (quic-go 래핑)
  • quic_dialer.go — QUIC 클라이언트 다이얼러
  • 리스크: quic-go quic.Streamnet.Conn 인터페이스 호환성 검증 필요

1.3. 서버 구현 (internal/server/, cmd/server/)

  • internal/server/inference_server.go — InferenceService 구현
  • internal/server/device_server.go — DeviceRegistry 구현
  • internal/server/gateway_server.go — GatewayService 구현
  • cmd/server/main.go--transport=quic|h2 플래그 기반 진입점

1.4. 클라이언트 구현 (internal/client/)

  • internal/client/inference_client.go — gRPC 클라이언트 (재시도·타임아웃)
  • internal/client/rest_client.go — REST 비교군 클라이언트

1.5. 미들웨어 (internal/middleware/)

  • logging.go — 요청/응답 로깅 인터셉터
  • metrics.go — latency 측정 인터셉터

2. REST 비교군 구현 (Phase 1)

2.1. REST 서버

  • cmd/rest-server/main.go — HTTP/1.1 + JSON REST API 서버
  • --edge 플래그 지원 (REST-Edge, 엣지 ROI 1차 처리)

2.2. REST 클라이언트

  • rest_client.go — gRPC 클라이언트와 동일 시나리오 보장

3. 게이트웨이 구현 (Phase 2~3)

3.1. 게이트웨이 코어 (internal/gateway/)

  • gateway.go — 라우팅·변환 엔진
  • protocol_adapter.go — IoT 프로토콜 어댑터 인터페이스
  • mqtt_adapter.go — MQTT → Protobuf 변환
  • coap_adapter.go — CoAP → Protobuf 변환 (P1)
  • route_table.go — 서비스 디스커버리·라우팅 테이블 (YAML 기반)

3.2. 라우터 (internal/router/)

  • task_router.go — 엣지 라우팅 로직 (ROI 결과 기반)

3.3. 게이트웨이 서버

  • cmd/gateway/main.go — 게이트웨이 진입점
  • HTTP/2 fallback 모드 지원 (quic-go 리스크 대비)

4. 스크립트·빌드 인프라

4.1. Shell 스크립트 (scripts/)

  • proto-gen.sh — protoc 컴파일 자동화
  • tc-setup.sh--delay --loss --rate --interface 옵션 지원
  • tc-reset.sh — tc 설정 초기화

4.2. Docker (docker/)

  • Dockerfile.server — gRPC 서버 컨테이너
  • Dockerfile.rest-server — REST 서버 컨테이너
  • docker-compose.yml — 전체 실험 환경 구성

4.3. Makefile (루트)

  • make proto, make build, make run-server, make test
  • make benchmark, make lint, make docker-up/down, make clean

4.4. Lint 설정

  • .golangci-lint.yaml — errcheck, govet, staticcheck 등

4.5. go.mod / go.sum (루트)

  • 루트 Go 모듈 초기화 (src/와 별도)

5. 벤치마크 (Phase 2~3)

5.1. 벤치마크 러너 CLI

  • cmd/benchmark-runner/main.go--mode=once|matrix --scenario --transport
  • 분산 환경 end-to-end 측정 (P50/P95/P99, RPS)
  • 2모드: 단일 측정(once) / 전체 매트릭스 sweep(matrix)

5.2. Go testing.B 벤치마크 (benchmarks/scenarios/)

  • unary_test.go — Unary RPC 마이크로벤치마크
  • streaming_test.go — Streaming RPC 벤치마크
  • rest_compare_test.go — REST vs gRPC 비교
  • 역할: 단일 프로세스 내 직렬화 시간·처리량 측정 (benchmark-runner와 분리)

5.3. 실험 결과 저장소

  • benchmarks/results/YYYY-MM-DD/*.json — raw latency + 메타데이터
  • 사후 분석: percentile + CI95 + Tukey outlier + Mann-Whitney U

6. 문서·설계 결정

6.1. ADR (Architecture Decision Records)

docs/decisions/ 디렉터리에 다음 ADR 작성 필요:

  • 001-go-grpc-baseline.md — Go + gRPC 기술 스택 선정 배경
  • 002-quic-grpc-compatibility-poc.md — quic-go 호환성 검증 결과
  • 003-gateway-architecture.md — 게이트웨이 아키텍처 및 novelty 정의
  • 004-protocol-adapter-design.md — MQTT/CoAP 변환 전략
  • 005-routing-data-model.md — 라우팅 데이터 모델 및 설정 형식
  • 006-experiment-design.md — 실험 매트릭스·워크로드 파라미터 고정

6.2. 위험 관리 (docs/risks.md)

  • quic-go 호환성 (R-01)
  • Docker tc 미작동 (R-02)
  • MQTT/CoAP 범위 과다 (R-03)
  • Go 버전업 호환성 (R-04)
  • 합성 부하의 한계 (R-05)

7. Phase 0 UI — 사소한 개선

7.1. types.go — 6개 시스템 확장 (낮은 우선순위)

  • REST-Cloud / REST-Edge / gRPC-H3-Stream / gRPC-H3-GW 추가
  • 메인 비교 대상은 REST-H2 / gRPC-H2 / gRPC-H3 3개이므로 시급하지 않음

7.2. Result.Latencies RingBuffer 전환 (선택)

  • 타입 레벨에서 cap을 명시하거나 RingBuffer로 변경
  • 현재는 simulator.go에서 500개로 제한 중

7.3. padVisible() 개선 (선택)

  • runewidth.StringWidth() 사용하여 한글 정렬 보정
  • (mattn/go-runewidth는 이미 간접 의존성에 존재)

Phase별 요약

Phase 주요 작업 의존성
1 Proto 정의 + 전송 계층 + gRPC 서버/클라이언트 + REST 비교군
2 게이트웨이 + MQTT 어댑터 + 라우팅 Phase 1 완료
3 tc 스크립트 + Docker + 벤치마크 러너 Phase 1 완료
4 Mininet 토폴로지 + 다중 컨테이너 부하 Phase 3 완료
5 simulator 실측 교체 + 0-RTT/HoL 측정 Phase 3~4 완료

상세 우선순위는 TASK_LIST.md를, 의존 순서는 IMPLEMENTATION.md §6.2를 참조한다.