고급 워크플로우
복잡한 프로젝트를 위한 패턴. 코드 리뷰, 리팩토링, 마이그레이션, 프로덕션 수준의 워크플로우를 배워요.
프리미엄 강좌 콘텐츠
이 레슨은 프리미엄 강좌의 일부예요. Pro로 업그레이드하면 모든 프리미엄 강좌와 콘텐츠를 이용할 수 있어요.
- 모든 프리미엄 강좌 이용
- 1000개 이상의 AI 스킬 템플릿 포함
- 매주 새로운 콘텐츠 추가
레벨 업
이전 레슨에서 Bash 통합을 다뤘어요. 이제 모든 걸 결합한 고급 워크플로우를 배울게요.
기본기는 익혔어요. 이제 실제 개발 현장에서 이것들을 어떻게 조합하는지 알아볼게요.
이 워크플로우들은 현업 개발자들이 실제로 Claude Code를 본격적인 업무에 사용하는 방식이에요.
워크플로우: 점진적 개선
한 번에 완벽한 코드를 만들려 하지 말고, 반복적으로 쌓아가세요.
1단계: 작동하는 구현
> API에서 사용자 데이터를 가져와서 캐시하는 함수를 만들어.
> 일단 작동하게 만드는 데 집중해. 엣지 케이스는 나중에.
먼저 기능적인 것을 만들어요.
2단계: 테스트 추가
> 이 함수에 테스트를 추가해. 다음을 커버해:
> - 성공적인 fetch
> - 네트워크 에러
> - 유효하지 않은 응답
> - 캐시 히트
개선 전에 테스트를 먼저.
3단계: 엣지 케이스
> 이제 구현을 개선해:
> - 레이트 리미팅 처리
> - 백오프를 포함한 재시도 로직 추가
> - 부분 응답 처리
타겟팅된 개선.
4단계: 프로덕션 하드닝
> 프로덕션 준비 상태를 검토해:
> - 적절한 에러 메시지
> - 로깅
> - 타입 안전성
> - 문서화
마무리 다듬기.
왜 이 방식이 효과적인가: 각 단계에 명확한 목표가 있어요. 각 단계마다 검증해요. 문제를 일찍 잡을 수 있어요.
워크플로우: 코드 리뷰 파트너
PR을 올리기 전에 Claude를 코드 리뷰어로 활용하세요.
/add $(git diff --name-only main)
> 이 변경사항을 시니어 개발자로서 리뷰해줘.
> 다음에 집중해:
> - 로직 에러
> - 놓칠 수 있는 엣지 케이스
> - 성능 우려사항
> - 보안 이슈
> 우려되는 것이 있으면 지적해줘.
팀원들이 발견하기 전에 Claude가 이슈를 잡아줘요.
후속 패턴:
> SQL 인젝션 위험을 잘 잡았어. 수정해줘.
> 네가 언급한 엣지 케이스 — 그에 대한 테스트를 추가해.
> 네가 식별한 시나리오에 대한 에러 처리를 추가해.
워크플로우: 대규모 리팩토링
많은 파일에 걸친 리팩토링에는 구조가 필요해요.
1단계: 계획
> 모든 콜백 기반 비동기 코드를 async/await로 변환해야 해.
> 먼저 코드베이스를 스캔하고 변경이 필요한 파일을 모두 나열해.
> 복잡도별로 그룹화해 (간단, 보통, 복잡).
2단계: 마이그레이션 가이드 생성
> 우리 패턴에 대한 변경 전/후 예시를 보여주는 마크다운 파일을 만들어.
> 리팩토링의 참조 가이드가 될 거야.
3단계: 청크 단위 실행
# 세션 1
/add src/utils/*.js
> 이 파일들을 async/await로 변환해. 마이그레이션 가이드를 따라줘.
# 검증
> 이 파일들의 테스트를 실행해.
# 세션 2
/clear
/add src/services/*.js
> 이 파일들을 async/await로 변환해. 같은 패턴으로.
# 청크별로 계속...
4단계: 완료 검증
> 코드베이스에서 남아있는 콜백 패턴을 검색해.
> 놓친 파일이 있으면 나열해.
워크플로우: 테스트 주도 개발
워크플로우를 구조화하면 Claude가 TDD에 탁월해요.
> 쇼핑 카트 합계 계산기를 추가하려 해.
> 먼저 테스트를 작성해. 다음을 고려해:
> - 빈 카트
> - 단일 상품
> - 여러 상품
> - 할인
> - 세금 계산
> - 통화 반올림
> 아직 구현하지 마 — 테스트만.
테스트를 검토하세요. 그 다음:
> 이제 모든 테스트가 통과하도록 구현해.
그 다음:
> 테스트를 실행해. 실패하는 것이 있으면 수정해.
워크플로우: 레거시 코드 이해
낯선 코드를 인수인계 받았을 때:
1단계: 개요
/add README.md package.json src/index.js
> 이 프로젝트의 전체적인 개요를 알려줘.
> 기술 스택은? 주요 목적은?
2단계: 아키텍처
/add src/*.js
> 아키텍처를 매핑해줘. 주요 모듈이 뭐야?
> 어떻게 연결되어 있어?
3단계: 딥다이브
/add src/core/*.js
> 이게 핵심 로직인 것 같아. 어떻게 작동하는지 안내해줘.
4단계: 문서화
> 우리가 발견한 것을 정리한 ARCHITECTURE.md를 만들어.
워크플로우: 기능 플래그 개발
토글이 필요한 기능의 경우:
> 새 검색 기능을 기능 플래그 뒤에 구현해.
> 요구사항:
> - 플래그 이름: NEW_SEARCH_ENABLED
> - 기본값: false
> - 점진적 롤아웃 가능
> - 완전 출시 후 쉽게 제거 가능
나중에:
> 기능 플래그 NEW_SEARCH_ENABLED가 100% 롤아웃됐어.
> 플래그를 제거하고 이전 코드 경로를 정리해.
워크플로우: 러버덕 디버깅
때로는 Claude가 여러분과 함께 생각하게 하고 싶을 때가 있어요.
> 이 인증 버그 때문에 막혀 있어.
> 내가 생각하는 상황을 설명할 테니, 내 로직에 빈틈이 있는지 말해줘.
[여러분의 이해를 설명]
> 내가 놓치고 있는 게 뭐야? 내 가정이 틀릴 수 있는 부분은?
Claude가 여러분의 추론에서 결함을 찾아내는 경우가 많아요.
변형: 코드 워크스루
/add src/complex-logic.js
> 이 코드를 주니어 개발자에게 설명하듯이 안내해줘.
> 내가 제대로 이해하고 있는지 확인하고 싶어.
워크플로우: 프로덕션 인시던트 대응
무언가 고장났을 때:
> 프로덕션 이슈가 있어. 결제 시 사용자들이 500 에러를 보고 있어.
> 조사를 도와줘. 현재 알고 있는 것:
> [에러 로그 붙여넣기]
/add src/checkout/*.js
> 이 에러의 원인이 뭘 수 있어?
그 다음:
> 가설 1을 테스트하자: 데이터베이스 연결 문제.
> 확인하려면 어떤 명령어를 실행해야 해?
> 그건 괜찮네. 가설 2: 재고 확인에서의 경쟁 조건(race condition).
> 이게 어떻게 발생할 수 있는지 설명해줘.
AI 지원을 통한 체계적인 디버깅.
워크플로우: 크로스 코드베이스 변경
여러 리포지토리에 걸친 변경의 경우:
# API 리포지토리에서
> User 응답에 새 필드 "phoneNumber"를 추가하려 해.
> API를 업데이트해줘.
# 프론트엔드 리포지토리에서 (새 세션)
/clear
> API가 이제 User 객체에 "phoneNumber"를 반환해.
> 프로필 페이지에서 이를 표시하도록 프론트엔드를 업데이트해.
# 모바일 리포지토리에서 (새 세션)
/clear
> API가 이제 User 객체에 "phoneNumber"를 반환해.
> 이를 처리하도록 모바일 앱을 업데이트해.
Claude는 세션 간에 컨텍스트를 공유하지 않지만, 각 세션에서 크로스 리포지토리 변경을 설명할 수 있어요.
핵심 정리
- 점진적 개선: 작동 → 테스트 → 하드닝 순서로
- PR 올리기 전에 Claude를 코드 리뷰어로 활용하세요
- 대규모 리팩토링은 구조화: 계획 → 청크 → 검증 → 반복
- TDD 워크플로우: 테스트 먼저, 그 다음 구현
- 로직의 빈틈을 찾기 위해 Claude와 러버덕 디버깅을 하세요
- 워크플로우 복잡도를 작업 복잡도에 맞추세요
마지막 레슨: 모든 것을 합쳐서 캡스톤 프로젝트를 만들어요.
다음 레슨: 캡스톤: 완전한 기능 구현을 다뤄요.
이해도 체크
먼저 위의 퀴즈를 완료하세요
레슨 완료!