Outsider's Dev Story

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

기술 뉴스 #216 : 23-02-15

웹개발 관련

  • Announcing Interop 2023 : 브라우저 간의 구현 차이는 많은 문제를 일으키므로 이를 해결하기 위해서 웹 플랫폼 테스트를 공유해서 모든 브라우저가 테스트하도록 하고 있다. Interop 프로젝트는 2022년부터 Apple, Bocoup, Google, Igalia, Microsoft, Mozilla가 협력한 프로젝트로 웹의 상용 운용성 개선하기 위한 프로젝트이다. Iterop 2022에서 여러 플랫폼의 상호 운용성이 많이 개선되었고 올해도 Iterop 2023를 발표하게 되었다. Iterop 2023에서는 Focus ares와 Investigation의 개선에 집중하고 있는데 웹 플랫폼 테스트에서는 이미 높은 수준의 사양과 우수한 테스트 커버리지를 가진 플랫폼을 중점적으로 다루며 "Active focus area"는 올해 점수에 기여한 영역이고 "Inactive focus ares"는 개선이 예상되지 않는 전년도의 포커스 영역이다. 각 브라우저의 테스트 점수도 보여주지만, Gecko, WebKit, Blink가 모두 통과한 테스트는 Interop 점수로 계산해서 모든 브라우저에서 안정적으로 동작하도록 하고 있다. Investigation는 상호운용성이 부족한데 테스트 통과만으로는 개선할 수 없는 영역을 조사하는 것으로 모바일 플랫폼과 접근성 API에서 테스트 인프라가 불충분하다고 생각해서 이 부분에 집중할 예정이다.(영어)
  • Container queries land in stable browsers : 컨테이너 쿼리를 이제 모든 주요 브라우저에서 사용할 수 있게 되었다. 컨테이너 쿼리는 container-type이나 containercardinline-size를 지정해야 하고 미디어쿼리를 사용하듯이 부모 요소의 스타일 정보를 알 수 있게 되므로 재사용할 수 있는 컴포넌트에서 유용하다. 사이트에서 컨테이너 쿼리를 사용하는 예시를 제공하므로 직접 사용해 볼 수 있다.(영어)
  • Servo 2023 Roadmap : Mozilla에서 만들다가 2020년 Linux 재단으로 옮겨진 브라우저 엔진 Servo가 올해는 펀딩받으면서 로드맵을 발표했다. 올해 프로젝트를 다시 활성화하고 협력자와 스폰서를 모집하고 한동안 업데이트되지 않던 기능을 다시 업데이트한다고 한다.(영어)
  • Mock.shop API : Shopify에서 Storefront API를 테스트할 수 있는 Mock API를 공개했다. GraphQL API를 제공하면 curl, fetch, graphql-request, Apollo, Remix별로 예시도 같이 제공해주고 AI를 사용해서 프롬프트를 입력하면 API로 전환해 주지만 다양한 프롬프트를 지원하진 않는다.(영어)

그 밖의 개발 관련

  • A Gentle Introduction to CRDTs : 동시 편집 에디터 등에서 사용하는 CRDT(Conflict Free Replicated Data types)가 어떻게 동작하는지 설명한다. CRDT는 오프라인에서도 문서를 수저하고 온라인이 되면 동기화가 이루어져서 같은 결과본을 갖게 되므로 지연 동기화를 할 수 있고 서버리스 싱크도 가능하게 된다. 이를 CRDT없이 구현하려면 마지막에 수정된 변경 사항을 선택해야 하는데 분산된 상황에서 마지막 변경 사항임을 알기 위해서 시간 값을 사용하는 것은 많은 문제가 생기게 되므로 CRDT는 이를 논리적 시계로 만들어서 구현한다. 각 상황에서 실행해 볼 수 있는 예제를 제공하고 있다.(영어)
  • The evolution of Facebook’s iOS app architecture : 페이스북이 iOS 앱을 재작성한 지 10년이 지난 후 다른 iOS 앱과는 많이 다른 구조가 되었는데 이렇게 변화하게 된 이유를 설명한다. 앱을 재작성하고 2년 뒤에(2014년) 안정성 문제가 발생하면서 기존 설계가 지속 가능하지 않다고 판단하고 React를 조사했으나 Apple SDK에는 선언적 UI가 없었다. 그래서 직접 UI 프레임워크인 ComponentKit을 만들고 50%의 성능이 향상되었다. 2015년에는 사용자가 증가하면서 기능이 추가되면서 느려지기 시작했고 동적으로 코드를 로드하는 Dylibs를 도입해서 느려지는 문제는 막았지만, 아키텍처를 재설계해야 함을 느끼게 되었다. 2017년에 Dylibs의 문제를 해결하기 위해 빌드시스템인 Buck을 도입했고 2018년에는 코드 생성을 할 수 있게 되어 런타임 기반 앱 모듈 시스템이 되었다. 2020년에 Swift가 대세가 되었지만, C++ 기반인 FBiOS와 Swift의 궁합은 좋지 않아서 Swift를 쓰기 위해 아키텍처를 변경하게 되었다.(영어)
  • The technology behind GitHub’s new code search : 아직 베타이지만 GitHub의 새로운 코드 검색 기능은 Blackbird라고 부르는 Rust로 만든 검색엔진을 사용한다. 일반적인 텍스트 검색은 코드 검색에 맞지 않았고 Elasticsearch로 처음 만들었을 때 800만 개의 저장소를 색인하는데 여러 달이 걸렸지만, 지금은 저장소가 2억 개가 넘고 코드도 계속 변화하기 때문에 검색엔진으로 처리하기가 어려워서 직접 만들기로 했다고 한다. 인덱스를 설계하고 효율적으로 인덱스하기 위해 Git의 ObjectID로 샤드를 나누고 델타 인코딩으로 인덱스 할 양을 줄여서 155억 개의 문서를 18시간 만에 인덱싱할 수 있게 했고 Kafka로 push 이벤트에 따라 인덱스에 추가되도록 했다. 사용자 검색할 쿼리 서비스가 따로 있어서 쿼리를 처리하고 있으며 p99는 100ms 정도를 보여주고 있다.(영어)
  • GitHub Copilot now has a better AI model and new capabilities : GitHub Copilot의 지속적인 개선으로 2022년 6월 처음 런칭했을 때는 27%였던 코드 수락률이 이제 35%로 올라가게 되었다. 이는 Codex 모델이 업그레이드되었고 FIM(Fill-In-the-Middle) 패러다임을 통해 컨텍스트를 더 잘 이해하게 되었으며 경량 클라이언트 측 모델을 사용해서 불필요한 코드 제안을 줄일 수 있게 되었기 때문이다. 또한 시크릿값 등 보안 취약점을 제안되지 않도록 실시간으로 필터링하는 기능도 추가되었다.(영어)
  • Pull request merge queue (public beta) : GitHub의 머지 큐 기능이 퍼블릭 베타로 공개되어 Enterprise Cloud나 저장소에서 organization의 공개 저장소에서 활성화해서 사용할 수 있게 되었다. 머지 큐 기능은 CI 검사나 승인 조건이 완료되면 자동으로 머지 큐에 들어가서 다른 PR이 머지되더라도 순서대로 머지할 수 있게 되어 머지로 인한 생산성 저하를 줄여준다.(영어)

인프라 관련

  • Don't Call It A Platform : "마이크로서비스 아키텍처 구축"의 저자인 샘 뉴먼이 쓴 글로 최근 주목을 받는 Platform engineering이 플랫폼에 매몰되어 개발자 지원을 놓치고 있고 DevOps에서와 마찬가지로 요점을 놓치고 있다고 지적하는 글이다. Kuberntes의 생태계의 너무 많은 기술이 생기면서 이 기술 자체에 매몰되어 사용자를 위해 존재해야 하는 플랫폼이 사용자를 플랫폼의 의도대로 굴복시키고 있다. "팀 토폴로지"라는 책에도 플랫폼 얘기가 나오는데 플랫폼을 선택적으로 만드는 것이 중요하고 플랫폼을 강제하면 사람들을 끌어들이기 위해 사용자 경험을 개선할 동기가 사라지게 된다.(영어)
  • Cilium CNI on EKS using secondary CIDR and prefix delegation : Cilium은 eBPF 기반으로 네트워크 통신을 모니터링하고 필터링할 수 있다. AWS EKS는 Calico를 사용하고 있지만 DNS 정책을 적용할 수 있고 Hubble로 가시성을 제공할 수 있으므로 Cilium을 사용하기로 선택하고 Cilium 네트워크 플러그인, Pod을 위한 VPC의 secondary CIDR, ENI 접두사 위임을 사용하기로 했다. EKS에서 지원하지 않기 때문에 VPC CNI를 따로 지워야 했고 이후 Cilium을 설정하고 Hubble UI로 기본 설정 확인을 한 뒤 정책을 적용하는 방법이 정리되어 있다.(영어)
  • Binary Packages Now Available for the Preview NGINX QUIC+HTTP/3 Implementation : Nginx의 QUIC+HTTP/3 지원에 대한 프리뷰 구현체가 공개되었다. 이 바이너리는 RHEL 9과 Ubuntu 22.04에서 사용할 수 있다.(영어)
  • k8s.gcr.io Image Registry Will Be Frozen From the 3rd of April 2023 : Kubernetes는 커뮤니티가 관리하는 이미지 레지스트리인 registry.k8s.io를 운영하고 기존 저장소인 k8s.gcr.io 레지스트리에는 23년 4월 3일부터 새로운 이미지를 올릴 수 없게 된다고 한다.(영어)
  • Native OPA Support in Terraform Cloud Is Now Generally Available : Terraform Cloud에서 Open Policy Agent(OPA)를 공식 지원하게 되었다. OPA 지원으로 Rego 정책 언어로 정책을 설정해서 프로비저닝에 적용할 수 있게 되었다.(영어)

볼만한 링크

  • core-js 메인테이너의 글 : core-js는 직접 사용하기보다 많은 라이브러리의 의존성으로 사용되고 있어서 잘 알려지진 않았지만 가장 많이 사용되는 polyfill 라이브러리다. 대기업 등 수많은 사이트에서 대부분 core-js를 사용하고 있고 프로젝트를 풀타임으로 유지보수하기 위해 생활비가 적게 드는 러시아에서 살고 있다. 몇 년 전 교통사고가 나서 합의금을 마련해야 했고 프로젝트의 펀딩에 대한 링크를 달자 수많은 혐오 댓글이 달리기 시작했고 결국 합의금을 마련하지 못해서 감옥에 갔다가 나왔다. 나온 뒤에 다시 core-js 관리를 하고 있지만 최근에는 펀딩이 많이 줄어들어서 시급 기준으로 2달러로 일해야 하는 상황까지 왔고 이 상태로는 core-js를 관리할 수 없다며 앞으로 core-js의 계획까지 정리한 글이다. 오픈소스 메인테이너의 슬픈 현실이면서 너무 정성 들여 쓴 글이라서 조금이나마 기부하고 왔다.(영어)
  • ChatGPT Is a Blurry JPEG of the Web : ChatGPT는 웹의 흐릿한 JPEG라고 얘기하는 유명 SF 작가 테드 창의 글이다. JPEG 처럼 대규모 언어 모델(LLM)도 웹의 손실 압축이기 때문에 흐릿한 정보를 재포장하는 데는 유능해 보일 수 있지만 재포장이 많아질수록 JPEG를 계속 압축하는 것처럼 흐려져서 품질이 나빠질 것이다. LLM의 품질을 측정하는 기준으로 회사가 생성한 텍스트를 새 모델의 학습 자료로 쓰려고 하는지로 볼 수 있는데 이렇게 하려면 앞은 발전이 필요할 것이다. 독창적인 글쓰기에 LLM이 도움이 되느냐고 했을 때 복사기를 이용한 예술가와 예술 장르가 있으므로 "그렇다"고 대답할 수도 있지만 복사기가 예술의 필수 도구라거나 복사기로 불이익을 받는다고 말하는 사람은 없다. 테드 창은 모호한 복사로 시작하는 것이 독창적인 작품을 만드는 좋은 방법은 아니며 독창적인 작품을 쓰기 전에 독창적이지 않은 작품을 많이 만드는 과정이 밑거름된다고 얘기하고 있다.(영어)
  • The Next Generation Of Large Language Models : 대규모 언어 모델(LLM)의 미래에 대한 기사로 LLM의 다음 세대는 어떤 모습일까에 대한 대답은 이미 나와 있고 다음과 같은 모델이 될 것이라고 한다.(영어)

    • 스스로 학습 데이터를 생성하여 스스로 개선할 수 있는 모델

      • 인간의 뇌와 비슷하게 모델이 학습 데이터를 만들어서 자기 개선을 계속할 수 있다면 데이터 부존 문제를 해결할 수 있다.
    • 스스로 사실 확인을 할 수 있는 모델

      • 현재의 LLM은 Google 검색을 대체할 수 없는데 부정확하거나 잘못된 정보를 자신감 있고 설득력 있게 제시하기 때문이다.
      • OpenAI의 CEO인 샘 알트먼도 "ChatGPT는 믿을 수 없을 정도로 제한적이지만, 일부 기능에서는 훌륭하다는 오해를 불러일으킬 만큼 충분히 뛰어납니다. 지금 당장 중요한 일에 이 기술에 의존하는 것은 실수입니다."라고 했다.
      • 이를 개선하기 위해 LLM이 외부 소스에서 정보를 검색할 수 있고 제공하는 정보에 대한 참조를 제공할 수 있도록 하는 연구가 이뤄지고 있다.
    • 대규모의 sparse expert 모델

      • 현재의 LLM을 그 아키텍처가 거의 동일한데 모델이 실행될 때마다 모든 매개 변수가 사용되는데 sparse expert 모델에서는 관련된 하위 집합만 사용할 수 있기 때문에 계산 요구사항이 적고 해석하기 쉽다는 장점이 있다.
  • AI, 이번엔 다릅니다 – 스타트업 vs 기존 기업 (번역) : 실리콘 밸리의 투자자 Elad Gil이 쓴 AI: Startup Vs Incumbent Value
    의 번역 글이다. 지난 10년 동안 많은 AI 스타트업이 있었지만, 좋은 성과를 내지 못하고 구글, 페이스북, 아마존 등 기존 기업이 AI를 더 잘 활용하고 있었는데 이 이유는 10배짜리 제품을 만들기 못했고 대규모 데이터 세트를 얻기 어려웠고 시장환경도 쉽지 않았기 때문이다. 하지만 새로 다가오는 AI 파도는 스타트업이 더 큰 가치를 만들 것이라고 믿는데 뛰어난 기술이 등장하고 있고 인프라를 제공하는 스타트업이 생겨나고 있고 기존에 확실히 1등이 없던 영역에서 사용사례가 나타나기 때문이라고 한다.(한국어)
  • The 2022 State of Spring Survey Report : Spring에서 조사한 설문조사로 1,421명이 응답자로 참여했고 16페이지의 PDF를 받으려면 개인 정보를 입력해야 한다. (영어)

    • 모던 아키텍처

      • 모던 아키텍처 스타일이 21년보다 5% 증가한 55%가 됨
      • 마이크로서비스는 여전히 많이 쓰이고 서버리스와 리액티브 아키텍처도 소폭 증가함
      • 올해 새로 질문에 추가한 모듈식 모로리식은 42%가 사용 중이라고 답변함
      • GraphQL이 빠르게 도입되고 있음
      • 47%가 올해도 스프링 모듈을 더 사용할 것이라고 대답함
      • Spring Security, Spring Data, Spring WebMVC가 가장 많이 쓰이는 프로젝트
    • 새로운 기술

      • GraalVM과 네이티브 컴파일이 인기를 끌고 있음
      • Spring Native와 Spring Boot 3의 네이티브 컴파일이 큰 관심을 얻고 있음
      • 프로젝트 Loom을 6%만 사용해봤지만, 응답자 대부분이 큰 기대를 하고 있음
    • 업그레이드와 번성

      • Spring Boot 새 버전 적용을 빠르게 하고 있음
      • 버전을 안 올리는 가장 큰 이유는 "잘 동작하고 있어서 동기가 없다"였고 두 번째는 "우선순위 조정을 할 수 없다"임
    • 기타

      • 러닝 커브가 가팔라지고 있음
      • 정보를 spring.io, stackoverflow, Baeldung 순으로 얻고 있음
  • React.js: The Documentary - How it All Began : Honeypot에서 React의 역사를 담은 React.js: The Documentary를 공개했다.(영어)
  • Introducing the new JupyterLab Desktop! : JupyterLab의 데스크톱 앱이 나왔다.(영어)

IT 업계 뉴스

  • Microsoft announces new Bing and Edge browser powered by upgraded ChatGPT AI : Microsoft가 자사의 검색엔진 Bing의 새 버전으로 ChatGPT의 업그레이드 버전으로 동작하는 Bing을 발표하며 AI 기반으로 검색에서 새로운 경쟁이 시작되었다고 얘기했다. 새로운 Bing에서는 기존 검색 결과와 AI 주석을 함께 보여주고 ChatGPT처럼 채팅으로 질문하는 인터페이스를 제공하고 있다. 또한 AI로 강화된 Edge 브라우저에서는 사이드바에서 현재 페이지에 대한 내용을 질문할 수 있고 SNS나 이메일에 작성한 글쓰기를 도와주는 기능이 포함되어 있다.(영어)
  • Google’s AI chatbot Bard makes factual error in first demo : Microsoft의 발표에 대한 반격으로 Google이 AI 챗봇 Bard를 발표했지만, 첫 데모에서 제임스 웹 우주 망원경에 대해 잘못된 대답을 하면서 체면을 구겼다.(영어)
  • Netlify Acquires Gatsby Inc. to Accelerate Adoption of Composable Web Architectures : 웹 개발 플랫인 Netlify가 웹 콘텐츠 딜리버리와 오케스트레이션을 제공하는 Gatsby를 인수했다. 웹의 미래가 조합 가능한 아키텍처(composable architecture)에 있다고 말하며 이번 인수가 이를 더 잘 만들기 위함이라고 한다.(영어)
  • Introducing ChatGPT Plus : OpenAI에서 ChatGPT의 파일럿 구독 플랜인 ChatGPT Plus를 공개했다. ChatGPT Plus는 월 $20의 요금으로 구독자는 피크 시간에도 ChatGPT에 접근할 수 있고 더 빠른 응답시간과 새로운 기능을 더 먼저 사용할 수 있게 된다.(영어)
  • W3C re-launched as a public-interest non-profit organization : 작년 여름에 발표한대로 W3C가 공익 비영리 단체로 재출범했다.(영어)
  • GitHub lays off 10% and goes fully remote : GitHub은 현재 직원이 3천 명 정도인데 직원의 10%를 정리해고하겠다고 발표했다. 사무실도 사용이 많지 않아서 모두 닫고 전면 재택으로 전환한다고 한다.(영어)
  • Twitter says the basic tier of its API will cost $100 per month : 얼마 전 Twitter는 API의 무료 접근을 막겠다고 발표했는데 API의 베이직 티어가 월 $100가 될 것이라고 발표했다. API 무료 접근은 2월 9일 차단될 예정이었지만 13일로 연기되었다.(영어)
  • Instagram’s co-founders are back with Artifact, a kind of TikTok for text :
    Instagram의 공동 창업자인 Kevin Syntrom과 Mike Krieger가 2018년 Facebook을 떠난 뒤 새로운 소셜 네트워크를 만들기 위해 새로운 벤처를 설립했다. 첫 제품은 머신 러닝으로 사용자의 관심사를 파악해서 친구들과 뉴스에 관해 토론할 수 있는 Artifact로 대기리스트에 신청할 수 있다.(영어)

프로젝트

  • DriftDB : 엣지에서 사용할 수 있는 실시간 데이터 백엔드
  • Purple Admin UI : Subicura님이 계신 PurpleIO에서 공개한 어드민 템플릿으로 Next.js와 Tailwind로 만들어졌다.
  • AI Commits : git diff의 내용으로 OpenAI의 GPT-3로 커밋 메시지를 자동 생성하게 하는 CLI

버전 업데이트

  • Gradle v8.0 : Java 빌드 도구, 릴리스 공지

    • Groovy DSL을 대체하는 Kotlin DSL 제공
  • Grafana Tempo v2.0.0 : 분산 트레이싱 백엔드, 릴리스 공지

    • LogQL과 PromQL에 영감을 받은 트레이싱을 위해 설계된 TraceQL 추가
    • 새로운 기본 트레이싱 스토리지 백엔드로 Apache Parquet 지원
  • SQLAlchemy v2.0.0 : Python ORM, 릴리스 공지

    • 플러그인이 필요 없는 새로운 pep-484 호환 ORM 문법
    • Python Dataclasses와 완전히 통합된 선언적인 매핑 클래스 지원
    • 벌크 INSERT를 위한 새롭게 완전히 ORM에 통합된 접근
  • Lighthouse v10.0.0 : Progressive Web Apps용 성능 분석 도구, 릴리스 공지

    • TTI(Time to Interactive) 매트릭이 제거되고 이 10%의 점수가 CLS(Cumulative Layout Shift)로 이동해서 전체 성능 점수의 25%를 차지하게 됨.
    • back/forward 캐시(bfcache)가 사용자의 페이지 성능을 크게 개선할 수 있으므로 새로운 성능 audit으로 추가됨
    • "비밀번호 필드에 붙여넣기 허용" audit을 확장해서 읽기 전용이 아닌 모든 입력 필드에 붙여넣기가 가능한지 검사 추가
  • Moby Project v23.0.0 : Docker, 릴리스 공지
  • Lottie for Android v6.0.0 : After Effects 애니메이션 랜더링 라이브러리, 릴리스 공지
  • RedwoodJS v4.0.0 : 풀스택 웹프레임워크, 릴리스 공지

    • 새로운 auth API로 인증 제공자와 통합 가능
    • GraphQL Yoga v3 포함
    • GraphQL 엔드포인트의 보안 계층으로 GraphQL Armor 추가
    • Node.js 16, 18 지원
  • eleventy v2.0.0 : Node.js 정적 사이트 생성기, 릴리스 공지
  • Go v1.20 : 프로그래밍 언어, 릴리즈 공지
  • Istio v1.17 : 서비스 매쉬, 릴리스 공지

    • 1.6에 도입된 리비전을 이용한 카나리 업그레이드가 베타로 승격됨
    • Helm 기반 Istio 설치가 베타로 승격됨
    • Gateway API가 0.6.1과 완전히 호환됨.
    • 듀얼 스택 지원
  • Kafka v3.4.0 : 분산 이벤트 스트리밍 플랫폼, 릴리스 공지
  • Crossplane v1.11.0: 외부 인프라 관리용 Kubernetes 애드온, 릴리스 공지
  • Kuma v2.1.0 : 서비스 메쉬의 컨트롤 플레인, 릴리스 공지
  • Node.js v18.14.0 (LTS) : 자바스크립트 런타임, 릴리스 공지
  • Node.js v19.6.0 (Current) : 자바스크립트 런타임, 릴리스 공지
  • Nuxt.js v3.2.0 : 서버렌더링 Vue.js 애플리케이션 프레임워크, 릴리스 공지
  • Docker Compose v2.16.0 : Docker Compose, 릴리스 공지
  • Bun v0.5.6 : JavaScript/TypeScript 런타임, 릴리스 공지
  • Falco 0.34.0 : 클라우드 네이티브 런타임 보안, 릴리스 공지

    • 규칙 자동 업데이트 지원
    • 실험적인 새 eBPF 프로브 지원
  • Visual Studio Code v1.75 : 에디터, 릴리스 공지
  • Prisma v4.10.0 : TypeScript/Node.js 데이터베이스 툴킷, 릴리스 공지
  • Remix v1.13.0 : 풀스택 웹 프레임워크, 릴리스 공지

    • 내장 PostCSS 지원
    • 내장 Tailwind 지원
  • Lightning CSS v1.19.0 : CSS 파서/트랜스포머/미니파이어, 릴리스 공지
  • Volcano v1.7.0 : 클라우드 네이티브 배치 스케쥴링 시스템, 릴리스 공지
  • Boundary v0.12 : 인프라 접근 관리, 릴리스 공지
2023/02/15 22:19 2023/02/15 22:19