Outsider's Dev Story

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

기술 뉴스 #218 : 23-03-16

웹개발 관련

  • 2023 Web Framework Performance Report : 모던 프레임워크가 현실에서의 성능과 Core Web Vitals에 미치는 영향을 파악하기 위해 CrUX, HTTP 아카이브, Core Web Vitals 기술 보고서를 통해 공개된 데이터를 바탕으로 각 프레임워크를 비교한 보고서로 Astro, Gatsby, Next.js, Nuxt, Remix, SveltKit를 선정했고 비교를 위해 WordPress의 데이터도 같이 보았다. 각 웹 프레임워크의 Core Web Vitals의 각 항목과 Lighthouse로 비교한 결과를 보여주고 있다. Astro에서 공개한 보고서이지만 공개 데이터를 사용했고 직접 테스트한 것은 없다고 강조하고 있다.(영어)
  • Chrome’s Headless mode gets an upgrade: introducing --headless=new : 2017년에 도입된 크롬의 헤드리스 모드는 --headless 플래그를 사용해서 크롬의 모드 중 하나인 것처럼 보이지만 실제로는 완전히 별도의 구현체가 사용되는 것이었다. 그래서 크롬과 헤드리스 크롬은 다른 버그를 가지고 있었고 유지보수하기도 쉽지 않은 문제가 있었다. Chrome 112부터 --headless=new로 사용할 수 있는 새로운 헤드리스 크롬은 크롬과 같은 구현체를 사용한다. 기존 헤드리스 모드는 --headless=old로 여전히 사용할 수 있다. Puppeteer/WebDriver로 새로운 헤드리스 크롬을 사용하는 방법과 관련 옵션이 정리되어 있다.(영어)
  • Framework-defined infrastructure : Vercel에서 Infrastructure as Code의 발전된 형태로 Framework-defined infrastructure(FdI)를 설명하는 글이다. 기존 IaC의 필요성은 충분했지만, 인프라를 따로 관리했어야 했는데 FdI에서는 클라우드의 리소스를 추상화해서 애플리케이션 배포할 때에 인프라에 자동으로 매핑될 수 있게 한다. Next.js를 예로 들면 배포할 때 빌드된 정적 파일은 CDN 등에 올리고 컴퓨팅 파워가 필요한 서버 코드는 서버리스를 이용하게 된다. 클라우드의 서버리스 인프라는 매번 새로 만들 수 있으므로 이러한 구현이 가능해졌으며 불변 배포를 통해 배포와 인프라를 매핑할 수 있다.(영어)
  • Yarn 대신 pnpm으로 넘어간 3가지 이유 : Airbridge에서 pnpm으로 갈아타고 1년이 지난 후 경험을 공유한 글이다. 기존에 Yarn Berry를 사용했는데 PnP 모드로 패키지를 압축해서 저장하기에 오히려 Git에 부하를 준다고 생각했고 pnpm은 node_modules에 직접 설치하지 않고 전역 저장소에 설치한 패키지를 심볼릭 링크로 관리했기 때문에 효율적이었고 모노레포 관리도 pnpm이 더 편했다고 한다. Yarn 대비 패키지 설치 속도도 줄어들었고 만족하고 있다고 한다.(한국어)
  • Why Turborepo is migrating from Go to Rust : 빌드시스템인 Turborepo는 esbuild를 따라 Go로 작성되었지만 1.7 버전부터는 Rust로 점진적인 마이그레이션을 하기로 했다. 단순성을 선호하고 네트워크 컴퓨팅에 강점이 있는 Go가 Turborepo에에서는 어울리지 않았고 Rust의 타입 시스템과 세이프티 기능으로 충분한 가드레일을 배치할 수 있었기 때문에 유리한 점이 많았다. 또한 C/C++ 라이브러리를 사용할 때도 Rust가 유리했고 팀도 Rust를 더욱 쓰고 싶어 했다고 한다. Rust-Go-Rust 샌드위치 방식으로 점진적인 마이그레이션을 진행 중이다.(영어)

그 밖의 개발 관련

  • You Don't Need a Build Step : Deno에서 쓴 글이라 결국 Deno와 Fresh를 강조하는 글이긴 한데 생각해 볼 지점은 있다고 생각한다. Node.js와 브라우저 자바스크립트는 호환되지 않는데 Node.js는 파일 시스템 기반이고 브라우저 자바스크립트는 비동기적으로 스크립트와 리소스를 가져오기 위해 만들어졌다. 개발 환경을 개선하기 위해서 빌드 도구가 발명되었지만, 개발자 경험이 증가하는 만큼 빌드 복잡도는 증가하기 시작했고 요즘 도구는 빌드 도구는 컴파일, 압축, 번들링, 코드 분할로 나뉘어져 진행되고 있다. 결론에 동의하진 않지만 Deno와 Fresh는 이러한 과정이 필요 없다고 얘기하고 있다.(영어)
  • 파이썬과 러스트 : 카카오 추천팀에서 사용자 지표를 처리하는 플랫폼을 개발하면서 Python으로 프로토타이핑 후 Rust로 다시 개발해서 둘을 비교한 과정을 정리했다. Rust가 빠르면서 메모리와 CPU도 훨씬 적게 사용했지만, Rust의 학습 난이도는 꽤 있었으며 Python이 쉬운 언어이지만 타입 어노테이션도 쓰고 하다 보니 둘의 생산성 차이는 크게 느끼지 못했고 오히려 Rust의 컴파일 시간이 긴 것은 단점이었다고 한다.(한국어)
  • Announcing OpenChatKit : AI용 분산 클라우드를 제공하는 Together에서 소스 코드, 모델 가중치, 트레이닝 데이터 세트를 포함한 OpenChatKit을 오픈소스로 공개했다. OpenChatKit은 GPT를 이용하는 챗봇을 만들 수 있게 개발되었으며 목적에 맞게 파인 튜닝도 지원하고 있다.(영어)
  • Feature Toggle 150% 활용하기 : 배포할 때 코드는 포함하더라고 기능의 공개 여부는 동적으로 관리하는 Martin Fowler의 Feature Toggles 글을 공부하고 이를 실제 업무에 적용해 가면서 개선한 내용이다. 피처 토글의 설계 원칙에 따라 토글 포인트, 토글 라우터, 토글 설정을 구현하는 Java 코드를 보여주고 이를 권한 토글과 카나리 토글에 활용하는 방법을 설명한다.(한국어)
  • Introducing Service Weaver: A Framework for Writing Distributed Applications : Google에서 분산 애플리케이션을 만들고 배포하는 프레임워크 Service Weaver를 오픈소스로 공개했다. Service Weaver를 사용하면 모듈식 모노리스로 애플리케이션을 만들어서 마이크로서비스 배포할 수 있어서 애플리케이션 작성 프로세스와 마이크로서비스 배포 프로세스를 분리할 수 있게 된다.(영어)
  • GitHub Actions Importer is now generally available : Azure DevOps, CircleCI, GitLab, Jenkins, Travis CI에 설정한 워크플로우를 GitHub Actions로 가져오는 임포터가 모두가 이용할 수 있도록 공개되었다.(영어)

인프라 관련

  • Introducing Rust-Based Ztunnel for Istio Ambient Service Mesh : Istio의 ambient mesh를 위한 ztunnel(zero trust tunnel) 컴포넌트는 HTTP 트래픽을 종료하거나 헤더를 파싱하지 않고 mTLS, 인증, L4 인가, 텔레메트리를 위한 기능을 가지고 있으며 Kubernetes 워커 노드에서 실행되어 최소한의 리소스 풋 프린트를 남기는 것이 중요하다. 작년 처음 공개했을 때 ztunnel은 Envoy 프락시로 구현했지만 ztunnel에는 Envoy가 적합하지 않다고 판단했다고 합니다. ztunnel이 Istiod와 통신할 수 있는 최소한의 구현만 할 수 있게 구성 프로토콜을 만들고 Rust로 빠르고 가볍게 구현했다고 한다. Istio에서 Go를 쓰고 있어서 Go로 목적을 달성하길 원했으나 Rust와 Go로 모두 구현해 본 결과 Rust가 더 적합하다고 판단했다고 한다.(영어)
  • Reducing Costs and Improving Observability With Loki : ActiveCampaign이라는 회사에서 ELK(Elasticsearch, Logstash, Kibana)로 로그 시스템을 운영하다가 비용이 너무 커져서 Loki로 갈아타기로 했다고 한다. 프로덕션에 적용할 때는 최적화가 쉽지는 않았지만, 완전히 이전하고 난 뒤에는 이전보다 로그 관련 호스팅 비용을 73% 줄일 수 있었다고 한다.(영어)
  • SRE vs. Platform Engineering vs. DevOps : SRE, 플랫폼 엔지니어링, DevOps를 비교해서 설명하는 글로 간단한 글이지만 핵심을 잘 짚었다고 생각한다. SRE는 운영에 소프트웨어 엔지니어링 접근을 도입한 것인데 이를 리브랜딩이라고 생각할 수 있지만 프로덕션 프로세스의 사전 예방과 자동화에 중점을 두고 있다. 플랫폼 엔지니어링은 개발자 셀프서비스를 지원하는 플랫폼을 구축한다. SRE는 위기관리를 즐기고 장애 문제 해결을 좋아하는 경향이 있지만 플랫폼 엔지니어는 전형적인 소프트웨어 엔지니어로 중단없이 작업하는 것을 선호한다.(영어)
  • Leveraging platform engineering and DevOps synergy for high-performance systems : 작년 10월부터 관심이 늘고 있는 플랫폼 엔지니어링을 설명하는 글이다. 플랫폼 엔지니어링은 개발자가 셀프서비스를 할 수 있게 하는 데 집중하고 인프라 관리를 자동화하고 추상화하여 툴체인의 관리 부담과 개발자의 인지 부하를 줄이는 것이 목적입니다. DevOps는 여전히 중요한 개념으로 플랫폼 엔지니어링은 누구나 DevOps에 접근할 수 있게 한다.(영어)

볼만한 링크

  • Business 관점에서 바라본 AI : 많은 스타트업 창업과 투자를 했던 노정석 대표가 비즈니스 관점으로 AI를 어떻게 봐야 하는지 AI 시장의 상황과 예측을 정리한 66장짜리 PDF 문서이다. LLM은 기본적으로 Computation Infra 싸움이고 이전엔 트레이닝만 얘기했지만 이젠 서비스 제공으로 넘어오면서 완전히 다른 게임이 되었기에 AI 회사에서 PM은 AI 논문도 이해하고 테스트하고 비즈니즈도 알아야 하는 상황이 되어 버렸다. AI 산업에서 value capture가 일어나는 곳을 Tesla처럼 풀스택 서비스를 구축해서 버티컬 영역을 독점하거나 LLM을 API로 제공하는 서비스만 남을 것이라고 얘기한다. 인사이트가 많이 담긴 좋은 문서다.(한국어)
  • Utterances 에서 Giscus 로 마이그레이션하기 : GitHub의 이슈를 댓글 시스템으로 쓰는 Utterances가 있는데 최근에는 GitHub의 디스커션으로 댓글 시스템도 나왔다. Utterances도 좋긴 하지만 제약이 좀 있어서 Giscus를 설정하고 수동으로 마이그레이션하는 방법을 정리한 글이다.(영어)

IT 업계 뉴스

  • GPT-4 is OpenAI’s most advanced system, producing safer and more useful responses : OpenAI에서 GPT-3.5보다 개선된 GPT-4를 공개했다.(영어)
  • Introducing ChatGPT and Whisper APIs : OpenAI에서 ChatGPT와 Whisper를 이용할 수 있는 API를 공개했다. Whisper는 음성을 텍스트로 변환하는 모델이다. 그동안 시스템 개선을 통해 ChatGPT의 비용을 90% 절감해서 1천 토큰당 $0.002의 가격을 책정할 수 있었고 ChatGTP와 같은 gpt-3.5-turbo 모델을 사용한다. Whisper는 $0.006로 책정되었다.(영어)
  • The next generation of AI for developers and Google Workspace : Google에서 제너레이티브 AI를 사용할 수 있는 PaLM API와 프로토타이핑을 할 수 있는 도구인 MakerSuite를 발표하고 Gmail과 Google Docs 등 Google Workspace에서도 제너레이티브 AI를 사용할 수 있게 될 것이라고 발표했다. 아직은 클로즈 베타로 Google 내부에서 허락된 파트너는 몇 주내에 사용해 볼 수 있을 것이라고 한다.(영어)
  • Unleash your potential with GitHub Octernships: a path to a thriving tech career : GitHub에서 파트너사에서 실무 프로젝트를 하며 보수를 받을 수 있는 인턴쉽 프로그램 GitHub Octernships을 공개했다. 인도, 싱가포르, 인도네시아, 말레이시아, 베트남, 필리핀, 태국, 멕시코, 나이지리아, 콜롬비아 10개국에서 시작하며 점점 확대할 예정이며 지원할 학생은 글로벌 캠퍼스 인증을 받고 GitHub에서 활동하면서 Octernships에 등록되는 프로젝트를 살펴봐야 한다. 추가로 파트너사도 같이 모집하고 있다.(영어)
  • ‘276조’ 실리콘밸리은행은 왜 48시간 만에 붕괴했나 : 지난 40년간 실리콘밸리 스타트업을 지원해 온 실래콘밸리은행(SVB)이 뱅크런 이후 2일 만에 파산했다. SVB는 언제든 상황은 요청할 수 있는 예금자들에게 저금리로 단기 자금을 모아서 급속도로 성장했지만, 미국 금리가 오르면서 그동안 사두었던 장기채권의 가치가 하락했고 IPO 시장도 둔화하여 자금 도달도 둔화하면서 손실을 발표하다 뱅크런이 발생했다.(한국어)
  • Update on Meta’s Year of Efficiency : Meta의 마크 주커버그가 4월에는 기술 그룹에서 5월에는 비즈니스 그룹에서 구조 조정을 할 것이라고 발표하며 10,000명을 해고하고 5,000개의 채용을 닫을 것이라고 했다. 힘들 결정이었음을 강조하며 수평 조직, 린 조직, 기술의 중요성, 효율성을 위한 도구 개발, 동료들과 대면이 중요한 문화임을 강조했다.(영어)
  • 공정위 "로톡 이용금지 중단하라"…변협 등에 과징금 20억원 : 대한변호사협회가 소속 변호사에게 로톡 서비스의 이용을 금지하고 잇었는데 이것이 위법이라는 공정위의 판단과 함께 과징금이 부과되었다.(한국어)
  • 이글루스 서비스 종료 안내 : 블로그 서비스인 이글루스가 2023년 6월 16일부로 서비스 종료를 공지했다. 3월 13일부터 신규 회원 가입과 신규 블로그 개설도 중지된다.(한국어)

프로젝트

  • nat.dev: GitHub의 전 CEO인 Nat Friedman이 공개한 다양한 제너레이티브 AI의 모델을 테스트해보고 한 번에 속도와 결과도 비교해 볼 수 있는 플레이그라운드
  • Visual ChatGPT : ChatGPT와 연결해서 채팅 중 이미지를 주고받을 수 있는 Visual ChatGPT 논문의 Microsoft 공식 저장소
  • ChatGPT app for Slack : OpenAI에서 ChatGP용 Slack 앱을 공개했다. 지금은 베타 테스트를 신청해야 한다.
  • Rspack : ByteDance에서 Rust로 만든 웹 번들러
  • proto : JavaScript, Deno, Go을 지원하는 툴체인/의존성 관리자

버전 업데이트

  • Terraform v1.4 : Infrastructure as Code 도구, 릴리스 공지

    • CLI로 실행할 출력도 Terrafrom Cloud에서 제대로 보여줌
    • CLI에서 Open Policy Agent의 결과도 출력
    • 내장된 terraform_data의 추가로 null_resource 프로바이더를 대체함.
  • Vault v1.13 : 시크릿 정보 관리 도구, 릴리스 공지
  • Nomad v1.5 : 워크로드 오케스트레이터, 릴리스 공지

    • SSO와 OIDC 지원
    • 동적으로 수정할 수 있는 노드의 메타데이터
  • Consul 1.15 : 서비스 디스커버리/설정 도구, 릴리스 공지

    • Envoy 엑세스 로그 설정을 중앙에서 쉽게 관리 가능
    • Consul Envoy 익스텐션 지원으로 Envoy의 리스너, 라우터, 클러스터, 엔드포인트를 수정 가능
    • 서비스 메시의 서비스 간 통신 문제를 해결하기 위한 troubleshoot 명령어 제공
  • containerd 1.7.0 : 컨테이너 런타임, 릴리스 공지

    • containerd의 shim을 관리하는 새로운 방법을 제공하고 Pod나 VM같은 멀티 컨테이너 환경을 위한 유연성과 기능을 제공하는 실험적 샌드박스 API 지원
    • OCI 호환 컨테이너 런타임에 플러그인 확장을 위한 공통 프레임워크를 위한 실험적 Node Resource Interface(NRI) 지원
  • GitHub Desktop v3.2 : GitHub 데스크톱 애플리케이션, 릴리스 공지

    • Pull Request 미리보기 기능으로 Pull Request 올리기 전에 변경 사항을 확인할 수 있다.
  • Turbo v7.3.0 : 싱글 페이지 애플리페이지의 변경을 관리하는 라이브러리, 릴리스 공지
  • Remix v1.14.0 : 풀스택 웹 프레임워크, 릴리스 공지

    • React Refresh를 통한 HMR/HDR을 지원하는 새로운 개발 서버 지원
  • ESLint v8.36.0 : JavaScript 코드 분석 도구, 릴리스 공지
  • FastAPI v0.94.0 : Python 웹 프레임워크, 릴리스 공지
  • Meteor v2.11.0 : 웹앱 플랫폼, 릴리스 공지
  • Relay v15.0.0 : 데이터주도 Recat 애플리케이션용 프레임워크, 릴리스 공지
  • Grafana Agent v0.32 : Grafana 스택의 에이전트, 릴리스 공지
  • Ionic v6.6 : 하이브리드 모바일 앱 프레임워크, 릴리스 공지
  • astro v2.1 : 정적 사이트 빌더, 릴리스 공지
  • pnpm v7.29.0 : Node.js 패키지 매니저, 릴리스 공지
  • Nuxt.js v3.3.0 : 서버렌더링 Vue.js 애플리케이션 프레임워크, 릴리스 공지
  • Node.js v18.15.0 (LTS) : 자바스크립트 런타임, 릴리스 공지
  • Node.js v19.8.0 (Current) : 자바스크립트 런타임, 릴리스 공지
  • Spring Tools 4.18.0 : Spring 코딩 환경을 위한 도구, 릴리스 공지
2023/03/16 02:38 2023/03/16 02:38