소개
기술적인 부채는 중복 코드, 누락된 테스트, 오래된 종속성 및 일관되지 않은 패턴 등 모든 코드베이스에 누적됩니다. 기능 개발이 일반적으로 더 높은 우선순위를 부여받기 때문에 이러한 문제가 누적될 수 있습니다. 이 자습서에서는 기능 속도를 희생하지 않고도 기술 부채를 체계적으로 해결하는 데 사용할 GitHub Copilot 수 있는 방법을 설명합니다.
이 자습서의 대상
이 자습서는 엔지니어링 팀과 기술 리더가 새로운 기능이 제공되는 속도를 유지하면서 기술 문제를 줄일 수 있도록 설계되었습니다. 필요한 것:
- 액세스 권한이 있는 Copilot 구독Copilot 클라우드 에이전트
- 관리자가 하나 이상의 리포지토리에 대한 접근 권한
- 팀의 개발 워크플로에 대한 숙지
수행할 작업
이 자습서를 마치면 다음에 대해 알아봅니다.
- 현재 수정 사항을 구현하는 데 사용 Copilot
-
Copilot 클라우드 에이전트 대규모 정리 작업에 활용하기 - 팀의 표준에 맞게 Copilot 사용자 지정 지침 만들기
-
Copilot가 기술 부채에 미치는 영향 측정
기술 부채 문제 이해
코드베이스에서 기술 부채를 줄이기 전에 팀이 가장 자주 직면하는 기술 부채 유형을 파악하는 데 다소 시간이 걸릴 수 있습니다.
일반적인 기술 부채 유형은 다음과 같습니다.
-
**코드 중복** - 여러 위치에서 구현된 동일한 논리 -
**누락된 테스트** - 적절한 테스트 적용 범위가 없는 기능 -
**오래된 종속성** - 현재 릴리스보다 몇 버전 이전인 라이브러리 -
**일관되지 않은 패턴** - 코드베이스 전체에서 동일한 문제에 대한 다양한 접근 방식 -
**레거시 코드** - 작동하지만 현재 표준을 따르지 않는 이전 코드
시간 경과에 따라 기술 부채의 비용이 증가합니다.
- 선임 엔지니어는 아키텍처 디자인 대신 일상적인 업데이트에 시간을 보냅니다.
- 검토자가 일관되지 않은 패턴에 대해 논쟁을 벌이면서 코드 검토가 더 길어짐
- 혼동되는 코드 조직으로 인해 새 개발자가 온보딩하는 데 시간이 더 오래 걸립니다.
- 오래된 종속성이 취약성을 누적함에 따라 배포 위험이 증가합니다.
IDE에서 실시간 문제 해결에 Copilot 사용하기
코드베이스에 기술 부채가 쌓이는 것을 방지하는 가장 좋은 방법은 처음부터 코드베이스에 들어오지 않도록 하는 것입니다.
개발 중에 기술 부채를 발견하면, IDE에서 Copilot를 사용하여 즉시 수정하세요.
빠른 리팩터링 워크플로
-
IDE에서 작업하는 동안 개선이 필요한 코드를 강조 표시합니다.
-
IDE에서 Copilot 채팅을(를) 엽니다.
-
코드를 리팩터링하도록 요청 Copilot 합니다. 다음은 그 예입니다.
Extract this into a reusable helper and add error handlingStandardize this logging format to match our patternAdd null checks for all optional parametersReplace this deprecated API call with the current version
-
제안된 변경 내용을 검토합니다.
-
변경 내용을 적용하거나 해당 접근 방식을 수정하도록 요청 Copilot 합니다.
-
테스트를 실행하여 변경 내용이 올바르게 작동하는지 확인합니다.
예: 오류 처리 표준화
일관성 없는 오류 처리가 발견되면, 예를 들어:
// Highlight this code
try {
await fetchData();
} catch (e) {
console.log(e);
}
코드를 개선하도록 요청 Copilot 합니다. 예를 들면 다음과 같습니다.
Refactor this to use structured logging and proper error handling
// Highlight this code
try {
await fetchData();
} catch (e) {
console.log(e);
}
Refactor this to use structured logging and proper error handling
Refactor this to use structured logging and proper error handling
Copilot 는 다음을 제안할 수 있습니다.
try {
await fetchData();
} catch (error) {
logger.error('Failed to fetch data', {
error: error.message,
stack: error.stack,
timestamp: new Date().toISOString()
});
throw error;
}
참고
이 응답은 예제입니다. Copilot 채팅 응답은 비결정적이므로 동일한 코드에 대해 동일한 프롬프트를 실행하면 다른 응답을 받을 수 있습니다.
현재 수정 방법을 채택하면 표준 이하의 코드가 코드베이스에 추가되지 않도록 하고, 처리되지 않을 수 있는 백로그 문제가 생성되지 않도록 방지할 수 있습니다.
IDE에서 사용하는 Copilot 방법에 대한 자세한 내용은 IDE에서 GitHub Copilot 질문하기을 참조하세요.
대규모 리팩터링을 위해 Copilot 클라우드 에이전트 사용하기
일부 리팩터링 작업은 너무 커서 완료할 수 없지만 팀의 모든 사용자가 새로운 기능을 개발하려고 합니다. 이 경우 이러한 작업을 자율적으로 처리하는 데 사용할 Copilot 클라우드 에이전트 수 있습니다. 변경 제안 Copilot 클라우드 에이전트 사항을 검토하기 위해서는 최소한 인적 노력이 필요하지만 Copilot , 많은 작업을 수행하면 팀 생산성에 훨씬 적은 영향을 미치면서 대규모 리팩터링을 수행할 수 있습니다.
Copilot 클라우드 에이전트를 사용하는 경우
Copilot 클라우드 에이전트는 다음 작업에 사용하십시오.
- 코드베이스에서 여러 파일 터치
- 체계적인 변경 필요(예: 이전 기능 플래그 제거)
- 신중한 테스트가 필요하지만 구현하기 쉽습니다.
- 수동으로 수행하는 경우 기능 개발을 중단합니다.
예를 들면 다음과 같습니다.
- 50개 이상의 파일에 영향을 주는 프레임워크 업그레이드
- 사용되지 않는 기능 플래그 제거
- strict TypeScript로 마이그레이션
- 종속성 버전 업데이트
- 가져오기 패턴 표준화
워크플로: Copilot 클라우드 에이전트
-
GitHub 리팩터링 작업을 설명하는 문제를 만듭니다.변경해야 하는 사항에 대해 구체적으로 설명합니다. 다음은 그 예입니다.
Remove all feature flags marked for cleanup in Q2. These flags are: - `enable_new_dashboard` - `beta_export_feature` - `experimental_search` All three flags are enabled by default in production. Remove the flag checks and keep the "enabled" code path. -
**Copilot** 사용자에게 문제를 할당합니다. -
Copilot 클라우드 에이전트 할 것이다:- 개발 환경 설정
- 초안 끌어오기 요청 열기
- 필요에 따라 코드를 수정하십시오.
- 테스트 실행
- 검토를 위한 끌어오기 요청 완료
- 끌어오기 요청을 검토해 주세요
-
사람이 제기한 끌어오기 요청과 마찬가지로 끌어오기 요청을 검토합니다.
-
변경이 필요한Copilot 클라우드 에이전트 경우 메모를 남겨 두면 피드백에 따라 끌어오기 요청이 업데이트됩니다.
-
작업이 올바르게 완료될 때까지 이러한 방식으로 반복합니다.
-
끌어오기 요청을 승인하고 병합합니다.
자세한 내용은 GitHub Copilot에게 끌어오기 요청을 만들도록 요청 및 GitHub Copilot가 생성한 풀 리퀘스트 검토을(를) 참조하세요.
안전 가드레일
Copilot 클라우드 에이전트 기본 제공 안전 조치를 사용하여 작동합니다.
- 자기 자신의
copilot/*분기에만 푸시할 수 있습니다. - 끌어오기 요청을 병합할 수 없으므로 승인이 필요합니다.
- 모든 커밋이 기록되고 감사할 수 있습니다.
- 기존 분기 보호는 활성 상태로 유지됩니다.
- 코드를 병합하기 전에 CI/CD 검사가 실행됨
팀에 대한 사용자 지정 지침 만들기
사용자 지정 지침은 팀의 코딩 표준 및 패턴을 이해하는 데 도움이 Copilot 됩니다. 이렇게 하면 제안이 처음부터 예상과 일치합니다.
사용자 지정 지침 설정
- 리포지토리에서
.github/copilot-instructions.md파일을 만듭니다. - 예를 들어 글머리 기호 목록을 사용하여 팀의 코딩 표준을 명확하고 간단한 문에 추가합니다.
- 리포지토리에 파일을 커밋합니다.
사용자 지정 지침 예제
다음은 효과적인 사용자 지정 지침의 예입니다.
## Our Standards
- Use structured logging, not console.log
- Sanitize user input before database queries
- Check for null/undefined on all optional parameters
- Keep functions under 50 lines (extract helpers if needed)
- Every public function needs a test
- Flag any loops that might trigger N+1 queries
## Error Handling
- Always use try-catch blocks for async operations
- Log errors with context (user ID, request ID, timestamp)
- Never swallow errors silently
- Return appropriate HTTP status codes
## Testing Requirements
- Unit tests for all business logic
- Integration tests for API endpoints
- Mock external services in tests
- Test both success and failure paths
사용자 지정 지침 작성에 대한 자세한 지침은 GitHub Copilot 대한 리포지토리 사용자 지정 지침 추가 참조하세요.
사용자 지정 지침의 이점
사용자 지정 지침이 설정된 상태입니다.
-
Copilot 은 패턴을 따르는 코드를 제안합니다. - 스타일 변경에 대한 토론 수가 줄어들어 코드 검토 속도가 빨라집니다.
- 새 팀 구성원은 제안을 통해 Copilot 표준을 학습합니다.
- 코드베이스 전체에서 일관성이 향상됩니다.
파일럿 프로그램 실행
기술 부채에 대한 Copilot의 영향을 확인하기 위해 먼저 작게 시작하십시오. 그런 다음 광범위하게 배포하십시오.
1주차: 기준선 설정 및 준비
-
가능한 모든 파일럿 참가자가 Copilot을(를) 활성화된 상태에서 Copilot 클라우드 에이전트 액세스를 갖도록 합니다.
-
백로그에서 기술 부채 항목을 계산합니다.
- "기술 부채", "잡일" 또는 이와 유사한 레이블이 지정된 문제 수
- 오래된 종속성 수
- Linter 검사에 실패한 파일 수
-
현재 메트릭 추적:
- PR 리팩터링을 위해 끌어오기 요청을 생성한 후 병합할 때까지 소요되는 평균 시간
- 리팩터링 PR에서의 평균 검토 라운드 수
-
가장 중요한 표준 중 3~5개인 첫 번째
.github/copilot-instructions.md파일을 만듭니다.
2주부터 4주까지: 파일럿 실행
-
파일럿에 대해 5~10개의 리포지토리를 선택합니다.
-
해결할 1~2개의 특정 문제를 선택합니다. 다음은 그 예입니다.
- 특정 영역의 코드 중복
- 자주 변경되는 파일에 대한 누락된 테스트
- 오래된 종속성
-
문제가 발생할 때 빠른 수정을 위해 IDE에서 사용합니다 Copilot .
-
더 큰 정리 작업을 Copilot 클라우드 에이전트에 할당합니다.
-
생성된 모든 CopilotPR을 신중하게 검토합니다.
-
제안에 대한 피드백을 제공하여 Copilot가 귀하의 기본 설정을 학습하도록 돕습니다.
5주차: 결과 평가
시험 운영 후 결과를 측정하십시오.
-
리팩터링 관련 끌어오기 요청은 얼마나 빨리 병합되나요?
-
지금 얼마나 많은 검토 라운드가 필요합니까?
-
개발자가 풀 리퀘스트에서 Copilot 클라우드 에이전트가 제안한 코드 변경 유형 중 가장 자주 수락한 것은 무엇인가요?
-
가장 수정이 필요한 제안은 무엇입니까?
-
기술 부채 메트릭이 개선되고 있나요?
- Linter 경고가 감소하고 있나요?
- 테스트 범위가 늘어나나요?
- 종속성 버전이 최신인가요?
가장 도움이 된 Copilot 지침에 대해 배운 내용에 따라 사용자 지정 지침을 업데이트합니다.
성공 측정
틀Copilot이 기술 부채에 미치는 영향을 파악하려면 특정 메트릭을 추적하세요.
속도 메트릭
Copilot 개발 속도에 미치는 영향 모니터링:
- 기술 부채 문제를 해결하는 시간(목표: 30~50% 감소)
- 매주 병합되는 기술 부채 해결 풀 리퀘스트를 현재 대비 2~3배 늘리는 것을 목표로 합니다
- 리팩터링 끌어오기 요청당 평균 검토 주기 수(증가 또는 감소 여부 평가)
품질 메트릭
품질이 속도와 함께 향상되는지 확인합니다.
- Linter 경고 수(하향 추세여야 합니다).
- 테스트 검사 비율(상향 추세여야 합니다)
- 리팩터링된 코드와 관련된 프로덕션 인시던트 수(변경 여부 평가)
엔지니어 만족도
정기적으로 팀 설문 조사:
- 엔지니어가 일상적인 유지 관리에 더 적은 시간을 소비하고 있습니까?
- 코드 검토는 아키텍처에 더 중점을 두고 스타일에 덜 초점을 맞추고 있습니까?
- 새 팀 구성원의 온보딩 속도가 더 빠른가요?
Troubleshooting
Copilot 잘못된 변경 사항을 제안합니다.
요구 사항과 일치하지 않는 코드를 일관되게 제안하는 경우 Copilot :
- 사용자 지정 지침을 검토합니다. 너무 모호하거나 모순될 수 있습니다.
- 프롬프트에서 보다 구체적인 컨텍스트 제공
- 사용자 지정 지침에 좋은 코드의 예제 추가
- 문제를 해결할 수 있도록 Copilot 클라우드 에이전트 끌어오기 요청 검토에 자세한 피드백 남기기
끌어오기 요청이 너무 커서 검토하지 않습니다.
검토하기 어려운 끌어오기 요청을 만드는 경우 Copilot 클라우드 에이전트 :
- 큰 작업을 더 작고 집중적인 문제로 나누기
- 한 번에 하나의 파일 또는 디렉터리를 처리하도록 요청 Copilot 클라우드 에이전트
- 보다 구체적인 문제 설명 사용
변경 사항으로 인한 테스트 실패
리팩터링 시 테스트 오류가 발생하는 경우:
- 테스트 스위트가 안정적으로 실행되는지 확인한 후에 Copilot 클라우드 에이전트 사용합니다.
- 병합하기 전에 신중하게 변경 내용 검토 Copilot
- 코드 변경 내용과 함께 테스트를 업데이트하도록 요청 Copilot
팀 채택 속도가 느림
팀이 기술 부채를 해결하기 위해 Copilot를 사용하지 않는 경우:
- 얼리어답터의 성공 사례 공유
- 팀 모임에서 시간 절약을 보여 줍니다.
- 가장 성가신 기술 부채 항목으로 시작
- 사용자 지정 지침을 팀 활동으로 만들기
결론
이 자습서에서는 기술 부채를 체계적으로 줄이는 데 사용하는 Copilot 방법을 알아보았습니다. 이제 다음 사항을 알고 있습니다:
- IDE에서 Copilot를 사용하여 기술 부채를 즉시 해결하십시오.
- 대규모 리팩터링 작업 할당 Copilot 클라우드 에이전트
- 팀의 표준에 맞는 Copilot 사용자 지정 지침 만들기
- 파일럿 프로그램을 실행하여 접근 방식의 유효성 검사
- 기술 부채에 미치는 Copilot의 영향을 측정하세요
일상적인 리팩터링 및 유지 관리 작업을 자동화하면 아키텍처, Copilot 기능 개발 및 기타 고가용성 작업에 집중할 수 있습니다.
빠른 설문 조사
이 자습서를 읽은 후 코드베이스의 기술 문제를 줄이는 데 사용할 Copilot 수 있다고 확신합니까?
<a href="https://docs.github.io/success-test/yes.html" target="_blank" class="btn btn-outline mt-3 mr-3 no-underline">
<span>Yes</span></a><a href="https://docs.github.io/success-test/no.html" target="_blank" class="btn btn-outline mt-3 mr-3 no-underline"><span>No</span></a>
다음 단계
-
**파일럿 적용 확대**: 파일럿 결과에 따라 더 많은 리포지토리에 배포합니다. -
**종속성 업데이트 자동화**: 종속성 업데이트를 처리하기 위한 Copilot 클라우드 에이전트 되풀이 문제를 만듭니다. -
**리팩터링 큐 빌드**: 백로그에서 Copilot에 적합한 항목으로 레이블을 지정한 후, 이를 작업할 일괄 처리 작업을 Copilot에 정기적으로 할당합니다. -
**모범 사례 공유**: 팀에 대한 성공적인 프롬프트 및 사용자 지정 지침을 문서화합니다.
추가 읽기
-
[AUTOTITLE](/copilot/using-github-copilot/coding-agent) -
[AUTOTITLE](/copilot/tutorials/refactoring-code-with-github-copilot) -
[IDE에서 GitHub Copilot를 사용하는 방법: 블로그의 팁, 요령 및 모범 사례](https://github.blog/developer-skills/github/how-to-use-github-copilot-in-your-ide-tips-tricks-and-best-practices/)GitHub - 블로그의 워크플로에 GitHub Copilot 클라우드 에이전트 를 통합하는 5가지 방법GitHub