Important
"CS 이론, 외웠는데 막상 면접에서 말로 설명하려니 막막했던 적 없으신가요?"
CS 학습의 가장 큰 장벽은 지식의 부족이 아닌 지루함과 낮은 몰입도입니다.
1. 혼자 하는 CS 공부의 한계
CS 이론 학습은 개발자에게 필수이지만, 대부분의 사람들은 지루함과 낮은 몰입도로 꾸준함을 이어가기 어렵습니다. 특히 혼자 공부할 때는 개념을 제대로 이해하고 있는지 확인하기 어렵고, 면접처럼 시간 압박 속에서 말로 설명하는 연습이 포함되지 않는 경우가 많습니다.
2. 신뢰할 수 없는 학습 자료
AI 기반 학습 도구가 늘어나고 있지만, 환각(Hallucination) 현상으로 인해 부정확한 정보를 학습하게 될 위험이 있습니다. CS 면접 대비에서 부정확한 지식은 치명적입니다.
학습 동기와 신뢰도를 동시에 해결합니다.
| 핵심 가치 | 설명 |
|---|---|
| 🎮 학습 지속성 | 1:1 대결 구조와 티어/리더보드를 통해 경쟁심과 성취감을 자극하여 자발적인 반복 학습을 유도합니다. |
| 📚 학습 신뢰도 | RAG(Retrieval-Augmented Generation) 기반으로 검증된 문서에서 문제를 출제하고, 채점 근거를 함께 제공합니다. |
| ⏱️ 실전 면접 대비 | 제한 시간 내 답변하는 환경을 통해 실제 기술 면접과 유사한 압박감 속에서 지식을 꺼내 쓰는 훈련을 합니다. |
- 실력 기반 매칭으로 비슷한 수준의 상대와 대결
- 제한 시간 내 CS 문제를 풀며 실시간 점수 경쟁
- 짧은 플레이 타임으로 반복 참여 유도
- 원하는 카테고리(OS, 네트워크, 자료구조, DB 등) 선택하여 학습
- 부담 없는 환경에서 자기주도 학습
- 대전 전 충분한 연습 가능
- 브론즈 ~ 다이아 티어 시스템
- 학습 활동과 대전 승패에 따른 점수 산정
- 리더보드를 통한 순위 경쟁
- 풀었던 문제 자동 저장 및 관리
- 카테고리, 오답 여부, 북마크로 필터링
- 내 답안, 모범 답안, 채점 근거 및 피드백 확인
단순 구현에 그치지 않고, 실제 운영 환경에서 발생하는 분산 시스템 문제를 직접 측정하고 해결했습니다. 상세 내용은 프로젝트 위키에서 확인할 수 있습니다.
"상태 있는 WebSocket 서버를 어떻게 수평 확장할 것인가?" — 이 질문에 4가지 패턴으로 답합니다.
단일 인스턴스에서만 동작하는 WebSocket 서버를 ECS Fargate 다중 인스턴스 환경에서도 정확히 동작하도록 재설계했습니다.
| 문제 | 해결책 | 근거 |
|---|---|---|
| 인스턴스 간 이벤트 전달 불가 | Socket.IO Redis Adapter | sticky session 없이 stateless 수평 확장 |
| 다중 인스턴스 중복 매칭 | Redis Lua 원자 스크립트 | 분산 환경 race condition 완전 차단 |
| 크로스 인스턴스 게임 커맨드 라우팅 | GameCommandBus (Redis Pub/Sub) | 게임 상태 소유 인스턴스에 정확히 전달 |
| BullMQ 라운드 타이머 중복 실행 | Job ID 기반 dedup | 재시작·재연결 시 타이머 중복 방지 |
k6 부하 테스트 실측 결과:
| 검증 항목 | 결과 |
|---|---|
| 크로스 인스턴스 이벤트 전달률 | 100% (round_start_received_rate) |
| 100명 동시 매칭 race condition | 0건 (actual_pairs = expected_pairs) |
| BullMQ 라운드 타이머 중복 | 0건 (14,851 이벤트 분석) |
| Scale-in 중 게임 에러율 | 0% (56게임 동시 진행 중 ECS drain) |
| ECS 신규 태스크 기동 ~ ALB 정상화 | 약 90초 (PENDING 20s → RUNNING 60s → HEALTHY 90s) |
📄 문서 검색(pgvector) → 🔍 HyDE 쿼리 확장 → 📊 Reranker → 🤖 HyperCLOVA X 생성 → ✅ Gemini 후처리
- HyDE(Hypothetical Document Embeddings) 로 검색 정확도 향상
- Clova Reranker 로 검색 결과 재순위화하여 관련성 높은 문서 우선 선택
- 채점 시 모범답안뿐만 아니라 채점 기준과 피드백을 함께 제공
- RAGAS 기반 faithfulness · answer_relevancy · context_recall 정량 평가
리더보드 쿼리 최적화
- 전체 랭킹 조회 시 발생하는 N+1 문제 분석 및 인덱스 설계
pg_stat_statements기반 슬로우 쿼리 탐지 → 실행 계획(EXPLAIN ANALYZE) 분석 → 인덱스 추가
BullMQ 워커 최적화
- 채점 Job 병렬 처리 및 재시도 전략 설계
- 중복 Job 방지로 불필요한 외부 API 호출 차단
OAuth 흐름 최적화
- Passport.js 기반 GitHub OAuth 흐름 개선 및 토큰 갱신 처리
- GitHub Actions 기반 PR 단위 빌드·테스트·배포 파이프라인
- ECS Fargate Auto Scaling: CPU 기반 Target Tracking (ScaleOut 60s / ScaleIn 300s cooldown)
- Amazon ECR 이미지 레지스트리 + ALB 기반 트래픽 분산
- Prometheus + Grafana 실시간 모니터링 (WebSocket 연결 수, BullMQ 큐 상태, 게임 세션 수)
| Category | Technology |
|---|---|
| Frontend | |
| Backend | |
| RAG Pipeline | |
| AI/LLM | |
| Infra & DevOps | |
| Auth | |
| Monorepo |
"작지만 실제로 동작하는 서비스" 를 목표로, 사용자 경험을 최우선으로 생각하며 개발합니다.







