Show HN: LLM이 그냥 해낼 수 있다면 왜 코드를 작성해야 할까요? (웹 앱 실험)
요약
애플리케이션 로직과 코드 없이 LLM의 도구 활용만으로 동작하는 'nokode' 웹 서버 실험을 소개합니다. CRUD 기능을 수행하는 연락처 관리자를 대상으로 코드 생성 과정을 생략하고 의도(intent)만으로 실행되는 시스템의 가능성과 한계를 다룹니다.
핵심 포인트
- 코드 없이 LLM의 도구(DB, 응답, 메모리)만으로 웹 서버 구현 시도
- 전통적인 웹 앱 대비 응답 속도가 300~6000배 느린 성능 저하 확인
- API 토큰 비용이 기존 컴퓨팅 방식보다 100~1000배 높게 발생
- 추론 과정에서의 환각(Hallucination) 및 일관성 유지 문제 노출
nokode
애플리케이션 로직이 없는 웹 서버. 단 세 가지 도구를 가진 LLM뿐입니다.
샤워 중의 생각 (The Shower Thought)
언젠가 우리는 코드가 필요하지 않게 될 것입니다. LLM은 120fps로 비디오를 출력하고, 실시간으로 입력을 샘플링하며, 그저... 우리의 컴퓨터가 될 것입니다. 앱도, 코드도 없이, 오직 의도(intent)와 실행(execution)만 남게 될 것입니다.
그것은 공상 과학(science fiction) 이야기입니다.
하지만 저는 궁금해졌습니다. 이번 주말 몇 시간의 시간과 오늘날의 기술 수준으로 어디까지 갈 수 있을까요?
가설 (The Hypothesis)
저는 이것이 처참하게 실패할 것이라고 예상했습니다.
모두가 코드를 작성하는 AI에 집중하고 있습니다. Claude Code, Cursor, Copilot 같은 익숙한 것들 말이죠. 하지만 그것은 더 큰 그림을 놓치고 있는 것처럼 느껴졌습니다. 그래서 저는 다른 질문을 테스트하기 위해 무언가를 만들었습니다. 만약 코드 생성을 완전히 건너뛴다면 어떻게 될까요? 애플리케이션 코드가 전혀 없는 웹 서버 말입니다. 라우트(routes), 컨트롤러(controllers), 비즈니스 로직(business logic)이 없습니다. 그저 모든 요청에 대해 LLM에게 "내가 무엇을 해야 할까?"라고 묻는 HTTP 서버일 뿐입니다.
목표: 우리가 그 미래로부터 실제로 얼마나 떨어져 있는지 증명하는 것입니다.
대상 (The Target)
연락처 관리자(Contact manager). 기본적인 CRUD: 양식(forms), 데이터베이스(database), 목록 보기(list views), 지속성(persistence).
이유는 무엇일까요? 대부분의 소프트웨어는 그저 다르게 꾸며진 CRUD이기 때문입니다. 만약 이것이 조금이라도 작동한다면, 그것은 대단한 일이 될 것입니다.
실험 (The Experiment)
// 전체 백엔드
const result = await generateText({
model,
...
세 가지 도구:
database- SQLite에서 SQL을 실행합니다. AI가 스키마(schema)를 설계합니다.webResponse- 어떤 HTTP 응답이든 반환합니다. AI가 HTML, JavaScript, JSON 또는 상황에 맞는 적절한 것을 생성합니다.updateMemory- 피드백을 마크다운(markdown)에 저장합니다. AI는 다음 요청 시 이를 읽습니다.
AI는 경로(path)만 보고 무엇을 반환할지 추론합니다. /contacts를 호출하면 HTML 페이지를 받게 됩니다. /api/contacts를 호출하면 JSON을 받게 됩니다:
// AI가 /api/contacts를 위해 생성하는 내용
{
"contacts": [
...
모든 페이지에는 피드백 위젯이 있습니다. 사용자가 "버튼을 더 크게 만들어줘" 또는 "다크 테마를 사용해줘"라고 입력하면 AI가 이를 구현합니다.
결과 (The Results)
작동합니다. 정말 짜증 나는 일이네요.
모든 클릭이나 양식 제출(form submission)에 3060초가 소요되었습니다. 전통적인 웹 앱(web apps)은 10100밀리초(milliseconds) 내에 응답합니다. 이는 3006000배 더 느린 것입니다. 각 요청에는 API 토큰 비용으로 $0.010.05가 소요되었는데, 이는 전통적인 컴퓨팅(compute)보다 1001000배 더 비쌉니다. AI는 시간의 7585%를 추론(reasoning)에 소비했고, 5초 전에 자신이 생성한 UI를 잊어버렸으며, 잘못된 SQL을 환각(hallucination)하여 생성할 때마다 즉시 500 에러가 발생했습니다. 요청 간에 색상이 어긋나기도 했습니다. 레이아웃이 바뀌기도 했습니다. "⚡ 빠르게 생각해(THINK QUICKLY)"와 같은 프롬프트 엔지니어링(prompt engineering) 트릭을 시도해 보았지만, 모델이 어떻게 빨라질 수 있을지에 대해 추론하는 데 더 많은 시간을 쓰면서 오히려 상황을 더 느리게 만들었습니다.
하지만 이 모든 것에도 불구하고, 양식은 실제로 올바르게 제출되었습니다. 데이터는 재시작 후에도 유지되었습니다. UI는 사용 가능했습니다. API는 유효한 JSON을 반환했습니다. 사용자 피드백도 구현되었습니다. AI는 어떠한 예시도 없이도 적절한 타입(type)과 인덱스(index)를 갖춘 합리적인 데이터베이스 스키마(database schemas), 인젝션(injection)으로부터 안전한 매개변수화된 SQL 쿼리(parameterized SQL queries), REST 방식의 API 컨벤션(API conventions), 반응형 Bootstrap 레이아웃, 양식 검증(form validation), 그리고 예외 상황(edge cases)에 대한 에러 처리(error handling)를 스스로 만들어냈습니다. 세 가지 도구와 프롬프트(prompt)를 제공했을 때 나타난 모든 창발적 행동(emergent behavior)이었습니다.
그러니 네, 능력은 존재합니다. AI는 애플리케이션 로직(application logic)을 처리할 수 있습니다. 단지 재앙적일 정도로 느리고, 터무니없이 비싸며, 금붕어 같은 기억력을 가지고 있을 뿐입니다.
스크린샷 (Screenshots)
<table> <tr> <td><img src="screenshots/1.png" alt="새로운 빈 홈" width="300"/></td> <td><img src="screenshots/2.png" alt="연락처 양식 작성 중" width="300"/></td> <td><img src="screenshots/3.png" alt="연락처 상세 보기" width="300"/></td> </tr> <tr> <td><img src="screenshots/4.png" alt="3개의 연락처가 있는 홈" width="300"/></td> <td><img src="screenshots/5.png" alt="또 다른 연락처 상세" width="300"/></td> <td><img src="screenshots/6.png" alt="10개의 연락처가 있는 홈" width="300"/></td> </tr> <tr> <td><img src="screenshots/7.png" alt="연락처 삭제 후" width="300"/></td> <td><img src="screenshots/8.png" alt="삭제 후 홈" width="300"/></td> <td><img src="screenshots/9.png" alt="진화된 연락처 앱" width="300"/></td> </tr> </table>결론 (The Conclusion)
그 능력은 존재합니다. AI는 애플리케이션 로직 (Application logic)을 처리할 수 있습니다.
문제는 모두 성능에 있습니다: 속도 (3006000배 느림), 비용 (1001000배 더 비쌈), 일관성 (디자인 기억력 없음), 신뢰성 (환각 (Hallucinations) → 오류).
하지만 이것들은 종류의 문제가 아니라 정도의 문제처럼 느껴집니다:
- 추론 (Inference): 연간 약 10배씩 개선 중
- 비용: 0을 향해 가고 있음
- 컨텍스트 (Context): 성장 중 (결국 디자인 기억력을 갖게 될까?)
- 오류: 감소 중
하지만 느리고 비쌈에도 불구하고, 애플리케이션 코드 (Application code)를 전혀 작성하지 않고 작동하는 CRUD 앱을 구축했다는 사실은 우리가 "AI가 코드를 작성하는 것을 돕는 것"보다 "AI가 그냥 일을 해내는 것"에 더 가까워지고 있음을 시사합니다.
이 프로젝트에서 남은 것은 인프라 (Infrastructure)입니다: HTTP 설정, 도구 정의 (Tool definitions), 데이터베이스 연결. 애플리케이션 로직은 사라졌습니다. 하지만 진정한 비전은 무엇일까요? 초당 120회의 추론 (Inference)이 지속적인 실시간 입력 샘플링과 함께 디스플레이를 렌더링하는 것입니다. 그것이 컴퓨터가 됩니다. HTTP 서버도, 데이터베이스도, 인프라 계층도 전혀 필요 없습니다. 오직 의도와 실행만이 존재할 뿐입니다.
우리는 코드라는 존재가 대부분 과도기적인 것에 불과하다는 사실을 깨닫지 못하고 있는 것 같습니다.
npm install
.env:
LLM_PROVIDER=anthropic
ANTHROPIC_API_KEY=sk-ant-...
ANTHROPIC_MODEL=claude-3-haiku-20240307
npm start
http://localhost:3001을 방문하세요. 첫 번째 요청은 30~60초가 소요됩니다.
시도해 볼 만한 것들:
prompt.md를 확인하고 이를 커스텀해 보세요. 어떤 앱을 빌드할지 변경하고, 기능을 추가하거나, 동작을 수정해 보세요. 그것이 인터페이스의 전부입니다.
기본적으로는 연락처 관리자 (contact manager)를 빌드합니다. 하지만 다음을 시도해 보세요:
/game- 아마 게임이 만들어질지도 모릅니다./dashboard- 무엇이든 될 수 있습니다./api/stats- API를 만들어낼 수도 있습니다.- 피드백 입력: "이것을 보라색으로 만들어줘" 또는 "검색창을 추가해줘"
⚠️ 비용 경고: 각 요청은 모델에 따라 $0.001~$0.05의 비용이 발생합니다. 이에 맞춰 예산을 설정하세요.
MIT License
AI 자동 생성 콘텐츠
본 콘텐츠는 HN Design Systems의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기