AI 에이전트를 만드는 사람들이 기본적인 소프트웨어 공학을 잊고 있다는 생각, 저만 드나요?
Is anyone else noticing that people building AI agents are forgetting basic software engineering?
핵심 요약
AI 에이전트 개발 시 데이터 모델링과 보안 등 기본적인 소프트웨어 공학 원칙을 간과하는 현상을 비판하는 글입니다.
- 소프트웨어 공학 부재 — AI 에이전트 개발 시 검증, 격리, 권한 관리 등 기본 원칙이 무시됨
- 데이터 모델링 중요성 — LLM의 특성을 맹신해 메모리를 구조화하지 않고 텍스트 덤프로 방치함
- 바이브 코딩의 한계 — AI가 전체 흐름을 짜주더라도 깊이 있는 검증과 아키텍처 설계는 개발자의 몫임
- 보안 및 검증 — 외부 입력을 신뢰하지 않고 최소 권한 원칙과 구조화된 데이터 전달을 적용해야 함
요즘 에이전트 메모리, 프롬프트 인젝션, 그리고 목표 하이재킹 때문에 골머리 앓는 사람들 글이 엄청 올라오네. 물론 다들 진짜 겪는 문제들이고, 내가 그걸 무시하려는 건 아님.
근데 내가 계속 보면서 느끼는 건, 기본적인 소프트웨어 공학적 접근 자체가 아예 실종됐다는 거야. 우리 원래 클라이언트가 폼에 입력하는 거 절대 안 믿었잖아. 데이터 모델부터 설계하고, 클라이언트랑 서버 양쪽에서 검증하고, 여러 계층에서 인젝션 방어했지. 프로세스랑 데이터 격리해서 서비스 하나 털려도 다 줄줄 새지 않게 막았고. 역할 기반 접근 제어(RBAC)에 수명 짧은 토큰도 썼고 말이야. 지금 에이전트 쓰면서 겪는 문제들, 사실 이런 기본기만 지켜도 상당 부분 해결됨.
메모리를 예로 들어보자. 뭘 저장할지, 그게 에이전트에 어떤 영향을 미쳐야 하는지 모르면 데이터 구조를 설계할 수가 없지. 그러니까 그냥 "LLM이니까" 하면서 전부 자유 텍스트로 때려 박는 거고, 당연히 인젝션 터지는 거임.
이런 현상의 원인 중 하나가 '바이브 코딩(vibe coding)' 때문이라고 봄. AI로 풀스택 앱을 한 방에 짠다고 해도, AI는 엔드 투 엔드 흐름 정도나 잡아주지. 딥한 검증이나 데이터베이스 인덱싱 같은 건 안 챙겨주거든. 그런 건 원래 배포 전에 사람이 직접 추가하는 거잖아. 에이전트 워크플로우도 똑같음. 바이브 코딩으로 만든 에이전트가 알아서 교차 관심사(cross-cutting concerns)를 해결해주진 않아. 결국 네가 뭘 원하는지 AI한테 제대로 시키려면 소프트웨어 공학, 설계 원칙, 아키텍처를 알고 있어야 한다고.
너희 생각은 어떠냐?
