요즘 들어 개발 환경이 정말 빠르게 변하고 있다는 걸 온몸으로 체감하고 있어요. 예전에는 단순한 자동 완성 기능에 감탄했다면, 이제는 아예 '에이전트'가 코드를 짜고 테스트까지 마치는 시대가 왔잖아요. 저도 처음에는 "과연 AI가 복잡한 비즈니스 로직을 제대로 이해하고 코드를 짤 수 있을까?"라는 의구심이 들었답니다. 하지만 직접 파이프라인을 설계하고 하나씩 문제를 해결해 나가다 보니, 어느새 제 업무의 90%를 LLM 에이전트가 대신하고 있더라고요. 물론 그 과정이 결코 순탄치만은 않았지만요. 오늘은 그 치열했던 기록을 여러분과 나누어보려고 해요.
왜 단순한 프롬프트가 아니라 '에이전트'인가?
사실 처음에는 저도 챗GPT 창을 띄워놓고 코드를 복사해서 붙여넣는 방식으로 일하곤 했어요. 그런데 이게 생각보다 번거롭더라고요. 맥락을 계속 설명해줘야 하고, 결과물을 다시 검토해서 수정하는 과정에서 오히려 시간이 더 걸리는 기분이었죠. 여기서 제가 깨달은 핵심은 바로 '에이전틱 워크플로우(Agentic Workflow)'의 필요성이었습니다.
단순한 LLM 호출이 '질문에 답하는 것'이라면, 에이전트는 '목표를 달성하기 위해 스스로 계획을 세우고 도구를 사용하며 실행하는 것'을 의미해요. 저는 이 차이가 코딩 자동화의 성패를 가른다고 생각했어요. 제가 직접 설계한 시스템은 단순히 코드를 생성하는 데 그치지 않고, 파일 구조를 분석하고, 기존 코드와의 의존성을 체크하며, 심지어 직접 단위 테스트를 돌려보고 실패하면 스스로 수정하는 단계까지 나아갔습니다. 정말... 처음 이 프로세스가 제대로 돌아가는 걸 봤을 때의 그 짜릿함은 잊을 수가 없네요.
내가 설계한 3단계 자동화 파이프라인의 구조
제가 구축한 시스템은 크게 세 가지 주요 에이전트로 구성되어 있습니다. 각 에이전트는 서로 유기적으로 소통하며 업무를 완수하죠. 구체적인 설계도는 아래와 같습니다.
1. 기획 및 설계 에이전트 (The Architect)
이 친구는 사용자의 모호한 요구사항을 받아서 기술적인 명세서로 변환하는 역할을 합니다. 예를 들어 "로그인 기능을 만들어줘"라고 하면, 어떤 인증 방식을 쓸지, 데이터베이스 스키마는 어떻게 구성할지를 결정하죠. 요구사항의 모호함을 제거하는 단계라고 보시면 됩니다. 여기서 중요한 점은 시스템 프롬프트에 프로젝트의 전체 코딩 컨벤션을 미리 학습시켜 놓는 것이었어요.
2. 구현 및 리팩토링 에이전트 (The Coder)
설계 에이전트가 준 명세서를 바탕으로 실제 코드를 작성합니다. 단순히 한 파일만 건드리는 게 아니라, 관련 있는 여러 파일을 동시에 수정할 수 있도록 기능을 부여했어요. 사실 이 부분에서 상태 관리(State Management)가 제일 까다로웠는데, 에이전트가 현재 어떤 파일을 수정 중인지, 이전 파일에서 어떤 변수를 선언했는지를 기억하게 하는 것이 핵심이었습니다.
3. 검증 및 수정 에이전트 (The Reviewer)
코드가 완성되면 바로 커밋하는 게 아니라, 이 에이전트가 검토를 합니다. 직접 로컬 환경에서 테스트 코드를 실행하고 에러 로그를 분석하죠. 만약 테스트가 깨지면? 다시 코더 에이전트에게 "이 부분이 잘못됐으니 고쳐줘"라고 피드백을 보냅니다. 일종의 무한 루프 검증 시스템을 구축한 셈이죠.
90% 자동화로 가는 길: 뼈아픈 시행착오들
처음부터 90%라는 수치가 나왔을까요? 절대 아니죠. 처음에는 30%도 힘들었습니다. 제가 겪은 가장 큰 문제들은 다음과 같았어요.
| 문제 유형 | 상세 원인 | 해결 방법 |
|---|---|---|
| 무한 루프 발생 | 에이전트끼리 서로 잘못을 미루며 수정 반복 | 최대 시도 횟수 제한 및 사람의 개입(HITL) 추가 |
| 맥락 유실 | 대화 내용이 너무 길어져 이전 결정을 잊음 | RAG를 활용한 핵심 컨텍스트 요약 및 관리 |
| 환각 현상 | 존재하지 않는 라이브러리나 함수를 사용 | 문서 검색 도구(Search Tool) 연결 및 버전 명시 |
특히 가장 힘들었던 건 '에이전트의 오만함(?)'이었습니다. 분명히 틀린 코드인데도 맞다고 우기면서 똑같은 코드를 계속 뱉어낼 때가 있더라고요. 음... 그때는 정말 기계한테 화를 내고 싶은 심정이었죠. 하지만 냉정하게 생각해보니 프롬프트가 충분히 구체적이지 않았다는 걸 알게 됐습니다. "이 코드를 검토해"가 아니라 "최신 테스팅 라이브러리 가이드라인에 비추어 볼 때 발생할 수 있는 엣지 케이스 3가지를 고려해서 검토해"라고 명령을 구체화하니 해결되더라고요.
결론: 개발자의 역할은 어떻게 변할까?
이렇게 파이프라인을 구축하고 나니, 제 일과는 완전히 달라졌습니다. 아침에 출근해서 커피 한 잔 마시는 동안 에이전트가 밤새 작성해둔 코드 리뷰 목록을 확인하고 승인 버튼을 누르는 게 첫 일과가 되었죠. 단순 반복 작업에서 해방되어 더 큰 아키텍처와 비즈니스 가치를 고민하는 데 시간을 쓸 수 있게 된 것이 가장 큰 수확입니다.
하지만 그렇다고 개발자의 실력이 필요 없어진 건 아니에요. 오히려 에이전트가 짠 코드가 정말 효율적인지, 보안 취약점은 없는지 판단할 수 있는 '보는 눈'이 더 중요해졌습니다. 이제는 직접 삽질하며 배우는 시대에서, 남(AI)이 한 삽질을 감독하는 시대로 넘어온 것 같다는 생각이 드네요. 솔직히 말씀드리면, 이 파이프라인을 완성하고 나서 저는 더 이상 예전으로 돌아갈 수 없을 것 같아요. 여러분도 작은 부분부터 에이전틱한 접근을 시도해보시는 건 어떨까요?
1. 에이전틱 워크플로우는 단순한 AI 답변을 넘어 목표를 스스로 달성하는 파이프라인 설계의 핵심입니다.
2. 다중 에이전트 구조(설계, 구현, 검증)를 통해 각 단계별 전문성을 높이고 오류를 최소화할 수 있습니다.
3. 무한 루프나 맥락 유실 같은 시행착오는 HITL(Human-In-The-Loop)과 RAG 기반 기억 관리로 해결 가능합니다.
4. 자동화율 90%를 달성해도 개발자의 코드 리뷰 능력과 시스템 감독 역량은 더욱 중요해집니다.
❓ 자주 묻는 질문 (FAQ)
Q1. 구축 비용이 많이 들지 않나요?
처음에는 토큰 비용이 꽤 나옵니다. 특히 에이전트끼리 대화가 길어지면 더 그렇고요. 하지만 업무 시간 단축으로 얻는 인건비 절감 효과를 생각하면 훨씬 경제적입니다. 요즘은 경량화된 모델(GPT-4o mini 등)을 섞어 써서 비용을 최적화하고 있어요.
Q2. 초보 개발자도 이런 파이프라인을 만들 수 있을까요?
완전 초보분들이라면 LangChain이나 CrewAI 같은 프레임워크를 먼저 써보시는 걸 추천해요. 기본 개념만 이해하면 코딩 자체는 에이전트가 도와줄 테니까요. 하지만 전체 시스템의 흐름을 이해하는 논리적 사고력은 꼭 필요합니다.
Q3. 보안 문제는 어떻게 해결하셨나요?
사내망에 구축한다면 로컬 LLM(Ollama 등)을 활용하는 것이 가장 안전합니다. 외부 API를 쓸 때는 반드시 민감 정보를 마스킹하는 필터링 에이전트를 앞단에 배치하고, 중요한 파일은 접근 권한을 제한하는 식으로 관리하고 있어요.
개발 환경의 혁신은 생각보다 가까이에 있습니다. 저의 시행착오가 여러분의 자동화 여정에 조금이나마 도움이 되었기를 바랍니다. 혹시 더 궁금한 점이나 여러분만의 노하우가 있다면 댓글로 공유해주세요! 함께 성장하는 즐거움을 누렸으면 좋겠습니다.