Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

기술 뉴스 #209 : 22-11-01

웹개발 관련

  • Introducing Turbopack: Rust-based successor to Webpack : Webpack의 뒤를 이을 Turbopack을 Vercel에서 공개했다. Turbopack은 Rust로 작성된 JavaScript/TypeScript 증분 번들러이면서 빌드 시스템으로 Vercel에 따르면 Next.js 13에서 Turbopack을 이용했을 때 700배나 빨라졌다고 한다. Turbopack은 Rust의 증분 메모이제이션 프레임워크인 Turbo에 기반을 두고 있다.(영어)
  • Building an interactive WebGL experience in Next.js : Vercel이 이번 Next.js에서 방문자가 프리즘에 무지갯빛을 비추게 할 수 있는 기능을 구현했는데 이를 구현하는 과정을 설명한 글이다. 무지개를 사용자가 조정할 수 있게 하자는 아이디어를 구현하기 위해 React 컴포넌트에서 three.js를 사용할 수 있는 react-three-fiber를 이용해서 빛을 구현하는 방법을 단계적으로 보여주고 Bloom으로 시각 효과를 개선하고 three.js의 일반적인 패턴을 편하게 도와주는 drei를 성능을 최적화했다.(영어)
  • TypeScript 타입 시스템 뜯어보기: 타입 호환성 : TypeScript의 구조적 서브 타이핑을 이용한 타입 호환성을 자세히 살펴보는 글이다. 구조적 서브 타이핑은 명목적 서브 타이핑과 달리 객체의 프로퍼티가 같으면 타입을 허용하는 방식으로 덕 타이핑이라고도 부른다. 그래서 TypeScript에서도 같은 타입이 아니어도 프로퍼티가 같으면 타입 허용이 되는데 오브젝트 리터럴을 직접 전달하면 타입 호환이 되지 않는다. 이는 TypeScript가 객체의 Freshness를 추적하는데 Freshness는 타입 단언을 하거나 타입 추론으로 확장될 때 Freshness가 사라지게 된다. 오브젝트 리터럴은 Freshness가 사라지지 않았으므로 타입 호환이 되지 않은 것인데 오브젝트 리터럴을 허용하는 경우 불필요한 프로퍼티도 사용된다고 오해할 수 있고 타입의 오타가 있는 경우도 허용되는 문제가 있어서 이를 지원하지 않는 결정을 했다고 한다. 이를 허용하고자 않다면 타입에 Index signature를 포함할 수 있고 아니면 Branded type을 적용해서 지정한 타입 외에는 허용하지 않도록 할 수 있다.(한국어)
  • Using Default Exports Makes JavaScript Harder to Read! : JavaScript에서 export default를 사용하지 말라고 얘기하는 글이다. export default는 CommonJS의 호환성을 위해서 추가된 기능으로 보통은 사용할 일이 없고 오히려 export default를 사용하면 임포트할 때 함수 이름을 따로 고민해야 하고 모듈 전부를 임포트할 때 default가 어색하다고 얘기하고 있다.(영어)

그 밖의 개발 관련

  • Feature Toggles (aka Feature Flags) : 오랫동안 머지하지 않는 브랜치의 고통을 피하고자 피처 플래그를 이용해서 새로운 기능에 대한 피처 플래그에 대해 전반적인 내용을 설명하고 있다. 이 피처 플래그도 릴리스, 실험, 운영, 권한 등 목적에 따라 구분하고 피처 플래그를 사용할 때 주의할 점 등을 설명하고 있다.(영어)
  • veltrends 개발 후기 : Velopert님이 개발, IT, 디자인, 스타트업 소식을 한 번에 볼 수 있는 veltrends을 개발하면서 배운 내용을 정리해두었습니다. 처음 모바일 퍼스트로 서비스를 기획하면서 만들었고 풀 스택 프레임워크인 Remix를 사용하고 인프라는 Terraform으로 작업했고 Fastify와 Prisma도 적용했다고 합니다.(한국어)

인프라 관련

  • Your CI pipelines should be code: introducing the Dagger Go SDK : CI/CD 엔진인 Dagger의 Go SDK가 릴리스 되어 Go 언어를 이용해서 Dagger를 사용할 수 있다. Go가 첫 SDK로 다른 언어의 SDK는 요청을 받고 있다.(영어)
  • Introducing the Docker+Wasm Technical Preview : Docker의 Wasm 지원이 테크니컬 프리뷰로 공개되어 테크니컬 프리뷰 버전의 Docker Desktop을 다운로드 받으면 사용할 수 있다. 최근 이미지 관리를 containerd가 하게 바꾸면서 OCI 호환 아티팩트와 containerd shim을 모두 사용할 수 있게 되었고 CNCF 프로젝트인 WasmEdge와 협업해서 OCI 아티팩트에서 Wasm 모듈을 추출해서 WasmEdge 런타임에서 실행할 수 있게 하는 containerd shim을 만들었다고 한다. 이를 이용해서 새로운 shim을 사용할 수 있게 해서 Wasm을 지원한다. 실행할 때는 --runtime=io.containerd.wasmedge.v1로 cointainerd shim을 사용하도록 해야 하고 --platform=wasi/wasm32로 Wasm 런타임이 Wasm 바이너리를 변환할 수 있게 한다. 글에서 예제를 통해 실행해 볼 수 있는 예제를 제공한다.(영어)
  • Announcing Docker Hub OCI Artifacts Support : 기존에는 Docker Hub에 컨테이너 이미지만 저장해서 사용할 수 있었지만 이제 OCI 아티팩트도 지원하게 되었다. 이로써 컨테이너뿐 아니라 Helm 차트나 Docker 볼륨 등을 패키징해서 Docker Hub에 등록해서 관리할 수 있다. 이 글에서 Helm 차트나 볼륨을 등록하는 예제를 볼 수 있다.(영어)
  • Tracking Infrastructure with SSM and Terraform : Terraform을 사용할 때 SSM을 활용하는 방법을 설명한다. 인프라에는 잘 안 바뀌는 낮은 수준의 인프라도 있으므로 VPC를 만들 때 서브넷 정보 등을 SSM 파라미터 스토어에 저장하게 하고 자주 바뀌는 애플리케이션에서는 SSM 파라미터 스토어에서 서브넷 정보를 가져와서 사용하는 방법을 보여준다. 같은 방식은 S3나 VPC 엔드포인트에서도 활용할 수 있다.(영어)
  • Kurly만의 MLOps 구축하기 - 초석 다지기 : Kurly에서 학습에 사용하는 GPU를 좀더 자유롭고 효율적으로 사용하기 위해 MLOps 플랫폼을 만들기로 하고 그 과정의 첫번째 글이다. 필요할 때마다 GPU 인스턴스를 연결해야 하는데 Cloud Auto Scaler는 AWS의 오토 스케일링 그룹을 이용하지만 Karpenter는 직접 노드를 관리하기 때문에 더 빠르게 Karpenter를 사용하기로 했다고 한다.(한국어)

볼만한 링크

  • GitHub Copilot investigation · Joseph Saveri Law Firm & Matthew Butterick : GitHub Copilot을 조사하는 사이트이다. Copilot이 학습한 코드에 대해 문제를 제기하고 있고 오픈소스는 라이선스의 의무를 따르거나 라이선스의 예외 적용을 받는 공정 사용 둘 중 하나여야 하는데 Copilot이 라이선스 의무를 따를 수는 없으므로 공정 사용이어야 하고 실제로 GitHub에서도 공정 사용이라고 대답했다고 얘기하고 있다. 하지만 이에 대한 자료를 제공하지 않고 있고 AI의 공정 사용도 어떻게 적용될지 알 수 없고 일부에서는 라이센스 문제가 있는 코드도 학습에 사용되었다는 의혹도 제기되고 있다. 이 사이트에서는 AI 코딩을 반대한다기보다 GitHub Copilot에 문제를 제기하고 있고 잘못된 코드의 생산으로 오픈소스 생태계에 장기적으로 안 좋은 영향을 줄 수 있다고 하며 사용자들의 의견과 제보를 받고 있다.(영어)
  • The AT Protocol : 트위터를 만든 Jack Dorsey의 Bluesky 팀에서 기존에 발표했던 ADX를 AT 프로토콜(Authenticated Transfer Protocol)로 이름을 변경했다. AT 프로토콜은 federated 소셜 네트워크로 최신 분산 기술을 공개 네트워크로 통합한 것으로 한 서비스가 소셜 네트워크를 운영하는 것이 아니라 이메일처럼 여러 소셜 네트워크가 서로 통신할 수 있게 해주어 사용자는 원하는 프로바이더를 선택할 수 있게 해주는 프로토콜이다. 블루스카이 앱도 곧 공개할 예정이라고 한다.(영어)

IT 업계 뉴스

프로젝트

  • stc : swc를 만든 강동윤 님이 Rust로 만든 TypeScript 타입 체커
  • Stock News Article Summary by AI for you - musn129 : 미국 주식이 왜 오르고 떨어졌는지 뉴스를 찾아보는 게 불편해서 SQuAD 머신러닝 모델로 결과를 추론해서 주식별 뉴스를 요약해 주는 서비스. GeekNews의 소개 글 참고
  • Awful OSS Incidents : 오픈소스 생태계에서 발생했던 사고를 모아놓은 저장소로 상표권 침해, 프로그래밍 실수, 소유권 분쟁, 사용 분쟁 등으로 분류되어 있다.
  • tsx : esbuild를 이용한 TypeScript 실행기
  • FREETONE : Adobe와 Pantone이 색상으로 돈을 버는 것에 반대하며 컬러 팔레트를 만들어서 무료로 배포하고 있다. 결제과정을 거치지만 0원으로 결제할 수 있고 ase 파일을 다운로드 받을 수 있다.
  • fontaine : 폰트 메트릭으로 로컬 폰트를 폴백으로 사용해서 CLS를 줄여주는 라이브러리.
  • detek : 카카오에서 만든 Kubernetes 클러스터의 문제를 탐지하는 도구.
  • zoom-rec-dl : Zoom 클라우드의 녹화 파일을 로컬에 저장하는 스크립트

버전 업데이트

2022/11/01 09:04 2022/11/01 09:04