update roadmap: archive large-payload-followup-optimization milestone
This commit is contained in:
parent
fa883ee2aa
commit
3bc131c269
3 changed files with 37 additions and 33 deletions
|
|
@ -11,7 +11,7 @@ Proto Socket은 여러 언어와 플랫폼에서 일관되게 동작하는 얇
|
|||
- 프로토콜 기반: 프로토콜 버전 `0.1`, 와이어 포맷, 버전 정책, canonical proto 원본, 레퍼런스 구현 패턴을 정의한다.
|
||||
- 검증과 호환성: 동일 언어 테스트, 크로스 언어 테스트, proto 동기화 검사, 지속 검증으로 사용 가능한 구현체들을 정렬한다.
|
||||
- 안정화와 유지: 현재 5개 언어 구현을 완성형 후보로 보고 안정성 판단, 문서 정합성, 유지 기준을 정리한다.
|
||||
- 남은 native platform 포팅: 실제 수요가 생기기 전까지 C# 및 Swift 구현 추가를 보류한다.
|
||||
- 남은 native platform 포팅: 사용자 요청에 따라 C# Unity/.NET 포트를 다음 진행 대상으로 두고, Swift 구현 추가는 실제 수요가 생길 때까지 보류한다.
|
||||
- 릴리즈 준비: 현재 릴리즈 표준은 Git ref/tag 기반 소비로 둔다. 외부 package registry 릴리즈는 별도 수요가 생길 때 후속 작업으로 분리한다.
|
||||
|
||||
## Milestone 목록
|
||||
|
|
@ -34,12 +34,12 @@ Proto Socket은 여러 언어와 플랫폼에서 일관되게 동작하는 얇
|
|||
- [워크스페이스 포트/환경 표준화](archive/phase/stability-maintenance/milestones/workspace-port-env-standardization.md) - 상태: 완료; 목표: proto-socket이 runtime service port를 소유하지 않는다는 점과 cross-language test runner의 fixed local port 대역을 workspace 표준 예외로 문서화한다.
|
||||
- [변경 기반 테스트 라우팅 정형화](archive/phase/stability-maintenance/milestones/change-aware-test-routing.md) - 상태: 완료; 목표: 마지막 통과 테스트 지점과 현재 변경 내용을 분석해 기능, 속도, 안정성 테스트 중 필요한 검증 범위를 자동 선택하고, 언어별 anchor x5와 야간 장시간 측정을 분리한다.
|
||||
- [야간 대용량 패킷 성능 기준선](archive/phase/stability-maintenance/milestones/nightly-large-payload-baseline.md) - 상태: 완료; 목표: 64KB/1MB payload 성능 baseline과 회귀 판단을 실행 host local time 20:00 이후 야간 window에서 별도 수집해 주간 작업 부하 편차와 분리한다.
|
||||
- [대용량 WS/병렬 전송 후속 최적화](milestones/large-payload-followup-optimization.md) - 상태: [진행중]; 목표: TypeScript WS 1MB, TypeScript TCP 1024 tail, Kotlin TCP parallel, Dart large-packet guard 작업 완료 이후 남은 WS fixed latency 후보를 후속 최적화로 구체화한다.
|
||||
- [대용량 WS/병렬 전송 후속 최적화](archive/phase/stability-maintenance/milestones/large-payload-followup-optimization.md) - 상태: 완료; 목표: TypeScript WS 1MB, TypeScript TCP 1024 tail, Kotlin TCP parallel, Dart large-packet guard 작업 완료 이후 남은 WS fixed latency 후보까지 분리 분석했다.
|
||||
|
||||
### 남은 native platform 포팅
|
||||
|
||||
- [C# Unity/.NET 포트](milestones/csharp-port.md) - 상태: 보류; 목표: 실제 Unity/.NET 소비 수요가 생길 때까지 C# 구현 추가를 보류한다.
|
||||
- [Swift Apple 플랫폼 포트](milestones/swift-port.md) - 상태: 보류; 목표: 실제 iOS/macOS 소비 수요가 생길 때까지 Swift 구현 추가를 보류한다.
|
||||
- [C# Unity/.NET 포트](milestones/csharp-port.md) - 상태: [진행중]; 목표: 프로토콜 `0.1` 계약과 native-first 런타임 방향을 유지하면서 Unity 및 .NET 소비자를 지원하는 C# 구현을 추가한다.
|
||||
- [Swift Apple 플랫폼 포트](milestones/swift-port.md) - 상태: [보류]; 목표: 실제 iOS/macOS 소비 수요가 생길 때까지 Swift 구현 추가를 보류한다.
|
||||
|
||||
### 릴리즈 준비
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
## 목표
|
||||
|
||||
야간 대용량 패킷 기준선에서 병목이 유지되는 row를 근거로, 64KB/1MB WebSocket 및 병렬 전송 성능을 추가 개선한다. TypeScript WS 1MB, TypeScript TCP 1024-client tail, Kotlin TCP parallel required skip 해제와 Dart large-packet guard는 완료 근거를 반영했고, 남은 후보는 WS fixed latency로 유지한다.
|
||||
야간 대용량 패킷 기준선에서 병목이 유지되는 row를 근거로, 64KB/1MB WebSocket 및 병렬 전송 성능을 추가 개선한다. TypeScript WS 1MB, TypeScript TCP 1024-client tail, Kotlin TCP parallel required skip 해제, Dart large-packet guard, WS fixed latency 경로 분리까지 완료 근거를 반영했다.
|
||||
|
||||
## 단계
|
||||
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
## 상태
|
||||
|
||||
[진행중]
|
||||
[완료]
|
||||
|
||||
## 승격 조건
|
||||
|
||||
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
- 야간 기준선에서 재현되는 병목 row만 구현 대상으로 삼는다.
|
||||
- TypeScript WS 1MB, TypeScript TCP 1024-client 병렬 tail timeout, Kotlin TCP parallel required skip 해제는 완료 반영된 후보로 둔다.
|
||||
- 남은 활성 후보는 WS 계열 fixed latency다.
|
||||
- WS 계열 fixed latency는 Kotlin WS same-language 수신 plateau와 TypeScript gateway worker_threads tail의 별도 경로로 분리 분석 완료했다.
|
||||
- Kotlin WS 1MB는 야간 record에서 안정성 유지가 확인되어 이번 후보 창에서는 별도 구현 대상으로 승격하지 않는다.
|
||||
- stability hard gate는 timeout, nonce mismatch, response type mismatch, FIFO violation, pending leak, queue/gateway backlog leak 0을 유지한다.
|
||||
- 성능 개선은 cross-language matrix와 focused payload/stress record로 검증한다. 야간 full record 완료를 막는 same-language hard gate 실패는 focused stress로 먼저 좁힌 뒤 full record에서 재확인한다.
|
||||
|
|
@ -49,19 +49,22 @@
|
|||
- [x] [typescript-ws-1mb-path] TypeScript WS 1MB 병목이 야간에도 유지되면 mask/protobuf/parse queue 경로를 우선 분석한다. 완료 근거: `agent-task/archive/2026/06/m-large-payload-followup-optimization/01_typescript_ws_1mb/complete.log`; 검증: `npm run check`, `npm test -- test/ws.test.ts test/communicator.test.ts`, `run_stress.sh --full --lang typescript --transport ws --profile payload`, `agent-test/runs/20260613-220314-proto-socket-stress-full.md`.
|
||||
- [x] [typescript-tcp-1024-tail-path] TypeScript TCP `parallel clients=1024` timeout tail을 focused stress로 재현하고, write queue 대기, socket write/drain, read parse queue, request timeout 시작점 중 어느 경로가 15초 hard gate를 넘기는지 계측한 뒤 transport/communicator 수정 계획을 작성한다. 완료 근거: `agent-task/archive/2026/06/m-large-payload-followup-optimization/02_typescript_tcp_tail/complete.log`; 검증: `agent-test/runs/20260614-072352-proto-socket-stress-full.md`, `agent-test/runs/20260614-072436-proto-socket-performance-quick.md`.
|
||||
- [x] [kotlin-tcp-parallel-unskip-path] Kotlin TCP `parallel clients>=128` required skip을 해제하기 위해 blocking read thread-per-connection 병목과 bounded read timeout 부재를 분리 분석하고, 128 -> 512 -> 1024 순서로 측정 가능하게 만드는 수정 계획을 작성한다. 완료 근거: `agent-task/archive/2026/06/m-large-payload-followup-optimization/03_kotlin_tcp_parallel/complete.log`; 검증: `cd kotlin && ./gradlew --offline test`, `run_stress.sh --full --lang kotlin --transport tcp --profile parallel`, `agent-test/runs/20260614-082714-proto-socket-stress-full.md`.
|
||||
- [ ] [ws-fixed-latency-path] WS 계열 fixed latency가 야간에도 유지되면 transport별 공통 지연 경로와 언어별 worker/gateway path를 분리해 분석한다. 계획: `agent-task/m-large-payload-followup-optimization/04_ws_fixed_latency/PLAN-cloud-G07.md`.
|
||||
- [x] [ws-fixed-latency-path] WS 계열 fixed latency가 야간에도 유지되면 transport별 공통 지연 경로와 언어별 worker/gateway path를 분리해 분석한다. 완료 근거: `agent-task/archive/2026/06/m-large-payload-followup-optimization/04_ws_fixed_latency_1/complete.log`; 검증: `agent-test/runs/20260614-224355-proto-socket-stress-quick.md`, `agent-test/runs/20260614-224424-proto-socket-stress-quick.md`.
|
||||
- [x] [kotlin-ws-guard] Kotlin WS 1MB는 야간 record에서 개선 유지 여부를 확인하고, 회귀가 보이면 별도 구현 대상으로 승격한다. 검증: `agent-test/runs/20260610-124006-proto-socket-stress-full.md`, `agent-test/runs/20260610-131132-proto-socket-stress-full.md`, `agent-test/runs/20260613-141506-proto-socket-stress-full.md`의 Kotlin WS 1MB rows가 모두 stability PASS이고 queue/backlog leak 없이 유지되어 이번 후보 창에서는 별도 구현 대상으로 승격하지 않는다.
|
||||
- [x] [dart-large-packet-guard] Dart TCP/WS 1MB는 기존 개선이 유지되는지 감시하고, 회귀가 보이면 guard 또는 path hardening 대상으로 승격한다. 검증: `agent-test/runs/20260614-123328-proto-socket-performance-full.md`에서 Dart TCP 1MB p99 `140.565ms`, throughput `56.4rps`, Dart WS 1MB p99 `149.095ms`, throughput `52.4rps`, timeout/nonce/type/FIFO/pending/queue/gateway violations 0으로 PASS라 별도 guard/hardening 구현 대상으로 승격하지 않는다.
|
||||
|
||||
## 완료 리뷰
|
||||
|
||||
- 상태: 없음
|
||||
- 요청일: 없음
|
||||
- 완료 근거: 없음
|
||||
- 상태: 승인됨
|
||||
- 요청일: 2026-06-15
|
||||
- 완료 근거:
|
||||
- TypeScript WS 1MB, TypeScript TCP 1024 tail, Kotlin TCP parallel, Dart large-packet guard 완료 근거가 모두 반영됐다.
|
||||
- WS fixed latency는 `agent-task/archive/2026/06/m-large-payload-followup-optimization/04_ws_fixed_latency_1/complete.log`에서 Kotlin WS same-language 수신 plateau와 TypeScript gateway worker_threads tail로 분리 완료됐다.
|
||||
- 모든 기능 Task와 Task 내부 검증 근거가 `[x]` 상태로 정리됐다.
|
||||
- 리뷰 필요:
|
||||
- [ ] 사용자가 완료 결과를 확인했다
|
||||
- [ ] archive 이동을 승인했다
|
||||
- 리뷰 코멘트: 없음
|
||||
- [x] 사용자가 완료 결과를 확인했다
|
||||
- [x] archive 이동을 승인했다
|
||||
- 리뷰 코멘트: 2026-06-15 사용자 요청으로 현재 마일스톤 완료 및 다음 마일스톤 지정.
|
||||
|
||||
## 범위 제외
|
||||
|
||||
|
|
@ -73,8 +76,8 @@
|
|||
|
||||
- 관련 경로: `agent-roadmap/archive/phase/stability-maintenance/milestones/nightly-large-payload-baseline.md`, `agent-test/local/proto-socket-performance-baseline.md`, `agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_performance.sh`, `agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_stress.sh`
|
||||
- 선행 작업: `야간 대용량 패킷 성능 기준선` 완료.
|
||||
- 완료된 구현 대상: TypeScript WS 1MB, TypeScript TCP 1024-client 병렬 timeout tail, Kotlin TCP parallel clients>=128 required skip 해제, Dart TCP/WS 1MB large-packet guard.
|
||||
- 남은 후보: WS fixed latency.
|
||||
- 완료된 구현 대상: TypeScript WS 1MB, TypeScript TCP 1024-client 병렬 timeout tail, Kotlin TCP parallel clients>=128 required skip 해제, Dart TCP/WS 1MB large-packet guard, WS fixed latency 경로 분리.
|
||||
- 남은 후보: 없음. WS fixed latency 분석에서 후속 구현 후보로 Kotlin WS same-language 수신 staging plateau와 TypeScript gateway worker_threads dispatch tail을 별도 후보로 분리했다.
|
||||
- 제외/감시: Kotlin WS 1MB는 야간 record에서 안정성 유지가 확인되어 이번 후보 창에서는 별도 구현 대상으로 승격하지 않는다. Dart TCP/WS 1MB는 2026-06-14/15 야간 full record에서 stability PASS가 확인되어 별도 구현 대상으로 승격하지 않는다. Go/Python 1MB와 TypeScript TCP 1MB payload rows는 reference/비교 대상으로 둔다.
|
||||
- 성공 기준: stability hard gate 0을 유지하고, 같은 host/runtime/profile의 focused 또는 quick record에서 대상 row의 p99/throughput이 개선 방향을 보이는지 기록한다. 절대값 고정 합격선은 두지 않는다.
|
||||
- 구현 계획 작성 기준: `candidate-paths`의 큰 작업은 `agent-task/m-large-payload-followup-optimization/` 아래 split task로 작성한다. WS fixed latency는 `agent-task/m-large-payload-followup-optimization/04_ws_fixed_latency/PLAN-cloud-G07.md`에서 원인 분리 계획으로 유지한다.
|
||||
- 구현 계획 작성 기준: `candidate-paths`의 큰 작업은 `agent-task/m-large-payload-followup-optimization/` 아래 split task로 작성했다. 이 Milestone은 완료되었으며, 추가 구현은 사용자 확인 후 새 Milestone 또는 별도 follow-up 작업으로 분리한다.
|
||||
|
|
@ -10,7 +10,13 @@
|
|||
|
||||
## 상태
|
||||
|
||||
보류
|
||||
[진행중]
|
||||
|
||||
## 구현 잠금
|
||||
|
||||
- 상태: 잠금
|
||||
- 결정 필요:
|
||||
- 지원할 .NET 및 Unity version target을 선택한다.
|
||||
|
||||
## 범위
|
||||
|
||||
|
|
@ -19,22 +25,17 @@
|
|||
- 구현체를 Available로 표시하기 전에 동일 언어 테스트와 크로스 언어 테스트를 추가한다.
|
||||
- protobuf 외 런타임 의존성이 있다면 native API가 충분하지 않은 이유를 문서화한다.
|
||||
|
||||
## 필수 기능
|
||||
## 기능
|
||||
|
||||
- [ ] 지원할 .NET 및 Unity version target을 선택한다.
|
||||
- [ ] Canonical schema에서 C# protobuf binding을 생성하거나 유지한다.
|
||||
- [ ] `ITransport`와 communicator core를 구현한다.
|
||||
- [ ] TCP/TLS client와 server 지원을 구현한다.
|
||||
- [ ] Native 지원이 충분하지 않은 경우에만 focused dependency로 WebSocket/WSS 지원을 구현한다.
|
||||
- [ ] 동일 언어 테스트를 추가한다.
|
||||
- [ ] 크로스 언어 테스트 runner를 추가한다.
|
||||
- [ ] 테스트 통과 후에만 상위 구현 상태를 갱신한다.
|
||||
### Epic: [csharp-port] C# 구현과 검증
|
||||
|
||||
## 완료 기준
|
||||
|
||||
- [ ] C# peer가 문서화된 프로토콜을 통해 최소 하나의 사용 가능 구현체와 상호 운용된다.
|
||||
- [ ] C# 구현체는 `PORTING_GUIDE.md`를 따르며 Unity main-thread concern을 프로토콜 core 밖에 둔다.
|
||||
- [ ] 런타임 의존성 선택은 문서화되어 있고 protocol-relevant하다.
|
||||
- [ ] [csharp-protobuf-binding] Canonical schema에서 C# protobuf binding을 생성하거나 유지한다.
|
||||
- [ ] [csharp-communicator-core] `ITransport`와 communicator core를 구현한다. 검증: C# 구현체는 `PORTING_GUIDE.md`를 따르며 Unity main-thread concern을 프로토콜 core 밖에 둔다.
|
||||
- [ ] [csharp-tcp-tls-transport] TCP/TLS client와 server 지원을 구현한다.
|
||||
- [ ] [csharp-ws-wss-transport] Native 지원이 충분하지 않은 경우에만 focused dependency로 WebSocket/WSS 지원을 구현한다. 검증: 런타임 의존성 선택은 문서화되어 있고 protocol-relevant하다.
|
||||
- [ ] [csharp-same-language-tests] 동일 언어 테스트를 추가한다.
|
||||
- [ ] [csharp-cross-language-tests] 크로스 언어 테스트 runner를 추가한다. 검증: C# peer가 문서화된 프로토콜을 통해 최소 하나의 사용 가능 구현체와 상호 운용된다.
|
||||
- [ ] [csharp-available-status] 테스트 통과 후에만 상위 구현 상태를 갱신한다.
|
||||
|
||||
## 범위 제외
|
||||
|
||||
|
|
@ -45,7 +46,7 @@
|
|||
## 작업 컨텍스트
|
||||
|
||||
- 관련 경로: `PORTING_GUIDE.md`, `PROTOCOL.md`, `VERSIONING.md`
|
||||
- 선행 작업: 안정화 기준선 완료 또는 실제 Unity/.NET 소비 수요 확인
|
||||
- 선행 작업: 안정화 기준선 완료 및 사용자 요청으로 C# 포트를 다음 마일스톤으로 지정
|
||||
- 후속 작업: 릴리즈 준비
|
||||
- 참고 구현: 동시성과 close-once 패턴은 Go를, public API 형태와 parser map 예시는 Dart를 참고한다.
|
||||
- 확인 필요: 지원할 .NET 및 Unity version target
|
||||
|
|
|
|||
Loading…
Reference in a new issue