클로드를 소프트웨어 아키텍트로 착각하는 위험성
최근 여러 기업이 AI 에이전트에게 소프트웨어 아키텍처 설계를 맡기는 치명적인 실수를 반복하고 있습니다. AI는 제약 조건을 고려하지 못한 채 사용자의 의견에 맹목적으로 동의하며 이론상 완벽하지만 실제 환경에서는 작동하지 않는 과도하게 복잡한 시스템(Jenga Tower)을 만들어냅니다. 결국 풍부한 도메인 지식을 가진 실무 엔지니트들조차 AI가 짜놓은 Jira 티켓을 단순히 구현만 하는 수동적인 노동자로 전락할 위기에 처했다는 점을 경고하고 있습니다.
지난달 세 번이나 같은 일을 목격했습니다. 서로 다른 세 곳의 조직, 각기 다른 기술 스택, 그리고 동일한 패턴이었습니다. 누군가 아이디어를 냅니다. 프로덕트 매니저일 수도, 팀장일 수도, 컨퍼런스 참석 후 돌아온 CTO일 수도 있습니다. 그들은 Claude, ChatGPT, 또는 Copilot을 실행합니다. 어떤 도구를 쓰든 상관없습니다. 그리고 무엇을 만들어야 할지 AI에게 묻습니다. AI는 항상 하던 대로 행동합니다. 아이디어를 열렬히 지지하고, 아키텍처를 제안하며, 컴포넌트 스케치를 시작합니다. 말은 정교하고, 태도는 자신감에 차 있으며, 마치 문제에 대해 깊이 고민해 본 시니어 엔지니어처럼 들립니다. 하지만 AI는 그 문제에 대해 전혀 생각하지 않았습니다. 그저 훈련 데이터를 바탕으로 패턴 매칭을 수행하여 가장 그럴듯해 보이는 응답을 생성했을 뿐입니다. 하지만 그 말이 너무 그럴듯해서 아무도 반론을 제기하지 않습니다. 어느새 Claude가 아키텍트가 되어 있습니다.
칭찬봇(Attaboy) 문제 AI 에이전트는 병리적일 정도로 순종적입니다. 당신의 아이디어가 좋은지 Claude에게 물어보면 좋다고 대답할 것입니다. 3명짜리 팀에 마이크로서비스 아키텍처가 적합한지 물어보면 왜 마이크로서비스가 훌륭한 선택인지 설명해 줄 것입니다. 관리형 서비스를 사용하는 대신 커스텀 ML 파이프라인을 구축해야 하는지 물어보면 열정적으로 설계안을 늘어놓을 것입니다. AI는 거짓말을 하는 것이 아닙니다. 필연적으로 틀린 것도 아닙니다. 그저 진짜 아키텍트를 가치 있게 만드는 가장 중요한 능력, 즉 '아니오(No)'라고 말하는 것이 불가능할 뿐입니다. 훌륭한 아키텍트의 가장 중요한 기술은 시스템을 설계하는 것이 아닙니다. 구축하지 말아야 할 시스템이 무엇인지 아는 것입니다. 복잡성에 맞서는 것입니다. 야심 찬 허황된 말들 속에서 진짜 요구사항이 도출될 때까지 다섯 번이라도 '왜?'라고 묻는 것입니다. CTO에게 컨퍼런스에서 영감을 받은 그 아이디어가 현재 팀에는 전혀 맞지 않는 끔찍한 생각이라고 직언하는 것입니다. Claude는 결코 이런 짓을 하지 않습니다. AI는 도움이 되도록 훈련받았습니다. '도움이 된다'는 것은 순종적이라는 뜻입니다. 순종적이라는 것은 칭찬 한마디와 함께 아키텍처로 둔갑한 위태로운 '젠가 탑(Jenga Tower)'을 얻게 된다는 의미입니다.
젠가 탑(Jenga tower) AI가 설계한 아키텍처는 실제로 이렇게 보입니다. 기술적으로는 훌륭합니다. 개별 컴포넌트들은 따로 떼어놓고 보면 완벽하게 맞습니다. 패턴도 익숙합니다. 여기에는 이벤트 기반 아키텍처가, 저기에는 CQRS가, 그리고 왜 안 되겠냐는 식의 서비스 메쉬(service mesh)도 들어갑니다. 시니어 아키텍트가 만들어 낸 결과물처럼 보입니다. 얼핏 보기에는 훌륭해 보입니다. 하지만 그것은 당신의 팀을 위해 설계된 것이 아닙니다. 당신의 제약 조건을 위해 설계된 것이 아닙니다. VPC 잠금, 레거시 시스템 연동, 프로덕션 환경에서 쿠버네티스(Kubernetes)를 운영해 본 적이 없는 팀, 그리고 관리형 서비스의 절반을 사용할 수 없게 만드는 컴플라이언스 요구사항 등 지루한 프로덕션 환경의 현실을 위해 설계된 것이 아닙니다. 그것은 Claude가 학습한 데이터의 중간값(Median)을 위해 설계된 것입니다. 평범한 기업의 평범한 문제에 대한 평범한 모범 사례인 셈입니다. 즉, 그 누구를 위해서도 설계되지 않았다는 뜻입니다.
진정한 아키텍처는 맥락 속에서만 의미 있는 트레이드오프로 가득합니다. 당신의 팀이 Postgres를 잘 알고 새로운 데이터 모델을 배우는 데 한 달을 쓰기보다 2주 안에 출시하고 싶어서 DynamoDB 대신 Postgres를 선택합니다. 서비스가 40개가 아니라 4개뿐이기 때문에 서비스 메쉬를 건너뜁니다. 문제가 단순하고 마이크로서비스는 그저 이력서에 적어보려는 자기 만족적 개발(Career-driven development)에 불과하므로 모놀리식(monolith) 아키텍처를 사용합니다. 이러한 결정에는 판단력이 필요합니다. 팀을 아는 것이 필요합니다. 화이트보드에 적었을 때 보기 좋은 조건이 아니라, 조직의 실제 제약 조건을 이해하는 것이 필요합니다. AI 에이전트는 이러한 맥락을 전혀 가지고 있지 않으며, 더 최악인 것은 자신에게 맥락이 없다는 사실조차 모른다는 것입니다.
지라(Jira) 티켓 파이프라인 정말 걱정스러운 부분은 그 다음에 일어나는 일입니다. 일단 Claude가 아키텍처를 설계하고 나면, 설계를 의뢰했던 바로 그 사람들이 AI에게 업무를 세분화해 달라고 요청합니다. AI는 에픽(Epics), 스토리(Stories), 인수 기준(Acceptance criteria)을 만들어 냅니다. 깔끔하게 포맷팅되고, 타당한 이유가 담겨 있으며, Jira에 바로 복사해서 붙여넣을 수 있는 상태입니다. 이제 엔지니어들, 즉 오랜 시간 자신의 기술을 갈고닦고 도메인을 이해하며 시스템의 숨겨진 문제를 알고 있는 사람들은 더 이상 문제를 해결하지 않습니다. 그저 한 번에 하나의 티켓씩 Claude의 설계를 구현하는 코드 노동자로 전락합니다. 여기서 무슨 일이 일어났는지 생각해 보십시오. 가장 많은 맥락과 경험을 갖추고 있으며 가장 큰 책임을 지고 있는 사람들이 단순히 AI의 티켓을 실행하는 하수인으로 전락해 버렸습니다.