C++17 크로스플랫폼 네트워크 엔진 테스트베드
Windows(IOCP/RIO) · Linux(epoll/io_uring) · macOS(kqueue) 백엔드를
단일 인터페이스(INetworkEngine)로 추상화합니다.
실제 클라이언트-서버 부하 환경에서 세션 관리 · 비동기 DB · 재연결 흐름을 검증합니다.
| 구분 | 내용 |
|---|---|
| IO 백엔드 | Windows: IOCP / RIO · Linux: epoll / io_uring · macOS: kqueue |
| 세션 관리 | SessionPool + KeyedDispatcher (세션 키 기반 직렬화, 락 없는 순서 보장) |
| 비동기 DB | DBTaskQueue → SQLite / ODBC / OLE DB / PostgreSQL 멀티 백엔드 |
| 자동 재연결 | 지수 백오프(1s→30s max) · condition_variable 즉시 깨우기 설계 |
| 버퍼 풀 | RIO slab pool · io_uring fixed buffer 사전 등록 (Non-Paged Pool 절약) |
| Send 백프레셔 | 큐 임계치 초과 시 SendResult::QueueFull 반환 |
| Linux 통합 테스트 | Docker 3-tier (DBServer → Server → Client) 자동화 · 결과 git 자동 저장 |
선결 조건: Visual Studio 2022 + C++ 빌드 도구(MSVC v143) + Windows SDK 10.0
# 빌드
.\build_all.ps1
# 서버 시작 (DBServer:8002, Server:9000)
.\run_all_servers.ps1
# 클라이언트 실행
.\run_client.ps1선결 조건 (Ubuntu 22.04):
sudo apt-get install -y cmake build-essential pkg-config liburing-dev libsqlite3-dev# io_uring + SQLite 포함 빌드
./scripts/build_unix.sh --enable-io-uring --enable-db
# 실행 (DBServer:9001, Server:9000)
./build/DBServer -p 9001 &
./build/TestServer -p 9000 --db-host 127.0.0.1 --db-port 9001 &
./build/TestClient --host 127.0.0.1 --port 9000 --pings 5선결 조건: Docker Desktop (WSL2 백엔드)
# epoll + io_uring 통합 테스트 (이미지 자동 빌드)
.\test_linux\run_docker_test.ps1
# 결과를 git에 자동 커밋/푸시
.\test_linux\run_docker_test.ps1 -Push선결 조건:
xcode-select --install+brew install cmake pkg-config
# 전체 빌드 (TestServer, DBServer, TestClient)
./scripts/build_unix.sh --config Release| 실행 파일 | 포트 |
|---|---|
| TestDBServer | 8002 |
| TestServer | 9000 |
| 문서 | 내용 |
|---|---|
| 01 프로젝트 개요 | 프로젝트 범위 · 현재 상태 · 변경 이력 |
| 02 아키텍처 | 런타임 구조 · 모듈 관계 · 플랫폼별 엔진 |
| 08 프로토콜 | PacketDefine · ServerPacketDefine 바이너리 포맷 |
| 04 API | CLI 옵션 · 주요 C++ API 레퍼런스 |
| 05 개발 가이드 | 플랫폼별 빌드 · 실행 · 테스트 상세 |
| 06 솔루션 가이드 | 솔루션/프로젝트 구성 · 빌드 순서 |
| 07 코드-문서 매핑 | 디렉터리 ↔ 문서 연결 지도 |
아키텍처 · 모듈 상세 설명은 GitHub Wiki를 참고하세요.
| 페이지 | 내용 |
|---|---|
| 전체 구조 | 2계층 구조, 플랫폼 분기 |
| 네트워크 엔진 | AsyncIOProvider, 플랫폼 백엔드 |
| 세션 계층 | Session · SessionManager · SessionPool |
| 동시성 런타임 | ExecutionQueue · KeyedDispatcher · AsyncScope |
| 데이터베이스 | IDatabase · ConnectionPool · 멀티DB |
| 버퍼/메모리 | IBufferPool · RIO/IOUring/Standard |
| 종료 및 재연결 | Graceful Shutdown · DB 재연결 백오프 |
| 빌드 및 실행 | 빌드 명령 · 실행 순서 · 포트 정보 |
| 문서 | 내용 |
|---|---|
| Executive Summary | 요약 보고서 (다이어그램 포함) |
| 팀 공유 보고서 | 팀 공유용 상세 보고서 |
| 성능 테스트 로그 | Windows · Linux 벤치마크 결과 |
| 문서 | 내용 |
|---|---|
| DBModuleTest 가이드 | DB 백엔드 테스트 전체 가이드 |
| 빠른 참조 | 한 페이지 요약 |
NetworkModuleTest/
├── Server/
│ ├── ServerEngine/ # 핵심 엔진 (정적 라이브러리)
│ │ ├── Network/Core/ # INetworkEngine · Session · PacketDefine
│ │ ├── Network/Platforms/ # Windows(IOCP/RIO) · Linux(epoll/io_uring) · macOS(kqueue)
│ │ ├── Concurrency/ # KeyedDispatcher · AsyncScope · TimerQueue
│ │ └── Database/ # IDatabase → SQLite / ODBC / OLE DB / PostgreSQL
│ ├── TestServer/ # 클라이언트 수락 서버
│ └── DBServer/ # 서버 간 패킷 처리 서버
│
├── Client/TestClient/ # 부하 · 연결 테스트 클라이언트
│
├── ModuleTest/
│ └── DBModuleTest/ # DB 모듈 독립 테스트 (5 백엔드)
│
├── test_linux/ # Linux Docker 통합 테스트
│ ├── Dockerfile
│ ├── docker-compose.yml
│ └── scripts/
│
├── scripts/ # 플랫폼별 빌드 스크립트 (크로스플랫폼 통합)
│ ├── build_windows.ps1 # Windows 전체 빌드 (옵션 풍부)
│ ├── build_unix.sh # Linux / macOS 빌드
│ ├── validation/ # 구조 검증 스크립트
│ └── db_tests/ # DB 백엔드별 테스트
│
├── build_all.ps1 # Windows 빠른 빌드 (thin wrapper)
│
├── Docs/ # 설계 문서 및 개발 가이드
│ ├── Wiki/ # GitHub Wiki 소스 (main push 시 자동 동기화)
│ │ └── scripts/ # publish-wiki.ps1, pre-push.hook
│ ├── Architecture/ # 아키텍처 레퍼런스 문서
│ ├── Reports/ # 보고서 패키지 (ExecutiveSummary, TeamShare 등)
│ └── Performance/ # 성능 분석 로그
│
└── dev-planning/ # 작업 설계 문서 (플랜·스펙·AI 협업 기록)
├── plans/
└── superpowers/
| 구분 | 내용 |
|---|---|
| 언어 | C++17 |
| Windows 빌드 | MSBuild / Visual Studio 2022 (MSVC v143) |
| Linux · macOS 빌드 | CMake 3.15+ / GCC 12+ / Clang |
| IO 백엔드 | WinSock2 RIO · IOCP · Linux epoll · io_uring · BSD kqueue |
| DB | SQLite3 · ODBC (MSSQL / PostgreSQL / MySQL) · OLE DB |
| Linux 테스트 | Docker · docker-compose · Ubuntu 22.04 |