AI 시대, 당신의 스택은 '논쟁' 대신 '결론'으로 밀려났는가?
2026. 8. 28.
AI 시대, 당신의 스택은 '논쟁' 대신 '결론'으로 밀려났는가?
지난주, Cursor가 SolidJS에서 React로 대부분 마이그레이션을 완료했다는 소식이 뒤늦게 알려졌습니다. 이 마이그레이션은 사실 7개월 전에 벌어졌던 일인데, 최근 Solid 2.0 RC 출시와 맞물려 뜨거운 토론의 중심이 되었죠. 그리고 바로 어제, 일주일이 지나서 Anthropic 문서에 있는 대규모 마이그레이션 기능 예시 명령어를 보고 깜짝 놀랐습니다.

솔직히 제 첫 반응은 그리 좋지 않았습니다. 수많은 예시 중 하필 이걸 선택했을까요? 수년간 제가 쏟아부은 노력이 프로젝트 역사상 가장 큰 릴리스를 내놓은 바로 그 주에, '멀리 떠나야 할 대상'의 대표적인 예시가 되어버린 것은 말로 다 표현하기 힘든 쓰라림을 주었습니다. 제가 SolidJS 커뮤니티 활동을 하면서도 이런 오해나 불충분한 정보들이 빠르게 퍼져나가는 걸 여러 번 경험했어요. 개발자가 피땀 흘려 만든 결과물이 단지 '학습 데이터'의 편향 때문에 오명처럼 굳어지는 건 정말 가슴 아픈 일이죠.
두 번째 반응은, 이번 주에 봤던 다른 파생 포스팅들처럼 이것도 일주일 전 뉴스를 타고 흘러온 것일 거라는 가정이었습니다.
하지만 인터넷 아카이브를 확인해보니, 이 예시는 적어도 2026년 4월부터 거기에 있었다는 것을 깨달았습니다. Cursor 이야기가 공개되기 4개월 전이었죠. 이 시점에서 Cursor의 공개 활동은 1월에 올라온 블로그 포스트에서 더 큰 업데이트들 사이에 끼어있는 '실험' 언급이 전부였습니다. 업계 외부 사람들은 눈치채지도 못했을 만한 내용이었죠. 어떤 합리적인 근거도, 벤치마크도, 주장도 없었습니다.
이게 무엇을 의미하는지 잠시 멈춰 생각해 봅시다. 저는 Anthropic의 그 누구도 Cursor 포스트를 읽었다고 증명할 수 없기에 조심해야 합니다. 아무도 증명할 수 없죠. 아마 문서 작성자가 그 실험을 봤을 수도 있고, 아니면 Claude가 스스로 예시를 작성했을 수도 있습니다. 하지만 곰곰이 생각해 보세요. 한 회사의 릴리스 노트 깊숙이 묻힌 한 줄이 다른 회사의 공식 문서로 흘러갔거나, 아니면 애초에 출처조차 필요 없었다는 겁니다. 어떠한 공개 마이그레이션도 존재하기 전에 이미 그렇게 '추정'되어 버린 셈입니다.
우리 업계는 과거에는 '주장(arguments)'을 전달하던 곳에서, 어느새 조용히 '결론(conclusions)'을 방송하기 시작했습니다. 그리고 지금보다 더 최악의 시기는 없었습니다. 왜냐하면, 곧 이야기하겠지만, '주장'이야말로 여전히 중요한 유일한 정보원이기 때문입니다.
왜 지금 더 중요해졌을까?
언제나 이랬던 것 아니냐고 물을 수도 있습니다. 팀들은 거대 기업들을 맹목적으로 추종하곤 했습니다. 넷플릭스나 페이스북이 이걸 사용한다는 사실은 AI보다 수십 년 앞선 이야기죠. 겉모습과 정치적 역학은 늘 순수한 기술적 장점을 이겨왔습니다. 페이스북의 영향력이 React 초기 확산에 확실히 도움이 된 것도 사실이고요.
하지만 과거에는 어떤 내러티브가 나오더라도 '마찰'이 있었습니다. 내러티브는 항상 경쟁 속에 있었지만, '주장'을 압도할 수는 없었죠. 이제 두 가지 이유로 상황이 변했습니다.
첫째, 실행 비용이 급감했습니다. Bun이 Zig에서 Rust로 재작성한 약 100만 라인 규모의 코드는 몇 달이 아닌, 며칠 만에 Claude 에이전트에 의해 거의 전적으로 실행되었습니다. 그리고 '락인(lock-in)'을 걱정하기 전에, 반대 방향으로 가는 것이 예전만큼 쉽지는 않겠지만, 이렇게 쉬웠던 적은 없었습니다. Rust에서 Zig로, React에서 Solid로 마이그레이션하는 것이 그 어느 때보다 쉬워진 것이죠.
좋은 소식처럼 들리죠? 맞습니다. 마이그레이션에 수년간의 인력이 필요했던 시절에는 비용이 유행에 제동을 걸었습니다. 이제는 모든 방향으로의 실행 비용이 훨씬 저렴해졌습니다. 남은 유일한 것은 '이유'입니다. 이는 표면적으로 이러한 결정이 기술적 장점에 뿌리를 두어야 함을 시사합니다. 하지만 내러티브가 방향을 설정할 때, 문서 깊숙이 묻힌 한 줄이 왜 그렇게 중요한 논문 한 편의 가치를 가지게 되는지 알 수 있을 겁니다. 실무에서 보면, 예전에는 새로운 기술 도입이나 스택 변경은 최소 몇 달, 길게는 1년 이상 논의와 POC 과정을 거쳤는데, 요즘은 AI 도구의 도움으로 '일단 시도해보자'는 식으로 접근하는 경우가 부쩍 늘었어요. 이게 기회이기도 하지만, 동시에 섣부른 판단으로 이어질 위험도 커졌다는 걸 체감합니다.
둘째, '결론(verdict)' 생산이 산업화되었습니다. Cognition은 마케팅 사이트를 Astro에서 Next.js로 마이그레이션했습니다. 콘텐츠 사이트 말입니다. 이해관계가 없는 사람들조차 만장일치로 Astro의 안방이라고 평가하는 곳이었죠. 이 마이그레이션은 Devin 자체에 의해 수행되었고, 에이전트가 변경사항을 만들고, 테스트하고, 자체 검증 실행을 기록했다는 사례 연구로 발표되었습니다. 레포지토리도 없고, 전후 숫자도 없으며, 벤치마크도 없습니다. 결과물은 사이트가 아니라, 그 '이야기(story)'였습니다.
그리고 이런 이야기는 부족함이 없습니다. 마이그레이션은 이제 에이전트 산업의 데모 장르가 되었습니다. Theo Browne은 몇 주 전 제게 아주 좋은 조언을 해주면서 이 점을 이야기하려고 했습니다. 하지만 직접 체감했을 때 훨씬 더 크게 와닿더군요. 완벽하게 데모되는 마이그레이션은, 정의상 에이전트가 현재 가장 잘 작성하는 방향으로 움직이는 것들입니다. 마케팅 부서는 유기적인 엔지니어링 결정으로는 상상할 수 없을 만큼 빠른 속도로 "X → 지배적인 라이브러리"라는 '결론'들을 쏟아내고 있습니다.
그래서 이 긴장감을 이해하실 겁니다. 스택은 지금껏 그 어떤 때보다 순환하는 '결론'에 민감해졌고, '결론'은 그 어느 때보다 빠르게, 그리고 적은 근거만으로 생산되고 있습니다.
'주장'이란 어떤 모습인가
이런 '주장'이 아예 없는 것은 아닙니다. 다만 점점 더 희귀해지고 있을 뿐이죠.
Bun이 Zig에서 Rust로 전환했을 때, Jarred Sumner는 공개적으로 근거(receipts)를 제시하며 주장을 펼쳤습니다. 버그 유형과 메모리 관리 문제에 대해 이야기했습니다. 그 주장에 동의하지 않을 수도 있습니다. 실제로 많은 사람들이 공개적으로 조목조목 반박했습니다. 그것이 '주장'의 가치입니다. '주장'은 참여하고, 확인하고, 좁히고, 반박하거나 강화할 수 있습니다. 하지만 '결론'은 그저 반복될 뿐입니다.
TanStack이 tanstack.com에서 React Server Components(RSC)를 적용했던 여정을 보십시오. 그들은 거의 1년 내내 스스로와 논쟁했습니다. tanstack.com이 React Server Components를 채택했을 때, 그들은 내용을 작성하고 측정했습니다. 그리고 사용을 중단했을 때도 마찬가지였습니다. 무엇이 변했고, 무엇으로 대체했으며, 특정 경우에 왜 트레이드오프가 바뀌었는지 설명했습니다. 그러면서도 TanStack Start는 여전히 RSC를 다른 모든 사용자를 위한 선택적 프리미티브로 지원했습니다. 결정을 "별일 아니었다(uneventful)"고 표현한 번복 포스트는 많은 것을 시사합니다. React의 주력 아키텍처에 대한 공개적인 번복이었음에도 불구하고, 열기 대신 통찰력을 제공했습니다. 그들이 '결론' 대신 '분석'을 제공했기 때문입니다.
이것이 바로 공개 기록에 남는 '평가'의 모습입니다. jQuery가 React에게 진 것은 학습 데이터가 그렇게 말했기 때문이 아닙니다. 여러 해 동안 공개적으로 '장점'에 대한 논쟁에서 패배했기 때문입니다. 여러분이 존경하는 모든 라이브러리는 그런 종류의 싸움에서 이겨서 지금의 위치에 올랐습니다. 제가 위에서 설명한 사건의 흐름은 싸움을 하지 않습니다. 그저 방향을 정하고, 그 방향을 강화할 뿐입니다.
아무도 공개하지 않은 주장
공정하게 말하면, Cursor는 한 번도 '결론'을 내린 적이 없습니다. "여전히 신중한 검토가 필요하다"는 실험이었고, 이후 Solid 2.0 RC 출시에 대한 축하 포스트가 올라왔죠. 하지만 그 포스트는 여전히 '시그널'을 "성능 함정(perf footguns)"과 "의도치 않은 전파(accidental fan out)"로 규정했습니다. 어떠한 숫자나 논쟁할 여지없이, 곧바로 React Compiler를 치료법으로 제시했습니다. 악의는 없었을 겁니다. 그저 진단과 치료법이 같은 곳에서 나왔을 뿐이죠.
Cursor가 내놓을 수 있었던 주장을 재구성해보려 했을 때, 저는 흥미로운 사실을 발견했습니다. "성능 함정"이라는 말보다 훨씬 더 흥미로운 내용이었죠.
해당 포스트는 물론 에이전트들이 "Solid 코드를 잘 작성하지 못했다"고 강조했습니다. 모든 것이 "의도치 않게 추적되었다"고 말이죠. 제 "Solid-brain"으로는 그들이 어떻게 그런 상황에 도달했는지 상상하기 어렵지만, 저는 단 1초도 의심하지 않습니다. React의 멘탈 모델을 내재화한 에이전트는 Solid를 React처럼 작성할 것이고, React처럼 작성된 Solid는 좋지 않은 Solid입니다. 저도 반대의 경우를 본 적이 있습니다. 차이점은 에이전트가 React에서 실수를 할 때는 학습 데이터가 이를 잡아낸다는 것입니다. Solid에서 실수를 할 때는 학습 데이터가 어깨를 으쓱할 뿐이죠. 이것은 순전히 숫자 게임입니다.
하지만 같은 포스트에는 반대 방향의 결정도 포함되어 있습니다. 그들은 또한 Tailwind에서 StyleX로 이동하고 있습니다. 이것은 '볼륨(volume)'에 반하는 마이그레이션입니다. StyleX가 제공하는 것은 에이전트의 실수를 잡아낸다는 점입니다. 스타일은 결정론적인 병합 순서로 타입이 지정되어 있어, 환각적으로 생성된 클래스는 빌드 오류로 이어집니다.
이 두 가지를 나란히 놓고 보면 한 가지 결론을 내릴 수 있습니다. 바로 에이전트의 실수를 저렴하게 만드는 것입니다. 이를 달성하는 두 가지 방법은 '볼륨'과 '검증'입니다. React(와 그 컴파일러)는 볼륨에서 승리하며, 논란의 여지가 있지만 검증에서도 승리합니다. StyleX는 볼륨에서는 패배하지만, 검증에서는 확실히 승리합니다. Solid 1.0의 관점에서 시그널 기반 반응성이 이러한 렌즈 아래에서 특히 편안한 위치에 있다고는 하지 않겠습니다. 하지만 Solid 2.0의 디자인 방향이 이곳에 집중된 것도 우연은 아닙니다.
이러한 분석, 즉 볼륨과 검증을 두 축으로 삼는 것은 구체적이고, 검증 가능하며, 유용합니다. 이는 테스트 가능한 주장을 암시하고 모든 프레임워크 저자에게 디자인 목표를 제시합니다. 물론 틀릴 수도 있습니다. 저는 벤치마크가 없는 포스트와 저의 추론을 바탕으로 이를 재구성했습니다. Cursor의 실제 추론은 완전히 다를 수도 있습니다.
StyleX 결정은 훨씬 더 흥미롭습니다. 에이전트 주도 개발은 '검증'이 승리할 때 '볼륨'에 반해서 움직일 수 있습니다. 작은 기술들이 받아들일 수 있는 두 번째 관점이 있는 것이죠. 저에게 이것은 새로운 발견이라기보다는, 이론이 실제를 확인해 준 사례였습니다.
아무것도 변하지 않는다면 어떤 일이 벌어질까?
이러한 사고방식을 논리적 결론으로 따라가면, 몇 가지 예외를 제외하고는 각 계층은 현재 가장 인기 있는 솔루션으로 붕괴될 것입니다. 프런트엔드는 React로 수렴하고, 시스템 프로그래밍은 Rust로, 스크립팅은 Python으로 수렴할 것입니다. 심지어 단순한 페이지로 구성된 사이트조차 Next.js로 수렴할 것입니다. 이는 '그냥 잘 맞아서'가 아니라, '학습 데이터에 풍부하게 존재한다'는 것과 '더 낫다'는 것을 더 이상 구별하지 못하는 시스템에 의해 도달한 '단일 문화(monoculture)'입니다.
만약 당신이 React 팬이라고 해도 여전히 우려해야 합니다. React는 경쟁이 있었기에 좋았습니다. Hooks는 컴포지션 패턴이 활발히 탐구되던 세상에 등장했습니다. React Compiler는 부분적으로, 시그널 기반 프레임워크들이 수년간 던졌던 질문에 대한 답으로 존재합니다. "왜 개발자가 세상의 재렌더링 비용을 지불해야 하는가?" React의 가장 큰 강점은 항상 외부의 압력을 흡수하여 발전하는 능력이었습니다. 단일 문화는 대안을 죽일 뿐만 아니라, 그 압력 자체를 죽입니다. 압력이 없는 생태계는 좋은 상태를 유지하지 못합니다. 그저 정체될 뿐입니다.
다시 돌아갈 길이 있습니다. 팀들은 '결론' 대신 '분석'을 공개해야 합니다. 모델 벤더들은 공개적으로 자신들이 출시하는 것을 평가해야 합니다. 라이브러리들은 StyleX의 예시에서 배우고 '검증'에 투자해야 합니다. 그리고 우리 모두는 '출력물'과 '주장'을 구별하는 방법을 배워야 합니다. 마지막 부분은 소셜 미디어의 등장 이후로 계속 씨름해 온 문제죠.
그동안 우리는 규칙 파일(rules files), llms.txt, MCP(Member Communication Process)를 넘어서는 문서, 큐레이션된 예시들을 계속 생성할 수 있습니다. Solid 2.0을 위해 이 모든 것을 하고 있으며, 이는 큰 도움이 됩니다. 하지만 '컨텍스트'는 빌려 쓰는 것이지 소유하는 것이 아닙니다. 모든 세션에서, 모든 도구에 의해 영원히 주입되어야 하는 반면, 관성은 공짜로 당신에게 불리하게 작용할 것입니다.
다음 아이디어는 어디서 오는가?
여러분에게 더 심오한 질문을 남기고 싶습니다. 이 모든 것이 결국 'Solid가 살아남을 것인가'에 대한 질문은 아닙니다. 우리는 괜찮습니다. 역사상 가장 큰 릴리스를 출시하고 있으며, 이 프레임워크를 의도적으로 선택하고, 더 중요하게는 '왜' 선택했는지 아는 커뮤니티가 있기 때문입니다.
질문은 바로 **'다음 아이디어는 어디서 오는가'**입니다.
중요했던 모든 패러다임은 기존 체계가 작성할 수 없었던 무언가로 시작했습니다. React는 JSX 때문에 거의 1년 동안 조롱받았습니다. "JavaScript 안에 마크업을? 미쳤냐? 관심사의 분리는 어쩌고?" 만약 2013년에 오늘날의 AI 기계들이 존재했다면, 온통 jQuery와 Backbone으로 학습된 모델들, 이미 모두가 하고 있던 마이그레이션을 정전화하는 문서들, 주장이 나오기 몇 달 전에 '결론'이 순환하는 상황 속에서 React가 그 단계를 넘어설 수 있었을까요?
React는 기본 설정이 유리해서 이긴 것이 아닙니다. 사람들이 공개적으로 '검증 가능한 주장'을 펼쳤기 때문에 이겼습니다. 저는 그러한 메커니즘이 사라졌다고 생각하지 않습니다. 마이그레이션은 모든 방향으로 그 어느 때보다 저렴해졌습니다. 어떤 단일 문화에서 벗어날 문은 그 어느 때보다 활짝 열려 있습니다. 우리는 구현과 거리를 두더라도 '분석'을 대화의 한 부분으로 유지해야 합니다. 그것이 바로 정보를 얻는 것이고, 책임을 지는 것입니다.
원문: https://dev.to/playfulprogramming/nobody-argued-for-your-stack-51fj 수집일: 2026-08-28 07:19:08