AI가 코드를 쓰는 시대에도 끝까지 내 손에 남겨두는 결정은 네 가지다. 제품 범위, 아키텍처, 가격, 보안.

PHP를 26년 했다. 한동안 손을 놓았다가 1년 전 클로드 코드로 다시 개발을 시작했고, 그사이 AIvance 이름으로 SaaS 11개를 만들었다. JWT 인증, 소셜로그인, API 버저닝, Swagger, 통합 테스트 149개를 갖춘 CI4 API 기반을 한 달 만에 세웠다.

속도는 AI가 줬다. 하지만 그 속도로 엉뚱한 곳에 도착하지 않게 하는 건 여전히 내 몫이었다. 아래는 그 네 가지 결정을 실제 프로젝트 기록으로 정리한 것이다.

1. 제품 범위 — 무엇을 만들지 않을지

AI에게 "만들어줘"라고 하면 거의 뭐든 만들어준다. 그래서 가장 비싼 결정은 무엇을 만들지가 아니라 무엇을 빼느냐가 됐다.

  • 기준부터 정했다. 최대 100개 고객사, 월 3~5만 원 정액제, 월매출 300~500만 원. 이 기준에 맞지 않으면 아무리 그럴듯해도 탈락이다. 부동산 분양관리 서비스는 반복 매출 구조와 맞지 않아 후보에서 뺐다.
  • 검증 전에는 1순위로 올리지 않는다. 철강 도소매 ERP는 업계에 오래 있던 지인이라는 도메인 피드백과 영업 채널이 있다. 그래도 27문항 인터뷰를 통과하기 전까지는 후보일 뿐이고, 떨어지면 AICassa가 Plan B로 대기한다.
  • MVP는 시장의 현재 수준에 맞춘다. CNC·목공 견적 시스템 AILign을 조사해 보니 대부분의 공방은 감으로 견적을 내고 일부만 엑셀을 쓴다. 그래서 정교한 계산 엔진 대신 "견적서 발행 도구"로 시작하고, 계산 엔진은 로드맵으로 미뤘다.

AI는 기능 목록을 무한히 늘려준다. 고객이 지금 무엇을 쓰고 있는지 아는 사람만 그 목록을 자를 수 있다.

2. 아키텍처 — 경계는 사람이 긋는다

AI는 주어진 구조 안에서 코드를 잘 채운다. 구조 자체를 어디서 자를지는 운영까지 책임질 사람이 정해야 한다.

  • 공통 기반을 먼저 고정했다. ci4-board는 모든 제품이 공유하는 인증·버저닝·문서화 기반이고, AICreo는 테마·관리자·게시판·소셜로그인·TDD 워크플로우를 갖춘 보일러플레이트다. 새 제품은 이 위에 올리고, AILign은 AICreo에 유닛을 플러그인으로 붙이는 구조로 정했다.
  • 기술 경계를 바꾼 결정. 웹 채팅 상담 솔루션은 처음엔 Node.js 풀스택으로 구상했다. 결국 어드민과 상담 API 백오피스는 CI4로, Node.js는 WebSocket 전송 계층만 맡는 하이브리드로 확정했다. 채팅엔진·어드민·임베드 위젯 세 컴포넌트로 나눈 것도 같은 판단이다.
  • AI 호출도 레이어로 가둔다. AICassa의 세금계산서 파싱은 Controller → Service → AiService → Repository 순서를 따른다. 모델은 Sonnet을 기본, Opus를 폴백으로 둔다. 모델이 바뀌어도 서비스 코드는 흔들리지 않게 하려는 것이다.
  • 규약은 문서와 스킬로 박아둔다. MSA 공통 에러 응답은 RFC 9457 Problem Details 기반의 api-error-contract 스킬로 만들고, 에러 코드는 <SERVICE>.<RESOURCE>.<REASON> 형식으로 통일했다. CLAUDE.md와 스펙 문서는 AI에게 주는 설계도다.

인프라도 같다. GitHub Actions 무료 한도 월 2,000분을 넘겨 CI가 멈췄을 때, Ubuntu 서버에 Docker로 셀프호스티드 러너 3대를 직접 올렸다. 어디까지 남에게 맡기고 어디부터 직접 쥘지도 아키텍처 결정이다.

3. 가격 — 과금 모델이 구조를 결정한다

가격은 마케팅의 마지막 단계가 아니라 설계의 첫 단계였다. 어떻게 돈을 받을지가 정해져야 배포 방식과 데이터 모델이 정해진다.

제품

가격 결정

그 결정이 바꾼 것

AIvance 전체

월 3~5만 원 정액제

반복 매출이 안 되는 후보는 탈락

AILign

일회성 구매·구독·크레딧 모두 지원하는 유료 플러그인

설치형이 아닌 1카피 호스팅 + 사용자별 플러그인 활성화 구조

AILicet

원화 가격 + 국내 결제

Keygen, Cryptolens, LicenseSpring 대비 한국형 LaaS 포지션

AICassa

파싱 기능의 모델 단가 비교 (Haiku·Sonnet·Opus)

기본 모델과 폴백 모델 선택

AI 기능이 들어가면 원가 구조가 생긴다. API 호출 단가를 모르면 월정액을 정할 수 없고, Anthropic API 과금이 구독과 별개라는 것도 직접 확인해야 했다. 결제 연동은 토스페이먼츠를 계약 전에 샌드박스로 먼저 검증하고 있다.

유통 경로도 가격의 일부다. AI바우처·혁신바우처 같은 정부 IT 바우처를 공급 측 판로로 보고 있다. AI는 가격표를 만들어줄 수 있지만, 고객이 지갑을 여는 지점은 시장을 만나본 사람이 정한다.

4. 보안 — 숫자 하나까지 내가 정한다

보안은 AI가 "일반적으로 권장되는 값"을 넣어주는 순간 가장 위험해진다. 그래서 수치와 정책은 하나하나 직접 정했다.

  • 인증 API AITessera. 토큰 서명은 RSA/ECDSA, 레이트리밋은 Redis 기반 슬라이딩 윈도우로 인증 요청 분당 10회, 일반 요청 분당 120회다. 이 숫자는 공격 시나리오와 정상 사용 패턴을 함께 놓고 정하는 값이다.
  • 공통 인증 기반. ci4-board의 JWT와 Google·Kakao·Naver 소셜로그인을 모든 제품이 공유한다. 인증을 제품마다 새로 만들지 않는 것 자체가 보안 결정이다.
  • 배포 경로. CD는 ED25519 배포 키와 SSH로 구성했다. 내 GitHub 계정은 Mac·Ubuntu·Android에 패스키로 묶어 두었다.
  • 결제와 응시자 데이터. 토스페이먼츠는 운영 키 전에 샌드박스에서 끝까지 돌려본다. AI 화상면접 솔루션은 응시자가 수험번호와 발급 비밀번호로만 로그인하는 구조로 설계했다.

AI는 보안 코드를 빠르게 써준다. 하지만 사고가 났을 때 책임지는 이름은 내 이름이다.

맺음 — 위임할 것과 쥘 것

26년 동안 내 일은 코드를 치는 것이었다. 지금은 코드 대부분을 AI가 치고, 나는 결정을 문서로 남긴다. CLAUDE.md, 스펙, 스킬, 훅이 그 문서다.

정리하면 이렇다. 구현은 위임한다. 범위, 경계, 가격, 보안 수치는 쥔다. 이 네 가지는 틀렸을 때 되돌리는 비용이 가장 크고, 고객과 시장과 사고의 책임이 걸려 있기 때문이다.

경험은 더 빨리 코딩하는 데 쓰이지 않는다. 어떤 결정을 AI에게 넘기면 안 되는지 알아보는 데 쓰인다.