
AI에게 “로그인 기능 만들어줘”라고 하면 대충 나오고, 잘 물어보면 프로덕션 레벨 코드가 뚝딱 나와요. 그 차이가 바로 프롬프트 엔지니어링이에요. 이 글에서는 개발자가 실무에서 바로 쓸 수 있는 프롬프트 작성 기술을 정리합니다.
📌 이 글은 “AI 기반 개발 실전 가이드” 시리즈의 두 번째 편이에요.
- 1편: AI 코딩 어시스턴트 200% 활용법
- 2편: 개발자를 위한 프롬프트 엔지니어링 (현재 글)
- 3편: AI 기반 개발 워크플로우
프롬프트의 구조: 5가지 핵심 요소
좋은 프롬프트에는 공통된 구조가 있어요. 이 5가지를 기억하세요.

1. 역할 (Role)
AI에게 전문가 페르소나를 부여하세요.
당신은 10년 경력의 시니어 백엔드 개발자입니다.
Spring Boot와 PostgreSQL에 깊은 전문성을 가지고 있고,
대규모 트래픽 처리 경험이 풍부합니다.
💡 꿀팁: “시니어 개발자”라고만 하지 말고, 구체적인 기술 스택과 경험을 명시하면 답변 품질이 확 올라가요!
2. 맥락 (Context)
현재 프로젝트 상황을 알려주세요.
현재 이커머스 플랫폼을 개발 중이에요.
- 기술 스택: Next.js 14, Prisma, PostgreSQL
- 일 평균 주문: 5,000건
- 현재 문제: 주문 조회 API가 3초 이상 걸림
3. 지시 (Instruction)
무엇을 해야 하는지 명확하게.
주문 조회 API의 성능을 500ms 이내로 개선해줘.
다음 접근법을 순서대로 검토하고 각각의 예상 효과를 알려줘:
1. 쿼리 최적화 (인덱스, JOIN 개선)
2. 캐싱 전략 (Redis)
3. 페이지네이션 방식 변경
4. 예시 (Example)
원하는 출력 형태를 보여주세요.
아래와 같은 형식으로 응답해줘:
## 방법 1: 쿼리 최적화
- 현재 문제: [설명]
- 개선 방안: [코드]
- 예상 효과: [수치]
- 난이도: [상/중/하]
5. 제약조건 (Constraints)
하지 말아야 할 것, 지켜야 할 것을 명시하세요.
제약조건:
- ORM 쿼리만 사용 (Raw SQL 금지)
- 기존 API 인터페이스 변경 불가
- Node.js 18+ 환경
- 외부 서비스 추가 도입 불가
🔥 핵꿀팁: 5가지를 다 채울 필요는 없어요. 간단한 작업은 지시+제약조건만으로 충분해요. 하지만 복잡한 작업일수록 5가지를 모두 채우면 결과가 극적으로 좋아집니다!
개발 업무별 프롬프트 템플릿 10가지
복사해서 바로 쓸 수 있는 실전 템플릿이에요. 대괄호 [...] 안만 채워넣으세요.
템플릿 1: 코드 리뷰
다음 코드를 리뷰해줘. 아래 관점에서 분석해줘:
1. **버그/잠재적 오류**: null 체크, 타입 안전성, 엣지케이스
2. **성능**: 불필요한 연산, N+1 쿼리, 메모리 누수 가능성
3. **보안**: SQL injection, XSS, 인증/인가 누락
4. **가독성**: 네이밍, 구조, 중복 코드
5. **테스트 용이성**: 의존성 주입, 모킹 가능 여부
심각도를 🔴 Critical / 🟡 Warning / 🟢 Suggestion으로 분류해줘.
```[코드 붙여넣기]```
템플릿 2: 버그 수정
아래 코드에서 버그를 찾아 수정해줘.
**증상**: [어떤 문제가 발생하는지]
**재현 조건**: [어떤 상황에서 발생하는지]
**기대 동작**: [원래 어떻게 동작해야 하는지]
수정 시 다음을 포함해줘:
1. 버그 원인 분석
2. 수정된 코드
3. 같은 패턴의 버그가 다른 곳에도 있는지 확인
4. 재발 방지를 위한 테스트 코드
```[코드 붙여넣기]```
템플릿 3: 단위 테스트 작성
아래 함수에 대한 단위 테스트를 작성해줘.
테스트 프레임워크: [Jest/pytest/JUnit 등]
커버리지 목표: [80%/90%/100%]
다음 케이스를 반드시 포함:
- 정상 케이스 (happy path) 3가지 이상
- 엣지케이스 (빈 값, 최대/최소값, 특수문자)
- 에러 케이스 (잘못된 입력, 타임아웃, 네트워크 에러)
- 경계값 테스트
테스트 네이밍: "should [기대동작] when [조건]" 형식
```[코드 붙여넣기]```
템플릿 4: DB 스키마 설계
다음 요구사항에 맞는 DB 스키마를 설계해줘.
**도메인**: [예: 온라인 강의 플랫폼]
**핵심 엔티티**: [예: 사용자, 강의, 수강 신청, 결제]
**DB**: [PostgreSQL/MySQL/MongoDB]
**ORM**: [Prisma/TypeORM/SQLAlchemy]
다음을 포함해줘:
1. ERD (텍스트 다이어그램)
2. 테이블 정의 (컬럼, 타입, 제약조건)
3. 인덱스 전략
4. ORM 모델 코드
5. 샘플 시드 데이터
고려사항:
- 향후 [예상 데이터량] 규모 대응
- soft delete 지원
- 감사(audit) 로그 필요 여부: [예/아니오]
템플릿 5: API 설계
다음 기능에 대한 REST API를 설계해줘.
**기능**: [예: 사용자 프로필 관리]
**인증**: [JWT/OAuth/API Key]
**스타일**: [RESTful/GraphQL]
다음을 포함해줘:
1. 엔드포인트 목록 (메서드, URL, 설명)
2. 요청/응답 스키마 (TypeScript 타입 정의)
3. 에러 응답 표준 포맷
4. 페이지네이션/필터링 전략
5. Rate limiting 규칙
6. OpenAPI 3.0 스펙 (YAML)
템플릿 6: 리팩토링
아래 코드를 리팩토링해줘.
**목표**: [가독성/성능/확장성/테스트 용이성]
**제약**: [기존 인터페이스 유지/하위 호환]
다음 원칙을 적용해줘:
- SOLID 원칙
- 디자인 패턴 적용 (적절한 경우)
- 중복 코드 제거
- 함수당 하나의 책임
변경 전/후 비교와 변경 이유를 설명해줘.
```[코드 붙여넣기]```
템플릿 7: 에러 해결
다음 에러를 해결해줘.
**에러 메시지**:
```[에러 로그 전체 붙여넣기]```
**환경**:
- OS: [macOS/Ubuntu/Windows]
- 런타임: [Node.js 18/Python 3.11/Java 17]
- 패키지 매니저: [npm/yarn/pip/gradle]
**이미 시도한 것**:
1. [시도 1]
2. [시도 2]
단계별로 해결 방법을 알려줘.
템플릿 8: 성능 최적화
아래 코드/쿼리의 성능을 최적화해줘.
**현재 성능**: [예: 응답시간 3초, 메모리 500MB]
**목표 성능**: [예: 응답시간 300ms, 메모리 100MB]
**데이터 규모**: [예: 테이블 1000만 행]
분석 및 개선 방안을 다음 순서로:
1. 병목 지점 식별
2. Quick Win (바로 적용 가능한 개선)
3. 중기 개선 (설계 변경 필요)
4. 장기 개선 (아키텍처 변경 필요)
각 방안의 예상 개선율도 알려줘.
```[코드 붙여넣기]```
템플릿 9: 문서 생성
아래 코드의 기술 문서를 작성해줘.
**문서 유형**: [API 문서/README/아키텍처 문서/온보딩 가이드]
**대상 독자**: [주니어 개발자/외부 API 사용자/팀원]
포함할 내용:
1. 개요 (한 문단 요약)
2. 아키텍처 다이어그램 (Mermaid 형식)
3. 설치 및 실행 방법
4. 주요 기능 설명 + 코드 예시
5. 환경변수 설정 (테이블)
6. FAQ / 트러블슈팅
```[코드/프로젝트 구조 붙여넣기]```
템플릿 10: 코드 변환
아래 코드를 [원본 언어]에서 [대상 언어]로 변환해줘.
**원본**: [Python 3.11]
**대상**: [TypeScript 5.0]
규칙:
- 대상 언어의 관용적 표현(idiomatic) 사용
- 타입 안전성 보장
- 원본의 에러 핸들링을 대상 언어 방식으로 변환
- 원본에 없는 타입 정의 추가
- 변환 시 주의점/차이점 주석으로 표시
```[코드 붙여넣기]```
💡 꿀팁: 이 템플릿들을 IDE의 스니펫으로 등록해두면, pr-review + Tab 같은 단축키로 바로 불러올 수 있어요!
고급 프롬프트 기법: 개발자 맥락에 적용하기
Chain-of-Thought (단계적 사고)
AI에게 “생각하는 과정”을 보여달라고 요청하면 훨씬 정확한 답이 나와요.

❌ 일반 프롬프트:
이 시스템의 병목이 어디야?
✅ Chain-of-Thought 프롬프트:
이 시스템의 병목을 단계적으로 분석해줘:
1단계: 요청 흐름 추적 (클라이언트 → API → 서비스 → DB)
2단계: 각 단계의 예상 지연 시간 추정
3단계: 가장 느린 지점 식별
4단계: 해당 지점의 근본 원인 분석
5단계: 개선 방안 우선순위 제안
각 단계의 추론 과정을 보여줘.
이렇게 하면 AI가 논리적으로 분석하기 때문에 “감”이 아니라 “근거”에 기반한 답을 줘요.
Few-shot (예시 기반 학습)
원하는 출력 형식을 예시로 보여주세요.
아래 형식으로 코드 리뷰 코멘트를 작성해줘:
예시 1:
📍 line 15: `user.name`
🔴 Critical: null 체크 없이 접근하고 있음
💡 Fix: `user?.name ?? 'Unknown'`으로 변경
예시 2:
📍 line 42: `for (let i = 0; i < arr.length; i++)`
🟢 Suggestion: `for...of` 또는 `Array.map()` 사용 권장
💡 Fix: `arr.map(item => process(item))`
이제 아래 코드를 같은 형식으로 리뷰해줘:
```[코드]```
💡 꿀팁: Few-shot은 2~3개 예시면 충분해요. 너무 많으면 오히려 토큰을 낭비하고 핵심이 흐려져요.
Self-Consistency (자기 검증)
AI에게 자기 답변을 검증하게 하세요.
위에서 제안한 코드에 대해 스스로 검증해줘:
1. 이 코드에 버그가 있을 수 있는 부분은?
2. 엣지케이스를 놓친 건 없어?
3. 성능 문제가 될 수 있는 부분은?
4. 보안 취약점은?
문제가 있으면 수정된 버전을 다시 제시해줘.
🔥 핵꿀팁: AI에게 “이 코드의 문제점을 찾아줘”라고 하면, 스스로 생성한 코드의 버그를 50% 이상 잡아내요. 항상 생성 → 검증 → 수정 사이클을 돌리세요!
Tree-of-Thought (다중 접근법 비교)
이 문제를 3가지 다른 접근법으로 해결해줘:
접근법 A: [성능 우선]
접근법 B: [가독성 우선]
접근법 C: [확장성 우선]
각 접근법에 대해:
- 구현 코드
- 장단점
- 적합한 상황
- 성능 비교 (Big-O)
최종 추천도 해줘.
“이렇게 물어보면 답이 10배 좋아진다” 실전 비교
비교 1: 함수 작성
❌ Before:
파일 업로드 함수 만들어줘
→ 결과: 기본적인 fs.writeFile만 나옴
✅ After:
S3에 이미지를 업로드하는 함수를 TypeScript로 작성해줘.
요구사항:
- multer로 받은 파일을 S3에 업로드
- 이미지만 허용 (jpg, png, webp), 최대 5MB
- 파일명을 UUID로 변환
- 업로드 실패 시 3회 재시도 (exponential backoff)
- 썸네일 자동 생성 (sharp 라이브러리)
- 업로드 진행률 콜백 지원
- 완료 시 CloudFront URL 반환
에러 타입도 커스텀으로 정의해줘.
→ 결과: 프로덕션 레벨의 완성된 코드
비교 2: 디버깅
❌ Before:
메모리 누수 있는 것 같은데 어떡하지?
✅ After:
Node.js Express 서버에서 메모리 누수가 의심돼요.
현상:
- 서버 시작 후 RSS 메모리가 시간당 ~50MB씩 증가
- 24시간 후 OOM으로 크래시
- 특정 API 엔드포인트 호출 후 더 빨리 증가
환경:
- Node.js 20, Express 4.18
- MongoDB (Mongoose 8.x)
- Redis (ioredis)
의심 부분:
- 이벤트 리스너 누적?
- Mongoose 커넥션 풀 미반환?
- 글로벌 변수에 데이터 축적?
디버깅 순서와 각 단계의 확인 방법을 알려줘.
heapdump 분석 방법도 포함해줘.
비교 3: 아키텍처 논의
❌ Before:
마이크로서비스 어떻게 해?
✅ After:
모놀리식 Spring Boot 앱을 마이크로서비스로 분리하려고 해요.
현재 상황:
- 모놀리식 앱: 50+ REST 엔드포인트, 30+ DB 테이블
- 일 트래픽: 100만 요청
- 팀: 백엔드 5명
- 가장 부하 높은 서비스: 주문, 검색, 알림
질문:
1. 어떤 서비스부터 분리해야 할까? (우선순위 + 근거)
2. 서비스 간 통신: REST vs gRPC vs 메시지 큐?
3. 데이터 분리 전략: DB-per-service vs Shared DB?
4. 분리 과정에서 Strangler Fig 패턴 적용 방법
5. 팀 규모 대비 적정 서비스 수
실제 마이그레이션 로드맵(3개월)도 제안해줘.
⚠️ 주의: 프롬프트가 길다고 무조건 좋은 건 아니에요. 핵심은 관련 없는 정보를 빼고, 필요한 정보만 구조적으로 넣는 것이에요.
안 되는 프롬프트 고치는 디버깅 요령
AI의 답변이 이상하면, 프롬프트를 이렇게 고쳐보세요.
문제 1: 너무 일반적인 답변이 나올 때
원인: 맥락이 부족함 해결: 기술 스택, 환경, 제약조건을 추가
# Before
캐싱 전략 알려줘
# After
Spring Boot 3.x + Redis 7 환경에서
일 500만 요청을 처리하는 상품 조회 API의
캐싱 전략을 설계해줘. 상품 정보는 5분마다 갱신되고,
가격은 실시간 변동이 있어.
문제 2: 코드가 동작하지 않을 때
원인: 버전/환경 명시 부족 해결: 정확한 버전과 실행 환경 명시
# Before
React로 무한 스크롤 구현해줘
# After
React 18 + Next.js 14 (App Router) 환경에서
Intersection Observer API를 사용한 무한 스크롤을 구현해줘.
서버 컴포넌트와 클라이언트 컴포넌트 경계를 명확히 해줘.
TanStack Query v5로 데이터 페칭 처리.
문제 3: 원하는 형식이 아닐 때
원인: 출력 형식을 지정하지 않음 해결: 예시나 형식을 명시
# Before
이 코드 설명해줘
# After
이 코드를 아래 형식으로 설명해줘:
## 함수명: [이름]
- **목적**: 한 줄 요약
- **파라미터**: 각각의 역할
- **반환값**: 타입과 의미
- **사용 예시**: 코드 블록
- **주의사항**: 엣지케이스
문제 4: 코드가 너무 길거나 복잡할 때
원인: 한 번에 너무 많이 요청 해결: 단계별로 나눠서 요청
# Before
전체 인증 시스템 구현해줘
# After (3단계로 나눔)
# 1단계
JWT 토큰 생성/검증 유틸리티 함수만 먼저 만들어줘.
# (결과 확인 후)
# 2단계
위 유틸리티를 사용하는 로그인/회원가입 API를 만들어줘.
# (결과 확인 후)
# 3단계
리프레시 토큰 로테이션과 로그아웃 로직을 추가해줘.
💡 꿀팁: AI와의 대화는 “한 방에 끝내기”보다 “핑퐁 치면서 발전시키기”가 훨씬 효과적이에요. 3~4턴 대화하면서 다듬으면 처음부터 완벽한 프롬프트를 쓸 때보다 좋은 결과를 얻을 수 있어요.
프롬프트 디버깅 체크리스트
프롬프트가 잘 안 될 때 이 리스트를 순서대로 확인하세요:
| # | 체크 항목 | 예시 |
|---|---|---|
| 1 | 기술 스택/버전을 명시했나? | Node.js 20, React 18 |
| 2 | 입력/출력 형식을 정의했나? | 요청 JSON → 응답 JSON |
| 3 | 제약조건을 넣었나? | “외부 라이브러리 사용 금지” |
| 4 | 성공 기준이 명확한가? | “응답 시간 200ms 이내” |
| 5 | 예시를 포함했나? | Few-shot 예시 2~3개 |
| 6 | 하나의 요청이 너무 크지 않은가? | 한 프롬프트에 한 가지 작업 |
| 7 | 모호한 표현이 있지 않은가? | “좋은 코드” → “SOLID 원칙을 따르는 코드” |
마무리: 프롬프트 엔지니어링은 개발 스킬이다
프롬프트 엔지니어링은 “AI한테 말 잘하는 기술”이 아니라 “문제를 구조화하는 기술”이에요. 좋은 프롬프트를 쓰려면 결국 문제를 정확히 이해하고, 필요한 정보를 구분하고, 원하는 결과를 명확히 정의할 수 있어야 해요.
이건 사실 좋은 개발자가 이미 하고 있는 일이에요. 요구사항을 분석하고, 기술 문서를 쓰고, 코드 리뷰를 하는 것과 본질적으로 같거든요.
실전 액션 아이템:
- 오늘부터 AI에게 코드 요청할 때 템플릿을 사용해보세요
- 결과가 안 좋으면 디버깅 체크리스트로 프롬프트를 점검하세요
- 좋은 프롬프트가 나오면 팀 위키에 공유하세요
다음 편 AI 기반 개발 워크플로우에서는 이 프롬프트 기술을 실제 개발 프로세스의 각 단계에 적용하는 방법을 다룰게요. 기획부터 배포까지 AI와 함께 일하는 전체 워크플로우를 공개합니다! 🚀
📚 AI 기반 개발 실전 가이드 시리즈
- 1편: AI 코딩 어시스턴트 200% 활용법
- 2편: 개발자를 위한 프롬프트 엔지니어링 (현재 글)
- 3편: AI 기반 개발 워크플로우
참고 자료
- Anthropic Prompt Engineering Guide
- OpenAI Prompt Engineering Best Practices
- Prompting Guide
- Google - Prompt Engineering for Developers