Skip to content

Latest commit

 

History

History
280 lines (199 loc) · 9.4 KB

File metadata and controls

280 lines (199 loc) · 9.4 KB

운영자 가이드

운영자(찬혁) 전용 문서. 멤버는 안 봐도 OK. 12주 동안 운영하면서 반복되는 작업과 트러블 처리.


목차

  1. 시작 전 체크리스트 (1번)
  2. 매주 운영 흐름
  3. 페이즈 시작 작업 (3주마다)
  4. PR 머지 정책
  5. scenario.md 작성 가이드
  6. 트러블 응대 패턴
  7. 12주차 끝 — 모의 면접
  8. 디스코드 채널 권장 구성

1. 시작 전 체크리스트 (1번)

스터디 시작 전 한 번만 점검:

인프라

  • GitHub repo 생성 (SH-ALGORITHM/CS-Study) + 7명 초대
  • 본인 PC에서 git clone + IntelliJ 열기 + Gradle sync 동작 확인
  • docker compose up -d 동작 확인 → postgres csstudy 접속 확인
  • example 4개 Stage 다 ▶ 실행 → measurements.md 자동 생성 확인

디스코드

  • 채널 만들기 (아래 8번 참고)
  • 멤버 7명 초대
  • 첫 모임 일정 공지

멤버 안내

  • CONTRIBUTING.md 한 번 정독 권장 (디스코드 안내)
  • 환경 셋업 데드라인 (보통 1주차 시작 3일 전)

1주차 준비

  • topics/01-jvm-thread/scenario.md 검토 (이미 작성됨)
  • 1주차 시작 금요일에 디스코드 공지

2. 매주 운영 흐름

[금요일]        다음 주 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에 추가 코멘트 (필요 시)
  • 목: 모임 진행 (해결 발표 → 머지 → 회고)

3. 페이즈 시작 작업 (3주마다)

페이즈 시작 직전(4주차 / 7주차 / 10주차 시작 며칠 전)에:

3-1. template/ 의존성 갱신

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 실행

3-2. 7명 폴더 자동 셋업

# 페이즈 첫 주차만 (이전 주차 폴더는 멤버가 작업 시작했으면 자동 스킵)
./scripts/scaffold-week.sh 04
./scripts/scaffold-week.sh 05
./scripts/scaffold-week.sh 06

→ 7명 폴더에 Spring Boot 프로젝트 자동 생성. 이미 build.gradle 있는 폴더는 자동 스킵 (멤버 작업 보호).

3-3. 다음 3주차 scenario.md 작성

  • 이전 페이즈 모임 회고에서 받은 피드백 반영
  • 4단계 구조 유지 (s1 / s2 / s3 / s4 + 도메인 후보 + 금지 키워드 + 측정 가이드)
  • 자세한 구조 → 5번

3-4. 디스코드 안내

[Phase N 시작 안내]

다음 3주차 시나리오 공개됐어요:
- N주차: {제목}
- N+1주차: {제목}
- N+2주차: {제목}

본인 폴더(topics/{NN}/members/{본인이름}/)에 Spring Boot 프로젝트 미리 깔아뒀습니다.
git pull → IntelliJ Reload Gradle 한 번 누르면 Application.java ▶ 가능해요.

4. PR 머지 정책

머지 권한

  • 운영자(본인)만 머지. 멤버는 머지 X.

머지 시점

  • 목요일 모임 끝에. 발표 끝난 PR을 즉시 머지.
  • Draft 상태면 머지 X (모임 직전에 멤버가 Ready로 전환했어야 함).

머지 방식

  • Squash and merge 권장 — git history 깔끔.
  • 또는 Merge commit OK (s1/s2/s3 커밋 흐름 보존하고 싶으면).

머지 후

  • 브랜치 자동 삭제 (GitHub 설정으로 자동화 가능)
  • 멤버에게 "다음 주차 폴더로 이동하세요" 안내

머지 거절 케이스

  • 측정 결과가 1회만 있음 → 5회 평균으로 다시 (수정 후 머지)
  • 측정 코드 안에 println 있음 → 제거하고 다시 측정 (수정 후 머지)
  • 본인 폴더 외 다른 곳 변경 있음 → 본인 폴더로만 한정
  • 코드가 AI 답변 그대로 베낀 티 → 본인 손으로 다시 짜라고 안내

5. scenario.md 작성 가이드

각 주차 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 참고

1주차 scenario를 템플릿으로 참고

topics/01-jvm-thread/scenario.md 가 가장 잘 작성된 예시. 그대로 구조 복사해서 다음 주차 채우면 됨.


6. 트러블 응대 패턴

멤버 환경 셋업 막힘

증상 응대
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 룰이 자동으로 차단됨. 부드럽게 재안내)

멤버 PR 흐름 막힘

증상 응대
Draft 안 만들어짐 "GitHub 웹 PR 만들 때 'Create pull request' 옆 ▼ → 'Create draft pull request'"
다른 멤버 폴더 건드림 "본인 폴더만 변경. git revert로 다른 멤버 폴더 되돌리기"
시간 못 맞춤 (수 23:59 Ready) "Draft 상태로 둬도 OK. 목 모임에 발표만 가능. 다음 주에 머지 가능"

7. 12주차 끝 — 모의 면접

12주차 마지막 모임 후 1~2주 내에 별도 시간:

형식

  • 1인 30분 (질문 5~7개)
  • 운영자(본인) + 다른 멤버 1~2명이 면접관 역할
  • 본인 학습 기록 (블로그/노션/measurements.md) 참고 가능

질문 풀

12주차별 권장 질문 누적 (각 scenario.md 끝부분). 또는 면접관 본인 경험 기반 즉흥 질문.

평가 기준

  • ✅ 본인 측정 데이터 인용
  • ✅ 다른 선택지와 트레이드오프 비교
  • ✅ "직접 깨뜨려본 경험" 톤
  • ❌ 책에서 외운 정의

결과

  • 합격/불합격 X — 피드백만.
  • 어떤 답변이 통하고 어떤 게 안 통하는지 동료 피드백.

8. 디스코드 채널 권장 구성

채널 용도
#공지 시나리오 공개, 모임 일정, 페이즈 시작 안내
#질문 멤버 질문 (코드 + 에러 그대로 붙이기)
#회고 모임 끝 회고, 페이즈별 학습 후기
#자유 잡담, 관련 링크 공유
#운영 (선택) 운영자만 보는 메모 (안 만들어도 OK)

봇 (선택)

  • GitHub bot — PR 알림 자동 채널 (#공지에 push)
  • Reminder bot — 매주 금요일 시나리오 공개 자동 알림

9. 본 문서 갱신

  • 새 트러블 패턴 발견 시 6번 트러블 응대에 추가
  • 페이즈 끝날 때마다 회고 보고 운영 방식 보완
  • CLAUDE.md 룰 갱신 시 cp CLAUDE.md GEMINI.md 잊지 말기

이 문서는 운영하면서 누적되는 노하우 기록용. 12주 끝나면 다음 기수 운영자에게 인수인계 자료로도 활용 가능.