캡스톤: 완전한 기능 구현
배운 모든 것을 적용해요. Claude Code를 사용해 처음부터 끝까지 완전한 기능을 구현해 봐요.
프리미엄 강좌 콘텐츠
이 레슨은 프리미엄 강좌의 일부예요. Pro로 업그레이드하면 모든 프리미엄 강좌와 콘텐츠를 이용할 수 있어요.
- 모든 프리미엄 강좌 이용
- 1000개 이상의 AI 스킬 템플릿 포함
- 매주 새로운 콘텐츠 추가
완전한 워크플로우
이전 레슨에서 고급 워크플로우를 다뤘어요. 이제 모든 것을 합쳐볼 시간이에요. 이 코스에서 배운 모든 기법을 사용해 완전한 기능을 구현하는 과정을 안내할게요.
장난감 예제가 아니에요. 프로덕션 코드에 실제로 사용하는 워크플로우예요.
기능: API 레이트 리미팅
Express.js API에 레이트 리미팅을 추가해요. 요구사항:
- 사용자별 요청 제한 (API 키 기반)
- 설정 가능한 제한 (분당 요청 수)
- 제한 초과 시 적절한 429 응답 반환
- 관리자 사용자 우회
- Redis 기반으로 분산 배포 지원
- 포괄적인 테스트
시작해 봐요.
1단계: 계획
코드에 손대지 마세요. 먼저 계획.
> Express.js 앱에 API 레이트 리미팅을 추가해야 해.
> 요구사항:
> - API 키 기반 사용자별 제한
> - 설정 가능한 제한
> - 적절한 429 응답
> - 관리자 우회
> - Redis 기반
> - 전체 테스트 커버리지
>
> 구현 계획을 세워줘:
> 1. 어떤 파일을 만들어야 하는지?
> 2. 어떤 기존 파일을 수정해야 하는지?
> 3. 구현 순서는?
> 아직 코드는 작성하지 마.
Claude가 계획을 만들어요. 검토하세요. 질문을 해보세요:
> 왜 인메모리 대신 Redis야? 둘 다 지원하려면 어떻게 해?
> 관리자 우회는 어떻게 처리할 거야 — 헤더 체크? 데이터베이스 조회?
구현 전에 합의를 얻으세요.
2단계: 컨텍스트 설정
관련 파일을 추가하세요:
/add src/middleware/*.js
/add src/config/index.js
/add package.json
/add tests/middleware/*.test.js
컨텍스트 확인:
/ls
미들웨어 패턴과 설정 구조가 보여야 해요.
3단계: 핵심 구현
레이트 리미터를 만들어요:
> src/middleware/rate-limiter.js에 레이트 리미팅 미들웨어를 만들어
>
> 계획의 요구사항:
> - 토큰 버킷 알고리즘
> - Redis 스토리지 (인메모리 폴백 포함)
> - 설정에서 가져오는 제한값
> - Retry-After 헤더와 함께 429 반환
>
> 기존 미들웨어 파일의 패턴을 따라줘.
Claude가 미들웨어를 만들어요. 검토하세요:
> 토큰 버킷이 어떻게 리필되는지 설명해줘.
> Redis가 사용 불가능하면 어떻게 돼?
이슈를 수정하세요:
> 폴백 로직이 정확하지 않아. Redis가 실패하면:
> - 에러를 로깅하고
> - 인메모리로 폴백하고
> - 제한 체크는 계속해야 해
> 수정해줘.
4단계: 테스트 (거의) 먼저
통합 전에 테스트를 작성하세요:
> tests/middleware/rate-limiter.test.js에 레이트 리미터 테스트를 만들어
>
> 테스트 케이스:
> - 제한 미만의 요청 허용
> - 제한 초과 요청 차단
> - 올바른 429 응답과 Retry-After 반환
> - 관리자 우회 작동
> - Redis 실패 시 폴백 작동
> - 윈도우 만료 후 제한 리셋
테스트를 실행하세요:
> 테스트를 실행해. 모두 통과해야 해.
테스트가 실패하면 반복하세요:
> 테스트 3이 실패하고 있어. Retry-After 헤더가 설정되지 않아.
> 미들웨어를 수정해.
5단계: 통합
이제 연결하세요:
/add src/app.js
> 레이트 리미터 미들웨어를 통합해줘.
> - 인증 미들웨어 이후에 전역으로 적용
> - 제한값은 설정에서 가져오기
> - 올바른 순서로 미들웨어 체인에 추가
설정을 추가하세요:
/add src/config/index.js
> 레이트 리미팅 설정을 추가해:
> - RATE_LIMIT_WINDOW_MS (기본값 60000)
> - RATE_LIMIT_MAX_REQUESTS (기본값 100)
> - RATE_LIMIT_ADMIN_BYPASS (기본값 true)
6단계: 엣지 케이스
이제 견고하게 만드세요:
> 레이트 리미터의 엣지 케이스를 검토해:
> - API 키가 없으면?
> - API 키가 잘못된 형식이면?
> - 분산 환경에서의 경쟁 조건은?
> - 제한 설정이 유효하지 않으면?
>
> 빈틈이 있으면 처리를 추가해.
Claude가 이슈를 식별하고 수정해요.
7단계: 문서화
> 레이트 리미팅 기능에 대한 문서를 만들어:
> - README에 레이트 리미팅 섹션 추가
> - 미들웨어에 인라인 JSDoc 주석 추가
> - 설정 옵션 문서화
> - 레이트 리미팅 테스트 방법 예시 추가
8단계: 최종 검토
커밋 전 전체 검토:
> 우리가 만든 모든 것을 검토해:
> - src/middleware/rate-limiter.js
> - tests/middleware/rate-limiter.test.js
> - src/app.js와 config 변경사항
>
> 이슈가 있어? 빠진 테스트 케이스? 잠재적 버그?
최종 테스트 실행:
> 전체 테스트를 실행해. 모두 통과하는지 확인해.
Git 상태 확인:
git status
git diff
9단계: 커밋
깔끔한 git 히스토리:
git add src/middleware/rate-limiter.js
git commit -m "feat: Redis 스토리지를 사용하는 레이트 리미팅 미들웨어 추가"
git add tests/middleware/rate-limiter.test.js
git commit -m "test: 레이트 리미터 테스트 커버리지 추가"
git add src/app.js src/config/index.js
git commit -m "feat: 레이트 리미터를 전역으로 통합"
git add README.md
git commit -m "docs: 레이트 리미팅 설정 문서화"
각각 독립적으로 되돌릴 수 있는 논리적 커밋이에요.
캡스톤 챌린지
Claude Code를 사용해 이 기능을 직접 구현해 보세요:
기능: API 요청 로깅
요구사항:
- 모든 수신 API 요청 로깅
- 포함: 타임스탬프, 메서드, 경로, 사용자 ID, 응답 시간, 상태 코드
- 데이터베이스(또는 간단하게 파일)에 저장
- 설정 가능한 로그 레벨
- 로그 검색/쿼리 기능
- 테스트
워크플로우에 포함되어야 할 것:
- 계획 세션 (아직 코드 작성 안 함)
- 컨텍스트 설정 (관련 파일 추가)
- 핵심 구현
- 테스트
- 통합
- 엣지 케이스 처리
- 문서화
- 최종 검토
- 깔끔한 커밋
배운 모든 것을 활용하세요.
코스 복습
8개 레슨을 통해 배운 것:
| 레슨 | 배운 내용 |
|---|---|
| 1. 소개 | 멘탈 모델: Claude에게 물어보지 말고 지시하기 |
| 2. 핵심 명령어 | 매일 사용하는 필수 슬래시 명령어 |
| 3. 컨텍스트 관리 | 더 나은 응답을 위한 전략적 파일 로딩 |
| 4. 태스크 오케스트레이션 | 복잡한 작업의 분해와 순서 지정 |
| 5. 파일 작업 | 안전하고 효율적인 파일 조작 |
| 6. Bash 통합 | 셸 명령어를 활용한 지능적 자동화 |
| 7. 고급 워크플로우 | 본격적인 개발을 위한 전문 패턴 |
| 8. 캡스톤 | 모든 것을 하나로 합치기 |
핵심 원칙
- 컨텍스트가 전부. 양보다 질.
- 구현 전에 계획하기. 사소하지 않은 것에는 특히.
- 처음부터 다시 하지 말고 반복하기. 작동하는 것 위에 쌓아가기.
- 지속적으로 검증하기. 일찍 자주 테스트하기.
- Git이 안전망. 자주 커밋하고 쉽게 되돌리기.
- 적절한 수준의 지시. 작업 복잡도에 맞추기.
다음 단계
기초를 갖췄어요. 이제:
- 매일 연습하기. 모든 작업이 실력을 키우는 기회예요.
- 나만의 워크플로우 만들기. 패턴을 프로젝트에 맞게 조정하세요.
- 최신 정보 유지하기. Claude Code는 계속 발전해요. 새 기능을 확인하세요.
- 지식 공유하기. 배운 것을 다른 사람에게 알려주세요.
무언가를 만들어 보세요.
이해도 체크
먼저 위의 퀴즈를 완료하세요
레슨 완료!