Outsider's Dev Story

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

기술 뉴스 #227 : 23-08-01

웹개발 관련

  • How React 18 Improves Application Performance : React 18의 새로운 기능으로 성능을 개선할 방법을 전체적으로 정리한 글이다.(영어)

    • 브라우저에서 성능을 측정할 때 Total Blocking Time(TBT)Interaction to Next Paint(INP)를 사용할 수 있는데 메인 스레드에서 50ms 이상 걸리는 작업을 긴 작업으로 간주하고 이게 성능에 영향을 주게 된다.
    • React는 Virtual DOM을 준비하는 렌더링 단계와 이 준비된 Virtual DOM을 실제로 적용하는 커밋 단계가 있는데 전통적인 동기식 렌더링에서는 모든 엘리먼트에 같은 우선순위를 제공해서 중단없이 한 번에 처리한다.
    • React 18에서는 Concurrent React가 도입되어 useTransition 훅과 startTransition을 사용해서 긴급하지 않은 렌더링을 지정할 수 있고 5ms마다 메인 스레드에 작업을 양보해서 다른 중요한 작업을 할 수 있게 백그라운드에서 여러 컴포넌트 트리를 동시에 렌더링할 수 있다.
    • React Server Component를 직렬화된 컴포넌트 트리를 클라이언트에 전송할 수 있으므로 JavaScript 번들 없이도 컴포넌트 트리를 재구성할 수 있게 되어 하이드레이션 비용 없이 사용할 수 있다.
    • Suspense를 통해 특정 조건까지 렌더링을 지연시킬 수 있고 사용자의 상호작용에 따라 컴포넌트의 우선순위를 재조정할 수 있어서 데이터 불러오기가 많은 경우 더 원활한 경험을 제공할 수 있다.
    • 추가로 React 18에는 래핑 된 함수 결과를 기억하는 cache 함수가 있어서 매번 호출할 필요 없이 저장된 값을 재사용할 수 있다.
  • Jotai tutorial : React의 상태 관리 라이브러리인 Jotai를 배울 수 있는 공식 튜토리얼이 공개되었다.(영어)

그 밖의 개발 관련

  • Scaling merge-ort across GitHub : GitHub은 뒤에서 수많은 머지와 리베이스를 실행하고 있기 때문에 머지/리베이스의 성능 개선은 중요하다. 머지/리베이스의 전제 조건은 빨라야 하고, 정확해야 하며, 보안을 위해 워킹 디렉터리 없애서 체크아웃할 수 없게 해야 한다는 점이다. 전에는 Git 기본 전략보다 빠른 libgit2를 사용했는데 종종 정확성에서 차이가 나서 로컬에서는 병합되는데 왜 GitHub UI에서는 안 되는지에 관한 문의를 받곤 했다. Git에는 2년 전 새로운 머지 전략인 merge-ort가 도입되었고 기존 전략인 merge-recursive 보다 빠르고 워킹 디렉터리도 필요치 않은 데다가 이젠 Git의 기본 머지 전략이 되었다. 이를 도입하기 위해 머지에 먼저 점진적으로 GitHub에 도입했고 P50에서 10배, P99에서 5배가 빨라졌으며 리베이스에 도입할 때는 git-replay 명령어를 활용했는데 512시간이 걸릴 리베이스가 merge-ort에서는 33시간 걸렸다.(영어)
  • What is a merge queue, and does your team need one? : GitHub 등에서 Stacked Changes를 지원하는 Graphite에서 얼마 전에 GitHub에 추가된 merge queue 기능이 왜 필요한지 정리한 글이다. Pull Request로 작업하는 경우 각 PR의 CI는 통과했는데 머지 후에는 실패하는 경우가 있다. 이 main이 깨지는 문제를 막기 위해 브랜치 보호 규칙으로 항상 최신 상태를 유지하도록 하면 모든 PR을 매번 리베이스해야 하는 리베이스 지옥이 펼쳐지게 되는데 이러한 문제를 머지큐로 해결할 수 있다. 머지큐를 이용하면 PR 간 머지될 순서를 결정하고 각 PR을 검사하면서 머지할 수 있게 되므로 단순하게는 머지 속도가 느려질 수 있지만 변경 사항이 많거나 CI가 길다면 머지 큐로 속도를 더 높일 수 있다.(영어)
  • Metrics for issues, pull requests, and discussions : 저장소의 이슈, 풀 리퀘스트, 디스커션에서 첫 반응에 걸리는 시간, 종료될 때까지의 시간, 대답하는 데 걸리는 시간 등 통계를 볼 수 있는 Issue Metrics Action GitHub Actions를 GitHub에서 만들어서 제공한다.(영어)

인프라 관련

  • Improving query performance in Grafana Mimir: Why we dropped mmap from the store-gateway : Prometheus의 롱텀 스토리지인 Grafana Mimir의 쿼리 속도 개선 과정이다. Mimir는 Prometheus TSDB 형식을 사용하지만, 단일 노드가 아닌 S3나 GCS에 저장할 수 있도록 설계되었으므로 Prometheus TSDB 블록 인덱스의 서브셋인 index-header를 사용해서 store-gateway가 쿼리에 일치하는 블록이 어디 있는지에 대한 정보를 제공한다. 이를 통해 블록의 서브셋만 검색해서 쿼리 속도를 개선할 수 있다. 파일을 메모리처럼 호출할 수 있는 mmap을 사용하고 있었는데 Go 언어의 고루틴에서 mmap을 사용할 때 고루틴이 블로킹 되어 속도가 느려지는 문제를 파악했고 이를 일반 파일 I/O로 바꾸면서 속도를 개선하기 위해 Beffered I/O를 사용하고 index-header를 위한 파일 핸들 풀을 사용하고 레이블에 대한 문자열을 생성 안 하게 해서 성능을 개선했다고 한다.(영어)
  • Platform engineering is just DevOps with a product mindset : DevOps가 각 조직에 도입된 이후 많은 생산성 개선을 한 조직도 있지만 그 중간에 있는 조직도 많이 있다. 플랫폼 엔지니어링은 DevOps의 다음 단계로 많은 주목을 받고 있는데 DevOps 도입의 가장 큰 문제는 과도한 인지 부하이다. 클라우드 네이티브 기술의 도입으로 수많은 클라우드와 관련 도구를 사용해야 하므로 인지 부하가 높아지고 이런 걸 잘하는 사람이 팀의 인프라 작업을 처리하는 섀도 운영팀원이 되어 오히려 생산성을 떨어뜨리게 된다. 플랫폼 엔지니어링의 핵심 원칙은 제품 사고방식을 취하는 것이고 개발자를 고객으로 생각해서 적절한 추상화를 통해 인지 부하를 완화해야 한다.(영어)
  • Kubeflow brings MLOps to the CNCF Incubator : Kubernetes 용 머신러닝 툴킷인 Kubeflow가 CNCF의 인큐베이팅 프로젝트가 되었다.(영어)

볼만한 링크

  • The risks of AI are real but manageable : 빌 게이츠가 적은 글로 AI의 등장으로 불안감을 느끼는 것은 당연하지만 역사를 보면 새로운 기술로 인한 문제를 해결할 수 있다는 걸 보여준다면서 낙관적인 입장을 보여주고 있다. 다음의 주요 사안들에 대한 생각을 얘기하면서 인류가 AI의 위험을 관리하면서 이점을 극대화할 수 있다고 강조하며 대신 빠르게 움직여야 한다고 얘기하고 있다. 모든 사람이 가능한 한 AI의 발전을 따라가길 권장하고 있다.(영어)

    • AI가 생성한 딥페이크와 잘못된 정보는 선거와 민주주의를 훼손할 수 있다. 하지만 지금의 사기 사건에서도 그렇듯이 사람들이 모든 것을 그대로 받아들이지 않는 법을 배울 것이고 AI가 딥페이크 식별에도 도움을 줄 수 있게 될 것이다. 결국 순환되어 완전히 막지는 못하겠지만 완전히 무력해지지도 않을 것이다.
    • AI로 사람과 정부에 대한 공격이 쉬워진다. 지금도 해킹 등 수많은 공격이 있지만 AI로 더욱 가속화될 것이므로 이를 막기 위한 노력도 계속 해야 한다.
    • AI가 사람들의 일자리를 빼앗을 것이다. AI로 인해서 생산성이 높아지겠지만 AI 기반의 업무환경으로 인해 근로자에게 지원과 재교육도 필요해지는데 이는 정부가 기업이 해야 할 일이다. 기술의 도입으로 노동 시장이 변화한 것은 이번이 처음이 아니다.
    • AI는 우리의 편견을 이어받아서 무언가를 만든다. AI는 맥락을 이해한 것이 아니라 사람들이 가장 할 법한 말을 하므로 할루시에이션이 생기는 것인데 시간이 지나면 사실과 허구를 구분할 수 있을 거라고 낙관한다. AI를 사용하는 사람이 자신의 편견뿐 아니라 AI의 편견도 확인해야 한다.
    • 학생들이 글쓰기를 배우지 않는 이유는 AI가 대신 글을 써주기 때문이다. AI 때문에 글쓰기를 배우지 못할까 봐 걱정하기도 하지만 어떤 교사는 AI의 사용법을 알려주고 있다. 과거에도 계산기가 등장했을 때 학생이 산수를 배우지 않을까 봐 걱정했지만, 누군가는 기술을 받아들이고 사고력을 가르쳤다. 그리고 교육용 소프트웨어가 성취도 격차를 줄이는 데 도움이 되는지도 확인해야 한다.
  • The Fall of Stack Overflow : 최근 1년 반 동안 Stack Overflow의 접속자 수와 투표/글 등 사용자 참여가 50% 까까지 감소하고 있다고 한다.(영어)
  • Announcing OverflowAI : Stack Overflow에서 5,800만 개의 질문/답변을 기반으로 검색에 적절한 질문을 찾아주는 대신 AI가 답변을 주어 대화형으로 검색할 수 있게 하는 OverflowAI를 발표했다. 로드맵의 발표라 아직 사용해 볼 수는 없다.(영어)

IT 업계 뉴스

  • R.I.P. Kevin David Mitnick : 유명한 해커 Kevin David Mitnick님이 지난 7월 16일 췌장암으로 59세의 나이로 별세하셨다. 삼가 고인의 명복을 빕니다.(영어)
  • Dan Abramov의 Meta 퇴사 : React에 유명한 개발자 Dan Abramov가 Meta에서 퇴사하기로 하면서 감상을 트위터에 남겼다. React 팀에서 일한 건 영광이었고 이젠 React가 Meta 단독 프로젝트가 아니므로 퇴사 후에도 프로젝트 미팅 등에는 참여할 예정이고 그동안 문서작업과 Suspense 때문에 퇴사를 미루고 있었는데 이제 둘 다 릴리스해서 퇴사하기로 했다고 한다. 그동안 글쓰기도 많이 하고 커뮤니티와 연결 역할에도 시간을 많이 썼고 관심 있는 분야이지만 자신의 부족함도 많이 느꼈다고 한다. 앞으로 뭘 할지는 아직 정해진 것이 없다고 한다.(영어)
  • Introducing Llama 2 : Meta에서 Llama 1에 비해 40% 많은 데이터를 학습시킨 LLM(Large Language Model) Llama 2를 오픈소스로 공개했다.
  • GitHub Copilot Chat beta now available for every organization : GitHub Business 사용자는 채팅으로 도움받을 수 있는 Copilot Chat을 베타로 VS Code와 Visual Studio에서 사용할 수 있게 되었다.(영어)
  • 더스윙, 240억에 타다 인수한다 : 공유 전동킥보드 운영사인 더 스윙이 토스를 운영하는 비바리퍼블리카가 보유한 타다(VCNC)의 경영권 지분 60%를 240억 원에 인수하기로 했다.(한국어)

프로젝트

버전 업데이트

2023/08/01 01:33 2023/08/01 01:33