7P by click 9시간전 | ★ favorite | 댓글 4개

Cloudflare의 한 엔지니어가 AI(Claude)의 도움을 받아, 복잡한 Next.js 인프라를 Vite 기반으로 완전히 새로 작성한 프로젝트 'vinext(vee-next)' 를 공개. 기존 Next.js의 고질적인 배포 및 빌드 문제를 해결하기 위한 실험적인 시도.

주요 요약

  • 동기: Next.js는 훌륭하지만, 자체 빌드 도구인 Turbopack에 강하게 의존하여 Cloudflare Workers나 AWS Lambda 같은 서버리스 환경에 배포하려면 OpenNext 같은 복잡한 어댑터를 거쳐야 하는 '배포 병목' 문제가 있었음.
  • 개발 과정: AI를 적극 활용해 1주일 내 구현. Next.js 테스트 및 OpenNext의 적합성 테스트에서 포팅된 Vitest 1,700+ / Playwright E2E 380 개의 테스트로 검증. Next.js 16 API surface 테스트의 94%를 통과
  • 해결책: Next.js의 결과물을 수정하는 대신, 처음부터 Vite 위에서 Next.js의 API(Routing, RSC, SSR 등)를 그대로 구현함.
  • 성과: AI 토큰 비용 약 $1,100를 들여 일주일 만에 완성. 결과물은 Next.js 대비 빌드 속도는 최대 4배 빠르고, 클라이언트 번들 크기는 57% 더 작음.
  • 기술적 특징: next/link, next/navigation, Server Actions, RSC(React Server Components) 등 핵심 API를 Vite 플러그인 형태로 재구현하여 기존 Next.js 앱을 거의 그대로 옮겨올 수 있음.

의의: 거대한 프레임워크도 잘 정의된 테스트와 AI의 도움을 받으면 단기간에 '가볍고 빠른 버전'으로 대체 가능하다는 것을 증명함.

블로그 글에는 그런 논조가 아니지만 정적 사이트 생성 기능을 의도적으로 누락한 건 정적 사이트 생성할 때는 Asto를 쓰라는 함의가 느껴집니다

1주일간의 노력을 opennext에 써줬다면 더 좋았을 텐데 라는 생각이 드네요

애초에 지향점이 다르긴 합니다
OpenNext는 nextjs 빌드 결과물을 변환하는건데 vinext는 turbopack을 vite로 대체하는 전체 재작성이라서요

Hacker News 의견들
  • 나는 Next도 좋아하지만 Vite도 사랑함. 그런데 Next 팀은 0.1%의 사용자만 위한 화려한 기능에 집중하고 나머지 99.9%는 무시하는 느낌임. Cloudflare의 이번 포크는 그런 불만을 해소해줄 것 같음. 성능 개선은 Next 커뮤니티가 오랫동안 원하던 부분이었고, 이제야 누군가 들어준 셈임. 회사에서도 이게 성공하면 꼭 써보고 싶음

    • Next는 내가 써본 프레임워크 중 Rails 다음으로 최악이었음. 대부분의 앱에는 순수한 오버헤드에 불과함
    • 한 명의 엔지니어가 여가 시간에 만든 실험에서 장기적인 지원을 기대할 수 있다고 생각함?
    • 우리 회사에는 7년 넘은 Next.js 앱이 있는데, 잘 돌아가는데도 불필요한 변경이 너무 많음. 버전 업그레이드 때마다 리팩터링 낭비가 심했음
    • Next를 좋아한다고 했는데, Vercel과 분리된 Next의 장점이 뭐임? Vercel의 기능이 없으면 굳이 Next를 쓸 이유가 없다고 생각함
    • 나는 Next를 싫어하고 Vite를 사랑함. 회사의 대형 Next.js 프로덕션 앱은 너무 느려서 M4 Pro로 업그레이드해야 했음. 로컬 빌드에 몇 분씩 걸리고, 핫 리프레시도 10초 이상 걸림. Next 팀은 늘 문서 링크만 주며 사용자가 잘못했다고 함. 하지만 프레임워크 자체가 느림
  • 이번 일은 AI 시대의 오픈소스 인센티브를 잘 보여주는 사례라고 생각함. 문서를 잘 만들수록, 계약을 명확히 정의할수록 남이 복제하기 쉬워짐. Cloudflare가 Next의 테스트를 활용하지 않았다면 이런 포크는 불가능했을 것임. Server Components는 여전히 과소평가된 패턴이라, DX를 단순화하려는 시도는 환영임. Next는 점진적 확장으로 복잡해졌지만, 새 프레임워크는 처음부터 유연하게 설계할 수 있음

    • 나도 같은 생각임. 누군가가 API 실험과 베스트 프랙티스를 정립하면, 다른 사람이 그대로 가져다 쓸 수 있음. Vercel이 자초한 결과이긴 하지만, 작은 프로젝트들이 이런 식으로 소멸될까 걱정임
    • Cloudflare가 Next의 테스트 없이는 불가능했을 거라는 주장엔 동의하지 않음. 복잡한 시스템도 리버스 엔지니어링으로 재현된 사례가 많았음. AI의 속도를 고려하면 진입장벽은 거의 없다고 봄
    • 오픈코어 + 비공개 테스트 모델이 된다면, 진짜 오픈소스는 결국 테스트나 스펙이 될지도 모름
  • “Hello world”도 안 되는 걸 두고 ‘from scratch로 재구현했다’고 말하는 건 과장이라고 생각함. 원본의 테스트를 그대로 가져왔다면 완전한 재작성이라 보기 어려움. 마치 유명 소설의 첫 문단을 단어만 바꿔 쓴 뒤 새로 썼다고 주장하는 것과 같음

  • Cloudflare가 한 달 전에 Astro를 인수했는데, 이번에 Next.js를 AI로 복제했다는 점이 흥미로움. 그렇게 쉽게 만들 수 있다면 왜 Astro를 샀을까? 아마도 프레임워크의 비전과 리더십을 확보하기 위해서였을 것임

    • Astro 인수는 진지한 제품 전략이고, 이번 프로젝트는 경쟁사를 조롱하는 실험처럼 보임. 몇 년 후 결과를 지켜봐야 함
    • Astro는 정적 사이트 중심이라 Next와는 다른 영역임. Cloudflare는 Astro를 통해 Vercel처럼 특정 웹사이트 계층을 장악하려는 듯함. 결국 Next.js 사이트를 Cloudflare로 옮긴 사람들은 Astro로 마이그레이션하게 될 것임
    • Astro는 정적 사이트에 적합하고, Next는 동적 웹앱에도 쓰일 수 있음. 우리는 내부 문서 시스템에 Astro를 쓰는데 정말 만족함
    • 아마 Cloudflare는 단순히 자사 제품 생태계로 유도하려는 전략일 것임. 나는 요즘 Svelte로 옮겨서 꽤 즐겁게 쓰고 있음
    • Astro는 Next와 같은 문제를 해결하지 않음. 정적 사이트용
  • 예전에 Next.js가 원격 코드 실행 취약점을 겪은 적이 있어서, AI가 만든 버전은 당분간 피하고 싶음

    • 나도 그 부분이 가장 걱정임. RCE 이전부터 Next.js를 개인 프로젝트에 쓰지 않았음. AI 코드 생성은 이런 버그를 더 쉽게 만들고 놓치기 쉬움
    • 그건 Next가 아니라 React의 취약점이었음
  • “AI가 X를 재구현했다”는 말엔 늘 의심이 듦. 세부적인 엣지 케이스와 수년간의 버그 수정이 빠져 있을 가능성이 큼. 테스트를 모두 통과한다면 인정하겠지만, 그렇지 않다면 믿기 어려움

    • 나도 완전히 믿진 않지만, 이번엔 Next의 2천 개 단위 테스트와 400개의 E2E 테스트를 통과했다고 함
  • 이번 프로젝트는 지금까지 본 가장 흥미로운 AI 실험임. Next.js 코드베이스보다 훨씬 작아서 놀랐음. 하지만 단순히 테스트만 통과하는 수준인지 의문임. 예를 들어 form 구현이 완전히 다름. 그래도 인상적임

    • (Cloudflare 엔지니어) 완전한 기능 일치는 목표가 아님. 아직 초기 버전이라 누락된 부분이 많음. 코드가 작은 이유는 Vite와 RSC 플러그인 위에 구축했기 때문임
    • 이건 거의 수동적 공격처럼 보임. Cloudflare가 Next 팀에 불만이 있었던 걸까? ‘AI와 인턴으로 네 제품 다 만들었다’는 식의 반응 같음
    • Vite에 많은 로직을 위임했기 때문에 코드가 줄어든 것 같음
  • “소프트웨어의 추상화는 인간이 복잡성을 감당하지 못해서 생긴다”는 말엔 동의하지 않음. 추상화는 현실의 본질을 포착하고 재사용성을 높이기 위해 존재함. 계층화는 단순히 관심사 분리의 문제임

  • 전체 비용이 약 1,100달러의 토큰이었다는 점이 흥미로움

  • 진짜 핵심은 Astro 인수 시점임. Cloudflare는 한 달 전 Astro를 샀고, 이번엔 AI로 Next.js API를 복제했다고 발표함. 이는 프레임워크 락인 해체 신호임. Vercel에 묶인 Next.js 사용자에게 두 가지 탈출구를 제공한 셈임 — 새 프로젝트는 Astro, 기존 프로젝트는 Vinext. 지금 당장 프로덕션용이 아니더라도, Vercel의 가격 경쟁력을 흔드는 메시지임

    • 그래서 SQLite의 테스트 스위트는 비공개라는 점이 떠오름
    • 아무리 Next.js가 욕을 먹어도, 일주일 된 프로젝트로 프로덕션을 옮길 사람은 없을 것임. 그래도 언젠가 Vercel의 Turbopack을 대체할 수도 있음
    • Cloudflare는 이미 OpenNext도 지원하고 있음