▲GN⁺ 2025-02-26 | parent | ★ favorite | on: Dagger가 React 프론트엔드를 Go + WebAssembly로 전환한 이유 (dagger.io)Hacker News 의견 작은 팀으로서 빠르게 배포해야 한다는 의견이 있음 하지만 한 달 가까이 프로토타입을 만들고, Go-app UI 컴포넌트를 직접 작성해야 했으며, Go WASM이 JSON을 파싱하는 데 느리다는 문제로 인해 아키텍처가 크게 변경되었다고 함 이는 이력서 중심의 프로그래밍처럼 들린다는 의견이 있음 강력한 Go 엔지니어 팀과 TypeScript/React로는 확장하기 어려운 복잡한 UI가 있었음 데모를 통해 웹 프론트엔드에 대한 경험이 부족한 팀이라는 인상을 받았음 회원가입 페이지가 화면에 맞지 않고, 대시보드 내 클릭 시 전체 화면에 스피너가 나타나며 페이지가 다시 로드됨 아이콘이 로딩 중일 때 alt-text가 표시됨 React가 확장되지 않았다는 점이 다행이라는 의견이 있음 "캔버스로 렌더링"하는 프레임워크일까 걱정했지만, 그렇지 않음 WASM과 DOM의 상호 운용성이 충분히 빨라졌다는 점이 긍정적임 그러나 32MB 바이너리는 큰 단점임 그들은 <a href="https://go-app.dev/" rel="nofollow">https://go-app.dev/</a>를 사용하여 프론트엔드를 만들기로 결정했음 Go-app은 Golang과 WebAssembly를 사용하여 PWA를 구축하는 패키지임 Go는 이런 종류의 작업에 적합하지 않다는 의견이 있음 Rust를 사용하여 더 나은 결과를 얻었다고 함 Rust로 만든 wasm 바이너리는 평균 240kb이며, 전송 시 잘 압축됨 몇 달 후에 더 무거운 스택에서 더 성능이 좋지만 다소 특이한 스택으로의 전환이 긍정적인 결과를 가져오는지에 대한 후속 보고가 흥미로울 것임 이런 프로젝트에 프론트엔드 개발자를 고용하는 것이 React 개발자를 찾는 것보다 쉽지 않을 것임 go-app의 창시자가 이 게시물을 발견하고 놀랐으며, 제품의 성공을 기원함 Go WASM이 JSON을 파싱하는 데 느려서 아키텍처 변경과 WebSockets를 통한 점진적 데이터 로딩을 위한 "스마트 백엔드"를 만들게 되었음 gob 데이터의 보안 문제에 대한 우려가 있음 WASM은 특정한 틈새 용도에 적합하지만 일반적인 웹 앱을 만드는 데는 부적절하다는 의견이 있음 go-app으로 만든 앱이 3.6MB의 WASM 코드를 로드함 Blazor도 마찬가지로 간단한 앱이라도 초기 로드에 최소 1MB 이상이 필요함 모든 구성 요소(프론트엔드/백엔드/앱)를 동일한 언어로 사용하는 것이 큰 가치가 있다고 생각함 반대로 "Typescript everywhere" 접근 방식을 사용하고 있으며, 프론트엔드에 React, 백엔드에 NodeJS, 앱에 Capacitor를 사용함
Hacker News 의견
작은 팀으로서 빠르게 배포해야 한다는 의견이 있음
강력한 Go 엔지니어 팀과 TypeScript/React로는 확장하기 어려운 복잡한 UI가 있었음
"캔버스로 렌더링"하는 프레임워크일까 걱정했지만, 그렇지 않음
그들은 <a href="https://go-app.dev/" rel="nofollow">https://go-app.dev/</a>를 사용하여 프론트엔드를 만들기로 결정했음
Go는 이런 종류의 작업에 적합하지 않다는 의견이 있음
몇 달 후에 더 무거운 스택에서 더 성능이 좋지만 다소 특이한 스택으로의 전환이 긍정적인 결과를 가져오는지에 대한 후속 보고가 흥미로울 것임
go-app의 창시자가 이 게시물을 발견하고 놀랐으며, 제품의 성공을 기원함
Go WASM이 JSON을 파싱하는 데 느려서 아키텍처 변경과 WebSockets를 통한 점진적 데이터 로딩을 위한 "스마트 백엔드"를 만들게 되었음
WASM은 특정한 틈새 용도에 적합하지만 일반적인 웹 앱을 만드는 데는 부적절하다는 의견이 있음
모든 구성 요소(프론트엔드/백엔드/앱)를 동일한 언어로 사용하는 것이 큰 가치가 있다고 생각함