Gatsby JS는 수천 명의 어깨 위에 서 있습니다.

수년 전 Linux 창립자 Linus Torvalds는 Linux와의 오픈 소스 작업에 대해 논의 할 때 Isaac Newton 경의 "거인의 어깨에 서기"라는 문구를 빌 렸습니다. 1991 년에 Linux에 적용되었을 수있는“이봐 요, 저는 다른 사람들의 훌륭한 작업 덕분에 훌륭한 작업을 할 수있었습니다.”라는 좋은 정서이지만 오픈 소스를 잘 설명하지는 못합니다. 누군가가 오늘 오픈 소스 코드를 공개하면 결국 그들은 소수의 천재 개발자보다 훨씬 더 많은 것을 끌어들이는 것입니다.

아니요, Gatsby.js의 최신 릴리스에서 알 수 있듯이 최신 오픈 소스 프로젝트는 수천 개의 다른 프로젝트 에 의존 합니다. 또는 Gatsby 설립자 Kyle Mathews가 인터뷰에서 말했듯이 "우리는 수천 명의 [평범한] 사람들의 어깨 위에 서 있습니다."

1000 배 더 빠른 빌드? 예, 부탁합니다!

웹의 처음에는 정적 사이트 생성기가있었습니다. 시간이 지남에 따라 Mathews가 그의 게시물에서 설명한 것처럼 조직은 점점 더 동적 인 기능을 지원하기 위해 데이터베이스 기반 웹 사이트로 전환했습니다. 웹 사이트가 성장함에 따라 정적 사이트 생성은 워드 프레스와 같은 데이터베이스 기반 도구가 Markdown에서 코딩을 귀찮게하고 싶지 않은 마케팅 담당자에게 유리 해지면서 빌드 속도를 느리게했습니다. 사전 렌더링은 사이트 생성자에게 도움이되었지만 대규모 사이트에서 선호하는 옵션이 되기에는 충분하지 않았습니다.

그러나 그것은 그때였습니다. 지금입니다.

2020 년 초 Gatsby는 분산 컴퓨팅과 정교한 캐싱 기능의 영리한 조합을 통해 표준 연속 배포 솔루션보다 빌드 시간을 60 배 더 빠르게 만든 Gatsby Builds를 도입했습니다. 좋은. 그러나 최근 증분 빌드 릴리스를 통해 Gatsby는 데이터 편집을 위해 10 초 미만의 빌드를 얻고 있으며 이는 기존 빌드 솔루션에 비해 1000 배 향상 될 수 있습니다.

어떻게? Mathews는 인터뷰에서 "우리가 한 가장 큰 일은 빌드간에 업데이트가 필요한 항목을 저렴하게 파악할 수있는 종속성 추적 시스템을 만들었습니다"라고 말했습니다. 이것이 Bazel과 같은 빌드 도구 또는 Apache Spark 및 Apache Flink와 같은 데이터 처리 도구에서 취한 접근 방식처럼 들리면 그렇기 때문입니다. "Gatsby는 데이터 / 코드의 웹 사이트 변경 이벤트를 다른 스트림 프로세서처럼 취급합니다. 변경된 사항을 파악하고 저렴하게 업데이트합니다." 기존의 정적 사이트 생성기는 오랫동안 데이터에 대한 일괄 처리 방식을 사용해 왔지만 Gatsby의 새로운 방식은 실시간 스트림 처리입니다.

웹의 아주 작은 부분이 아닌 모든 웹 사이트에서 Gatsby 접근 방식을 사용할 수 있도록 만드는 것은 큰 문제입니다. 또한 Gatsby가 페이지와 데이터 소스 간의 데이터 종속성을 추적 할 수 있도록하는 GraphQL과 같은 놀라운 오픈 소스 기술에 의존하여 일부 데이터가 변경 될 때 업데이트가 필요한 페이지를 계산할 수 있습니다.

그래서 매튜스에게 개츠비가 다른 오픈 소스에 얼마나 의존하고 있는지 물었습니다.

React, GraphQL, Webpack, Babel의 어깨 위에 서서 ...

"우리는 많은 훌륭한 프로젝트에 크게 의존하고 있습니다."라고 Matthews는 말했습니다. 그리고 그는 계속했습니다.

이 문구는 아마도 거인의 어깨에서는 대신 수천 명의 사람들의 어깨에 서있는 것으로 업데이트 될 수 있습니다. 오픈 소스의 멋진 점 중 하나는 천재만을위한 것이 아닙니다! 평범한 사람들은 여전히 ​​중요한 요구 사항을 해결하는 한입 크기의 패키지를 구축 및 / 또는 유지하도록 도울 수 있습니다.

그“평범한 사람들”중 일부는 개츠비가 의존하는 특별한 코드를 만들었습니다. Gatsby가 React를 기반으로한다는 점을 감안할 때 React는 즉시 떠 오릅니다. 하지만 더 있습니다. 훨씬 더. Gatsby는 또한 Webpack 및 Babel을 사용하여 JavaScript, CSS 및 배포 할 기타 자산을 처리하고 준비하는 데있어 무거운 작업을 수행합니다. 이러한 프로젝트는 "수천 명의 엔지니어에 의한 수년간의 훌륭한 작업으로 경이 롭습니다"라고 Mathews는 말합니다.

실제로 Babel NPM 패키지 페이지를 확인하면 136 개의 종속성이 있지만 Gatsby의 종속성의 종속성은 말할 것도없고 다른 Gatsby 릴리스의 모든 종속성이 생략됩니다. 대체로 Mathews는“일반적인 Gatsby 프로젝트는 전 세계 수만 명의 엔지니어가 유지 관리하는 수천 개의 패키지를 사용할 수 있습니다. 이는 놀랍습니다.”라고 말했습니다.

"[Gatsby]가 상대적으로 작은 팀처럼 빠르게 움직이고 많은 일을 할 수 있도록 돕는 것은 오픈 소스에 대한 이러한 의존성입니다." "[Gatsby]가 필요로하는 거의 모든 것을 갖춘 놀랍도록 넓고 깊은 Node.js 생태계"라고 그는 결론지었습니다. 그는 혼자가 아닙니다. 다음에 Linux를 사용하거나 Kubernetes에 기여하거나 다른 방식으로 오픈 소스 소프트웨어에 참여할 때 오늘날의 세상에서 우리 모두는 놀라운 일을하는 수백만의 "일반 개발자"에게 절망적으로 (그리고 희망적으로!) 의존하고 있음을 기억하십시오.