비즈니스 로직 대화로 깎아내기

"간단한 투두리스트(To-Do List) 앱 하나 만들어줘."
이런 요청은 이제 GPT-4가 30초면 해냅니다. 하지만 우리가 현업에서 마주하는 문제는 이렇게 단순하지 않습니다.
"사용자가 구독 플랜을 '베이직($10)'에서 '프로($30)'로 월 중간에 변경했다. 남은 일수를 일할 계산(Proration)하여 차액을 결제하고, 기존 결제 주기를 유지하되, 만약 결제가 실패하면 기존 플랜을 유지해야 한다."
이런 복잡한 비즈니스 요구사항을 한 번의 프롬프트로 완벽하게 구현하는 AI는 (아직) 없습니다. 억지로 시키면 겉보기에만 그럴싸한, 버그 투성이의 코드를 뱉어낼 뿐입니다.
복잡한 기능을 구현할 때 필요한 것은 '한 방의 코딩'이 아니라, AI와의 집요한 대화(Ping-Pong)입니다. 오늘은 AI의 추론 능력을 극대화하는 CoT(Chain of Thought) 기법을 통해 견고한 비즈니스 로직을 설계하는 방법을 알아봅니다.
1. 코드를 먼저 짜지 마라 (Pseudo-code First)
복잡한 문제를 만났을 때 바로 IDE를 켜는 것은 주니어의 습관입니다. 시니어는 화이트보드에 그림부터 그립니다. AI와의 협업도 마찬가지입니다. 바로 "파이썬 코드로 짜줘"라고 하면 AI는 문법 맞추기에 급급해 논리를 놓칩니다.
먼저 자연어나 의사코드(Pseudo-code)로 논리의 흐름을 합의하세요.
💬 대화 예시: 선착순 쿠폰 발급 시스템
Developer:
"선착순 100명에게 쿠폰을 발급하는 기능을 만들 거야. 동시성 이슈(Concurrency)가 핵심이야. Redis를 쓸 건데, 바로 코드를 짜지 말고 로직의 흐름(Flow)을 단계별로 설명해 줘."
AI (CoT 작동):
유저의 요청 수신현재 발급된 쿠폰 개수 조회 (Redis GET)100개 미만이면 개수 증가 (Redis INCR)쿠폰 발급 처리 (DB 저장)
Developer (비판 및 수정):
"잠깐, 2번과 3번 사이의 틈(Gap) 때문에 경쟁 조건(Race Condition)이 발생할 거야. GET 하고 INCR 하는 사이에 다른 요청이 들어오면 100개가 넘게 발급될 수 있어. Redis의 INCR은 원자적(Atomic)이라는 점을 이용하거나, Lua Script를 쓰는 방식으로 로직을 수정해 줘."
이 과정이 바로 CoT입니다. 코드를 한 줄도 짜지 않았지만, 우리는 이미 가장 치명적인 버그를 사전에 잡았습니다.
2. '엣지 케이스'로 AI를 괴롭혀라
로직의 큰 그림이 그려졌다면, 이제 AI를 극한으로 몰아붙여야 합니다. AI는 기본적으로 '해피 패스(Happy Path, 아무 문제 없이 성공하는 케이스)'를 가정하는 경향이 있습니다.
여러분이 해야 할 일은 악마의 변호인(Devil's Advocate)이 되는 것입니다.
📝 집요한 질문 리스트 (Prompting)
이렇게 질문하면 AI는 "아, 그 부분을 놓쳤네요."라고 사과하며 로직에 방어 코드(Defensive Code)를 추가하기 시작합니다. 이 티키타카(Tiki-Taka)가 반복될수록 로직은 단단해집니다.
3. 구현(Implementation): 번역은 나중에
로직과 예외 처리에 대한 합의가 끝났다면, 실제 코드로 바꾸는 건 '번역'에 불과합니다. 이제야 비로소 특정 언어로 코드를 요청합니다.
"위에서 우리가 합의한 로직(Lua Script를 활용한 Redis 제어 + DB 트랜잭션 롤백 처리)을 바탕으로, Node.js와 TypeORM을 사용한 실제 서비스 코드를 작성해 줘."
이렇게 나온 코드는 여러분이 혼자 짰을 때보다 훨씬 고려할 점이 많이 반영된, '시니어급 코드'일 확률이 높습니다.
4. 실전 사례: 복잡한 구독료 일할 계산(Proration)
실제 SaaS 개발 시 가장 골치 아픈 '구독 업그레이드' 로직을 AI와 함께 짠다고 가정해 봅시다.
마치며: 개발자는 '코더'가 아니라 '디렉터'다
이 프로세스에서 여러분은 직접 타이핑을 거의 하지 않았습니다. 대신 질문하고, 지적하고, 검증했습니다.
AI 시대의 개발 역량은 "얼마나 빨리 코드를 치느냐"가 아니라, "AI가 멍청한 코드를 짜지 않도록 얼마나 논리적으로 리드하느냐"에 달려 있습니다.
여러분의 AI 파트너를 믿으세요. 하지만, 끝없이 의심하고 질문하세요. 그 긴장감 있는 대화 속에서 명품 코드가 탄생합니다.
[Next Step]
로직은 완벽해 보입니다. 하지만 이 코드가 정말 '좋은 코드'일까요? 다음 3부에서는 AI에게 내 코드를 던져주고 “더러우니까 싹 다 고쳐봐"라고 시키는, 가학적(?)이지만 효과적인 리팩토링 기법을 소개합니다.