운영자(찬혁) 전용 문서. 멤버는 안 봐도 OK. 12주 동안 운영하면서 반복되는 작업과 트러블 처리.
- 시작 전 체크리스트 (1번)
- 매주 운영 흐름
- 페이즈 시작 작업 (3주마다)
- PR 머지 정책
- scenario.md 작성 가이드
- 트러블 응대 패턴
- 12주차 끝 — 모의 면접
- 디스코드 채널 권장 구성
스터디 시작 전 한 번만 점검:
- GitHub repo 생성 (
SH-ALGORITHM/CS-Study) + 7명 초대 - 본인 PC에서
git clone+ IntelliJ 열기 + Gradle sync 동작 확인 -
docker compose up -d동작 확인 → postgrescsstudy접속 확인 - example 4개 Stage 다 ▶ 실행 → measurements.md 자동 생성 확인
- 채널 만들기 (아래 8번 참고)
- 멤버 7명 초대
- 첫 모임 일정 공지
- CONTRIBUTING.md 한 번 정독 권장 (디스코드 안내)
- 환경 셋업 데드라인 (보통 1주차 시작 3일 전)
-
topics/01-jvm-thread/scenario.md검토 (이미 작성됨) - 1주차 시작 금요일에 디스코드 공지
[금요일] 다음 주 scenario.md 공개 + 디스코드 안내 (5분)
[금~일 14시] (멤버 s1+s2 시도 — 운영자 휴식)
[일 14시] 멤버 Draft PR 마감
[일 오후~월 모임 전] PR 1차 코멘트 (7명 × 1코멘트 = 35분)
[월 모임] 2시간 진행
[화~수] s3 PR 코멘트 (필요 시 추가)
[수 23:59] 멤버 PR Ready 마감
[목 모임] 2시간 진행 + PR 머지
[금] 다음 주 scenario.md 작성 (~1시간)
- 모임: 4시간 (월 2 + 목 2)
- 운영: ~1.5시간 (코멘트 + 안내 + 시나리오)
- 총 ~5.5시간/주
- 금: 다음 주 scenario 공개 + 디스코드 안내
- 일 오후~월 모임 전: 멤버 7명 Draft PR (s1+s2)에 코멘트 1개씩 — 월 모임 전 미리 리뷰
- 월: 모임 진행 (체크인 → 7명 시도 발표 → Q&A → 다음 시도 방향)
- 화~수: s3 진행 중 PR에 추가 코멘트 (필요 시)
- 목: 모임 진행 (해결 발표 → 머지 → 회고)
페이즈 시작 직전(4주차 / 7주차 / 10주차 시작 며칠 전)에:
template/build.gradle 에서 페이즈별 의존성 추가:
| 페이즈 | 시작 주차 | 추가 의존성 |
|---|---|---|
| Phase 2 | 4주차 | (이미 web + jpa + postgresql + redis 다 들어있음) |
| Phase 3 | 7주차 | 변경 없음 (이미 redis 있음) |
| Phase 4 | 11주차 | spring-boot-starter-security |
| Phase 4 | 12주차 | spring-boot-starter-actuator + micrometer-registry-prometheus |
# 11주차 시작 전 예시 — security 주석 해제
vim template/build.gradle
# 그 후 아래 scaffold 실행# 페이즈 첫 주차만 (이전 주차 폴더는 멤버가 작업 시작했으면 자동 스킵)
./scripts/scaffold-week.sh 04
./scripts/scaffold-week.sh 05
./scripts/scaffold-week.sh 06→ 7명 폴더에 Spring Boot 프로젝트 자동 생성. 이미 build.gradle 있는 폴더는 자동 스킵 (멤버 작업 보호).
- 이전 페이즈 모임 회고에서 받은 피드백 반영
- 4단계 구조 유지 (s1 / s2 / s3 / s4 + 도메인 후보 + 금지 키워드 + 측정 가이드)
- 자세한 구조 → 5번
[Phase N 시작 안내]
다음 3주차 시나리오 공개됐어요:
- N주차: {제목}
- N+1주차: {제목}
- N+2주차: {제목}
본인 폴더(topics/{NN}/members/{본인이름}/)에 Spring Boot 프로젝트 미리 깔아뒀습니다.
git pull → IntelliJ Reload Gradle 한 번 누르면 Application.java ▶ 가능해요.
- 운영자(본인)만 머지. 멤버는 머지 X.
- 목요일 모임 끝에. 발표 끝난 PR을 즉시 머지.
- Draft 상태면 머지 X (모임 직전에 멤버가 Ready로 전환했어야 함).
- Squash and merge 권장 — git history 깔끔.
- 또는 Merge commit OK (s1/s2/s3 커밋 흐름 보존하고 싶으면).
- 브랜치 자동 삭제 (GitHub 설정으로 자동화 가능)
- 멤버에게 "다음 주차 폴더로 이동하세요" 안내
- 측정 결과가 1회만 있음 → 5회 평균으로 다시 (수정 후 머지)
- 측정 코드 안에 println 있음 → 제거하고 다시 측정 (수정 후 머지)
- 본인 폴더 외 다른 곳 변경 있음 → 본인 폴더로만 한정
- 코드가 AI 답변 그대로 베낀 티 → 본인 손으로 다시 짜라고 안내
각 주차 scenario.md는 다음 구조 유지:
# {N}주차 — {제목}
## 우선 알아둬야 할 단어 (시작 전 1분)
| 단어 | 풀어쓰면 |
## STEP 0. 개념 숙지
필수 개념 + 자기 검증 체크리스트
## STEP 1. 본인 도메인 선택
도메인 후보 4~7개 (가능하면 다양한 패턴)
## STEP 2. 코드 모양
패턴 코드 + 도메인별 변수 매핑
## STEP 3. 동시에 여러 명 흉내내기 (또는 측정 코드 시작점)
## 환경
Java 21 / 도구
## STAGE 진행 가이드
s1 (필수) / s2 (필수) / s3 (필수) / s4 (선택)
## 금지 키워드 (s1~s2 동안 검색 금지)
키워드 목록
## 학습 기록 (자유)
1주차 참고 질문 (답하고 싶은 만큼만)- s1~s3는 필수, s4는 선택 (Java 단독 또는 Spring 통합 등 주차마다 다름)
- 도메인 후보 4개 이상 (멤버 자유 선택 가능)
- 금지 키워드는 s1~s2 동안만, s3에서 해제
- 측정 가이드 (스레드 수, 반복 횟수, 워밍업)
- 1주차 scenario.md 참고
topics/01-jvm-thread/scenario.md 가 가장 잘 작성된 예시. 그대로 구조 복사해서 다음 주차 채우면 됨.
| 증상 | 응대 |
|---|---|
| Gradle sync 안 됨 | "JDK 21 자동 다운로드 기다렸어요? Settings → Gradle → JDK 21 지정 확인" |
| ▶ 버튼 안 보임 | "module not specified 다이얼로그 떴어요? 모듈 드롭다운에서 본인 모듈 선택" |
| docker compose 에러 | "Docker Desktop 실행 중이에요? docker --version 결과 보여주세요" |
| measurements.md 안 생김 | "콘솔에 '→ ... 에 기록됨' 메시지 있어요? 없으면 IOException 떴을 수도" |
| 증상 | 응대 |
|---|---|
| race 안 보임 | "CountDownLatch 동시 출발 썼어요? 스레드 수 200, 시도 1000회 이상으로" |
| visibility 안 보임 | "scenario.md '안 보일 때' 4단계 다 시도? 마지막 -Xint 옵션이 핵심" |
| AI에 답 받으려 함 | (CLAUDE.md 룰이 자동으로 차단됨. 부드럽게 재안내) |
| 증상 | 응대 |
|---|---|
| Draft 안 만들어짐 | "GitHub 웹 PR 만들 때 'Create pull request' 옆 ▼ → 'Create draft pull request'" |
| 다른 멤버 폴더 건드림 | "본인 폴더만 변경. git revert로 다른 멤버 폴더 되돌리기" |
| 시간 못 맞춤 (수 23:59 Ready) | "Draft 상태로 둬도 OK. 목 모임에 발표만 가능. 다음 주에 머지 가능" |
12주차 마지막 모임 후 1~2주 내에 별도 시간:
- 1인 30분 (질문 5~7개)
- 운영자(본인) + 다른 멤버 1~2명이 면접관 역할
- 본인 학습 기록 (블로그/노션/measurements.md) 참고 가능
12주차별 권장 질문 누적 (각 scenario.md 끝부분). 또는 면접관 본인 경험 기반 즉흥 질문.
- ✅ 본인 측정 데이터 인용
- ✅ 다른 선택지와 트레이드오프 비교
- ✅ "직접 깨뜨려본 경험" 톤
- ❌ 책에서 외운 정의
- 합격/불합격 X — 피드백만.
- 어떤 답변이 통하고 어떤 게 안 통하는지 동료 피드백.
| 채널 | 용도 |
|---|---|
#공지 |
시나리오 공개, 모임 일정, 페이즈 시작 안내 |
#질문 |
멤버 질문 (코드 + 에러 그대로 붙이기) |
#회고 |
모임 끝 회고, 페이즈별 학습 후기 |
#자유 |
잡담, 관련 링크 공유 |
#운영 (선택) |
운영자만 보는 메모 (안 만들어도 OK) |
- GitHub bot — PR 알림 자동 채널 (#공지에 push)
- Reminder bot — 매주 금요일 시나리오 공개 자동 알림
- 새 트러블 패턴 발견 시 6번 트러블 응대에 추가
- 페이즈 끝날 때마다 회고 보고 운영 방식 보완
- CLAUDE.md 룰 갱신 시
cp CLAUDE.md GEMINI.md잊지 말기
이 문서는 운영하면서 누적되는 노하우 기록용. 12주 끝나면 다음 기수 운영자에게 인수인계 자료로도 활용 가능.