Rust

37 개의 포스트

cloudflare원문

Cloudflare의 13세대 서버 출시 - 캐시를 코어로 바꿔 엣지 컴퓨팅 성능 2배 향상 (새 탭에서 열림)

Cloudflare는 차세대 에지 컴퓨팅 성능을 2배로 끌어올리기 위해 AMD EPYC 5세대 'Turin' 프로세서를 기반으로 한 13세대(Gen 13) 서버를 도입했습니다. 기존 12세대 서버가 거대한 L3 캐시(3D V-Cache)에 의존했던 것과 달리, 13세대는 캐시 용량을 줄이는 대신 코어 수를 대폭 늘려 처리량을 극대화하는 전략을 선택했습니다. 이러한 하드웨어 변화는 Rust 기반의 새로운 요청 처리 계층인 'FL2'로의 전환이 있었기에 가능했으며, 이를 통해 캐시 의존성을 탈피하고 늘어난 코어 성능을 온전히 활용할 수 있게 되었습니다. ### AMD Turin 아키텍처의 혁신과 캐시 트레이드오프 AMD EPYC 5세대 Turin 프로세서는 단순한 코어 수 증설 이상의 아키텍처적 개선을 제공합니다. * **코어 밀도 및 효율성:** 12세대의 96코어에서 2배 늘어난 최대 192코어(384스레드)를 지원하며, Zen 5 아키텍처 적용으로 IPC(사이클당 명령어 처리 수)가 향상되었습니다. 코어당 전력 소모량은 오히려 32% 감소하여 전력 효율성이 개선되었습니다. * **메모리 대역폭 확장:** DDR5-6400 메모리를 지원하여 늘어난 코어들이 데이터를 신속하게 주고받을 수 있는 환경을 구축했습니다. * **캐시 감소의 한계:** 하지만 고밀도 설계를 위해 코어당 L3 캐시 용량은 12세대의 12MB에서 2MB로 크게 줄었습니다. 이는 캐시 로컬리티에 의존적인 기존 워크로드에 심각한 성능 병목을 일으킬 수 있는 구조적 변화입니다. ### 기존 FL1 스택에서의 성능 병목 분석 Cloudflare의 기존 NGINX 및 LuaJIT 기반 요청 처리 계층인 FL1은 줄어든 캐시 환경에서 심각한 지연 시간 문제를 노출했습니다. * **지연 시간 급증:** AMD uProf 도구 분석 결과, L3 캐시 미스 시 데이터 접근 시간이 50사이클에서 350사이클(DRAM 접근 시)로 7배 이상 증가하는 것을 확인했습니다. * **처리량과 지연 시간의 상충:** Turin 9965 프로세서에서 FL1을 실행했을 때 처리량(Throughput)은 62% 증가했지만, 높은 CPU 사용률 구간에서 지연 시간(Latency)이 50% 이상 늘어나는 결과가 나타나 실제 서비스 적용에 부적합 판정을 받았습니다. ### 하드웨어 튜닝 및 PQOS를 통한 최적화 실험 하드웨어의 한계를 극복하고 최적의 성능 지점을 찾기 위해 AMD와 협업하여 다양한 최적화 기술을 적용했습니다. * **하드웨어 튜닝:** 프리페처(Prefetcher) 및 데이터 패브릭(DF) 프로브 필터 조정 등을 시도했으나 성능 향상 폭은 미미했습니다. * **AMD PQOS 적용:** L3 캐시와 메모리 대역폭을 미세 조정할 수 있는 PQOS(Platform Quality of Service) 기술을 사용했습니다. * **NUMA 인지 구성:** 특정 CCD(Core Complex Die)를 FL 전용으로 할당하는 NUMA 인지형 코어 어피니티 설정을 통해, 지연 시간을 허용 범위 내로 유지하면서도 약 15%의 추가 처리량 이득을 확보하는 데 성공했습니다. ### Rust 기반 FL2 스택을 통한 성능 해방 결국 하드웨어의 잠재력을 100% 끌어올린 핵심 동력은 소프트웨어 재작성이었습니다. * **캐시 의존성 탈피:** Rust로 작성된 FL2는 효율적인 메모리 관리와 현대적인 설계를 통해 캐시 크기에 민감하게 반응하던 FL1의 한계를 극복했습니다. * **선형적 성능 확장:** FL2 도입을 통해 Turin 프로세서의 192코어 성능을 지연 시간 하락 없이 온전히 사용할 수 있게 되었으며, 이는 Cloudflare 에지 네트워크의 총 소유 비용(TCO) 최적화로 이어졌습니다. 인프라의 세대 교체 시 하드웨어 사양(코어 수, 캐시 용량 등)의 변화가 기존 소프트웨어 스택의 설계 원칙과 충돌할 수 있습니다. Cloudflare의 사례처럼 하드웨어 성능 최적화가 한계에 다다랐을 때는, Rust와 같은 현대적인 언어로 소프트웨어 아키텍처를 재설계함으로써 하드웨어의 물리적 변화를 성능 도약의 기회로 전환하는 전략이 필요합니다.

cloudflare원문

Gen 13 내부: 역대 가장 강력한 서버를 구축한 방법 (새 탭에서 열림)

Cloudflare는 Rust 기반의 새로운 요청 처리 계층인 FL2로의 전환에 맞춰, 하드웨어 성능과 효율성을 극대화한 'Gen 13' 서버를 설계했습니다. Gen 13은 192코어의 AMD EPYC Turin 프로세서와 향상된 메모리/네트워크 대역폭을 통해 이전 세대 대비 최대 2배의 처리량을 제공하면서도 전력 효율은 50% 개선했습니다. 결과적으로 하드웨어와 소프트웨어의 최적화된 결합을 통해 글로벌 네트워크 전반의 운영 비용을 절감하고 서비스 확장성을 확보하게 되었습니다. **소프트웨어 변화에 최적화된 CPU 선택** * **FL2와 L3 캐시 의존도 감소:** 이전 세대(Gen 12)는 대용량 L3 캐시가 특징인 Genoa-X를 사용했으나, Rust로 재작성된 FL2 스택은 L3 캐시 의존도가 낮아진 대신 코어 수에 따라 성능이 선형적으로 확장되는 특성을 보입니다. * **AMD EPYC 9965(Turin) 채택:** 코어당 캐시 용량은 줄었으나, 코어 수를 192개(Gen 12 대비 2배)로 늘려 총 처리량(Requests per second)을 극대화했습니다. * **전력 및 운영 효율성:** 500W TDP 설정에서 최적의 와트당 성능을 구현하며, 서버 한 대당 처리 능력을 높여 관리해야 할 노드 수를 줄임으로써 운영 복잡성을 낮췄습니다. * **미래 지향적 설계:** DDR5-6400, PCIe 5.0, CXL 2.0을 지원하며 AMD의 최신 아키텍처를 통해 더 긴 보안 지원 주기와 시스템 수명을 보장받습니다. **메모리 대역폭 및 용량의 극대화** * **12채널 구성:** AMD Turin 프로세서의 성능을 뒷받침하기 위해 12개의 메모리 채널을 모두 사용하는 '1 DIMM per channel(1DPC)' 구성을 채택했습니다. * **대역폭 33% 향상:** DDR5-6400 ECC RDIMM을 사용하여 초당 614GB의 최대 메모리 대역폭을 확보했으며, 이는 메모리 집약적인 병렬 작업 시 병목 현상을 방지합니다. * **용량 최적화:** 코어 수가 늘어남에 따라 전체 메모리 용량을 768GB로 증설하여, Cloudflare가 최적으로 판단하는 '코어당 4GB'의 메모리 비율을 유지했습니다. * **메모리 인터리빙:** 동일한 용량과 규격의 메모리를 12개 채널에 균등하게 배치하여 데이터 액세스 속도를 높이는 인터리빙 기술을 적용했습니다. **네트워크 및 스토리지 가속화** * **4배 더 빠른 네트워크:** 기존 25GbE에서 듀얼 100GbE NIC(네트워크 인터페이스 카드)로 전환하여 폭발적인 데이터 유입에도 지연 시간(SLA) 내에 처리가 가능하도록 설계했습니다. * **PCIe 5.0 기반 스토리지:** 24TB의 PCIe 5.0 NVMe 스토리지를 탑재하여 데이터 입출력 속도를 개선하고 용량을 1.5배 늘렸습니다. * **보안 강화:** 메모리 암호화뿐만 아니라 PCIe 암호화 하드웨어 지원을 추가하여 데이터 이동 시 보안성을 강화했습니다. Gen 13 서버는 단순한 사양 업그레이드를 넘어, 소프트웨어 아키텍처(Rust FL2)의 변화가 하드웨어 설계의 방향을 어떻게 바꿀 수 있는지 보여주는 사례입니다. 고밀도 컴퓨팅이 필요한 환경이라면 대용량 캐시에 의존하기보다, 최신 아키텍처 기반의 다코어 CPU와 이를 뒷받침할 수 있는 충분한 메모리 대역폭 및 네트워크 속도를 확보하는 것이 성능과 비용 효율성 측면에서 유리할 것입니다.

aws원문

Amazon S3 20주년과 다음 단계 구축 | Amazon Web Services (새 탭에서 열림)

Amazon S3는 2006년 출시 이후 20년 동안 단순한 객체 스토리지를 넘어 전 세계 데이터 및 AI 워크로드의 핵심적인 보편적 기반으로 진화했습니다. 기술적 혁신을 통해 11나인(99.999999999%)의 내구성과 완벽한 하위 호환성을 유지하면서도, 비용을 85% 절감하고 엑사바이트 단위의 확장을 실현하며 클라우드 인프라의 표준을 제시하고 있습니다. **비약적인 규모의 확장과 경제성 확보** * 2006년 당시 1PB 수준이었던 총 용량은 현재 500조 개 이상의 객체와 수백 엑사바이트의 데이터를 수용하는 규모로 성장했습니다. * 최대 객체 크기는 5GB에서 50TB로 1만 배 증가했으며, 초당 요청 수는 전 세계적으로 2억 건을 상회합니다. * 기가바이트당 비용은 출시 초기 15센트에서 현재 약 2센트로 85% 감소했으며, 'S3 Intelligent-Tiering'을 통해 고객들은 표준 대비 60억 달러 이상의 비용을 절감했습니다. * S3 API는 업계 표준이 되어 수많은 벤더가 이를 채택하고 있으며, 2006년에 작성된 코드가 수정 없이 오늘날에도 그대로 동작할 만큼 엄격한 하위 호환성을 보장합니다. **규모의 한계를 극복하는 엔지니어링 혁신** * **지속적 데이터 감사:** 마이크로서비스 기반의 감사(Auditor) 시스템이 모든 바이트를 실시간으로 검사하며, 열화 징후가 발견되는 즉시 자동 복구 시스템을 가동하여 데이터 손실을 방지합니다. * **수학적 정확성 증명:** 인덱스 하위 시스템과 액세스 정책 등에 정형 기법(Formal methods)과 자동 추론을 적용하여 시스템의 일관성과 정확성을 수학적으로 증명합니다. * **Rust 언어 전환:** 성능에 민감한 요청 경로와 디스크 스토리지 코드를 Rust로 재작성하여 메모리 안전성을 확보하고, 대규모 운영 환경에서 발생할 수 있는 버그를 컴파일 단계에서 제거했습니다. * **규모의 경제 활용:** "규모가 곧 장점"이라는 철학 아래 시스템이 커질수록 개별 워크로드 간의 상관관계가 낮아지도록 설계하여 전체적인 안정성을 높였습니다. **데이터와 AI를 위한 미래 지향적 기능** * **S3 Tables:** Apache Iceberg 테이블을 완전 관리형으로 제공하며, 자동화된 유지보수를 통해 쿼리 효율을 높이고 스토리지 비용을 최적화합니다. * **S3 Vectors:** RAG(검색 증강 생성) 및 시맨틱 검색을 위해 최대 20억 개의 벡터를 인덱싱하며, 100ms 미만의 낮은 지연 시간으로 네이티브 벡터 검색을 지원합니다. * **S3 Metadata:** 대규모 버킷을 일일이 나열(List)하지 않고도 중앙 집중식 메타데이터를 통해 즉각적으로 데이터를 발견할 수 있어 데이터 레이크 분석 시간을 획기적으로 단축합니다. **권장 사항** S3는 이제 데이터를 저장만 하는 공간이 아니라, 데이터를 이동시키지 않고도 직접 분석하고 AI 모델에 활용할 수 있는 통합 플랫폼입니다. 비용 효율성을 극대화하기 위해 'Intelligent-Tiering'을 기본적으로 활용하고, 복잡한 데이터 파이프라인 대신 'S3 Tables'나 'S3 Metadata' 같은 최신 기능을 도입하여 데이터 관리의 복잡성을 줄이는 전략이 필요합니다.

discord4분 읽기큐레이션 요약

디스코드 패치 노트: 20

Discord의 2026년 2월 4일 패치는 데스크톱 렌더링 성능, 스트리밍 사용성, 모바일 안정성, 권한 관리 등을 폭넓게 개선했다. 특히 느린 CSS 선택자를 최적화해 화면 이동과 상호작용 지연을 크게 줄였고, 화면 공유 확대·이동과 `@time` 명령어 같은 기능을 추가했다. 또한 오디오·비디오 백엔드의 Rust 이전이 80% 이상 진행됐으며, 다양한 플랫폼별 버그도 수정했다. ## 데스크톱 성능과 스트리밍 개선 - 데스크톱 렌더링 성능을 크게 향상해 메뉴 탐색과 앱 조작 시 지연을 줄였다. - 성능 저하의 주요 원인은 느린 엔드포인트나 컴포넌트가 아니라 비효율적인 CSS 선택자로 확인됐다. - 화면 공유 및 게임 스트림에서 마우스 휠이나 트랙패드로 확대·축소와 화면 이동이 가능해졌다. - 스트리밍 시작 과정의 미리보기 로딩 시간을 단축했다. - 프로필 편집 중 `Esc`를 눌러도 전체 프로필 편집 모달이 닫히지 않도록 수정했다. - 선택 항목이 없을 때 복사 단축키를 누르면 클립보드가 비워지던 문제를 해결했다. ## 모바일 기능 및 플랫폼별 수정 - Android 그룹 DM 알림에 발신자 이름 대신 그룹 이름이 표시되도록 변경해 iOS와 동작을 통일했다. - Android에서 여러 오디오 트랙이 포함된 동영상이 정상적으로 재생되도록 수정했다. - iOS의 클라이언트 테마 목록을 스와이프할 때 지나치게 빠르게 스크롤되던 문제를 해결했다. - Android에서 불필요한 하단 바가 표시되어 상호작용을 막던 문제를 수정했다. - iOS 및 Android 연결 설정의 버튼 정렬 문제를 해결했다. - 일부 Android 기기에서 Shop이 한 열로만 표시되던 문제를 수정했다. - iOS에서 GIF 선택기로 새 아바타를 설정할 때 정지 이미지로 저장되던 문제를 해결했다. - 모바일의 채널 탐색 기능은 베타 상태를 종료하고 정식 기능으로 전환됐다. ## 서버 권한과 커뮤니티 관리 - 신뢰할 수 있는 사용자에게 부여할 수 있는 `Bypass Slowmode` 권한을 추가했다. - 이 권한을 기존 역할과 연결하는 설정이 2월 23일까지 서버 관리자에게 제공될 예정이다. - 역할 멘션을 클릭해 해당 역할을 가진 사용자 목록을 확인하는 기능이 모든 안정화 버전에 적용됐다. - 서버 초대 모달이 사용자명뿐 아니라 표시 이름도 지원하도록 개선됐다. - 서버 태그가 데스크톱 프로필 미리보기에 올바르게 반영되도록 수정했다. - 역할 선택 필드가 투명하게 표시되던 문제와 서버 설정의 이모지 영역 정렬 문제를 해결했다. ## 오디오·비디오 백엔드의 Rust 전환 - Discord는 지난 1년간 오디오·비디오 백엔드를 Rust로 이전해 왔다. - 현재 전체 트래픽의 80% 이상이 새로운 Rust 기반 백엔드에서 처리된다. - 이번 패치에서는 이 마이그레이션이 상당히 진행되었음을 강조하며, 성능과 안정성 개선의 기반으로 제시했다. ## 시간 표시와 기타 사용성 개선 - 데스크톱에서 새로운 `@time` 명령어를 제공한다. - 사용자가 특정 시각을 입력하면 Discord가 Linux 타임스탬프를 생성하고, 보는 사람의 시간대에 맞춰 자동으로 표시한다. - `Ctrl+Alt+Shift+W` 또는 macOS의 `Cmd+Option+Shift+W`로 Vibing Wumpus 2.0을 실행할 수 있다. - 로그아웃할 때 재생 중인 음성 메시지가 정상적으로 중지되도록 수정했다. - 친구 요청을 무시한 뒤 DM 화면의 버튼이 “친구 요청 수락”에서 “친구 추가”로 올바르게 변경된다. - 이벤트 미리보기에서 Markdown이 정상적으로 렌더링된다. - 이벤트 진행 중에는 오류를 유발할 수 있는 “관심 있음” 버튼이 표시되지 않도록 수정했다. ## 프로필, 채널, 메시지 관련 버그 수정 - 프로필의 “About Me”를 편집할 때 커서가 부적절하게 텍스트 끝으로 이동하던 문제를 해결했다. - 서버별 프로필 편집 중 아바타 장식이 제대로 렌더링되지 않던 문제를 수정했다. - 프로필 테마 그라디언트가 모달 전체를 채우지 못하던 문제를 해결했다. - 매우 긴 포럼 채널 설명 때문에 채널 탐색 화면이 흔들리던 문제를 수정했다. - 서버 멤버 메뉴의 열 정렬 문제를 해결했다. - 포럼 채널이 포함된 온보딩 작업에서 UI 요소가 겹치던 문제를 수정했다. - 이모지 편집 시 “완료” 버튼을 빠르게 두 번 누르면 이모지가 중복되던 문제를 해결했다. - 서버에 텍스트 채널이 없는 상태에서 스티커의 관련 이모지를 클릭하면 클라이언트가 충돌하던 문제를 수정했다. - 받은 선물 모달이 두 번 나타나는 문제를 해결했다. - 데스크톱 받은편지함의 필터가 작동하지 않던 문제를 수정했다. ## 안정성 및 인터페이스 개선 - 특정 메뉴를 탐색할 때 클라이언트가 잠기는 문제를 해결했다. - Checkpoint 모달이 중복 표시되어 작업이 두 번 로드될 수 있던 문제를 수정했다. - F10 이후 기능 키가 UI에 `0`으로 표시되고 저장되지 않던 문제를 해결했다. - 위험할 수 있는 다운로드 모달의 버튼 간 여백을 조정했다. - 모바일의 커뮤니티 활성화 화면이 제대로 표시되지 않던 문제를 수정했다. - iOS에서 채널 카테고리가 읽지 않은 채널처럼 보이던 스타일 문제를 해결했다. - 데스크톱의 서버 설정 이모지 영역, 역할 선택 영역 등 여러 UI 정렬과 여백을 개선했다. - 모든 수정 사항은 코드에 반영됐지만 플랫폼별 배포는 단계적으로 진행될 수 있다. 이번 업데이트는 새로운 대형 기능보다는 성능과 안정성, 플랫폼 간 동작 통일에 초점을 맞췄다. 특히 데스크톱 사용자는 렌더링 지연 감소를, 스트리밍 사용자는 화면 확대·이동과 빠른 미리보기를, 서버 관리자는 `Bypass Slowmode` 권한을 우선 확인할 만하다.

원문 읽기(새 탭에서 열림)
cloudflare원문

ecdysis를 통한 오래된 코드 탈 (새 탭에서 열림)

Cloudflare는 수년간 자사 인프라에서 수백만 건의 요청을 중단 없이 처리하며 검증한 Rust 라이브러리 'ecdysis'를 오픈소스로 공개했습니다. 이 라이브러리는 네트워크 서비스 업데이트 시 연결 끊김이나 새로운 연결 거부 없이 프로세스를 재시작할 수 있는 '우아한 재시작(Graceful Restart)' 기능을 제공합니다. 이를 통해 보안 패치나 기능 업데이트 시에도 실시간 트래픽에 영향을 주지 않고 안전하게 최신 코드로 교체할 수 있습니다. ### 기존 재시작 방식의 한계와 문제점 * 단순한 재시작 방식(이전 프로세스 종료 후 새 프로세스 시작)은 소켓을 닫는 순간부터 새 프로세스가 리스닝을 시작할 때까지 공백이 발생하며, 이 기간에 들어오는 연결은 커널에 의해 `ECONNREFUSED`로 거부됩니다. * 이미 연결된 세션(대용량 업로드, 비디오 스트리밍, WebSocket 등)이 프로세스 종료와 함께 강제로 끊기며 사용자 경험에 악영향을 미칩니다. * `SO_REUSEPORT` 옵션은 여러 프로세스가 동일한 포트를 바인딩하게 해주지만, 새 프로세스가 연결을 수락(`accept`)하기 전에 이전 프로세스가 종료되면 커널 큐에서 대기 중이던 연결들이 고아 상태가 되어 폐기되는 고유의 결함이 있습니다. ### ecdysis의 작동 원리와 포크 모델 * NGINX의 설계 방식을 차용하여, 실행 중인 부모 프로세스가 `fork()`를 통해 자식 프로세스를 생성하고, 자식은 `execve()`를 실행하여 새 버전의 코드로 자신을 교체합니다. * 이 과정에서 부모 프로세스는 명명된 파이프(named pipe)를 통해 소켓 파일 디스크립터(FD)를 자식에게 상속하며, 두 프로세스가 잠시 소켓을 공유하여 공백 없는 트래픽 처리를 보장합니다. * 자식 프로세스가 초기화를 완료했다는 신호를 보내면 부모는 그제야 소켓을 닫고 기존 연결만 처리한 뒤 종료(Draining)되며, 만약 자식이 초기화 중 충돌하더라도 부모가 여전히 동작 중이므로 서비스 중단이 발생하지 않습니다. ### 주요 기능 및 시스템 통합 * **Tokio 비동기 런타임 지원**: 고성능 Rust 서비스를 위해 Tokio용 비동기 스트림 래퍼를 기본 제공하므로, 상속받은 소켓을 별도의 복잡한 연동 없이 즉시 리스너로 사용할 수 있습니다. * **systemd 통합**: `systemd-notify` 기능을 내장하여 서비스 유닛 설정의 `Type=notify-reload`와 연동될 수 있으며, 시스템 레벨에서 프로세스 수명 주기를 정확히 추적할 수 있습니다. * **검증된 신뢰성**: Cloudflare의 글로벌 네트워크에서 트래픽 라우팅, TLS 수명 주기 관리, 방화벽 규칙 적용 등 가장 핵심적인 서비스들에 5년 넘게 사용되며 안정성을 입증했습니다. 가용성이 극도로 중요한 Rust 기반 네트워크 서비스를 운영한다면, `ecdysis`는 복잡한 소켓 공유 로직을 직접 구현할 필요 없이 제로 다운타임 업데이트를 구현할 수 있는 가장 실무적인 해결책이 될 것입니다.

meta원문

대규모 환경의 Rust (새 탭에서 열림)

WhatsApp은 최근 30억 명 이상의 사용자들을 멀웨어 위협으로부터 보호하기 위해 미디어 처리 라이브러리를 Rust 언어로 재구축하여 성공적으로 배포했습니다. 이는 글로벌 규모의 서비스에서 Rust가 프로덕션 환경에 적합함을 증명한 사례로, 특히 메모리 안전성이 취약한 C/C++ 기반의 미디어 파싱 라이브러리에서 발생할 수 있는 보안 취약점을 근본적으로 해결하는 데 중점을 두었습니다. 결과적으로 WhatsApp은 성능과 메모리 효율성을 동시에 개선하면서도 사용자 보안을 한층 더 강화하는 성과를 거두었습니다. **미디어 보안의 취약점과 대응의 역사** - 이미지나 영상처럼 무해해 보이는 파일도 운영체제의 취약점을 공격하는 악성 코드를 포함할 수 있으며, 2015년 안드로이드의 'Stagefright' 취약점이 대표적인 사례입니다. - 당시 WhatsApp은 OS 라이브러리의 패치를 기다리는 대신, 자체 개발한 C++ 기반의 미디어 일관성 검사 라이브러리인 'wamedia'를 통해 표준을 준수하지 않는 파일을 사전에 차단하는 방식을 택했습니다. - 하지만 미디어 체크 로직 자체가 신뢰할 수 없는 입력을 자동으로 처리하기 때문에, 이 라이브러리 자체의 메모리 안전성을 확보하는 것이 보안의 핵심 과제로 떠올랐습니다. **Rust를 통한 대규모 현대화 및 성능 개선** - WhatsApp은 점진적인 수정 대신 기존 C++ 버전과 병행하여 Rust 버전의 라이브러리를 새롭게 개발했습니다. - 두 언어 간의 호환성을 보장하기 위해 '디퍼런셜 퍼징(Differential Fuzzing)'과 광범위한 통합 테스트를 거쳐 안전성을 검증했습니다. - 기존 160,000줄의 C++ 코드를 90,000줄의 Rust 코드로 대체했으며, 결과적으로 이전보다 더 우수한 성능과 낮은 런타임 메모리 사용량을 기록했습니다. - 안드로이드, iOS, 웹, 웨어러블 등 다양한 플랫폼 지원을 위한 빌드 시스템 구축과 바이너리 크기 최적화라는 기술적 난관을 극복하고 글로벌 배포를 완료했습니다. **다층 방어 체계 'Kaleidoscope'의 구축** - Rust로 작성된 이 라이브러리들은 'Kaleidoscope'라 불리는 종합 보안 체크 시스템의 핵심 구성 요소입니다. - 단순히 파일 구조의 결함을 찾는 것을 넘어, PDF 내의 스크립트 요소나 임베디드 파일, 확장자를 위조한 MIME 타입 변조 등을 감지합니다. - 실행 파일이나 앱 설치 파일과 같은 위험한 파일 형식을 식별하여 사용자 인터페이스(UX) 차원에서 특별 관리함으로써 비공식 클라이언트나 악성 첨부파일로부터 사용자를 보호합니다. **메모리 안전 언어 중심의 보안 로드맵** - WhatsApp의 분석에 따르면 심각도가 높은 취약점의 대부분은 C/C++의 메모리 관리 문제에서 발생하며, 이를 해결하기 위해 새로운 코드 작성 시 메모리 안전 언어(Memory Safe Language)를 기본으로 선택하고 있습니다. - 불필요한 공격 표면을 최소화하고, 기존 C/C++ 코드에 대해서는 강화된 메모리 할당자와 보안 버퍼 API를 적용하는 등 보안 보증 투자를 병행하고 있습니다. - 이번 Rust 도입의 성공을 바탕으로 향후 더 많은 영역에 Rust 채택을 가속화하여 내부 방어 체계를 지속적으로 강화할 계획입니다. **결론 및 제언** WhatsApp의 사례는 보안이 중요한 클라이언트 사이드 애플리케이션에서 Rust가 단순한 대안을 넘어 최고의 선택지가 될 수 있음을 보여줍니다. 특히 외부에서 유입되는 미가공 데이터를 파싱해야 하는 시스템이라면, 메모리 안전성이 보장되는 Rust로의 전환을 통해 보안 사고의 근본 원인을 제거하고 운영 효율성을 높이는 전략을 적극 검토할 필요가 있습니다.

cloudflare원문

CNAME이 먼저인가 A 레 (새 탭에서 열림)

Cloudflare의 DNS 서비스인 1.1.1.1은 메모리 사용량을 최적화하기 위해 DNS 응답 내 레코드 순서를 변경했다가 전 세계적인 접속 장애를 일으켰습니다. 대다수 현대 소프트웨어는 DNS 레코드 순서를 무시하지만, glibc와 같은 특정 구현체는 CNAME 레코드가 A 레코드보다 먼저 등장할 것을 전제로 작동하기 때문입니다. 결국 Cloudflare는 이전의 순서로 로직을 롤백하여 문제를 해결했습니다. ### CNAME 체인과 부분 캐싱 메커니즘 * **DNS 별칭 추적:** `www.example.com`을 조회할 때 리졸버는 최종 IP 주소에 도달할 때까지 여러 개의 CNAME(별칭)을 따라가며, 이 과정에서 발생하는 모든 중간 레코드를 캐싱합니다. * **부분 만료 처리:** 체인 내 레코드들은 각기 다른 TTL(유효 기간)을 가집니다. 일부 CNAME은 유효하지만 최종 A 레코드가 만료된 경우, 리졸버는 전체 체인을 다시 조회하는 대신 만료된 부분만 갱신하여 기존 캐시와 병합합니다. * **병합 과정의 중요성:** 갱신된 레코드와 기존 캐시 레코드를 하나의 응답으로 합칠 때, 이들의 배열 순서가 클라이언트의 해석 방식에 영향을 미칩니다. ### 성능 최적화를 위한 로직 변경 * **기존 방식 (CNAME 우선):** 새로운 리스트를 생성하여 캐시된 CNAME들을 먼저 넣고, 그 뒤에 새로 조회된 A 레코드를 추가했습니다. 이는 메모리 할당과 복사 비용이 추가로 발생합니다. * **변경 방식 (A 레코드 우선):** 메모리 사용량을 줄이기 위해 기존의 응답 리스트 끝에 CNAME 레코드를 단순히 덧붙이는(append) 방식으로 변경했습니다. * **결과:** 이 사소한 변경으로 인해 DNS 응답 데이터에서 CNAME이 최종 결과값인 A 레코드보다 뒤에 위치하게 되었습니다. ### glibc 등 DNS 클라이언트의 처리 방식 문제 * **순차적 탐색:** 리눅스에서 널리 사용되는 `glibc`의 `getaddrinfo`와 같은 구현체는 DNS 응답을 순차적으로 읽으며 '찾아야 할 이름'을 업데이트합니다. * **인식 실패:** 클라이언트가 CNAME을 먼저 발견하면 "다음 타겟 이름"을 갱신하고 이후에 나오는 A 레코드를 수락합니다. 하지만 A 레코드가 먼저 나오면 아직 CNAME 정보를 모르기 때문에 해당 레코드를 무관한 데이터로 간주하고 무시합니다. * **결과적 오류:** 모든 데이터를 읽었음에도 불구하고 클라이언트는 매칭되는 IP를 찾지 못해 최종적으로 응답이 비어 있다는 결론을 내리게 됩니다. ### 시사점 및 결론 40년 된 DNS 프로토콜의 모호성으로 인해 레코드 순서에 대한 엄격한 정의가 부족할 수 있지만, 실제 환경에서는 전통적인 순서(CNAME -> Answer)를 유지하는 것이 하위 호환성을 위해 필수적입니다. 시스템의 성능 최적화가 기존 생태계의 암묵적인 동작 원리를 깨뜨리지 않는지, 특히 표준 라이브러리 수준의 하위 호환성을 철저히 검증해야 함을 보여주는 사례입니다.

discord4분 읽기큐레이션 요약

디스코드 패치 노트:

Discord의 2025년 12월 8일 패치는 대용량 업로드 안정성, 앱 성능, 동영상 로딩 속도, 설정 화면 사용성을 크게 개선한 업데이트다. 미디어 업로드 재시도 로직을 Rust로 재작성하고 중단된 업로드 재개를 지원했으며, CDN 설정 변경으로 동영상 임베드 시작 지연도 크게 줄였다. 이와 함께 Desktop·iOS·Android 전반에서 수많은 UI 오류와 검색, 권한, 이벤트, 채팅 관련 버그를 수정했다. ## 업로드 성능과 안정성 개선 - 미디어 업로드 클라이언트를 리팩터링했다. - 업로드 중단 시 처음부터 다시 시작하지 않고 이어서 진행할 수 있는 **파일 업로드 재개 기능**을 추가했다. - Rust로 작성한 새로운 재시도 로직을 적용해 전체 업로드 지연 시간이 약 15% 감소했다. - iOS: 약 21% 개선 - Android: 약 10% 개선 - 대용량 파일이나 불안정한 네트워크 환경에서 업로드 성공률과 체감 속도가 향상될 것으로 보인다. ## 동영상 임베드 로딩 개선 - CDN 설정을 변경해 동영상 임베드의 시작 속도를 크게 개선했다. - P90 지연 시간이 600ms에서 275ms로 줄어 약 54% 개선됐다. - P95 지연 시간은 1,250ms에서 658ms로 줄어 약 47% 개선됐다. - 일부 동영상이 재생까지 최대 40초 걸리던 비정상적인 사례도 해결했다. ## 설정 화면과 플랫폼 업데이트 - Desktop 사용자 설정 화면을 새롭게 디자인했다. - 디자인 체계를 정리해 원하는 설정을 더 쉽게 찾을 수 있도록 했으며, 내부 지표상 개선 효과가 확인됐다. - 모바일 앱의 React Native 버전을 0.78에서 0.81.4로 업데이트했다. - Desktop 앱의 Electron 버전을 37로 업그레이드했다. ## 검색·권한·이벤트 관련 수정 - Server Hub에서 검색 성능을 개선했으며, 50개 이상의 서버가 연결된 허브에서 효과가 특히 크다. - 서버 닉네임 변경 권한이 없을 때 오류 메시지가 중복 표시되던 문제를 수정했다. - Student Hubs 검색에서 잘못된 접근 권한 오류가 나타나던 문제를 해결했다. - 설정에서 특정 문자열을 검색했을 때 카테고리가 비어 보이던 문제를 수정했다. - Upcoming Events 배너를 닫을 수 있게 했다. - 이벤트 초대에서 참여 버튼이 작동하지 않거나, 사용자 지정 장소를 포함한 이벤트 공유 모달이 제대로 동작하지 않던 문제를 해결했다. - 이벤트 팝업의 여러 액션 버튼 정렬과 초대 문구를 개선했다. ## Desktop 및 모바일 UI 버그 수정 - Linux에서 제목 표시줄이 두 개 나타나던 문제를 해결했다. - macOS 창 제어 버튼의 정렬을 수정했다. - 서버 목록의 스크롤바, 폴더의 잘못된 스크롤바 및 빈 공간 표시 문제를 플랫폼별로 해결했다. - 서버 목록에 unread 표시 요소와 관련된 흰색 픽셀이 나타나던 문제를 수정했다. - 친구 요청의 Accept/Deny 버튼 간격을 조정했다. - 서버 초대 모달, 검색창, 프로필 미리보기, Nitro 설정 화면의 디자인 불일치를 개선했다. - 이모지 슬롯이 음수로 표시되거나, Emoji Studio의 이미지 초기화 버튼이 이미지를 중앙에 배치하지 못하던 문제를 해결했다. - Avatar Decoration과 Nameplate 미리보기 및 기본값 사용 버튼의 오류를 수정했다. - Android·iOS에서 서버별 Nameplate의 “None” 옵션을 선택할 수 없던 문제를 해결했다. - 설정과 프로필 관련 일부 문자열의 현지화 문제를 수정했다. ## 채팅과 메시지 기능 개선 - Desktop에서 여러 줄 메시지를 입력할 때 Message Forward 화면의 입력 영역이 시각적으로 이동하던 문제를 수정했다. - 스포일러를 공개하기 전 타임스탬프가 제대로 표시되지 않던 문제를 해결했다. - iOS에서 메시지 스와이프 시 행 높이가 잘못 계산되거나 답글 이동이 실패하던 문제를 수정했다. - 스레드 미리보기가 있을 때 스크롤바를 조작할 수 없던 문제를 해결했다. - Android 코드 블록이 고정폭 글꼴로 표시되지 않던 문제를 수정했다. - Android의 채널 음소거 화면 헤더 정렬과 스티커 전송 후 Picker가 닫히지 않는 문제를 개선했다. - Emoji Picker에서 서버 간 이동이 되지 않던 문제를 해결했다. - iOS에서 포럼 게시글에 답글을 스와이프하거나, 메시지와 스레드를 연결하는 시각적 요소가 표시되지 않던 문제를 수정했다. - Inbox에서 스레드 생성 메시지로 이동할 수 없던 문제를 해결했다. - 포럼 게시물 검색창의 불필요한 여백을 줄였다. 이번 패치는 새로운 대형 기능을 추가하기보다, 업로드와 동영상처럼 체감 효과가 큰 성능 영역을 개선하고 Desktop·모바일 전반의 세부 버그를 광범위하게 정리한 업데이트다. 특히 대용량 파일을 자주 올리거나 모바일에서 Discord를 사용하는 이용자는 업로드 재개와 응답 속도 개선을 가장 크게 체감할 가능성이 높다.

원문 읽기(새 탭에서 열림)
datadog2분 읽기큐레이션 요약

실시간 시계열 스토리지

Datadog이 Gartner의 2026년 Observability Platforms 매직 쿼드런트에서 ‘Leader’로 선정되었다는 내용이 제시되어 있습니다. 다만 제공된 본문에는 선정 근거와 평가 세부사항보다 Datadog 제품 메뉴와 링크 목록이 대부분 포함되어 있어, 기술 블로그의 구체적인 주장이나 결론을 충분히 확인하기는 어렵습니다. ## Gartner 매직 쿼드런트에서의 리더 선정 - Datadog은 Gartner® Magic Quadrant™ for Observability Platforms 2026에서 리더로 소개됩니다. - 연결된 리소스는 Datadog의 관측성 플랫폼 역량을 강조하기 위한 홍보 자료로 보입니다. - 제공된 내용만으로는 평가 기준, 경쟁사 비교, 실행 능력(Ability to Execute), 비전 완성도(Completeness of Vision) 점수는 확인할 수 없습니다. ## Datadog의 통합 관측성 범위 제공된 제품 목록은 Datadog이 단일 모니터링 도구를 넘어 여러 운영 영역을 통합하는 플랫폼임을 보여줍니다. - **인프라 관측성** - 인프라·메트릭·컨테이너·Kubernetes 모니터링 - 네트워크, 서버리스, GPU, 스토리지 및 클라우드 비용 관리 - **애플리케이션 성능 관리** - APM, 분산 추적, Continuous Profiler - 동적 계측(Dynamic Instrumentation), 서비스 모니터링, AI 에이전트 관측성 - **로그 및 데이터 관측성** - 로그 관리, 민감 데이터 탐지, 감사 추적 - 데이터베이스, 데이터 스트림, 데이터 품질 및 작업 모니터링 - **보안** - 코드 보안, SAST, IAST, 소프트웨어 구성 분석 - 클라우드 보안, SIEM, 워크로드 보호, 애플리케이션·API 보호 - **디지털 경험** - 브라우저·모바일 RUM - 세션 리플레이, 신시틱 모니터링, 오류 추적, 제품 분석 - **소프트웨어 제공 및 서비스 관리** - CI 가시성, 테스트 최적화, 코드 커버리지, 기능 플래그 - 인시던트 대응, SLO, 이벤트 관리, 워크플로 자동화 ## AI와 자동화 기능 - AI 에이전트 관측성, GPU 모니터링, AI 통합 기능을 제공하는 것으로 나열되어 있습니다. - Bits 계열 기능을 통해 조사, 채팅, 보안 분석, 코드 작업을 지원합니다. - MCP 서버와 에이전트 디렉터리 등 외부 도구 및 AI 에이전트와의 연계를 지원합니다. - Watchdog과 자동화 기능은 이상 탐지와 운영 대응을 자동화하는 방향을 보여줍니다. ## 제공된 글의 한계 - 실제 본문이 Datadog의 사이트 내비게이션 목록에서 중간에 잘린 형태로 제공되었습니다. - Gartner의 평가 이유, 제품별 강점과 약점, 고객 사례, 수치와 결론은 포함되어 있지 않습니다. - 따라서 현재 내용만으로는 “Datadog이 관측성 전 영역을 포괄하는 통합 플랫폼으로 평가받았다”는 수준까지만 요약할 수 있습니다. 실제 기술적 평가와 Gartner 선정 근거를 정확히 요약하려면 글 본문 전체나 원문 링크의 내용을 추가로 제공해야 합니다.

원문 읽기(새 탭에서 열림)
datadog원문

대규모 성능을 위해 Rust로 구축한 실시간 시계열 저장소를 다시 발전시키다 (새 탭에서 열림)

데이터독(Datadog)은 급증하는 데이터 볼륨과 고카디널리티(high-cardinality) 워크로드를 처리하기 위해 Rust 기반의 6세대 실시간 시계열 데이터베이스 엔진을 새롭게 설계했습니다. 기존 시스템의 한계를 극복하기 위해 인제스션(Ingestion), 저장, 쿼리 실행 구조를 근본적으로 재구성함으로써 수집 성능은 60배, 쿼리 속도는 최대 5배까지 향상시키는 성과를 거두었습니다. 이 글은 지난 15년간 데이터독이 카산드라에서 시작해 Rust 기반의 전용 엔진에 이르기까지 거쳐온 기술적 진화 과정과 그 과정에서 얻은 교훈을 다룹니다. ### 데이터독 시계열 저장소의 아키텍처 데이터독의 메트릭 플랫폼은 데이터의 효율적인 처리를 위해 실시간 저장소와 인덱스 데이터베이스를 분리하여 운영합니다. * **RTDB (Real-time DB):** `<timeseries_id, timestamp, value>` 형태의 원시 메트릭 데이터를 저장하고 집계하며, 최신 데이터를 실시간으로 서빙합니다. * **인덱스 데이터베이스:** 메트릭 식별자와 태그 정보를 `<timeseries_id, tags>` 형태로 관리합니다. * **데이터 흐름:** 쿼리가 발생하면 상위 서비스가 RTDB와 인덱스 노드에 각각 접속하여 결과를 가져오고, RTDB 노드 내부는 인테이크(Intake), 스토리지 엔진, 스냅샷 모듈, gRPC 쿼리 실행 계층 등으로 구성되어 유기적으로 동작합니다. ### 1세대부터 3세대: 확장성과 운영 효율의 탐색 초기 데이터독은 기성 솔루션을 활용하며 실시간 쿼리 성능과 운영 편의성을 확보하는 데 집중했습니다. * **Gen 1 (Cassandra):** 뛰어난 쓰기 확장성을 제공했으나, 알람 및 분석에 필요한 복잡한 실시간 쿼리를 지원하기 어렵고 대규모 데이터셋 반환 시 효율이 떨어지는 한계가 있었습니다. * **Gen 2 (Redis):** 빠른 읽기 속도와 운영 가시성을 제공했지만, 싱글 스레드 특성상 라이브 트래픽 처리 중 스냅샷 작업이 어려웠고 데이터 직렬화/역직렬화에 따른 CPU 및 메모리 비용이 증가했습니다. * **Gen 3 (MDBM):** `mmap`을 통해 OS 페이지 캐시를 활용하는 메모리 맵 방식의 키-값 저장소를 도입했으나, 대규모 워크로드에서 성능과 정확성 이슈가 발생하며 명시적인 I/O 관리의 필요성을 체감했습니다. ### 4세대와 5세대: 커스텀 엔진과 기능 확장 성능 한계를 돌파하기 위해 범용 DB를 벗어나 전용 스토리지 엔진을 직접 구현하기 시작했습니다. * **Gen 4 (Go 기반 B+ Tree):** Go 언어로 구현된 커스텀 B+ 트리 엔진을 도입하여 '코어당 스레드(thread-per-core)' 모델의 기초를 닦았으며, 처리량과 지연 시간 면에서 큰 진전을 이루었습니다. * **Gen 5 (RocksDB 통합):** 분포 메트릭(distribution metrics)과 DDSketch 타입을 지원하기 위해 RocksDB를 병행 도입했습니다. 하지만 기존 Go 엔진과 RocksDB가 공존하는 구조는 관리가 복잡하고 효율성이 분산되는 결과를 낳았습니다. ### 6세대: Rust 기반의 통합 엔진으로의 전환 파편화된 엔진을 통합하고 성능을 극대화하기 위해 Rust를 선택하여 차세대 시스템을 구축했습니다. * **통합 및 최적화:** 스칼라 값과 스케치 데이터를 모두 처리할 수 있는 단일 엔진을 Rust로 구축하여 언어 차원의 안정성과 고성능 I/O 제어권을 확보했습니다. * **성능 성과:** 이 구조적 변화를 통해 데이터 수집 성능을 60배 높였으며, 피크 시간대 쿼리 속도를 5배 향상시켜 전례 없는 규모의 트래픽을 효율적으로 수용하게 되었습니다. **결론 및 추천** 시스템 규모가 커짐에 따라 범용 데이터베이스나 `mmap`과 같은 추상화 계층은 오히려 성능 병목이 될 수 있습니다. 데이터독의 사례처럼 워크로드의 특성에 맞춰 I/O와 메모리 레이아웃을 직접 제어할 수 있는 전용 엔진을 구축하는 것이 기술적 부채를 해결하고 폭발적인 성장을 뒷받침하는 핵심 전략이 될 수 있습니다. 특히 Rust와 같은 시스템 프로그래밍 언어는 고성능 실시간 시스템을 재설계할 때 강력한 도구가 됩니다.

datadog원문

서버 의존성 없이 실시간 클라이언트 사이드 노이즈 억제 라이브러리를 구축한 방법 (새 탭에서 열림)

Datadog의 CoScreen 팀은 원격 협업 중 발생하는 배경 소음을 실시간으로 제거하기 위해, 높은 성능과 이식성을 갖춘 오픈소스 라이브러리인 `dtln-rs`를 개발했습니다. 기존의 노이즈 억제 도구들은 WebRTC와의 통합이 어렵거나 고성능 서버 자원을 요구한다는 한계가 있었으나, 이 라이브러리는 클라이언트 측에서 효율적으로 동작하도록 설계되었습니다. 결과적으로 M1 맥북 프로 기준 1초의 오디오를 단 33ms 만에 처리하며, 서버 의존성 없이 다양한 플랫폼에서 고품질의 실시간 소음 제거를 가능하게 합니다. **dtln-rs: 경량화된 실시간 노이즈 억제 라이브러리** * DTLN(Dual-Signal Transformation LSTM Network) 모델을 기반으로 구축된 Rust 언어 기반의 프로젝트입니다. * WebAssembly(WASM), Native Rust, Node.js 네이티브 모듈 등 다양한 타겟으로 빌드할 수 있어 웹 브라우저와 네이티브 앱 모두에 쉽게 통합 가능합니다. * 실제 테스트에서 이웃의 잔디 깎는 기계 소음을 완전히 제거할 정도로 뛰어난 성능을 보여주었으며, 이를 통해 사용자에게 실제적인 가치를 전달합니다. **DTLN 모델의 작동 원리와 효율성** * STFT(단시간 푸리에 변환)를 사용하여 소리를 작은 단위로 분해하고, 주파수별 볼륨(크기 스펙트럼)과 위상(Phase) 정보를 분석합니다. * LSTM(장단기 메모리) 신경망이 포함된 모델을 통해 분석된 데이터 중 어떤 부분이 음성이고 어떤 부분이 소음인지 실시간으로 판단합니다. * 위상 정보와 크기 성분을 모두 활용하는 딥러닝 방식 덕분에 에어컨 소음, 카페 소음, 종이 부스럭거리는 소리 등 다양한 환경에 동적으로 적응하며 즉각적인 감쇠가 가능합니다. **기존 기술의 한계와 개발 배경** * 기존의 고성능 AI 노이즈 제거 모델들은 대부분 강력한 서버 하드웨어를 필요로 하며, 이는 추가적인 지연 시간(Latency)과 막대한 서버 비용을 발생시킵니다. * WebRTC는 널리 쓰이는 오픈소스 기술임에도 불구하고 내장된 노이즈 제거 기능은 구세대 솔루션에 머물러 있어 현대적인 협업 도구들의 품질 요구 수준을 충족하지 못했습니다. * Google 등 대기업이 사용하는 최첨단 모델은 비공개 소스이거나 전용 서버 인프라에 종속되어 있어, 소규모 팀이나 일반 개발자들이 자신들의 앱에 고품질 기능을 구현하기에는 제약이 컸습니다. 실시간 오디오 및 비디오 애플리케이션을 개발하면서 서버 비용 부담 없이 고성능 노이즈 캔슬링 기능을 추가하고 싶다면 `dtln-rs`를 검토해 보시기 바랍니다. 클라이언트 측 리소스를 효율적으로 활용하면서도 WebRTC와 매끄럽게 결합되는 이 라이브러리는 사용자 경험을 한 단계 끌어올리는 실용적인 해결책이 될 것입니다.

figma3분 읽기큐레이션 요약

Rust의 메모리 최적화

Figma는 실시간 협업 파일의 서버 측 로딩 성능과 메모리 사용량을 개선하기 위해 Rust 자료구조를 최적화했다. 특히 노드 속성을 저장하던 `BTreeMap`을 작고 정렬된 벡터로 바꾸어 대용량 파일의 메모리 사용량을 약 25% 줄이고 역직렬화 속도도 높였다. 또한 포인터의 사용되지 않는 상위 비트에 필드 ID를 저장하는 비트 패킹 방식도 검토했지만, 이는 아직 프로덕션에 적용되지 않았다. ## 파일 로딩과 메모리 사용량의 문제 - Figma의 멀티플레이어 시스템은 파일 로딩, 협업자 업데이트 전파, 파일 상태 스냅샷 저장을 담당한다. - 복잡한 노드 그래프를 실시간으로 처리하기 위해 파일의 상당 부분을 메모리에 올린다. - 동적 페이지 로딩을 도입한 뒤 서버에서 디코딩해야 하는 파일 수가 약 30% 증가했다. - 이에 따라 로딩 경로에 있는 Rust 자료구조와 메모리 배치를 최적화할 필요가 생겼다. ## `BTreeMap`이 차지한 메모리 - Figma 파일은 삼각형, 프레임, 텍스트 등 다양한 노드의 집합으로 표현된다. - 각 노드는 색상, 타입, 부모 노드, 위치 같은 속성을 가진다. - 기존에는 속성을 다음과 같은 형태로 저장했다. ```rust BTreeMap<u16, pointer> ``` - `u16`은 속성 ID, 포인터는 속성 값의 위치를 의미한다. - 이 맵은 파일 로딩의 핵심 경로에 있었고, 전체 파일 메모리 사용량의 60% 이상을 차지했다. - 스키마의 속성 수는 200개 미만이며, 하나의 노드에 실제로 존재하는 속성은 평균 약 60개에 불과했다. - 속성 키가 작고 제한적이며, 대부분 특정 노드 유형에만 묶여 있다는 점에서 범용 맵이 과도하다고 판단했다. ## 정렬된 벡터로 자료구조 변경 - `BTreeMap` 대신 속성 ID와 포인터를 저장하는 정렬된 평탄 벡터를 사용했다. ```rust Vec<(u16, pointer)> ``` - 이론적인 복잡도만 보면 벡터가 불리하다. - 검색: `O(n)` - 중간 삽입: `O(n)` - 수정: 위치 탐색 비용 발생 - `BTreeMap`은 일반적으로 `O(log n)` 수준의 연산 제공 - 하지만 실제 파일 로딩에서는 벡터의 연속적인 메모리 배치가 더 유리했다. - CPU는 작은 선형 메모리 영역을 순차적으로 읽고 계산할 때 캐시 효율이 높다. - 결과적으로 역직렬화 속도가 향상됐고, 대용량 파일의 메모리 사용량은 약 25% 감소했다. - 이 사례는 Big O 복잡도만으로 실제 성능을 판단하기보다 데이터 크기와 메모리 지역성까지 고려해야 함을 보여준다. ## 포인터에 필드 ID를 함께 저장하는 비트 패킹 - 일반적인 포인터는 64비트지만, x86 시스템에서는 실제 주소 지정에 하위 48비트만 사용하는 경우가 많다. - 따라서 상위 16비트가 사용되지 않는다는 점에 착안해, 여기에 속성 필드 ID를 저장하는 방법을 검토했다. - 기존에는 속성 ID와 포인터를 별도 값으로 저장했지만, 비트 패킹 후에는 하나의 `u64`에 둘을 함께 담을 수 있다. ```rust Vec<u64> { [field_id_u16, pointer_u48], } ``` - 속성 ID가 정확히 16비트로 표현 가능하다는 점과 포인터의 남는 상위 비트가 맞아떨어졌다. - 이 방식은 메모리 접근과 데이터 구조의 크기를 더 줄일 가능성이 있다. - 다만 포인터의 상위 비트가 항상 사용 가능하다는 보장은 없으며, 하드웨어나 운영체제의 주소 체계가 바뀔 수 있다. - 따라서 해당 최적화는 조사 단계이며 아직 프로덕션에는 적용되지 않았다. 작은 데이터 집합에서는 범용 트리나 맵보다 단순한 연속 배열이 더 빠르고 효율적일 수 있다. Rust에서 성능을 최적화할 때는 이론적 복잡도뿐 아니라 실제 데이터 크기, CPU 캐시 지역성, 포인터 표현 방식, 플랫폼 호환성까지 함께 측정하고 판단하는 것이 중요하다.

원문 읽기(새 탭에서 열림)
discord4분 읽기큐레이션 요약

2025

Discord의 2025년 6월 3일 패치에는 성능·안정성 개선과 다양한 플랫폼별 버그 수정이 포함됐다. ARM 인프라 전환, Rust 기반 공통 스토어 개발, 비디오 초기화 최적화 등으로 지연 시간·리소스 사용량·충돌률을 개선했으며, 음성 메시지와 모바일 이미지 처리도 향상됐다. 동시에 Electron 35, React 19, React Native 0.78로 주요 클라이언트 프레임워크를 업그레이드했다. ## 인프라와 성능 개선 - 인프라 일부를 ARM 하드웨어로 이전하고 있다. - 코어당 부하와 사용자 지연 시간이 감소했다. - 하드웨어 효율 향상으로 에너지 소비도 줄어들 것으로 기대된다. - 비디오 및 스트림의 키프레임 생성 방식을 변경했다. - 카메라와 화면 공유 영상의 시작 지연 시간이 평균 10% 이상 개선됐다. - 앱의 핵심 스토어와 API 인터페이스를 여러 플랫폼에서 공유하는 Rust 구현으로 이전 중이다. - 이번 달에는 하나의 스토어를 마이그레이션했다. - 메모리 사용량, CPU 사용량, 충돌률 등 성능·신뢰성 지표에서 점진적인 개선을 확인했다. - Desktop 클라이언트를 Electron 35로 업그레이드했다. - 순수한 유지보수 목적의 업그레이드이며, 측정상 큰 성능 변화는 없었다. - 모바일은 React Native 0.78, 전체 클라이언트는 React 19로 업그레이드했다. - 큰 회귀 없이 성능과 품질이 점진적으로 향상됐다. ## 링크, 미디어, 음성 메시지 개선 - Android 앱 링크 처리 방식을 전면 개편했다. - 최신 앱 대부분에서 Discord 링크가 올바르게 앱으로 연결되도록 개선했다. - 웹과 Desktop에서 음성 메시지 재생 기능을 개선했다. - 재생 속도를 변경할 수 있다. - 앱을 닫거나 다른 화면으로 이동해도 재생 위치가 유지된다. - 모바일 이미지 압축 전략을 원본 해상도 기반으로 변경했다. - 저해상도 원본 이미지의 임베드 품질이 향상됐다. - 모든 플랫폼에서 이미지 업로드 지연 시간의 중앙값이 감소했다. ## 플랫폼별 버그 수정 - iOS: - Billing Settings에 남아 있던 빈 입력 영역을 제거했다. - Nitro 관리 메뉴를 페이지 상단으로 이동했다. - 다른 사용자의 프로필에서 서버별 프로필과 기본 프로필을 전환할 때 배너가 제대로 갱신되지 않던 문제를 수정했다. - Android: - 설문 결과를 가로로 스와이프할 수 없던 문제를 해결했다. - Firefox: - Soundboard에 사운드를 업로드할 수 없던 문제를 수정했다. - macOS: - 전체 화면 팝업에서 유니코드 이모지가 표시되지 않던 문제를 해결했다. - Linux: - 중복으로 표시되던 제목 표시줄을 제거했다. - Safari: - 서버 목록의 폴더 UI가 잘못 렌더링되던 문제를 수정했다. ## 서버·프로필·검색 UI 개선 - 사용자 프로필에서 콘텐츠 위로 스크롤해 빈 공간이 보이던 모바일 문제를 수정했다. - 친구 목록에서 특정 상태가 여러 줄로 표시되던 문제를 해결했다. - 커스텀 상태의 이모지 팝업 정렬을 수정했다. - Desktop 설정 검색창에 “M”을 입력하면 앱이 멈추던 문제를 해결했다. - 서버 탐색에서 서버 콘텐츠가 창 크기에 맞게 확장되지 않던 문제를 수정했다. - 서버 목록에서 Discovery를 통해 서버를 둘러본 뒤 서버가 중복 표시되던 문제를 해결했다. - 채널이 많은 서버로 이동할 때 채널 목록과 서버 헤더의 정렬이 어긋나던 문제를 수정했다. - 서버 폴더의 멘션 배지 잘림 현상을 해결했다. - Mutual Servers 목록에서 서버 별명이 없을 때 사용자 표시 이름과 사용자명이 중복 표시되던 회귀 버그를 수정했다. - 프로필 편집 후 저장 여부를 묻는 동작이 플랫폼과 필드에 따라 달랐던 문제를 통일했다. - 닉네임 변경 메뉴와 Members 팝업의 라이트 모드 색상 문제를 수정했다. - 프로필 배너, Nitro 프로필 배지 미리보기, 아바타 장식 및 프로필 효과의 Shop 링크 관련 오류를 해결했다. ## 공유·탐색·보안 관련 수정 - 이벤트 공유 UI의 Copy 버튼이 이벤트 링크 대신 서버 초대 링크를 복사하던 문제를 수정했다. - 사용자 프로필 모달에서 Shop 아이템으로 이동하지 못하던 문제를 해결했다. - 로그인 중 2FA 코드를 입력할 때 상태가 잘못 전달될 수 있던 문제를 수정했다. - 패스키 설정 과정에서 백업 코드가 제대로 표시되지 않던 문제를 해결했다. - Expression Picker 검색 중 맞춤법 수정이 검색어에 정상 반영되지 않던 문제를 수정했다. - Forwarding UI에서 검색어를 지워도 결과가 남아 있던 문제를 해결했다. - 스트림 초대에 Display Name이 사용되도록 변경했다. - 팝업 모달이 Overlay에서 잘못 렌더링되거나, 초대 모달의 모서리가 둥글게 표시되지 않던 문제를 수정했다. - 개인정보 설정의 빈 구분선과 서버 설정 저장 안내가 남아 있던 문제를 제거했다. - Entrance Sounds용 Soundboard 선택기가 앱 왼쪽 위에 표시되던 문제를 해결했다. 이번 업데이트는 새로운 대형 기능보다는 기반 인프라 현대화와 체감 성능 개선, 플랫폼별 UI 안정화에 초점이 맞춰져 있다. Discord 사용자는 특히 음성 메시지 재생 위치 유지, 영상 시작 속도, Android 링크 연결 개선을 체감할 가능성이 크며, 문제가 계속되면 해당 플랫폼과 기능을 함께 명시해 버그 리포트를 제출하는 것이 좋다.

원문 읽기(새 탭에서 열림)
datadog원문

밀리초 하나하나까지 단축하기: Datadog Lambda Extension을 Rust로 재구축한 방법 (새 탭에서 열림)

Datadog은 기존 Go 기반의 AWS Lambda 확장이 가진 높은 오버헤드를 해결하기 위해, 이를 Rust 언어로 완전히 재작성한 'Project Bottlecap'을 진행했습니다. 이를 통해 콜드 스타트 시간을 82% 단축하고 메모리 사용량을 40% 절감했으며, 바이너리 크기를 55MB에서 7MB로 줄이는 획기적인 성능 개선을 달성했습니다. 결과적으로 리소스가 제한된 서버리스 환경에서도 사용자 애플리케이션에 영향을 주지 않고 고정밀 텔레메트리 데이터를 수집할 수 있게 되었습니다. ### 기존 범용 에이전트 기반 설계의 한계 - 초기 Datadog Lambda 확장은 다중 호스트나 클러스터 환경에 최적화된 기존 Datadog 에이전트 코드를 기반으로 구축되었습니다. - 범용 에이전트는 대규모 처리량과 캐싱, 버퍼링에 초점이 맞춰져 있어 리소스가 극도로 제한된 람다의 단기 실행 환경에는 부적합했습니다. - 종속성 제거, 바이너리 압축(UPX), 지연 로딩 등 모든 최적화 수단을 동원했음에도 불구하고 콜드 스타트 지연 시간이 450~500ms 이하로 내려가지 않는 성능 한계에 직면했습니다. - 결국 범용 도구와 서버리스 전용 도구의 스케일 차이를 인정하고, 밑바닥부터 다시 작성하는 결정을 내렸습니다. ### Lambda 환경에서 Rust 언어의 전략적 이점 - **안정성 및 메모리 안전성:** 람다 확장이 충돌하면 함수 전체가 종료되고 샌드박스가 초기화되어 다시 콜드 스타트가 발생하는데, Rust는 컴파일 타임에 메모리 안전성을 보장하여 이러한 위험을 최소화합니다. - **바이너리 경량화:** 가비지 컬렉터와 대규모 런타임이 포함된 Go와 달리, Rust는 킬로바이트 또는 낮은 메가바이트 단위의 매우 작은 바이너리를 생성하여 초기 로딩 시간을 줄입니다. - **제한된 환경의 이점:** 람다는 아마존 리눅스와 x86/Arm 아키텍처라는 고정된 환경만 고려하면 되므로, 다양한 환경을 지원해야 하는 시스템 프로그래밍에서 Rust가 가질 수 있는 복잡성 문제가 크게 완화되었습니다. ### Project Bottlecap의 핵심 설계 원칙 - **철저한 성능 오버헤드 통제:** 모든 풀 리퀘스트(PR)마다 벤치마크를 수행하여 성능 저하를 감시했으며, 성능 향상을 위해 공식 AWS SDK 사용을 포기하고 직접 AWS API 호출과 서명 로직을 작성하는 트레이드오프를 감수했습니다. - **핸들러 영향 최소화:** 람다 확장 API를 활용하여 함수 핸들러가 결과를 반환한 후에 텔레메트리를 처리함으로써, 사용자 API 응답 속도에 미치는 영향을 제거했습니다. - **다양한 플러시(Flush) 전략:** 리소스 사용량이 적은 API 함수부터 대규모 배치 작업까지 대응할 수 있도록 데이터 전송 시점을 유연하게 설정할 수 있는 구조를 갖추었습니다. 범용 소프트웨어를 특정 환경에 맞춰 최적화하는 것에는 한계가 있습니다. 특히 실행 시간과 리소스 사용량이 곧 비용과 직결되는 서버리스 환경에서는, 해당 환경의 제약 조건을 반영한 전용 도구를 구축하는 것이 초기 개발 비용이 높더라도 장기적으로 성능과 안정성 측면에서 압도적인 이점을 제공합니다.

datadog3분 읽기큐레이션 요약

밀리초 단위까지 아끼

제공된 내용에는 본문이 아니라 Datadog 웹사이트의 제품 메뉴와 “Gartner® Observability Platforms Magic Quadrant™에서 Leader로 선정”되었다는 홍보 문구가 대부분 포함되어 있습니다. 따라서 Datadog Lambda Extension을 Rust로 구현한 기술적 배경이나 설계·성능 관련 결론은 확인할 수 없습니다. 현재 확인 가능한 범위에서는 Datadog이 인프라부터 애플리케이션, 로그, 보안, 사용자 경험, 소프트웨어 공급망, AI까지 통합 관측성 플랫폼으로 제공한다는 점이 중심입니다. ### Gartner 관측성 플랫폼 리더 선정 - Datadog은 Gartner의 Observability Platforms Magic Quadrant에서 Leader로 선정되었다고 소개합니다. - 이는 인프라 모니터링, 애플리케이션 성능 모니터링(APM), 로그 관리 등 여러 관측성 기능을 하나의 플랫폼에서 제공한다는 맥락으로 제시됩니다. - 다만 Gartner 평가의 세부 기준이나 Datadog의 강점·약점에 대한 본문 내용은 제공된 자료에 포함되어 있지 않습니다. ### 인프라 및 애플리케이션 모니터링 - 인프라 영역에는 다음 기능이 포함됩니다. - 메트릭 및 인프라 모니터링 - 컨테이너와 Kubernetes 오토스케일링 - 네트워크, 서버리스, GPU, 스토리지 모니터링 - 클라우드 비용 관리 - 애플리케이션 영역에는 다음 기능이 제공됩니다. - APM과 서비스 모니터링 - 연속 프로파일링 및 동적 계측 - 에이전트 관측성 ### 로그·데이터 관측성 - 로그 관리와 민감 데이터 탐지 기능을 제공합니다. - 데이터베이스, 데이터 스트림, 데이터 품질, 작업 실행 상태를 관찰할 수 있습니다. - Observability Pipelines를 통해 로그와 관측 데이터를 수집·처리하는 기능도 포함됩니다. ### 보안과 사용자 경험 - 코드 보안, SAST, IAST, 소프트웨어 구성 분석, IaC 보안 등 개발 단계의 보안 기능을 제공합니다. - 클라우드 보안, 취약점 관리, Cloud SIEM, 워크로드 보호, 애플리케이션·API 보호 기능도 포함됩니다. - 브라우저·모바일 RUM, 세션 리플레이, 합성 모니터링, 오류 추적을 통해 실제 사용자 경험을 분석할 수 있습니다. ### 소프트웨어 전달과 서비스 관리 - CI Visibility, 테스트 최적화, 지속적 테스트, 코드 커버리지, 기능 플래그 등의 기능이 나열되어 있습니다. - 서비스 카탈로그, SLO, 인시던트 대응, 케이스 관리, 워크플로 자동화 등 운영 관리 기능도 제공합니다. - 이를 통해 개발·배포·운영 과정의 데이터를 하나의 플랫폼에서 연결하려는 방향을 보여줍니다. ### AI 기반 기능 - Datadog은 AI 에이전트 관측성, GPU 모니터링, AI 통합 기능을 별도 영역으로 제공합니다. - Bits AI Agents, Bits Chat, Bits Investigation, Bits Security Analyst, MCP Server 등 AI 기반 조사·자동화 도구가 포함됩니다. - 그러나 제공된 내용만으로는 각 AI 기능의 동작 방식이나 실제 성능을 평가할 수 없습니다. 제공된 자료만으로는 링크된 기술 블로그의 본문을 요약하기 어렵습니다. Rust 기반 Datadog Lambda Extension의 구현 방식이나 성능 개선을 요약하려면 해당 글의 본문 내용이 추가로 필요합니다.

원문 읽기(새 탭에서 열림)