지난 포스팅에서 개발 환경을 모노레포로 통합 하여, 동일한 Claude 세션 안에서 앱과 서버들을 한꺼번에 개발할 수 있게 했다고 이야기했다. 덕분에 명세 동기화 문제나 연동 디버깅의 번거로움이 크게 줄었다. 그런데 이렇게 앱과 여러 서버를 하나의 세션에서 다루다 보면, 또 다른 효율 저하 요인이 생긴다. 바로 컨텍스트 사이즈 제약 이다. 컨텍스트 압축이라는 새로운 문제 요즘은 Max 요금제 기준으로 기본 1MB 컨텍스트를 제공해서 예전만큼 빡빡하지는 않다. 하지만 불과 두어 달 전까지만 해도 컨텍스트 크기가 지금보다 훨씬 작았다(그래도 다른 서비스보다는 컸다). 그래서 한꺼번에 많은 코드를 분석시키고 대화를 조금만 이어가면, 빈번한 컨텍스트 압축 이 발생하곤 했다. 컨텍스트 압축이 일어나면 대화의 맥락이 흐려지기 시작한다. 방금 전까지 이해하고 있던 내용을 다시 설명해야 하거나, 이미 정한 구현 방향을 잊고 다른 길로 가기도 한다. 모노레포로 프로젝트를 합친 직후에 이 문제가 두드러지게 나타났다. 해결: 에이전트 팀 구성하기 이 문제를 줄이기 위해 Claude Code가 지원하는 서브에이전트(Sub-agent) 기능 을 적극적으로 활용하기로 했다. 앱과 각 서버를 담당할 전문 에이전트를 만들고, 이들을 총괄할 팀 리더 에이전트 를 따로 두는 방식이다. 말 그대로 "에이전트 팀"을 꾸리는 셈이다. 페르소나 구성은 대략 이렇게 잡았다. 팀 리더 └─ 제품 전체 기획 / 각 개발자에게 업무 지시 앱 개발자 └─ 모바일 앱 개발에 능숙한 개발자 서버#1 개발자 └─ Node.js 개발에 뛰어난 개발자 서버#2 개발자 └─ Python 개발자 이렇게 담당 프로젝트의 특성에 맞춰 각 에이전트의 페르소나를 정의한다. 테스터 에이전트를 따로 두는 분들도 있는데, 나는 별도로 분리하지 않았다. 서브에이전트 생성은 Claude Code에서 프롬프트로 설정할 수 있고, 추가한 뒤에는 세션을 새로 ...
요즘 개발되는 앱의 상당수는 앱 단독으로 동작하지 않고, 서버와 통신하는 구조로 만들어진다. 내가 개발하는 앱도 당연히 백엔드 서버를 이용하고 있다. 서버 개발이라는 벽 지난 포스팅 에서도 언급했듯이, 나는 요즘 일반적으로 많이 쓰이는 PHP나 Node.js 같은 기술에 대한 경험이 별로 없다. 그래서 이전에는 작은 기능 하나를 서버에 추가하려 해도 오랜 시간을 소비해야 했다. 결국 가급적이면 서버에 의존하지 않는 기능만 만들곤 했다. 내가 AI를 개발에 이용하기 시작한 주요 이유 중 하나가 바로 이 서버 개발 때문이었다. 처음에는 외주를 통해 개발되어 있던 기존 서버에 Cursor를 이용해 엔드포인트를 하나씩 추가하거나 수정하는 방식으로 진행했다. 응답이 제각각인 문제 그런데 이 과정에서 문제가 생겼다. AI가 새로운 엔드포인트를 만들 때마다 서버의 응답 형태가 조금씩 달라지면서, 클라이언트와 통합하는 데 어려움이 발생한 것이다. REST API에 대한 경험 없이 단순히 AI에게 구현만 시킨 결과였다. 문서화로 인터페이스 통일하기 이러한 비효율을 극복하기 위해 선택한 방법이 바로 지난 포스팅 에서 이야기한 문서화였다. 기능 개발의 전반적인 상황을 설명하고, 클라이언트와 서버 간의 인터페이스까지 함께 문서화하도록 했다. 그리고 생성된 문서를 앱과 서버 양쪽 프로젝트에 포함시켜, 이를 기반으로 개발하도록 함으로써 각 구현 단계에서 서로 다른 방식으로 구현되는 것을 방지했다. AI는 항상 새로운 개발자다 여기서 한 가지 주의할 점이 있다. 이미 한 번 구현된 서버에 새로운 엔드포인트를 추가해야 할 때, 기존과 동일한 방식으로 인터페이스를 구성해야 한다는 것을 반드시 함께 지시해야 했다. AI는 항상 새로운 개발자라고 보면 된다. 새로운 개발자는 자기 방식으로 개발하려는 경향 이 있다. 그래서 이전에 작성한 문서를 함께 제공하고, 이를 기반으로 작성하라고 명확히 지시해야 한다. 요즘은 AI 에이전트들이 프로젝트의 기존 코...