웹개발 관련
- React v18.0 : 오랫동안 준비되면 React의 새 메이저 버전 v18이 릴리즈 되었다.(영어)
- 18 버전 새 기능의 대부분은 새로운 concurrent 렌더러 위에 만들어졌고 18에서 가장 중요한 변경사항이다.
- Concurrency는 기능이라기보다는 다양한 버전의 UI를 만들 수 있게 하는 메커니즘이다.
- Concurrent는 엄밀히 호환 안 되는 변경사항이지만 대부분의 경우 변경 없이도 동작할 것이다.
- Relay, Next, Hydrogen, Remix 같은 데이터 패칭 프레임워크에서 Suspense를 사용할 수 있다.
- 서버와 클라이언트에 걸쳐 앱을 만들 수 있는 Server 컴포넌트는 아직 개발 중이다.
- 18의 새로운 기능으로는 자동 배칭, 업데이트의 중요도를 구분할 수 있는 Transition, 로딩 상태를 선언적으로 지정할 수 있는 Suspense, 새 클라이언트/서버 렌더링 API가 있다.
- Remix: The Yang to React's Yin : Remix를 칭찬하는 글이다. React는 UI를 만드는 라이브러리고 UI를 만들려면 상태가 필요한데 이 상태 관리는 React가 책임져 주지 않는다. 그래서 Redux, MobX, Apollo, SWR 등 다양한 라이브러리를 사용해서 상태를 관리하는데 이 상태는 보통 네트워크를 통해 서버에서 오게 되고 이 클라이언트와 서버 사이의 간격을 네트워크 캐즘이라고 한다. 네트워크로 데이터를 가져오기 위해 요청을 보내는데 이 요청하는 코드를 가져와야 하니까 네트워크 폭포수가 발생하고 이로 인해 렌더링은 느려지게 될 수 있다. React Router가 이 문제를 해결하기 위해 Remix의 접근방법을 가져와서 라우팅과 로더(데이터 가져오기), 액션(데이터 조작)을 도입해서 컴포넌트에서 데이터 패칭을 디커플링 할 수 있게 되었고 이도 충분히 좋지만 Remix를 사용하면 Backend for frontend의 역할까지 해주기 때문에 네트워크 캐즘을 Remix가 처리해 주어서 관련한 코드를 훨씬 더 적게 작성할 수 있게 되어 버그도 줄일 수 있다. Remix는 아직 테스트해보지 못했지만 꽤 재미있게 읽은 글이다.(영어)
<section>
버리고 HTML5 <article>
써야 하는 이유 : HTML에서 어디에 어떤 요소를 써야 하는지는 오랫동안 나오는 질문인데 이 글에서는 <section>
대신 <article>
을 쓰라고 하고 있다. 여기서 <article>
이 신문 기사 같은 글이라기보다는 옷 한 벌처럼 하나의 콘텐츠라고 생각하라고 한다. 그러면 <section>
은 어디 쓰는지가 궁금할 수 있는데 목차를 정할 수 있도록 만들어진 컨테이너 이므로 신경 쓸 필요가 없고 <h1>
등의 태그가 <section>
과 만날 때 시각적으로는 어떻게 보이고 접근성 레벨에서는 어떻게 다른지를 설명하고 있다. <section>
을 쓰면 안 되는 것은 아니지만 접근성 제공 측면에서 요약 정도 등에 스크린리더가 알 수 있게 <section>
을 사용하면 된다고 하고 있다.(한국어)
- Webpack → Vite: 번들러 마이그레이션 이야기 : Webpack을 번들러로 사용하고 있었지만 최근 새로운 번들러가 많이 나오면서 새로운 번들러를 테스트한다. 처음에는 esbuild를 사용해서 210초 걸리던 빌드를 2.16초로 만들었지만 프로젝트의 코드상 Babel을 빌드에 추가해야 했고 HMR 미지원이 아쉬웠다. 다음으로 Vite를 시도했고 설정 파일을 1/6로 줄이고 HMR도 지원되며 의존성과 소스코드를 따로 빌드하기 때문에 빠르게 개발 빌드를 실행할 수 있었다. 빌드도 250초에서 90초 정도로 줄어들었다.(한국어)
- New in Chrome 100 : Chrome 브라우저의 100 버전이 릴리스 되었다(Firefox 100 버전도 곧 릴리스 될 예정이다.) 100 버전에서는 기본으로 원래의 User-Agent 문자열을 지원하지만 101 버전부터는 User-Agent 클라이언트 힌트 API로 축약된 User-Agent 문자열이 제공될 예정이다.(영어)
- ECMAScript 스펙을 읽는 법 : Timothy Gu의 How to Read the ECMAScript Specification의 번역글이다. JavaScript의 명세인 ECMAScript의 명세는 처음 공부할 때는 권하지 않지만 JavaScript에 익숙해지기 시작하면 언어/플랫폼의 복잡성을 이해하는데 명세가 도움이 될 것이라고 하고 있다. 명세를 처음부터 끝까지 읽는 사람은 없으므로 필요한 부분을 찾아서 보는 게 좋다. 명세에서 많은 약칭과 규칙들이 있어서 처음 볼 때 어려운데 이러한 약칭을 설명하고 예시를 보여주고 있어서 한번 파악해두면 ECMAScript 명세를 볼 때 도움이 될 것이다.(한국어)
- Introducing MDN Plus: Make MDN your own : MDN의 유료 구독 서비스로 변경/추가에 대한 알림, 문서 컬렉션 기능, PWA를 이용한 오프라인 지원을 이용할 수 있다. 이 기능을 사용하는 요금제로 MDN Plus 5로 월 $5(연 $50)으로 이용할 수 있고 새 기능을 먼저 써볼 수 있고 MDN과 직접 소통할 수 있는 $10 플랜도 존재한다.(영어)
그 밖의 개발 관련
인프라 관련
- INTRODUCING DAGGER: A NEW WAY TO CREATE CI/CD PIPELINES : Docker을 만들었던 Solomon Hykes가 Docker, Inc에서 물러난 후에 돌아와서 Docker 초기 멤버들과 만든 새 프로젝트를 공개했다. Dagger는 Buildkit과 CUE 기반으로 CI/CD 파이프라인으로 레고처럼 컴포넌트를 조립해서 원하는 CI/CD 파이프라인을 만들 수 있는 게 특징이다. 복잡해지는 인프라와 애플리케이션의 요구사항을 맞추기가 더 어려워지는 Dagger를 이용해서 파이프라인을 소프트웨어로 다루어서 다음과 같은 장점을 가지고 파이프라인을 지속적으로 개선시킬 수 있다고 하고 있다.(영어)
- 쓰고 버리는 스크립트로 파이프라인은 연결하는 대신 선언적인 언어와 API 재사용 가능한 액션을 조합해서 사용한다.
- 액션은 안전하게 공유하고 재사용할 수 있다.
- 파이프라인은 로컬에서 테스트하고 디버깅 한 뒤 어떤 CI 시스템에서도 돌릴 수 있다.
- 모든 액션은 자동으로 캐싱된다.
- Announcing Grafana Mimir, the most scalable open source TSDB in the world : Grafana에서 새로운 시계열 데이터베이스 Mimir를 오픈소스로 공개했다. Grafana Labs의 VP 테크놀로지인 Tom Wilkie는 Weaveworks에서 Julius Volz와 함께 Promethues의 장기 스토리지로 Cortex를 만들고 이를 CNCF에 기부했었다. 2019~2021년까지 Grafana Labs는 Cortex의 87% 정도를 기여했지만 Grafana의 사업상 AGPLv3 라이선스가 더 적합하고(이미 Grafana 프로젝트는 작년에 AGPLv3로 바꾸었고 Cortex는 Apache 라이선스다.) 기술에 대한 노력이 커뮤니티와 프로젝트에 다시 돌아올 수 있다고 얘기하고 있다. Mimir는 Cortex 1.10.0 버전을 포크해서 만들었고 Cortex보다 40배 빠르다고 하고 있다.(영어)
- Is Your Cluster Ready for v1.24? : Kuberentes는 2020년 12월 Dockershim 폐기 예정을 공지했다. dockershim은 Docker 엔진을 Kubernetes의 컨테이너 런타임으로 사용할 수 있게 한다. 프로젝트 정책에 따라 1년의 유예기간을 두고 곧 출시될 v1.24에서는 dockershim이 제거될 예정이다. Docker 엔진에 대한 의존성이 있는지 검사하고(Docker Desktop으로 이미지를 빌드하는 건 Docker 의존성이 아님) 의존성이 있다면 다른 컨테이너 런타임으로 바꾸어야 한다. AWS EKS, Azure AKS, Google GKE 같은 매니지드 Kubernetes를 사용한다면 특별히 커스터마이징 하지 않는 이상 신경 쓸 필요는 없다. 만약 Docker를 런타임으로 유지해야 한다면 dockershim의 대체 소프트웨어인 cri-dockerd를 사용해야 한다.(영어)
- GitOps Tutorial: How to Provision an EC2 Instance with Crossplane and Flux : Flux로 Git 소스 저장소를 등록하고 Kustomization을 이용해서 Crossplane으로 EC2 인스턴스를 생성해서 관리하도록 하는 흐름을 등록하는 과정을 설명하고 이를 테스트해볼 수 있는 예제 저장소를 제공한다.(영어)
볼만한 링크
IT 업계 뉴스
프로젝트
버전 업데이트
- React v18.0.0 : 자바스크립트 UI 라이브러리, 릴리스 공지
- JDK 18 GA : Java Development Kit, 릴리스 공지
- LLVM v14.0.0 : 컴파일러, 릴리스 공지
- mitmproxy 8 : HTTPS 프록시, 릴리스 공지
- faker.js v6.0.0 : JavaScript 랜덤 데이터 생성 라이브러리, 릴리스 공지
- Electron v18.0.0 : 크로스 플랫폼 데스크톱 애플리케이션 플랫폼, 릴리스 공지
- Chromium 100, V8 10.0으로 업그레이드
- undici v5.0.0 : Node.js HTTP 클라이언트, 릴리스 공지
- Go v1.18 : 프로그래밍 언어, 릴리즈 공지
- Vault v1.10 : 시크릿 정보 관리 도구, 릴리스 공지
- Remix v1.1.0 : 풀스택 웹 프레임워크, 릴리스 공지
- Remix 앱을 부트스트래핑할 수 있는 Remix Stacks 추가
- 실험적 Deno 지원
- Deno v1.20.0 : TypeScript 런타임, 릴리스 공지
- PgBouncer v1.17.0 : PostgreSQL 커넥션 풀, 릴리스 공지
- ESLint v8.12.0 : JavaScript 코드 분석 도구, 릴리스 공지
- GraphiQL v1.8.0 : GraphQL IDE, 릴리스 공지
- Parcel v2.4.0 : 웹 애플리케이션 번들러, 릴리스 공지
- Parcel CSS v1.7.0 : CSS 트랜스포머/미니파이어, 릴리스 공지
- Crossplane v1.7.0: 외부 인프라 관리용 Kubernetes 애드온, 릴리스 공지
- fish shell v3.24.0 : 쉘, 릴리스 공지
- pino v7.9.0 : Node.js 로거, 변경사항
- Vite v2.9.0 : 프론트엔드 빌드 도구, 변경사항
- React Native v0.68.0 : React를 이용한 모바일 앱 개발 프레임워크, 릴리스 공지
- Gatsby v4.11.0 : 정적 웹사이트 생성기, 릴리스 공지
- CDK for Terraform v0.10.0 : Terraform Cloud Development Kit, 릴리스 공지
- Spring Tools 4.14.0 : Spring 코딩 환경을 위한 도구, 릴리스 공지
- flow v0.175.0 : JavaScript 정적 타입 체커, 릴리스 공지
Outsider
2022/04/01 09:11
2022/04/01 09:11
Comments