- TypeScript는 웹 개발에 필수적인 강력한 언어이며, 아이디어 검증 및 풀스택 개발을 가능하게 하여 Motion과 같은 기업의 성공에 크게 기여했습니다. 🚀
- 하지만 TypeScript는 완벽하지 않으며, Motion과 같은 대규모 프로젝트에서 성능 및 코드 공유의 한계로 인해 다른 기술 스택으로의 전환을 고려하는 사례가 나타나고 있습니다. 🚧
- Motion은 250만 줄 규모의 대형 TypeScript 모노레포를 TurboRepo와 함께 사용했으며, React, React Native, Electron, 백엔드 API, 심지어 Pulumi를 통한 인프라 코드까지 TypeScript로 구축했습니다. 🏢
- 코드 공유의 이상은 React Native와 웹 앱 간에 완전히 실현되지 않았는데, 이는 라이브러리 버전 불일치와 개발자들이 모바일 환경을 간과하는 문제로 이어졌습니다. 💔
- React Native는 '한 번 작성하여 모든 곳에서 실행'하는 도구가 아니며, 웹 개발자가 네이티브 기능에 기여하도록 돕는 목적이 강합니다. UI 컴포넌트는 플랫폼별로 다르게 구축해야 하며, 로직만 공유하는 것이 효과적입니다. 📱↔️💻
- 특히 React Native에서 중첩된 데이터 페칭으로 인한 JS-네이티브 브릿지 오버헤드가 발생하여, Motion은 성능이 중요한 일부 화면에서 React Native 사용을 포기해야 했습니다. 📉
- CI/CD 빌드 문제는 Blacksmith와 같은 솔루션으로 해결할 수 있으며, 이는 빌드 속도를 2배(Docker는 40배) 빠르게 하고, 비용을 75% 절감하며, 향상된 분석 및 가시성을 제공합니다. 🛠️
- GitHub Actions는 느리고 비싸며 가시성이 부족하다는 비판이 있으며, 이는 GitHub가 더 많은 빌드 시간을 청구하기 위함일 수 있다는 주장이 제기됩니다. 💰
create T3 Turbo와 같은 모노레포 구조는 API 및 DB 타입 정의를 효과적으로 공유하면서도, 웹과 모바일 UI 컴포넌트를 분리하여 플랫폼별 최적화를 가능하게 하는 좋은 예시입니다. 🏗️