Series
AI 엔지니어링 트렌드
프롬프트에서 컨텍스트로, AI 엔지니어링의 실무 지형을 12편에 걸쳐 정리합니다.
총 12편 기획 · 12편 공개 · 최근 업데이트 2026년 10월 9일
AI 엔지니어링 트렌드는 LLM을 실제 서비스에 붙이면서 부딪힌 문제와 그때 내린 결정을 한 편에 하나씩 기록하는 연재입니다. 모델 발표 소식이나 벤치마크 순위는 다루지 않습니다. 붙이고 난 뒤에 생기는 일을 다룹니다. 컨텍스트가 어디서 새는지, 도구를 몇 개까지 쥐어줘야 하는지, 호출 비용을 어디서 깎을 수 있는지 같은 것들입니다.
각 편은 따로 읽어도 되지만 EP.01부터 순서대로 읽으면 하나의 흐름이 됩니다. 앞 편에서 해결한 문제가 다음 편의 출발점이 되도록 짰기 때문입니다. 컨텍스트를 예산으로 보고 정리하니 도구를 잘못 고르는 문제가 드러났고, 하네스를 손보고 나니 시스템마다 연동을 새로 만드는 비용이 보였습니다.
연재 목차
- EP.012026년 9월 12일 · 6분
컨텍스트 엔지니어링: 무엇을 넣을지가 아니라 무엇을 버릴지의 문제
RAG 파이프라인을 붙이고도 답변 품질이 들쭉날쭉했던 이유는 검색이 아니라 컨텍스트 구성에 있었습니다. 토큰을 예산으로 보고 도구 정의·대화 히스토리·검색 결과를 재배분한 과정을 정리했습니다.
이 편의 결론
- 프롬프트를 다듬어도 답변이 안 좋아진다면, 문제는 문장이 아니라 컨텍스트 구성일 가능성이 큽니다.
- 컨텍스트 윈도는 용량이 아니라 예산입니다. 시스템 프롬프트·도구 정의·대화 히스토리·검색 결과가 같은 지갑을 씁니다.
- EP.022026년 9월 14일 · 6분
에이전트 하네스 설계: 성능을 만드는 건 모델이 아니라 그 주변 구조였다
같은 모델인데 어떤 에이전트는 일을 해내고 어떤 건 계속 헛돕니다. 도구를 몇 개 쥐어줄지, 권한을 어디까지 열지, 실패했을 때 어떻게 되돌릴지를 설계한 과정을 정리했습니다.
이 편의 결론
- 모델을 바꿔서 해결되는 문제보다, 하네스를 고쳐서 해결되는 문제가 훨씬 많았습니다.
- 도구는 많을수록 좋지 않습니다. 개수가 늘면 오선택이 같이 늘어납니다.
- EP.032026년 9월 17일 · 5분
MCP가 바꾸는 연동 비용: 시스템마다 도구를 새로 만드는 반복을 끊다
붙일 시스템이 늘 때마다 도구 정의와 스키마를 새로 쓰는 일이 반복됐습니다. MCP를 표준 인터페이스로 두고 연동 비용이 곱셈에서 덧셈으로 바뀌는 지점을 정리했습니다.
이 편의 결론
- 도구를 직접 붙이면 연동 비용이 에이전트 수 × 시스템 수로 늘어납니다. MCP는 이걸 합으로 바꾸려는 시도입니다.
- 이득은 "한 번 만들면 여러 곳에서 쓴다"가 아니라 "같은 규약을 쓰니 갈아끼울 수 있다" 쪽이 큽니다.
- EP.042026년 9월 19일 · 5분
코딩 에이전트, 벤치마크 말고 우리 코드베이스 기준으로 고르기
여러 코딩 에이전트를 실제 작업에 번갈아 쓰면서 갈리는 지점이 분명해졌습니다. 탐색 범위·실행 루프·운영 적합성 세 축으로 판단 기준을 정리했습니다.
이 편의 결론
- 벤치마크 점수는 우리 코드베이스에서의 성능을 예측하지 못했습니다. 갈리는 건 모델이 아니라 루프였습니다.
- 판단 축은 셋입니다 — 탐색 범위 · 실행 루프 · 운영 적합성.
- EP.052026년 9월 22일 · 5분
LLM 회귀 테스트를 CI에 넣기: 매번 다른 출력을 어떻게 통과/실패로 가를까
같은 입력에 매번 다른 답이 나오는 걸 전제로 테스트를 짰습니다. 정확 일치 대신 성질 검사, 1회 실행 대신 통과율 임계값으로 CI 게이트를 만든 과정을 정리했습니다.
이 편의 결론
- LLM 기능에 테스트를 안 붙이면, 프롬프트 한 줄 고칠 때마다 무엇이 깨졌는지 모릅니다.
- 정확 일치는 쓸 수 없습니다. 출력이 만족해야 할 성질을 검사합니다.
- EP.062026년 9월 24일 · 4분
구조화 출력은 얼마나 믿을 만한가: 스키마를 줬다고 스키마대로 오지는 않는다
JSON 스키마를 넘기면 끝날 줄 알았는데 아니었습니다. 프롬프트 지시부터 제약 디코딩까지 강제 수준을 네 단계로 나누고, 각 단계에서 무엇이 보장되고 무엇이 안 되는지 정리했습니다.
이 편의 결론
- 구조화 출력에는 강제 수준이 네 단계 있고, 단계마다 보장하는 게 다릅니다.
- 가장 흔한 오해: "스키마를 줬으니 타입이 맞을 것" → 형식은 맞아도 값이 틀립니다.
- EP.072026년 9월 27일 · 5분
프롬프트 캐싱과 비용 설계: 같은 결과를 더 싸게 얻는 건 순서 문제였다
LLM 호출 비용이 예상보다 컸는데 원인은 모델이 아니라 프롬프트 구성 순서였습니다. 고정 블록을 앞으로 모아 캐시를 살리고, 무엇이 캐시를 깨뜨리는지 정리했습니다.
이 편의 결론
- 프롬프트 캐싱은 접두사(prefix) 단위로 걸립니다. 앞에서 한 글자만 달라져도 뒤 전체가 캐시를 못 씁니다.
- 그래서 고정된 것을 앞에, 변하는 것을 뒤에 두는 배치만으로 비용이 크게 달라집니다.
- EP.082026년 9월 29일 · 4분
언제 RAG를 쓰지 말아야 하나: 검색을 붙이는 게 항상 정답은 아니다
RAG 파이프라인을 걷어내고 롱컨텍스트로 바꿨더니 더 정확해진 기능이 있었습니다. 문서 수·변경 빈도·질문 유형으로 RAG와 대안을 가르는 기준을 정리했습니다.
이 편의 결론
- 문서가 적고 자주 안 바뀌면 RAG보다 롱컨텍스트가 정확하고 단순합니다. 청킹 손실이 없기 때문입니다.
- RAG가 자주 실패하는 지점은 검색이 아니라 청킹입니다. 답이 두 청크에 걸쳐 있으면 못 찾습니다.
- EP.092026년 10월 2일 · 5분
에이전트 관측성: 안 보이면 못 고친다는 원칙은 LLM 호출에도 그대로였다
에이전트가 왜 그렇게 답했는지 되짚을 수 없어 매번 추측으로 고쳤습니다. 스팬을 어떻게 나누고 무엇을 남겨야 실패를 재현할 수 있는지 정리했습니다.
이 편의 결론
- 에이전트 장애는 재현이 안 되는 게 본질입니다. 그 순간의 입력을 남기지 않으면 영영 모릅니다.
- 스팬은 요청 → 모델 호출 → 도구 호출 → 판정 네 층으로 나눕니다. 한 덩어리로 두면 어디서 샜는지 안 보입니다.
- EP.102026년 10월 4일 · 4분
작은 모델이 이기는 구간: 모든 요청에 최고 모델을 쓰는 건 설계가 아니다
관측 지표를 보니 분류와 추출 같은 단순 작업에까지 가장 비싼 모델이 쓰이고 있었습니다. 작업 유형별로 모델을 나누고 라우팅을 붙인 과정을 정리했습니다.
이 편의 결론
- 분류·추출·정규화는 소형 모델로 충분했습니다. 여기에 최고 모델을 쓰는 건 낭비입니다.
- 소형 모델의 이득은 비용만이 아닙니다. 지연이 줄어드는 게 체감상 더 컸습니다.
- EP.112026년 10월 7일 · 4분
AI 코드 리뷰를 쓸 만하게 만들기: 오탐이 많으면 아무도 읽지 않는다
PR에 자동 리뷰를 붙였더니 처음엔 아무도 읽지 않았습니다. 찾는 단계보다 걸러내는 단계를 붙이고 개수를 제한하자 체감 품질이 달라진 과정을 정리했습니다.
이 편의 결론
- 자동 리뷰의 실패는 못 찾아서가 아니라 너무 많이 찾아서였습니다. 오탐이 섞이면 전부 무시됩니다.
- 해법은 더 좋은 모델이 아니라 찾은 뒤 걸러내는 단계를 붙이는 것이었습니다.
- EP.122026년 10월 9일 · 5분
시즌 1 총정리: 11편을 관통한 원칙은 하나로 모였다
컨텍스트부터 코드 리뷰까지 11편을 쓰고 나니 같은 문장이 반복되고 있었습니다. AI 엔지니어링 트렌드 시즌 1을 관통한 원칙과 실무 도입 순서를 정리했습니다.
이 편의 결론
- 11편을 쓰는 동안 "모델을 바꾸기 전에 주변 구조를 먼저 본다"는 말을 계속 반복하고 있었습니다.
- 실제로 효과가 컸던 조치는 대부분 모델과 무관한 것이었습니다 — 순서 바꾸기, 개수 줄이기, 검증 단계 붙이기.
시즌 1은 세 단계로 짰습니다
LLM을 붙이는 일은 만들기 전, 만든 뒤, 돌리는 중에 걸리는 문제가 각각 다릅니다. 시즌 1의 12편은 그 세 구간을 순서대로 따라갑니다.
| 단계 | 회차 | 다루는 것 |
|---|---|---|
| 1부 · 설계 | EP.01–04 | 컨텍스트 예산, 에이전트 하네스, MCP 연동 비용, 코딩 에이전트 선택 기준 |
| 2부 · 검증과 비용 | EP.05–08 | LLM 회귀 테스트, 구조화 출력의 보장 범위, 프롬프트 캐싱, RAG를 쓰지 않을 기준 |
| 3부 · 운영 | EP.09–12 | 에이전트 관측성, 작은 모델 라우팅, AI 코드 리뷰 자동화, 시즌 정리 |
1부는 무엇을 넣고 무엇을 쥐어줄 것인가입니다. 여기서 정한 것이 뒤의 선택을 전부 제약합니다.
2부는 그 결과를 믿을 수 있는가, 그리고 얼마에 얻는가입니다. 데모와 서비스가 갈리는 지점이 대체로 여기였습니다.
3부는 돌아가는 동안 무엇을 보고 있는가입니다. 안 보이면 못 고친다는 원칙은 LLM 호출에도 그대로였습니다.
이런 문제를 겪고 있다면 맞습니다
- 프롬프트를 아무리 다듬어도 답변 품질이 들쭉날쭉한데 원인을 못 찾은 경우
- 도구를 늘렸더니 에이전트가 오히려 엉뚱한 것을 고르기 시작한 경우
- LLM 호출 비용이 예상을 넘었는데 어디를 깎아야 할지 모르겠는 경우
- 데모는 돌아가는데 운영에 올릴 자신이 없는 경우
반대로 모델 아키텍처나 파인튜닝은 다루지 않습니다. 이 연재는 기존 서비스에 LLM을 붙이는 서버 개발자의 관점으로만 씁니다. 예제는 주로 Spring Boot와 Java 기준이지만, 판단 기준 자체는 스택과 상관없이 쓸 수 있게 정리했습니다.
쓰는 방식
- 해본 것만 씁니다. 직접 붙여보고 관찰한 것만 쓰고, 안 해본 것은 안 해봤다고 적습니다.
- 숫자는 제 환경 기준입니다. 일반적인 수치로 읽지 말아 주세요. 대신 어떤 조건에서 쟀는지를 같이 적습니다.
- 결론을 앞에 둡니다. 매 편 맨 위 네 줄 요약에 그 편의 결론이 다 들어 있습니다. 위 목차에 붙은 한두 줄도 거기서 가져온 것입니다.
함께 읽으면 좋은 글
시즌 1의 출발점이 된 작업 기록들입니다. 연재를 읽기 전에 훑어두면 배경이 이어집니다.
- Spring AI + PGVector로 사내 문서 검색 RAG 파이프라인을 구현한 과정 — EP.01은 이 파이프라인을 붙이고 나서 생긴 문제에서 시작합니다.
- Spring AI Tool Calling으로 LLM이 사내 API를 직접 호출하게 만든 과정 — EP.02에서 도구를 다시 추리기 전의 기록입니다.
- AI 코딩 도구 실무 비교: Copilot, Cursor, Claude Code를 반년간 쓰며 느낀 것들 — EP.04의 이전 버전에 해당합니다.
다른 연재는 시리즈 목록에서 볼 수 있습니다.