생성형 AI와 협업하여 문제 해결하기: 실전 사례 공유 🤖
들어가며
"생성형 AI가 코딩을 도와준다"는 말은 이제 새롭지 않습니다. 하지만 주어진 문제를 AI와 함께 단계적으로 해결해나가는 과정은 어떨까요?
이 글은 **"AWS S3에서 여러 파일을 빠르고 안전하게 삭제하기"**라는 실제 문제를 생성형 AI와 협업하여 해결한 전 과정을 담고 있습니다. 단순한 코드 생성이 아니라, 문제 정의부터 디버깅까지의 완전한 협업 방법론을 공유하고자 합니다.
🎯 왜 이 사례인가?
이 문제는 AI와의 협업을 보여주기에 완벽한 사례였습니다:
- ✅ 복잡성: 단순한 삭제가 아닌 안전성, 성능, 추적성을 모두 고려
- ✅ 반복적 개선: 소규모부터 대량까지 점진적 확장
- ✅ 실시간 디버깅: 여러 오류 상황과 해결 과정
- ✅ 학습 과정: AI와 사용자가 함께 배워나가는 과정
🔄 AI 협업의 5단계 방법론
1단계: 문제 정의와 목표 설정
🧑💻 사용자: "S3 버킷의 특정 폴더 하위의 파일들을 효율적으로 모두 삭제하는 방법을 추천해 주세요"
🤖 AI의 첫 번째 응답:
- AWS CLI 직접 삭제
- S3 배치 작업
- SDK 사용법
💡 협업의 핵심: AI는 옵션을 제시하고, 사용자가 상황에 맞는 선택을 함
🧑💻 사용자의 추가 요구사항: "실수로 다른 경로의 파일을 삭제하지 않도록 하고 싶습니다"
이 한 문장이 전체 방향을 바꿨습니다. AI는 즉시 안전성 중심의 접근법으로 전환했습니다.
2단계: 점진적 접근 전략 수립
🤖 AI의 제안:
소규모 → 중간 규모 → 대량 처리
🧑💻 사용자: "업로드 일시가 가장 오래된 날짜의 파일을 우선적으로 삭제하는 것은 어떨까요?"
협업 포인트:
- AI는 구조적 접근법 제시
- 사용자는 도메인 지식(오래된 파일부터 삭제하는 것이 안전)을 추가
- 결합된 솔루션: LastModified 기준 정렬 + 점진적 삭제
3단계: 실행과 피드백 루프
3-1. 첫 번째 성공
🧑💻: "소규모 테스트가 성공했습니다" 🤖: 성능 분석 및 다음 단계 제안
3-2. 성능 개선 발견
🧑💻: "중간 규모도 성공했지만 시간이 좀 걸리네요"
🤖: 배치 삭제 방식 제안 (개별 삭제의 한계 인식)
3-3. 극적인 성능 향상
🧑💻: "성공했는데 진짜 빠르네요" 🧑💻: "대량 처리도 몇 초만에 완료되네요"
협업의 마법 순간:
- AI가 제안한 배치 API
- 사용자의 실제 테스트
- 함께 발견한 획기적인 성능 향상!
4단계: 실시간 디버깅 협업
문제 1: 문법 오류 발생
./script.sh: line xx: ===: syntax error: operand expected
🧑💻: 오류 메시지 공유 🤖: 즉시 원인 분석 (변수가 비어있을 가능성) 🧑💻: "$1이 왜 비는지, 어디서 들어오는 건지 우선 확인해보시죠"
협업의 특징:
- AI: 패턴 인식과 가능성 제시
- 사용자: 구체적 상황 분석과 방향 제시
- 함께: 단계적 추적으로 근본 원인 발견
문제 2: 함수 출력 혼입 문제
🧑💻: 디버깅 결과 공유
반환된 전체 값:
'=== 현재 상태 ===
현재 파일 수: nn,nnn개
...
실제 숫자'
🤖: "정확히 예상한 대로입니다! echo의 출력이 반환값에 섞여 들어가서..." 🧑💻: "아 그러면 stderr로 출력하지 말고 실행 위치의 하위에 tmp 폴더를 만들어서..."
협업의 진화:
- 문제 발견: 함께
- 해결 방향: AI가 원리 설명, 사용자가 구체적 요구사항 제시
- 최종 해결: 양쪽의 아이디어 결합
5단계: 최적화와 완성
Vim 명령어 활용
🧑💻: "vim에서 echo를 모두 커스텀 함수로 변경하면 될 것 같은데..." 🤖: 구체적인 Vim 치환 명령어 제시
마지막 버그 발견
🧑💻: "저의 착오입니다. 스크립트를 다시 보니 제가 break 이전에 다시 get_count를 호출하는 코드를 삽입했네요"
협업의 완성:
- 사용자의 솔직한 실수 인정
- AI의 이해와 격려
- 함께 완성한 성공적인 결과
🧠 효과적인 AI 협업 전략
1. 구체적이고 점진적인 소통
❌ 비효과적인 질문
"파일을 삭제하는 코드를 작성해주세요"
✅ 효과적인 질문
"S3 버킷의 특정 폴더 하위 파일들을 안전하게 삭제하고 싶습니다. 수천 개의 파일이 있어서 실수로 다른 파일을 삭제할 위험을 최소화하면서 점진적으로 테스트할 수 있는 방법이 있을까요?"
차이점:
- 맥락 제공 (S3, 특정 폴더)
- 제약 조건 명시 (안전성, 점진적)
- 우려사항 공유 (실수 위험)
2. 실행 결과를 즉시 공유
🧑💻: "소규모 삭제가 성공했지만 시간이 걸렸습니다"
🤖: "성능 분석 + 다음 단계 제안"
🧑💻: "배치 방식으로 대량 처리가 몇 초만에 완료됐네요"
🤖: "배치 API의 위력 확인 + 최적화 방향 제시"
핵심: AI는 결과를 통해 학습하고 더 나은 제안을 할 수 있습니다.
3. 오류 상황을 상세히 공유
효과적인 오류 보고
실행 결과 다음과 같습니다:
===== 디버깅 시작 =====
반환된 전체 값:
'=== 현재 상태 ===
현재 파일 수: nn,nnn개
...'
AI가 즉시 정확한 진단을 할 수 있는 이유:
- 구체적인 출력 결과
- 문제 발생 상황의 맥락
- 예상과 실제 결과의 차이 명시
4. 도메인 지식과 AI 지식의 결합
| 영역 | 사용자 기여 | AI 기여 |
|---|---|---|
| 문제 정의 | 실제 요구사항, 제약조건 | 기술적 옵션, 모범 사례 |
| 설계 | 도메인 지식, 우선순위 | 아키텍처 패턴, 성능 고려사항 |
| 구현 | 테스트, 피드백 | 코드 생성, 문법 검증 |
| 디버깅 | 실행 환경, 구체적 상황 | 패턴 인식, 원인 분석 |
🎯 AI 협업의 핵심 원칙
1. AI는 도구가 아닌 협업 파트너
- ❌ "코드 생성기"로만 활용
- ✅ 문제 해결 파트너로 인식
- AI의 제안을 검토하고 개선점 제시
- 상황 변화에 따라 방향 수정 요청
2. 투명한 소통
🧑💻: "죄송합니다. 제가 디버깅 코드 복사하면서 실수했네요"
🤖: "전혀 문제없습니다! 이런 실수는 흔한 일이고..."
- 실수나 오해를 즉시 공유
- AI도 사용자도 틀릴 수 있음을 인정
- 함께 배워나가는 과정으로 인식
3. 단계적 검증
소규모 테스트 → 중간 규모 → 대량 처리 → 전체 완료
- 각 단계에서 결과 공유
- AI의 제안을 실제 환경에서 검증
- 예상과 다른 결과에 대한 즉시 피드백
📊 협업 성과 분석
기술적 성과
- ✅ 성능 향상: 수백 배 속도 개선 발견
- ✅ 안전성: 단계적 테스트로 리스크 최소화
- ✅ 완성도: 로깅, 백업, 오류 처리 완비
학습 성과
- ✅ AWS S3 배치 API 활용법
- ✅ Bash 스크립팅 고급 기법
- ✅ stdout/stderr 구분의 실전 중요성
- ✅ 체계적 디버깅 방법론
협업 성과
- ✅ 문제 해결 속도: 혼자라면 며칠, 협업으로 몇 시간
- ✅ 해결책의 질: 단순 삭제 → 안전하고 효율적인 시스템
- ✅ 학습 효과: 과정 전체가 학습 기회
🏁 마무리: AI 협업의 진짜 가치
이번 경험을 통해 깨달은 것은 AI와의 협업이 단순한 "코드 생성"을 넘어서 **"함께 생각하고 문제를 해결하는 과정"**이라는 점입니다.
핵심 교훈
-
AI는 만능이 아니지만 훌륭한 파트너입니다
- 지식과 패턴 인식 능력 활용
- 인간의 판단과 경험으로 보완
-
소통 방식이 결과를 좌우합니다
- 구체적이고 맥락이 있는 질문
- 실행 결과의 즉시 공유
- 투명한 피드백
-
협업 자체가 학습 과정입니다
- AI도 사용자의 피드백으로 더 나은 제안
- 사용자도 AI의 제안으로 새로운 관점 획득
실전 적용 가이드
다음 번에 복잡한 기술 문제에 직면했을 때:
- 문제를 명확히 정의하고 제약조건을 AI와 공유하세요
- 점진적 접근을 통해 단계별로 검증하세요
- 실행 결과를 즉시 공유하고 다음 단계를 논의하세요
- 실수나 오해를 투명하게 공유하세요
- AI의 제안을 맹신하지 말고 비판적으로 검토하세요
"혼자서는 몇 시간 걸릴 문제를, AI와 함께라면 더 좋은 결과를 더 빠르게"
문제를 해결한 과정도 생성형 AI가 정리하여 주었답니다. 이 글이 도움이 되셨길 바랍니다! 🚀