Outsider's Dev Story

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

기술 뉴스 #252 : 24-08-17

웹개발 관련

  • It’s Time To Talk About “CSS5” : 2009년 CSS3가 나오고 15년이 지나고 수많은 기능이 추가되었지만 지금도 채용공고에서는 CSS3라고 적고 있지만 이는 border-radius를 사용할 줄 알는지 최신 CSS를 사용할 줄 알는지를 구분하지 못하고 있다. CSS3의 성공에서 보듯이 대표 기능을 그룹화하는 것은 기술 변화에 관심도 끌 수 있고 CSS의 발전을 생태계가 받아들이게 하는 데도 도움이 된다. 그래서 CSS3 이후 CSS3 표준에 포함되지 않았지만, 추가된 기능을 CSS4로 정의하고 새로운 기능을 추가하고 있는 현재를 CSS5로 구분하자는 얘기를 하고 있다. W3C CSS-Next 그룹에서 이 접근에 대한 의견 요청을 받고 있다.(영어)
  • Special Meeting of the ICANN Board | 29 July 2024 : ICANN 이사회에서 private TLD 지정에 대한 제안을 논의한 결과 .INTERNAL을 선택했다. 이제 .INTERNAL은 예약어라 이후 gTLD 신청 때 신청할 수 없게 되었다. 이는 제품 내부나 회사 내부 목적으로 private 도메인을 설정해서 사용하는 경우가 많은데, 나중에 gTLD가 새로 생기면서 충돌이 발생하는 것을 막기 위함이다.(영어)
  • AI를 위한 UI 패턴 : 상호작용이 필요 없었던 시대를 지나 명령을 통해 세부 작업을 지시하던 CLI, GUI 시대를 거쳐서 AI 시대에 UI 패러다임이 새로운 전환을 맞이하고 있어서 AI 기능의 주요 UI 패턴을 정리한 글이다. 사용자와 채팅을 통해 상호작용을 하는 Freeform UI, 한 번의 액션으로 필요한 AI 기능을 사용하는 Task-Driven UI, 특정 상황에서 사용자를 돕는 Assistive UI, 보이지 않는 백그라운드에서 작동하는 Invisible UI를 설명한다.(한국어)

그 밖의 개발 관련

  • 회원 시스템 MSA 전환 도전기: MAU 1,900만 당근 유저를 위한 선택 : 당근에서 초기부터 중고 거래 서비스와 함께 있던 회원 시스템과 인증시스템을 별도 서비스로 분리해 간 과정이다. 기존 레거시 시스템의 데이터와 로직을 이해하면서 자신감을 쌓은 뒤 새로운 데이터베이스를 구축하고 정합성을 맞추는 작업을 한 뒤 API를 dual write하고 비즈니스 로직을 Replaying, Shadowing 하면서 기존과 달라지지 않았는지 모니터링하고 점진적으로 새 API로 변경했다.(한국어)
  • Node.js Takes Steps Towards Removing Corepack : Node.js의 코어팩은 패키지 매니저의 버전관리를 돕는 실험적 도구인데 작년 말 이 Corepack이 기본적으로 비활성화되어 있어서 사용하기 어렵다면 기본 활성화를 제안하는 이슈가 올라오고 이후 계속 논의가 이어진 끝에 Node.js에서 Corepack을 제거하기로 했다. Corepack에 대한 논의는 The Future of Node.js: npm or corepack을 보면 좀 더 이해하기 좋은데 TSC(Technical Steering Committee)는 Node.js에서 npm을 분리할 생각이 없음을 명확히 밝혔고 패키지 유지보수 워킹그룹(PMWG)으로 의사결정을 위임했고 PMWG는 Corepack을 Node.js에서 제거하고 독립적으로 관리하는 로드맵을 공개했다.(영어)
  • I'm back, Ruby on Rails : 작년 Turbo의 TypeScript 이슈 때 Goodbye, Ruby on Rails라는 글을 쓰며 더는 Ruby on Rails를 쓰지 않을 수 있다고 했던 개발자가 새 사업을 시작하면서 다시 Ruby on Rails를 쓰기로 결정했다. 그 이유는 시작할 때 많은 결정을 할 필요 없이 그냥 관습에 따라 하면 되고 API도 안정적이며 다른 커뮤니티에서 어떤 방식이 좋지 않은 논쟁을 하지만 Ruby 커뮤니티는 많은 논의를 하지 않고 한 가지 분명한 방법을 제시해서 초보자들의 시간도 아껴줄 수 있다. 또한 Rails에는 상용 컴포넌트를 절대 사용하지 않고 단순성을 추구하는 것이 맘에 든다고 했다.(한국어)
  • Okay, I really like WezTerm : iTerm만 사용하다가 친구의 소개로 WezTerm을 접하고 WezTerm을 Lua로 구성할 수 있는 점이 맘에 들어서 처음 사용하는 사람이 WezTerm으로 구성할 방법을 정리한 글이다.(영어)
  • Introducing Structured Outputs in the API : OpenAI에서 작년 JSON 모드를 공개해서 유효한 JSON 출력을 위한 신뢰성을 개선했지만, 보장은 할 수 없었다. 이번 Structured Outputs를 통해 모델이 생성한 출력이 제공된 JSON 스키마와 정확하게 일치하도록 하는 기능을 발표했다.(영어)

인프라 관련

  • CrowdStrike: External Technical Root Cause Analysis — Channel File 291 : 7월 19일 Windows에서 대규모 장애를 일으켰던 CrowdStrike가 장애분석 보고서를 공개했다. 이 보고서에 따르면 24년 2월 7.11 버전을 출시하면서 네임드 파이프와 IPC를 악용하는 공격을 탐지할 수 있도록 새로운 템플릿 유형을 도입했다. 그리고 7월 19일 IPC 템플릿 인스턴스 2개를 추가로 배포했는데 이 중 하나가 21번째 인풋 값에 대한 와일드카드가 아닌 매칭 기준을 도입했고 이 때문에 센서가 채널 파일 291의 새 버전을 생성했다. 하지만 콘텐츠 인터프리터는 20개의 값만 예상했기 때문에 21번째 값에 접근하려고 하면서 out-of-bounds 메모리 읽기 문제가 발생했다. 이 보고서에는 각 상황에 대한 설명과 완화 대책이 정리되어 있다.(영어)
  • Is It Time To Version Observability? (Signs Point To Yes) : Honeycomb의 CTO인 Charity Majors가 쓴 글로 옵저버빌리티는 메트릭, 로그 트레이스 세 가지 기둥이 있다고 설명했는데 이를 옵저버빌리티 1.0이라고 부르고 광범위한 로그, 이벤트를 기반으로 구축된 도구를 옵저버빌리티 2.0이라고 불러야 한다고 얘기하고 있다. 전반적으로 Charity Majors가 쓴 데브옵스 엔지니어를 위한 실전 관찰 가능성 엔지니어링의 연장선으로 느껴졌다. 1.0과 2.0이 무엇이 다른지 비교하면서 메트릭은 중요하지만 앞으로 더 나아가기 위해서는 광범위하고 구조화된 로그 이벤트를 쌓아야 하고 이를 위해서는 더 많은 기술과 선택권이 필요하다고 얘기하고 있다.(영어)
  • 쿠버네티스에서 파드를 분산 처리하기 위한 토폴로지 분배 제약 조건 활용 사례 소개 : Kubernetes에서 Pod의 가용성을 높이기 위해서 topologySpreadConstraints를 사용하는 방법을 설명한다. 어피니티(affinity)를 사용하는 방식과 비교해서 topologySpreadConstraints의 각 설정값이 어떤 의미를 가지는지 설명한다.(한국어)
  • Introducing Spanner Graph: Graph databases reimagined : Google에서 무제한 확장성을 지원하는 그래프 데이터베이스 Spanner Graph를 발표했다.(영어)

볼만한 링크

  • The Future of Open Source : GitHub의 공동 창업자 중 한 명인 Scott Chacon이 GitButler의 코드 공개하면서 라이센스로 FSL을 선택하면서 오픈소스란 용어를 사용할 수 없게 되자 GitHub에서 공개한다는 적당한 표현을 고민하면서 현재 오픈소스의 상황과 미래에 대한 생각을 정리한 글이다. 과거 자유 소프트웨어가 등장하고 이에 따라 GNU/Linux가 나왔지만 1997년 에릭 레이먼드가 "성장과 시장"을 발표하면서 오픈소스를 사용하기 시작했다. 그로부터 25년이 지난 상황에서 두 가지 문제가 있는데 개발자의 지속 가능성과 실행할 수 있는 상업적 오픈소스의 문제가 생겼다. Scott Chacon은 fair source가 이에 대한 훌륭한 해결책이라고 믿는다고 얘기하고 Sentry에서 운영하는 오픈소스 생태계를 지원하는 Open Source Pledge 서약 참여도 독려하고 있다.(영어)
  • Introducing GitHub Models: A new generation of AI engineers building on GitHub : GitHub이 Llama 3.1, GPT-4o, GPT-4o mini, Phi 3, Mistral Large 2 등의 모델을 바로 테스트하면서 비교해 볼 수 있는 플레이그라운드 GitHub Models를 공개했다.(영어)
  • GitHub Private Mirrors App – Public Beta : 회사가 오픈소스 기여에 라이센스나 보안 등의 리스크 관리가 필요한 경우 이를 지원할 수 있도록 GitHub에서 Private Mirrors App을 출시했다. Private Mirrors App는 오픈소스 프로젝트의 포크를 내부 GitHub 엔터프라이즈의 EMU(Enterprise Managed Users)와 연결해서 회사 내부에서 미러 저장소를 만들 수 있다. 내부 규칙에 따라 수정 사항을 만든 뒤 이를 다시 오픈소스 포크와 동기화해서 업스트림 저장소에 기여할 수 있다.(영어)
  • 전금법 개정, 온라인 커머스도 대비해야합니다. : 전자금융거래법 개정으로 플랫폼 업체나 유통업체 본사 등 재화 구입/용역 이용으로 대가에 대한 정산을 대행하거나 매개한다면 전자지급결제대행 업자(PG사) 등록해야 한다. 이 개정령은 9월 15일부터 시행될 예정으로 이를 어기면 3년 이하 징역이나 2천만 원 이하의 벌금에 처할 수 있다. 이에 대한 대안으로는 PG사에 정산 정보를 제공하고 지급하도록 하는 지급 대행 서비스를 쓰거나 파트너 정산 송금 대행 서비스를 이용할 수 있다.(한국어)

IT 업계 뉴스

  • Judge rules that Google ‘is a monopolist’ in US antitrust case : 미국 법무부가 Google이 배제적 계약을 통해 경쟁사의 유통 채널을 차단해서 검색 광고 시장을 불법적으로 독점했다고 주장한 기술 독점 소송에서 법원이 Google은 온라인 검색 시장에서 독점기업이며 독점을 유지하기 위해 독점 기업처럼 행동했으며 1890년 제정된 반독점법인 Sherman Act 제2조를 위반했다고 판결했다. Google은 독점적으로 행동하지 않았으며 우수한 제품을 만든 결과라고 주장했지만, Apple이 Safari의 기본 검색엔진으로 Google을 사용함으로써 Google이 Safari에서 발생한 검색 광고의 36%를 Apple에 공유하고 있고 2022년에는 200억 달러를 지불한 게 밝혀지면서 주요한 증거가 되었다. Google은 항소하겠다고 했다.(영어)
  • Russ Cox: passing torches to Austin and Cherry : 12년 이상 Go 프로젝트를 이끌던 Russ Cox가 기술 책임자에서 물러나고 Austin Clements가 9월부터 기술 책임자를 맡게 되었다. Austin Clements이은 컴파일러 툴체인, 런타임, 릴리스 등의 Go 코어의 기술 책임자였는데 Cherry Mui가 Go 코어를 맡게 되었다. Russ Cox는 12년간 리더를 했으면 충분히 안정적이라고 느끼고 BDFL(자비로운 종신 독재자) 모델이 새로운 리더의 공간을 만들어주지 않기 때문에 건강하지 않다면서 Python의 Guido van Rossum이 리더에서 물러나서 더 큰 혜택을 보았기에 Go의 리더쉽도 바뀌어야 한다고 생각했다고 밝혔다.(영어)
  • Evolving our self-hosted offering and license model : Cockroach DB가 그동안 무료 Core 버전과 유료 Enterprise 버전을 제공하고 있었는데 시간이 지나면서 무료 사용자도 Enterprise 기능을 원하기도 하고 많은 기업이 Enterprise 구매를 피하고 성숙한 Core 버전을 사용하고 있었다. CockroachLab은 11월에 출시될 24.3부터 Core 버전 제공을 중단하고 새로운 Enterprise 라이센스만 제공하며 코드는 공개 상태로 유지한다고 밝혔다.(영어)

  • GitButler is now Fair Source : Scott Chacon이 창업한 Git Client 회사인 GitButler가 소스코드를 GitHub에 공개하고 고민 끝에 Sentry가 만든 Functional Source License를 선택했다. FSL은 소스코드는 공개되지만, 비경쟁 기간 동안은 상업적 제품에서의 사용은 막고 2년 뒤에 MIT 라이센스로 변경된다.(영어)

  • 은행 AI 혁신 막던 '망 분리' 폐지 : 금융위원회는 지난 13일 금융보안 망 분리 개선 로드맵을 발표하면서 망분리 의무화가 이제 시대적 소임을 다했다며 망분리 규제를 크게 뜯어고칠 계획을 발표했다. 샌드박스 제도를 통해 SaaS 범위를 확대하고 외부 AI 서비스도 활용할 수 있게 예외를 허용하며 배상 책임을 강화할 계획이라고 밝혔다.
  • Microsoft is finally removing the FAT32 partition size limit in Windows 11 : Microsoft가 Windows 95 개발 시 도입되어 30년 가까이 유지한 FAT32 파티션의 32GB 크기 제한을 2TB로 늘렸다.(영어)

프로젝트

  • Docker-OSX : Docker로 macOS VM을 실행하는 프로젝트.
  • Porffor : JavaScript 코드를 WebAssembly로 컴파일하는 실험적 ahead-of-time JS 엔진으로 실사용보다는 리서치 목적에 가깝다.
  • SeekTune : Shazam의 음악 인식 알고리즘의 오픈소스 구현체
  • pr-stats : Pull Request가 머지되는데 걸리는 시간, 리뷰어의 응답 시간 등의 통계를 산출할 수 있는 GitHub Actions로 Naver에서 만들어서 공개했다.
  • Spring Boot and Thymeleaf library for htmx : Spring Boot 애플리케이션에서 htmx를 사용할 수 있게 하는 Thymeleaf 방언
  • WhenFS : Google Calendar를 FUSE 파일시스템으로 만들어주는 프로젝트로 Rust와 FUSE를 공부하기 위해서 만들었다.
  • Blitz : WGPU를 사용한 고성은 HTML/CSS 렌더러

버전 업데이트

2024/08/17 12:08 2024/08/17 12:08