구조는 뼈대다
AI 코딩을 시작하면 놀라운 경험을 하게 된다. 머릿속에 떠오른 아이디어를 말로 설명하면, AI는 금세 로그인 기능을 만들고, 게시판을 만들고, 결제 흐름까지 구현해 준다. 겉보기에는 서비스가 거의 완성된 것처럼 느껴진다.
하지만 여기서 대부분의 프로젝트가 멈춘다. 기능은 있는데 서비스가 되지 않는다.
이유는 서비스는 기능의 집합이 아니라, 구조의 결과물이기 때문이다.
앞서 살펴본 것처럼, 바이브 코딩의 환상, 코드를 몰라도 된다는 함정, 필수 기초 개념, 웹의 본질, 그리고 실제로 어디서 막히는지를 다뤘다. 이제는 한 단계 더 들어가 본질적인 질문을 던져보자. "왜 기능은 만들어지는데 서비스는 완성되지 않는가?"
AI 코딩은 기능을 "만드는 일"을 극단적으로 쉽게 만들었다. 그러나 구조를 "설계하는 일"은 여전히 인간의 몫이다. 그리고 이 구조가 없으면, 아무리 많은 기능을 만들어도 서비스는 언젠가 반드시 무너진다.
1) 기능은 보이지만, 구조는 보이지 않는다
초보자가 만든 서비스는 대체로 이런 모습이다.
로그인 기능 있음
게시글 작성 기능 있음
댓글 기능 있음
관리자 페이지 있음
기능만 나열하면 그럴듯하다. 그러나 실제로 내부를 들여다보면 이런 질문에 답할 수 없다.
이 서비스의 핵심 데이터는 무엇인가?
어떤 기능이 어떤 데이터를 소유하고 있는가?
사용자 흐름은 어디서 시작해서 어디로 끝나는가?
기능 간 의존성은 어떻게 연결되어 있는가?
기능은 눈에 보인다. 구조는 눈에 보이지 않는다. 그래서 구조의 부실함은 항상 나중에 드러난다.
AI 코딩은 이 문제를 더 심화시킨다. 기능을 너무 쉽게 만들어주기 때문이다. 구조를 고민하기 전에, 기능부터 쌓아 올리게 된다.
2) 구조는 서비스의 뼈대
구조란 단순히 "폴더 정리"나 "파일 배치"를 의미하지 않는다. 서비스 구조란 다음 질문에 대한 답이다.
데이터는 어디에 존재하는가?
데이터는 어떤 흐름으로 이동하는가?
누가 이 데이터를 읽고, 누가 수정할 수 있는가?
기능은 어떤 단위로 분리되어 있는가?
변경이 발생했을 때 영향 범위는 어디까지인가?
이 질문에 명확한 답이 있을 때 비로소 서비스는 유지 가능한 형태가 된다.
AI에게 기능을 하나씩 만들어달라고 요청하는 것은 쉽다. 그러나 이 질문에 답하지 않은 채 기능을 늘리면 서비스는 빠르고 복잡하게 될 수 있지만 취약한 상태가 된다.
3) 구조 없는 기능은 기술 부채가 된다
AI가 만들어준 기능은 대부분 지금 당장 동작하는 코드다. 그러나 다음 조건을 만족하지 않으면 그 기능은 곧 기술 부채로 변한다.
다른 기능과 결합될 수 있는가?
재사용 가능한 형태인가?
확장 요구사항을 감당할 수 있는가?
실패 상황을 고려했는가?
AI에게 "게시글 수정 기능 만들어줘"라고 요청했다고 해보자. AI는 빠르게 기능을 만들어준다. 하지만 그 기능이 다음을 고려하지 않았다면?
작성자 본인만 수정 가능한가?
관리자 권한은 어떻게 처리되는가?
수정 이력은 남겨야 하는가?
동시에 수정 요청이 들어오면 어떻게 되는가?
이 질문들이 구조다. 이 질문 없이 만든 기능은 시간이 지날수록 더 많은 예외를 만들고, 결국 전체 구조를 흔든다.
4) 구조는 '흐름'이다 — 사용자, 데이터, 기능의 연결
서비스 구조의 핵심은 흐름이다.
사용자는 어디서 들어오는가?
어떤 순서로 기능을 사용하게 되는가?
각 단계에서 어떤 데이터가 생성·변경되는가?
실패하면 어디로 돌아가는가?
이 흐름을 그리지 않고 만든 기능은 서로를 방해한다.
AI 코딩 초보자들이 자주 만드는 문제는.
A 기능은 성공했는데 B 기능에서는 실패
한 화면에서는 데이터가 보이는데 다른 화면에서는 안 보임
관리자 화면과 사용자 화면의 기준이 다름
이건 기능 문제가 아니라 흐름 설계 실패다.
구조를 먼저 설계한 서비스는 기능이 추가되어도 흐름이 깨지지 않는다. 구조 없이 만든 서비스는 기능 하나만 추가해도 전체가 흔들린다.
5) AI 코딩 시대에 구조 설계는 더 중요해졌다
아이러니하게도 AI가 기능을 더 잘 만들수록 구조의 중요성은 더 커졌다.
이유는 간단하다. 기능 구현 비용은 1이 되었고, 구조 수정 비용은 여전히 100이기 때문이다
AI로 기능을 10개, 20개 만드는 것은 쉽다. 그러나 그 기능들이 잘못된 구조 위에 얹혀 있다면 나중에 구조를 고치는 비용은 처음부터 다시 만드는 것과 거의 같다.
AI 코딩 시대의 실패는 기능이 부족해서가 아니라 기능을 너무 빨리 만들어서 발생한다.
6) 구조를 설계할 수 있는 사람이 AI 코딩을 지배한다
AI 코딩에서 가장 중요한 능력은 "무엇을 만들까?"가 아니다. "어떤 구조 위에 만들까?"다.
이 질문을 던질 수 있는 사람이 AI를 개발 파트너로 만들 수 있다.
구조를 먼저 정의하고
기능을 구조 안에 배치하고
변경을 구조 차원에서 통제하고
AI에게 명확한 설계 기준을 전달한다
이 과정을 거치지 않으면 AI 코딩은 그저 기능 생산 자동화에 불과하다.
7) 좋은 구조는 '다시 만들지 않아도 되는 서비스'를 만든다
좋은 구조를 가진 서비스의 특징은 분명하다.
기능을 추가해도 기존 기능이 깨지지 않는다
요구사항 변경이 공포가 아니다
AI에게 수정 요청을 해도 결과가 예측 가능하다
운영 단계에서도 안정적이다
반대로 구조가 없는 서비스는 항상 이런 말로 이어진다.
"이건 처음부터 다시 만드는 게 빠를 것 같아요."
이 말이 나오면 이미 늦은 것이고 이전 개발이 미비한 구조에서 만들어졌다는 의미다.
AI 코딩은 기능을 쉽게 만든다. 그러나 서비스는 기능으로 완성되지 않는다.
서비스는 구조 → 흐름 → 기능의 순서로 만들어져야 한다. 이 순서를 뒤집는 순간 AI는 축복이 아니라 재앙이 된다.
AI 코딩 시대의 실력은 코드를 많이 만드는 능력이 아니라, 구조를 먼저 그릴 수 있는 능력이다.