This month I Learned - 22년 1월
(내용 정리에 생각을 덧붙일 경우 🤔
이모지를 첨부합니다.)
Development #
- cloudflare cdn 캐싱
- argo(160$) - 캐시히트 비율 증가
- database - google firestore 사용
- 이미지 - Bunny.net
- 정적 자산 - backblaze B2
- 클라우드 플레어 대역폭 동맹덕에 트래픽 비용이 발생하지 않음
- JSI
- 현재 아키텍처의 브릿지를 대체
- js엔진이 네이티브의 메서드를 직접 호출할 수 있도록 하는 범용 레이어
- js 스레드에서 직접 네이티브 측과 통신할 수 있기 때문에 JSON 메시지를 직렬화할 필요가 없어 브릿지의 비동기 문제가 해결됨.
- Fabric
- 현재 UI 매니저를 대체할 렌더링 시스템
- JSI에서 UI 메서드도 직접 노출하므로 JS와 UI 스레드가 동기화 될 수 있음.
- 새로운 섀도우 트리는 JS와 UI 스레드 간에 공유되어 양쪽 끝에서 직접 상호작용 할 수 있다. → 메모리 절약
- 터보 모듈
- 현재 아키텍처에서는 js에서 사용하는 모든 기본 모듈을 앱을 열기 전에 초기화해야함.
- 터보모듈을 사용하면 필요한 모듈만 로드하여 앱 시작시간 향상
- codegen
- JSI 가 c++ 기반이기에 CodeGen이라는 정적 유형 검사기가 추가됨
- 함수형 프로그래밍의 특징
- 선언형
- 함수도 ‘값’이다.
- 고계 함수 (함수를 값으로 볼 수 있다면, 다른 함수의 인자로 넣을 수도 있다.)
- 커링 - 여러 인자를 받는 함수에 일부 인자만 넣어서 나머지 인자만을 받을 수 있는 함수를 따로 만드는 기법
- 함수 컴비네이터
- esbuild
- esbuild의 프로세스는 비용이 많이 드는 변환을 피하고 병렬화를 활용하며 Go 언어를 사용함으로써 매우 빠르게 코드를 작성한다.
- 기존 노드 기반 번들러보다 10-100배 빠른 빌드 단계를 제공한다.
- CRA에서 제공하는 많은 개발자 편의가 없으므로, 이 공백을 메우기 위해 create-react-app-esbuild등의 스타터가 생겨나는 중.
- Snowpack
- Snowpack은 멋진 개발 서버를 제공하며 “번들하지 않는 개발” 철학으로 만들어졌다.
- 기본적으로 Snowpack의 빌드 단계는 번들 파일을 단일 패키지로 빌드하지 않지만 브라우저에서 실행되는 번들되지 않은 esmodule을 제공한다. esbuild는 실제로 의존성으로 포함되어 있지만 아이디어는 자바스크립트 모듈을 사용하고 필요할 때만 esbuild와 번들로 묶는 것이다.
- 하지만 현재상황에서 CRA같은 구성이 필요없는 도구에 대한 최상의 대안이 아니라고 생각한다. 큰 애플리케이션을 개발하면서 깔끔하게 최적화 되어있으며 프로덕션에 빌드에도 사용가능한 빌드 단계가 필요하다면, 여러분이 직접 플러그인을 가져와서 설정을 구성해야 하기 때문이다.
- Vite
- 실제 CRA의 경쟁자를 생각한다면 Vite가 가장 알맞음.
- 빠른 개발 서버와 구성이 필요 없는 최적화된 프로덕션 빌드는 어떤 구성 없이도 애플리케이션을 만들 수 있다. Vite는 작은 사이드 프로젝트나 큰 프로덕션 애플리케이션 모두 사용할 수 있는 도구이다.
- Vite는 그들만의 방법을 고수하는 도구이므로 자유도는 다소 제한적이다. SSR은 실험단계
ETC #
- 파괴적 기술이란 단기적으로 제품의 성능을 떨어뜨리지만 기존 기술이 제공하지 못하는 다른 가치를 제공하는 기술을 의미함. 파괴적 기술에 기초한 제품들은 일반적으로 더 싸고, 더 단순하고, 더 작고, 사용하기 편리하다.
- 기존 기업은 파괴적 기술이 돈이 안되므로 무시하고, 이를 활용하는 기업은 돈이 안되는 시장에서 만족하거나 새 시장을 개척한다. 파괴적 기술이 성숙해지면 기존 지배적 기업의 시장을 잠식한다. (필름 카메라의 지배적 기업 코닥이 디지털 카메라의 발전으로 몰락)
- 자바스크립트는 웹 브라우저에서 시작한 파괴적 기술로 현재 서버, 데스크탑 앱등 기존 시장을 잠식하는 중.
- 파괴적 혁신 이론에 따라 자바스크립트를 이기기 위해선 다음 시나리오를 따라갈 것이다.
- 자바스크립트보다 성능은 떨어지지만 자바스크립트가 갖지 못한 장점을 가진 기술의 등장
- 이 기술이 자바스크립트가 사용되지 않는 시장에서 고객을 만들면서 발전 (ex 로우엔드)
- 기술의 성능이 고객이 만족할 만한 수준이 되었을 때 자바스크립트를 대체하기 시작