Techlist.io - 한국 테크 블로그 큐레이터

figma3분 읽기큐레이션 요약

Code Connect의 잠재력 활용

디자인과 개발의 간극을 줄이려면 두 팀이 공유할 수 있는 언어와 단일한 작업 흐름이 필요하다. Figma의 Code Connect는 디자인 시스템의 컴포넌트 구현 정보와 문서를 Dev Mode에서 직접 제공해 개발자가 맥락을 바꾸지 않고 올바른 코드를 사용할 수 있도록 돕는다. 패널 참가자들은 작은 컴포넌트부터 시작해 점진적으로 도입하고, 디자이너와 개발자의 전문성을 서로 존중해야 한다고 강조한다. ## 디자인과 개발이 함께 쓰는 언어 만들기 - 디자이너와 개발자는 컴포넌트 이름, 속성, 구현 방식에 대해 서로 다른 용어와 기대를 가질 수 있다. - 이 차이는 다음과 같은 문제로 이어진다. - 일관되지 않은 네이밍 - 디자인과 코드의 속성 불일치 - 팀 간 요구사항과 구현 결과의 불일치 - 디자인 시스템은 공통 컴포넌트, 패턴, 용어를 정의해 두 분야를 연결하는 “제3의 언어” 역할을 한다. - 단순히 규칙을 문서화하는 것뿐 아니라, 구성원이 쉽게 찾고 실제로 적용할 수 있게 만드는 것도 중요하다. ## 단일한 기준과 개발자 워크플로 연결 - Bumble의 Raul Menezes는 디자인과 코드에서 서로 다른 기준 문서가 사용되는 것이 일관성 저하의 주요 원인이라고 설명한다. - 같은 UI 패턴을 반복해서 직접 구현하면 다음 문제가 발생한다. - 중복 코드 증가 - 커스텀 구현 확산 - 유지보수 어려움 - 디자인 시스템과 실제 제품 간의 불일치 - 디자이너는 디자인 시스템 문서를 참고하지만, 개발자는 별도의 코드 저장소나 문서를 기준으로 삼는 경우가 많다. - Code Connect는 디자인 시스템의 코드 예시와 구현 정보를 Dev Mode 안에서 제공해 개발자가 기존 코드 편집 및 개발 흐름에서 바로 참고하도록 설계됐다. ## 도입 장벽을 낮추고 작은 규모로 시작하기 - 디자인 시스템을 구축했다고 해서 자동으로 팀 전체가 사용하는 것은 아니다. 개발자가 기존 작업 방식을 크게 바꿔야 한다면 adoption이 느려질 수 있다. - 기존에는 개발자가 디자인 구현 방식을 확인하기 위해 별도의 디자인 시스템 웹사이트로 이동해야 했다. - Code Connect를 사용하면 Dev Mode에서 특정 디자인이 코드로 구현되어 있는지, 어떤 방식으로 구현하는지 확인할 수 있어 컨텍스트 전환을 줄인다. - 처음부터 모든 컴포넌트를 연결하기보다 영향도가 높고 구조가 단순한 컴포넌트부터 시작하는 것이 권장된다. - 예: 토글 같은 작은 컴포넌트 - 디자인 속성과 코드 속성을 어떻게 매핑하는지 먼저 검증 - 팀이 도구의 효과와 운영 방식을 익힌 뒤 범위 확대 - Code Connect는 완성된 최종 해법이라기보다 더 큰 디자인-코드 통합을 위한 첫 단계로 제시된다. ## 서로의 전문성 존중하기 - 디자인과 개발의 간극을 줄인다는 것은 한쪽의 방식을 다른 쪽에 강요하는 것이 아니다. - 디자이너는 사용자 경험, 시각적 일관성, 패턴 설계에 강점을 가진다. - 개발자는 컴포넌트 구조, 재사용성, 기술적 제약, 유지보수성에 전문성이 있다. - 효과적인 디자인 시스템 운영을 위해서는 두 팀이 각자의 전문성을 인정하고, 공통 언어와 도구를 통해 협업해야 한다. - Code Connect는 디자인 시스템의 의도와 실제 코드 구현을 연결해 양쪽의 지식을 공유하는 매개 역할을 한다. ## 실용적인 적용 방법 - 디자인 시스템에서 자주 사용되고 영향도가 큰 컴포넌트를 우선 선정한다. - 디자인의 컴포넌트 속성과 코드의 props·API가 어떻게 대응하는지 정의한다. - Dev Mode에서 개발자가 별도 문서 검색 없이 구현 예시를 확인할 수 있도록 연결한다. - 초기 도입 후 다음을 점검한다. - 개발자가 실제로 재사용 컴포넌트를 선택하는지 - 중복·커스텀 구현이 줄었는지 - 디자인과 코드의 명명 및 속성이 일치하는지 - 검증된 운영 방식을 바탕으로 점차 복잡한 컴포넌트와 더 넓은 제품 영역으로 확대하는 것이 바람직하다.

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

파일 로드 속도 개선:

Figma는 파일 전체를 한꺼번에 불러오는 대신 사용자가 현재 보고 있는 페이지만 동적으로 로드해 파일 로딩 속도를 개선했다. 파일이 커져도 실제 사용자가 접근하는 콘텐츠의 복잡도에 비례해 로드하도록 설계한 결과, 가장 느린 5%의 페이지 로드 시간이 33% 감소했다. 핵심 과제는 페이지 간 컴포넌트·스타일·변수 참조 같은 의존성을 정확히 추적하면서 필요한 데이터만 전송하는 것이었다. ## 사용자 체감 복잡도에 맞춘 로딩 - Figma 파일은 여러 페이지, 컴포넌트, 라이브러리, 프로토타입 화면을 포함해 매우 커질 수 있다. - 하지만 사용자는 한 세션에서 파일의 모든 페이지를 탐색하지 않는 경우가 많다. - 따라서 파일 크기 전체가 아니라 현재 열어 본 페이지의 복잡도에 따라 로딩 시간이 결정되어야 한다. - 선택한 페이지만 먼저 표시하고, 다른 페이지는 사용자가 접근할 때 불러오면 초기 로딩 시간과 메모리 사용량을 줄일 수 있다. - Figma는 파일이 계속 커지더라도 로딩 성능은 지속적으로 개선되는 것을 목표로 삼았다. ## 페이지 간 읽기 의존성 - Figma 파일은 각 레이어와 속성을 가진 노드들의 트리 구조로 구성된다. - 노드는 다른 페이지에 있는 노드를 참조할 수 있으며, 이를 **읽기 의존성(read dependency)**이라고 부른다. - 예를 들어 인스턴스는 다른 페이지에 있는 원본 컴포넌트를 가리키므로, 올바르게 렌더링하려면 해당 컴포넌트 노드도 먼저 받아야 한다. - 스타일 역시 내부적으로 노드로 구현된다. - 특정 프레임이 `BrandPrimary` 색상 스타일을 사용하면 해당 스타일 노드를 로드해야 실제 색상값을 해석할 수 있다. - 변수도 같은 방식으로 동작한다. - 텍스트 크기에 `text-subheader` 변수를 적용했다면, 클라이언트는 변수 노드를 조회해 실제 값인 `16` 같은 원시 값을 확인해야 한다. - 따라서 단순히 현재 페이지만 로드해서는 부족하며, 렌더링에 필요한 다른 페이지의 참조 데이터까지 함께 찾아야 한다. ## QueryGraph 기반 동적 로딩 - Figma는 읽기 의존성을 메모리 내 그래프로 관리하는 **QueryGraph**를 구축했다. - QueryGraph는 의존 노드 간 연결을 추적하고, Figma의 멀티플레이어 시스템이 클라이언트에 어떤 데이터를 전송할지 결정하는 기반이 됐다. - 이 구조는 기존에 보기 전용 파일과 프로토타입의 동적 로딩을 구현하는 데 활용됐다. - 동적으로 불러오는 단위는 콘텐츠 유형에 따라 달라진다. - **Figma 캔버스:** 선택한 페이지를 먼저 로드하고, 추가 페이지는 필요할 때 요청한다. - **프로토타입 뷰어:** 한 번에 하나의 프레임을 표시하고, 사용자가 이동할 가능성이 있는 인접 프레임을 미리 로드한다. - 페이지를 로드할 때는 해당 페이지 자체뿐 아니라 다른 페이지에 존재하는 필수 컴포넌트·스타일·변수 노드도 QueryGraph를 통해 함께 전송한다. ## 동적 로딩의 효과 - 모든 페이지와 노드를 초기화하는 방식보다 불필요한 데이터 전송을 줄일 수 있다. - 사용자가 실제로 접근하지 않는 페이지를 메모리에 올리지 않아 메모리 사용량도 감소한다. - 큰 파일이라도 현재 작업 중인 페이지가 단순하다면 빠르게 캔버스를 표시할 수 있다. - 가장 느린 5%의 페이지 로드 시간이 33% 줄어드는 성과를 거뒀다. ## 실용적인 시사점 대규모 웹 애플리케이션에서는 전체 데이터를 일괄 로드하기보다 사용자의 현재 화면과 실제 접근 경로를 기준으로 로딩 단위를 정하는 것이 효과적이다. 다만 페이지 단위 지연 로딩을 적용할 때는 컴포넌트, 스타일, 변수처럼 화면 밖에 존재하는 참조 데이터까지 의존성 그래프로 추적해야 하며, 필요한 의존성만 정확히 함께 로드하는 설계가 중요하다.

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

엔지니어링 부사장 스

Datadog이 Gartner의 2026년 Observability Platforms Magic Quadrant에서 ‘Leader’로 선정되었다는 소식을 소개하는 페이지입니다. 제공된 내용은 평가 근거와 세부 분석보다는 Datadog의 제품군과 기능을 폭넓게 나열하는 데 초점을 둡니다. 따라서 리더 선정의 구체적인 이유나 경쟁사 비교는 본문만으로 확인하기 어렵습니다. ### Gartner 리더 선정 - Datadog은 Gartner의 **Observability Platforms Magic Quadrant 2026**에서 Leader로 소개됩니다. - 링크 제목과 배너를 통해 시장 내 관측성 플랫폼 공급업체로서의 위치를 강조합니다. - 다만 제공된 텍스트에는 Gartner의 평가 기준, 점수, 강점과 약점, 경쟁사 비교 내용이 포함되어 있지 않습니다. ### 인프라 및 애플리케이션 모니터링 - 인프라 영역에서는 다음 기능을 제공합니다. - 인프라·컨테이너·네트워크 모니터링 - 메트릭 수집 - Kubernetes 오토스케일링 - 서버리스 및 GPU 모니터링 - 클라우드 비용·스토리지 관리 - Cloudcraft를 통한 클라우드 아키텍처 시각화 - 애플리케이션 영역에는 다음 기능이 포함됩니다. - APM(Application Performance Monitoring) - 서비스 모니터링 - 지속적 프로파일링 - 동적 계측 - AI 에이전트 관측성 ### 로그 및 데이터 관측성 - 로그 관리와 Observability Pipelines를 통해 로그 수집·처리·전송을 지원합니다. - Sensitive Data Scanner로 로그에 포함된 민감정보를 탐지할 수 있습니다. - 데이터베이스 모니터링, 데이터 스트림 모니터링, 데이터 품질 및 작업 모니터링 기능도 제공합니다. - 이를 통해 애플리케이션뿐 아니라 데이터 파이프라인과 저장소까지 관측 범위를 확장합니다. ### 보안 관측성과 클라우드 보안 - 코드 보안, SAST, IAST, 소프트웨어 구성 분석(SCA), IaC 보안을 제공합니다. - 클라우드 환경에서는 다음을 다룹니다. - 취약점 관리 - CSPM(클라우드 보안 형상 관리) - CIEM(클라우드 인프라 권한 관리) - 컴플라이언스 - Cloud SIEM - 워크로드 보호 - 애플리케이션·API 보호 - 관측성과 보안 기능을 하나의 플랫폼에서 연계하려는 방향이 드러납니다. ### 사용자 경험과 소프트웨어 전달 - Browser·Mobile RUM으로 실제 사용자 경험을 추적합니다. - Session Replay, Synthetic Monitoring, 모바일 앱 테스트, 오류 추적, 제품 분석 및 실험 기능을 제공합니다. - CI Visibility, 테스트 최적화, 지속적 테스트, 코드 커버리지, 피처 플래그 등으로 소프트웨어 개발·배포 과정도 관측합니다. - 내부 개발자 포털과 IDE 플러그인을 통해 개발자 워크플로와 서비스 정보를 연결합니다. ### 서비스 관리와 AI 기능 - 이벤트 관리, 서비스 카탈로그, SLO, 인시던트 대응, 케이스 관리, 워크플로 자동화를 지원합니다. - Watchdog과 Bits 계열 AI 기능을 통해 이상 탐지, 장애 조사, 보안 분석, 대화형 질의 등을 자동화하려는 구성을 갖추고 있습니다. - AI 에이전트 관측성, GPU 모니터링, MCP Server 등 AI 애플리케이션 운영을 위한 기능도 포함됩니다. 제공된 자료만으로는 Gartner 선정의 세부 근거를 판단하기 어렵기 때문에, 실제 도입을 검토한다면 Gartner 원문에서 평가 기준과 제한사항을 확인한 뒤, 사용 중인 클라우드·Kubernetes·로그·보안 도구와의 연동성 및 전체 운영 비용을 별도로 검증하는 것이 좋습니다.

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

엔지니어링 부문 VP 스포트라이트: 이보 디미트로프 (새 탭에서 열림)

데이터독(Datadog)의 엔지니어링 VP 이보 디미트로프(Ivo Dimitrov)는 30년 이상의 경력을 가진 베테랑으로서, 고성능 저수준 시스템 개발자에서 대규모 분산 시스템을 총괄하는 리더로 성장해 온 인물입니다. 그는 마이크로소프트와 링크드인에서 쌓은 대규모 스토리지 인프라 구축 경험을 바탕으로, 현재 데이터독에서 메트릭과 이벤트 플랫폼의 기술적 혁신을 이끌고 있습니다. 기술적 깊이와 조직적 비전 사이의 균형을 강조하는 그의 여정은 복잡한 데이터 시스템을 다루는 엔지니어와 관리자들에게 중요한 통찰을 제공합니다. ### 저수준 시스템 개발에서 엔지니어링 리더십으로의 전환 * 전기 공학 전공 중 실시간 운영체제(RTOS) 커널 기여를 통해 소프트웨어 개발에 입문했으며, 이후 10년간 C/C++ 기반의 고성능 시스템 프로그래밍에 집중했습니다. * 마이크로소프트의 Azure Blob Storage 초기 팀에서 근무하던 중 조직 개편을 계기로 관리직을 맡게 되었으며, 현장에서의 실무 교육과 멘토링을 통해 리더십 역량을 쌓았습니다. * 자신의 업무에만 집중하는 단계를 넘어 타인의 성장을 촉진하고 조직 간의 경계를 조율하는 '오너십(Ownership)'의 가치를 발견하며 매니지먼트의 매력을 느꼈습니다. ### 대규모 분산 스토리지 플랫폼 구축 경험 * 링크드인 재직 당시, 현재까지 전체 데이터셋의 95% 이상을 처리하는 독점 키-값(Key-Value) 저장소인 'Espresso'를 초기 단계에서 성숙한 플랫폼으로 성장시켰습니다. * 파생 데이터 서빙을 위한 'Venice', 오픈소스 블록 스토리지인 'Ambry', 클러스터 관리자인 'Helix' 등 인터넷 규모의 스토리지 인프라 프로젝트들을 주도했습니다. * 이러한 경험을 통해 대규모 레거시 환경의 제약에서 벗어나, 기술적 위험을 감수하고 빠르게 혁신할 수 있는 문화적 유연성의 중요성을 깨달았습니다. ### 데이터독의 분산 데이터 시스템과 기술적 지향점 * 현재 데이터독에서 메트릭(Metrics), 이벤트(Events), 로그 및 트레이스 등 반정형 데이터를 처리하는 분산 데이터 시스템 조직을 총괄하고 있습니다. * 온라인 분석 워크로드에 최적화된 특수 메인 메모리 데이터베이스인 'Driveline'을 통해 시계열 데이터 처리의 효율성을 극대화하고 있습니다. * 서로 다른 도메인별 API를 통합하는 '교차 플랫폼 쿼리(Cross-Platform Queries)' 팀을 운영하여, 고객과 엔지니어 모두가 통일된 인터페이스로 데이터에 접근할 수 있도록 추상화 계층을 구축 중입니다. * 전체 쿼리의 80% 이상을 차지하는 알람(Alerts) 플랫폼을 메트릭 및 이벤트 플랫폼과 통합하여 시스템의 일관성을 높이고 있습니다. **실용적인 제언** 개인 기여자(IC)에서 관리자로 전환할 때는 기술적 전문성을 포기하는 것이 아니라, 그 전문성을 바탕으로 조직의 비전을 설계하고 팀원들이 역량을 발휘할 수 있는 환경을 조성하는 데 집중해야 합니다. 특히 데이터독의 사례처럼 쿠버네티스(Kubernetes) 기반의 현대적 인프라와 실험을 장려하는 문화를 결합할 때, 기술적 부채를 최소화하면서도 폭발적인 성장을 뒷받침하는 시스템을 구축할 수 있습니다.

datadog원문

.NET 연속 프로파일러: 메모리 사용량 (새 탭에서 열림)

Datadog의 .NET 프로파일러는 가비지 컬렉션(GC)의 효율성과 메모리 할당 패턴을 분석하여 애플리케이션의 성능 병목 현상을 진단합니다. 이 시스템은 모든 할당을 추적하는 대신 `AllocationTick` 이벤트를 활용한 샘플링 방식을 채택하여 운영 환경에서의 오버헤드를 최소화하면서도 정밀한 데이터를 제공합니다. 특히 .NET 7의 최신 API를 통해 객체의 생존 주기를 추적함으로써, CPU 부하의 원인이 되는 과도한 GC 작업과 잠재적인 메모리 누수 지점을 정확히 찾아내는 데 결론적인 도움을 줍니다. ### 가비지 컬렉터가 CPU에 미치는 영향 측정 * **전용 스레드 모니터링**: 서버 GC 설정 시 CLR이 생성하는 코어당 전용 스레드(.NET Server GC 및 .NET BGC)의 CPU 소비량을 운영체제로부터 직접 수집합니다. * **Pull 모델 채택**: GC 발생 시마다 이벤트를 받는 Push 방식과 달리, 프로파일러가 1분마다 주기적으로 GC 스레드의 CPU 사용 통계를 가져와 'Garbage Collector'라는 단일 프레임을 가진 네이티브 콜 스택 샘플로 기록합니다. * **버전별 차이**: .NET 5 이상에서는 GC 스레드 식별이 가능하여 정확한 측정이 가능하지만, 이전 버전에서는 스레드 ID 정보 부족으로 인해 이 기능을 완벽히 지원하기 어렵습니다. ### AllocationTick을 활용한 효율적인 할당 추적 * **샘플링 기반 추적**: 모든 객체 할당을 기록하는 `ObjectAllocated` 방식은 성능 저하가 극심하므로, 약 100KB의 할당이 누적될 때마다 발생하는 `AllocationTick` 이벤트를 사용하여 데이터를 수집합니다. * **상세 정보 수집**: 이벤트 페이로드에서 클래스 ID(ClassID), 타입 이름, 메모리 주소, 객체 크기뿐만 아니라 해당 객체가 할당된 힙의 종류(SOH, LOH, POH)까지 식별합니다. * **동기적 콜 스택 캡처**: 해당 이벤트는 할당을 수행한 스레드에서 동기적으로 발생하므로, 즉시 콜 스택을 워킹(Stack Walking)하여 어떤 비즈니스 로직이 메모리 압박을 유발하는지 특정할 수 있습니다. ### Weak Handle을 이용한 생존 객체 및 누수 탐지 * **객체 이동 대응**: GC의 컴팩션(Compaction) 단계에서 객체 주소가 변경되는 문제를 해결하기 위해, 샘플링된 객체에 대해 Weak 핸들을 생성하여 관리합니다. * **ICorProfilerInfo13 활용**: .NET 7에서 추가된 이 프로파일링 API를 통해, GC 이후에도 핸들이 가리키는 객체가 여전히 메모리에 살아있는지(`IsAllocated`)를 확인합니다. * **생명 주기 분석**: GC가 끝날 때마다 참조되지 않는 객체의 핸들은 제거하고, 생존한 객체들은 다음 프로필에 포함시켜 어떤 데이터가 메모리에 오래 머무르며 누수를 유발하는지 추적합니다. 운영 환경에서 메모리 문제를 분석할 때는 단순한 할당량 확인을 넘어, GC로 인한 CPU 점유율과 객체의 생존 기간을 함께 살펴야 합니다. 특히 .NET 7 이상의 최신 런타임을 활용하면 프로파일러의 Weak 핸들 추적 기능을 통해 메모리 누수 탐지의 정확도를 대폭 높일 수 있습니다.

datadog2분 읽기큐레이션 요약

.NET 컨티뉴어스 프로

Datadog은 Gartner의 2026년 Observability Platforms Magic Quadrant에서 ‘Leader’로 선정되었다고 발표합니다. 제공된 내용은 이 발표와 Datadog 제품군의 탐색 메뉴를 중심으로 구성되어 있어, 선정 근거나 Gartner의 세부 평가 내용은 확인할 수 없습니다. ## Gartner Magic Quadrant 리더 선정 - Datadog이 **Gartner® Magic Quadrant™ for Observability Platforms 2026**에서 Leader로 분류되었다는 소식입니다. - 다만 제공된 본문에는 다음 정보가 포함되어 있지 않습니다. - 평가 기준 - Datadog의 구체적인 강점과 약점 - 경쟁 업체와의 비교 - Gartner 보고서의 원문 분석 - 따라서 이 글은 기술적 분석보다는 Datadog의 리더 선정 사실을 알리는 홍보성 콘텐츠에 가깝습니다. ## Datadog의 인프라·애플리케이션 관측성 - 인프라 모니터링 - 메트릭, 컨테이너, Kubernetes 오토스케일링 - 네트워크, 서버리스, GPU, 스토리지 모니터링 - 클라우드 비용 관리와 Cloudcraft - 애플리케이션 성능 관리 - APM과 Universal Service Monitoring - Continuous Profiler를 통한 코드 성능 분석 - Dynamic Instrumentation과 Agent Observability - 데이터 계층 - 데이터베이스 및 데이터 스트림 모니터링 - 데이터 품질과 작업(Job) 모니터링 ## 로그·보안·디지털 경험 관리 - 로그 관리 - Log Management와 Observability Pipelines - Sensitive Data Scanner를 통한 민감 정보 탐지 - Audit Trail을 통한 활동 추적 - 보안 - 코드 보안, SAST, IAST, 소프트웨어 구성 분석 - 클라우드 보안, 취약점 관리, Cloud SIEM - 워크로드 및 애플리케이션·API 보호 - 디지털 경험 - 브라우저·모바일 RUM - 세션 재생, 신세틱 모니터링, 오류 추적 - 제품 분석과 모바일 앱 테스트 ## 소프트웨어 전달·서비스 관리·AI - 소프트웨어 개발 및 배포 - CI Visibility, 테스트 최적화, 지속적 테스트 - 코드 커버리지, 기능 플래그, 내부 개발자 포털 - 서비스 관리 - 이벤트 관리, 인시던트 대응, SLO - 서비스 카탈로그, 케이스 관리, 워크플로 자동화 - AI 기능 - Bits AI Agents, Bits Chat, Bits Investigation - AI 에이전트 관측성, GPU 모니터링 - MCP Server와 AI 기반 보안 분석 도구 ## 실용적인 결론 제공된 자료만으로는 Datadog이 Gartner에서 리더로 선정된 구체적 이유를 판단하기 어렵습니다. 도입이나 비교를 검토한다면 원문 Gartner 보고서에서 평가 기준과 제한 사항을 확인한 뒤, 실제 환경의 로그·메트릭·트레이스 비용, 데이터 보존 기간, 연동 범위, 보안 요구사항을 함께 검증하는 것이 좋습니다.

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

대규모 실시간 데이터를

Figma의 실시간 데이터 서비스 LiveGraph는 사용자와 쿼리 증가, 데이터베이스 샤딩으로 기존 구조의 한계에 도달했다. Figma는 초기 로컬 캐시와 단일 PostgreSQL의 전역 변경 스트림에 의존하던 아키텍처를 100배 규모까지 확장할 수 있도록 근본적으로 재설계하려 했다. 새 설계의 목표는 성능과 안정성을 유지하면서 데이터베이스 샤드와 읽기·업데이트 부하를 독립적으로 확장하고, 사용자 영향 없이 점진적으로 마이그레이션하는 것이다. ## LiveGraph의 역할 - LiveGraph는 GraphQL과 유사한 쿼리를 구독하는 웹 API를 제공한다. - 쿼리 결과를 JSON 트리로 반환하며, 객체와 관계를 정의한 스키마와 특정 그래프 일부를 조회하는 뷰를 사용한다. - Figma의 커스텀 React Hook을 통해 데이터가 변경되면 프런트엔드가 자동으로 다시 렌더링된다. - 캔버스 공동 편집, 댓글, FigJam 투표 등 여러 협업 기능에서 최신 데이터를 유지하는 기반 역할을 한다. ## 규모 증가로 드러난 문제 - 2021년 이후 LiveGraph 세션 수가 3배 증가했다. - 최근 1년 동안 뷰 요청 수는 5배 늘어났고, 세션 하나의 처리 비용도 점점 커졌다. - 데이터베이스 역시 단일 PostgreSQL 인스턴스에서 여러 수직·수평 샤드 구조로 변화하고 있었다. - 따라서 문제는 단순히 각 LiveGraph 서버가 데이터베이스 변경 사항을 모두 수집하는 데 그치지 않고, 클라이언트 세션·읽기 요청·데이터베이스 업데이트가 동시에 증가하는 복합적인 확장성 문제였다. ## LiveGraph 100x의 설계 목표 Figma는 현재의 읽기 및 데이터베이스 업데이트 부하를 장기적으로 100배까지 처리하기 위한 “LiveGraph 100x” 계획을 시작했다. - **서비스 속도 유지** - 초기 로드 시간과 실시간 업데이트에 대한 SLO를 유지하거나 개선해야 했다. - **데이터베이스 확장 지원** - 수직 확장뿐 아니라 수평 샤딩도 기본적으로 지원해야 했다. - 샤드가 늘어나도 신뢰성과 성능이 저하되지 않아야 했다. - **독립적인 확장 수단 확보** - 클라이언트 읽기량이 증가할 때와 쿼리 업데이트량이 증가할 때 서로 다른 구성 요소를 확장할 수 있어야 했다. - **안전한 점진적 마이그레이션** - 기존 LiveGraph 사용자를 중단시키지 않고 단계적으로 구조를 개선해야 했다. ## 초기 아키텍처와 변경 스트림 초기 LiveGraph는 단일 PostgreSQL과 하나의 서버를 중심으로 구성됐다. - PostgreSQL의 논리적 복제 스트림은 WAL에 기록된 행 단위 변경 사항을 전달한다. - 각 변경에는 행의 변경 전·후 이미지와 단조 증가하는 시퀀스 번호가 포함된다. - LiveGraph는 이 스트림을 추적해 데이터 변경을 실시간 업데이트로 재사용했다. - 모든 LiveGraph 쿼리는 기본 데이터베이스인 primary를 조회했다. - 서버 내부에는 인메모리 쿼리 캐시가 있었고, PostgreSQL의 각 행 변경이 발생할 때마다 관련 쿼리 결과를 직접 수정했다. - 즉, 캐시는 전체 결과를 다시 계산하기보다 개별 mutation을 결과에 반영하는 방식이었다. ## 단일 데이터베이스 구조의 한계 초기 구조에서는 데이터베이스가 하나였기 때문에 변경 스트림의 전역 순서를 가정할 수 있었다. - 모든 변경 사항이 하나의 PostgreSQL 인스턴스에서 생성됐다. - 따라서 LiveGraph는 하나의 전역적으로 정렬된 업데이트 스트림을 처리하면 됐다. - 하지만 단일 PostgreSQL 인스턴스가 용량 한계에 도달하면서 데이터베이스를 여러 수직 샤드로 나누게 됐다. - 여러 샤드가 동시에 변경 사항을 생성하면서 업데이트의 전역 순서가 더 이상 보장되지 않았다. - 기존의 “하나의 전역 순서 스트림”이라는 가정은 샤딩된 데이터베이스 환경에서 유지될 수 없었다. ## 재설계가 필요해진 이유 - LiveGraph는 데이터베이스 확장에 맞춰 변경 사항 수집과 캐시 갱신 방식을 바꿔야 했다. - 수직·수평 샤딩 환경에서는 여러 변경 스트림을 안정적으로 처리해야 한다. - 읽기 요청과 실시간 업데이트가 서로 다른 속도로 증가하므로, 전체 시스템을 한 방식으로만 확장해서는 효율적이지 않다. - Figma는 데이터베이스 용량 문제에 신속히 대응하면서도 기존 서비스의 성능과 안정성을 유지할 수 있는 전략적 변경이 필요했다. 실무적으로는 단일 데이터베이스의 전역 순서와 중앙 캐시에 의존하는 실시간 시스템이 초기에는 단순하고 효율적이지만, 샤딩 단계에서는 변경 순서·캐시 일관성·부하 분리 문제를 별도로 설계해야 한다는 점을 보여준다.

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

마이크로소프트에서 접근성을 (새 탭에서 열림)

마이크로소프트는 '세계 접근성 인식의 날(GAAD)'을 맞아 모든 개발자가 장애 여부와 상관없이 누구나 기술을 누릴 수 있도록 돕는 접근성 도구와 방법론을 제안합니다. 개발자는 복잡한 전문 지식 없이도 'Accessibility Insights'와 'Visual Studio'의 통합 도구를 활용해 개발 수명 주기 내에서 접근성 테스트를 손쉽게 수행할 수 있습니다. 궁극적으로 이러한 도구들은 단순히 규정을 준수하는 것을 넘어, 모든 사용자에게 공평하고 만족스러운 디지털 경험을 제공하는 것을 목표로 합니다. **FastPass를 통한 신속한 고부하 이슈 탐지** * Accessibility Insights for Web의 'FastPass' 기능을 활용하면 5분 이내에 사용자 경험에 큰 영향을 미치는 핵심 접근성 문제를 식별할 수 있습니다. * 오픈소스 엔진인 axe-core를 기반으로 한 자동화 체크를 통해 UI 코드를 작성하는 과정에서 즉각적인 피드백을 제공합니다. * 탭 정지(Tab Stops)와 같은 키보드 내비게이션 테스트를 포함하여, 스크린 리더나 확대 도구 사용자에게 혼란을 줄 수 있는 잘못된 포커스 순서를 바로잡도록 돕습니다. **Visual Studio 통합 접근성 검사기 활용** * Visual Studio 2022(버전 17.5 이상)에 내장된 접근성 검사기를 통해 별도의 도구 이동 없이 IDE 내에서 직접 문제를 발견하고 수정할 수 있습니다. * Accessibility Insights for Windows와 동일한 'Axe-Windows' 엔진을 사용하여 데스크톱 애플리케이션의 일반적인 접근성 오류를 정밀하게 감지합니다. * 개발 흐름을 유지하면서 동시에 접근성 스캐닝을 병행할 수 있어 개발 생산성과 포용성을 동시에 확보할 수 있습니다. **Quick Assess를 통한 정밀한 보조 테스트** * 자동화 도구로 감지하기 어려운 심층적인 이슈를 해결하기 위해 30분 이내로 수행 가능한 10가지 보조 테스트(Assisted tests)를 제공합니다. * 최근 업데이트를 통해 최신 웹 접근성 표준인 WCAG 2.2 기준에 대한 테스트 지원 및 안내 가이드를 도입했습니다. * 헤딩 레벨(Heading Levels) 검사 등 각 테스트 항목마다 해당 이슈가 왜 중요한지(Why It Matters)에 대한 설명과 함께 구체적인 수정 사례 및 리소스를 연결해 줍니다. 접근성 개선은 단순히 체크리스트의 항목을 지우는 작업이 아니라, 기술을 통해 모든 사람에게 평등한 기회를 제공하는 혁신의 과정입니다. 지금 바로 Accessibility Insights와 Visual Studio의 최신 기능을 개발 프로세스에 도입하여, 작은 단계부터 사용자 경험의 질을 높여보시길 권장합니다.

microsoft원문

Copy-on-Write 성능 및 디 (새 탭에서 열림)

Windows 11의 Dev Drive와 Copy-on-Write(CoW) 링크 기능은 대규모 코드베이스의 빌드 성능을 최대 43%까지 향상시키며, 특히 프로젝트 간 종속성이 깊은 C# 환경에서 탁월한 효율을 발휘합니다. 이 기술은 파일 데이터를 물리적으로 복제하는 대신 동일한 디스크 블록을 참조하는 방식을 통해 I/O 부하를 획기적으로 줄이며, Windows Server 2025 및 Windows 11 24H2에 기본 기능으로 탑재될 예정입니다. 개발자는 전용 도구를 통해 CoW 링크 상태를 모니터링하고 참조 누수를 관리함으로써 최적의 개발 성능을 유지할 수 있습니다. **레포지토리 빌드 성능 테스트 결과** - **C# 및 마이크로서비스 이점:** 프로젝트 간 종속성이 깊어 어셈블리 복사가 빈번한 C# 프로젝트나, 빌드 출력 시 대규모 마이크로서비스 레이아웃을 구성하는 환경에서 최소 10%에서 최대 43%의 빌드 시간 단축 효과가 확인되었습니다. - **언어별 차이:** C++ 프로젝트는 상대적으로 적은 수의 대용량 파일을 생성하고 복사 빈도가 낮아 C#에 비해 성능 향상 폭이 적었으나, 파일 복사 과정이 포함된 경우에는 여전히 이득을 보였습니다. - **병렬성 영향:** 빌드 초기 단계의 병렬 처리는 빨라지지만, 마지막 단계에서 거대 프로젝트들이 선형적으로 빌드되는 구조의 레포지토리는 전체 빌드 시간 단축 효과가 희석될 수 있습니다. **CoW 링크 및 블록 클론 식별 방법** - **참조 상태 확인:** `fsutil file queryExtentsAndRefCounts` 명령어를 사용하여 특정 파일이 CoW 링크인지, 즉 블록 클론(Block Clone) 상태인지 확인할 수 있습니다. - **Ref 카운트의 의미:** 출력 결과 중 `Ref: 0x4`와 같은 값은 해당 디스크 볼륨 내에서 4개의 파일 엔트리가 동일한 물리적 데이터 블록을 공유하고 있음을 나타냅니다. - **메타데이터 관리:** 각 클론된 파일은 참조 추적을 위해 최소 하나 이상의 클러스터를 별도로 사용하여 메타데이터를 관리합니다. **분석 도구(ProcMon, Xperf) 사용을 위한 필터 설정** - **필터 드라이버 허용:** Dev Drive는 보안과 성능을 위해 필터 드라이버 연결을 제한하므로, `fsutil devdrv setfiltersallowed` 명령을 통해 분석 도구 전용 필터를 허용 목록에 추가해야 합니다. - **Xperf 사용 시 주의사항:** 성능 측정을 위해 `FileInfo` 필터를 허용한 경우, 측정이 끝난 후에는 반드시 목록에서 제거하고 드라이브를 재마운트해야 합니다. 이를 방치하면 드라이브 성능이 지속적으로 저하될 수 있습니다. - **상시 허용:** ProcMon 필터와 같은 도구는 실제 분석 도구가 실행 중일 때만 부하를 주므로, 필요에 따라 허용 목록에 상시 유지해도 무방합니다. **참조 누수(Leaked References) 탐지 및 복구** - **클론 한계치:** Dev Drive의 기반인 ReFS는 데이터 블록당 최대 8,176개의 클론을 허용하며, 이를 초과할 경우 복사 오류(`STATUS_BLOCK_TOO_MANY_REFERENCES`)가 발생할 수 있습니다. - **관리 도구 활용:** 장기간 빌드를 반복하여 고립된 참조나 누수가 의심될 경우, 관리자 권한으로 `refsutil leak <드라이브명> /s` 명령을 실행하여 누수된 클러스터를 스캔하고 복구할 수 있습니다. - **사전 감지:** `/d` 파라미터를 사용하면 실제 수정 없이 누수 여부만 미리 파악할 수 있어 시스템 안정성을 점검하는 데 용이합니다. **실용적인 결론 및 제언** 대규모 프로젝트를 운영하는 팀은 Dev Drive 도입 시 NuGet 패키지 캐시를 소스 코드와 동일한 파티션에 배치하여 CoW 이득을 극대화해야 합니다. 또한, 빌드 성능 분석을 위해 필터 드라이버 설정을 변경했다면 성능 유지를 위해 분석 완료 후 불필요한 필터를 반드시 정리하는 습관이 필요합니다.

figma3분 읽기큐레이션 요약

장인정신과 아름다움

아름다움과 세밀한 완성도는 단순한 장식이 아니라 사용성, 전환율, 매출을 높이는 제품 경쟁력이다. Stripe, Linear, Figma의 리더들은 품질을 제품의 모든 접점에贯穿하는 문화로 정착해야 하며, 이를 위해 성능·명확성·직관성까지 포함한 전방위적인 노력이 필요하다고 말한다. 실제로 Stripe의 결제 제품은 평균 11.9%의 매출 증가를, 이메일 개편은 전환율 20% 향상을 이끌었다. ### 아름다움은 사용성과 전환율을 높인다 - 미적인 요소는 표면적인 꾸밈이 아니라 제품을 더 쉽게 이해하고 사용하게 만드는 기능적 요소다. - 사용자는 아름답고 명확한 제품을 더 잘 작동한다고 인식하는 경향이 있다. 이를 **미적 사용성 효과(aesthetic usability effect)**라고 한다. - 매력적이고 이해하기 쉬운 인터페이스는 사용자의 관심을 끌고, 다음 행동을 명확하게 하며, 성공적인 사용 경험으로 이어진다. - Stripe는 이메일의 문구, 시각적 계층 구조, 전체적인 사용 흐름을 개선했다. - 그 결과 해당 이메일 시리즈의 제품 전환율이 **20% 증가**했다. - Stripe Optimized Checkout Suite를 사용한 기업들은 평균적으로 **11.9% 더 높은 매출**을 기록했다. - 따라서 제품 여정의 모든 접점은 가치를 더하거나 빼는 요소가 될 수 있으며, 모든 단계에서 완성도를 관리해야 한다. ### 크래프트는 태도이고 아름다움은 결과다 - Linear의 Karri Saarinen은 두 개념을 구분한다. - **크래프트(craft)**: 결과물의 품질을 중요하게 여기는 작업 방식과 태도 - **아름다움(beauty)**: 그러한 태도가 만들어낸 사용자가 경험하는 품질과 결과 - 크래프트는 단순히 요구사항을 빨리 끝내는 것이 아니라, 결과가 충분히 좋은지 지속적으로 고민하는 자세다. - 아름다움은 외형만을 뜻하지 않는다. - 창문이 실제로 잘 열리는가 - 소음이 적은가 - 사용 과정이 자연스러운가 - 따라서 디자인의 가치는 시각적 매력뿐 아니라 기능성과 전반적인 품질을 포함한다. ### 성능과 완성도는 제품의 기본 조건이다 - Figma는 웹에서도 네이티브 애플리케이션과 같은 경험을 제공하는 것을 목표로 출발했다. - 이를 위해 프레임 레이트와 상호작용 성능 같은 기초 요소를 중요하게 다룬다. - 초당 60프레임 수준의 부드러운 상호작용이 무너지면, 그 위에 쌓이는 다른 디자인 요소도 제대로 경험할 수 없다. - 제품 품질에는 위계가 있다. - 먼저 성능과 안정성 같은 기반이 갖춰져야 한다. - 그 위에 직관성, 세심한 인터랙션, 시각적 아름다움을 쌓을 수 있다. - 최고의 완성도는 사용자가 특별히 의식하지 않아도 “모든 것이 자연스럽게 작동한다”고 느끼게 만든다. ### 크래프트는 조직 문화에서 시작된다 - 완성도는 특정 디자인팀이나 QA팀만의 책임이 아니라 회사 전체의 문화적 책임이다. - 구성원들이 품질을 중요하게 여기도록 별도의 목표나 OKR로 강제하기보다, 처음부터 품질에 관심이 있는 사람을 채용하고 육성해야 한다. - 크래프트는 사용자가 세부 사항을 자세히 보지 않더라도 경험 전반에 영향을 준다. - 성능, 문구, 시각 디자인, 인터랙션, 제품 흐름 등 여러 직군의 판단이 합쳐져 최종 품질을 만든다. ### 처음부터 끝까지 제품을 직접 점검하라 - Stripe는 문제를 발견하기 위해 **프릭션 로깅(friction logging)** 방식을 활용한다. - 엔지니어, 제품 관리자, 디자이너 등 여러 직군이 함께 실제 사용자처럼 제품을 처음부터 끝까지 사용한다. - 이러한 “매장 둘러보기(walking the store)” 방식으로 다양한 화면과 접점에서 불편함을 직접 찾는다. - 특정 팀의 화면만 개선하는 것이 아니라, 전체 사용자 여정에서 마찰과 품질 저하 지점을 확인하는 접근이다. - 제품의 모든 접점이 브랜드와 비즈니스 성과에 영향을 주므로, 엔드투엔드 관점의 검토가 필요하다. 제품의 아름다움은 장식이 아니라 성능, 명확성, 사용성, 세심함이 결합된 결과다. 따라서 기업은 단기적인 기능 출시보다 모든 팀이 품질을 당연하게 여기는 문화를 만들고, 실제 사용자 여정을 반복적으로 점검하는 방식을 도입하는 것이 좋다.

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

임의의 규모에서 시간에 따른

Datadog의 Heatmap은 시간에 따른 값의 분포를 시각화해 평균이나 단일 백분위수만으로는 보이지 않는 이상치와 분산을 보여준다. 핵심은 대규모 원시 데이터를 모두 저장하거나 조회하지 않고도 분포 정보를 유지하는 근사 자료구조와 다단계 집계를 활용하는 것이다. 그 결과 데이터 규모와 조회 범위가 커져도 일정한 응답성과 시각화 품질을 제공한다. ## 평균 그래프만으로는 부족한 이유 - 평균값은 데이터의 분산, 꼬리 분포, 이상치를 숨길 수 있다. - 예를 들어 요청 시간의 평균이 200ms여도 일부 요청이 수 초 이상 걸리면 사용자 경험에 큰 문제가 생길 수 있다. - Heatmap은 다음 두 축을 함께 표현한다. - 가로축: 시간 - 세로축: 관측값의 크기 - 색상: 해당 시간대와 값 구간에 포함된 데이터 수 또는 밀도 - 이를 통해 특정 시간대에 지연 시간이 어느 구간에 집중됐는지, 긴 꼬리가 발생했는지 확인할 수 있다. ## 대규모 분포 데이터를 다루는 문제 - 모든 원시 측정값을 저장한 뒤 요청마다 분포를 계산하면 저장 공간과 조회 비용이 지나치게 커진다. - 데이터가 많을수록 정확한 히스토그램을 만들기 위해 필요한 값 구간도 복잡해진다. - 시간 범위와 화면 크기에 따라 필요한 시간 버킷 수가 달라지므로, 고정된 해상도의 데이터만으로는 확대·축소와 다양한 쿼리를 지원하기 어렵다. - 따라서 저장 단계에서부터 분포를 압축하고, 조회 시 필요한 해상도로 재구성할 수 있어야 한다. ## 스케치 기반 분포 집계 - Datadog은 개별 값을 모두 보관하는 대신 분포를 요약하는 스케치 자료구조를 사용한다. - 스케치는 값의 정확한 목록을 저장하지 않고, 값이 어떤 범위에 얼마나 많이 존재하는지를 근사한다. - 이러한 구조는 다음 특성을 가진다. - 메모리 사용량이 데이터 개수에 비례해 계속 증가하지 않는다. - 여러 호스트나 서비스에서 생성한 스케치를 병합할 수 있다. - 분산 환경에서 수집기와 저장소가 독립적으로 집계할 수 있다. - 평균, 분위수, 개수 등 분포 관련 질의를 효율적으로 계산할 수 있다. - 특히 로그 형태의 값 분포를 다룰 때는 작은 값에는 세밀한 구간을, 큰 값에는 상대적으로 넓은 구간을 적용해 넓은 값 범위를 적은 수의 버킷으로 표현할 수 있다. ## 시간축과 값축의 버킷화 - Heatmap은 데이터를 시간 구간과 값 구간의 2차원 셀로 나누어 표현한다. - 각 셀에는 해당 시간·값 범위에 속하는 관측치의 개수가 저장된다. - 시간축은 조회 범위와 화면의 픽셀 수에 맞춰 적절한 해상도로 조정된다. - 값축 역시 선형 또는 로그 스케일로 변환할 수 있어, 밀리초 단위의 작은 지연과 수 초 단위의 큰 지연을 동시에 표현할 수 있다. - 확대하면 더 세밀한 버킷을 사용하고, 축소하면 여러 버킷을 합쳐 전송 데이터와 렌더링 비용을 줄인다. ## 병합 가능한 집계의 장점 - 각 에이전트, 호스트, 서비스 또는 시간 파티션에서 만든 요약 데이터를 중앙에서 병합할 수 있다. - 병합은 원시 데이터를 다시 전송하는 것보다 훨씬 적은 네트워크·저장 비용으로 수행된다. - 서로 다른 집계 수준의 데이터를 조합할 수 있으므로 짧은 기간은 높은 정밀도로, 긴 기간은 낮은 정밀도로 조회할 수 있다. - 이 방식은 데이터 수가 매우 많아져도 처리 비용을 원시 이벤트 수가 아닌 요약 데이터 크기에 가깝게 유지한다. ## 시각화와 성능의 균형 - 브라우저가 모든 이벤트를 직접 처리하지 않고, 서버가 화면에 필요한 형태의 버킷 데이터를 반환한다. - 프런트엔드는 반환된 셀의 개수와 색상 강도를 이용해 캔버스 또는 유사한 그래픽 방식으로 Heatmap을 그린다. - 데이터 해상도를 화면 크기에 맞추면 다음 효과를 얻을 수 있다. - 불필요한 데이터 전송 감소 - 렌더링 속도 향상 - 확대·축소와 시간 범위 변경에 대한 빠른 응답 - 다만 근사 집계이므로 정확한 원시값 목록이 필요한 분석에는 적합하지 않고, 전체적인 분포와 이상 패턴을 파악하는 용도로 사용하는 것이 적절하다. ## 실용적인 결론 평균이나 단일 백분위수만으로 시스템 상태를 판단하기보다 Heatmap으로 분포 전체를 확인하면 지연 시간 급증, 이상치, 특정 구간의 집중 현상을 더 쉽게 발견할 수 있다. 대규모 관측 데이터를 처리하는 시스템을 설계할 때는 원시 데이터 보존과 별개로 병합 가능한 스케치, 다단계 시간 버킷, 화면 해상도 기반 쿼리를 함께 고려하는 것이 효과적이다.

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

임의의 규모에서 시간에 따른 분포를 시각화하는 Datadog 히트맵을 구축한 방법 (새 탭에서 열림)

단순한 백분위수(Percentile) 선 그래프는 데이터의 전체적인 형상과 그 안에 숨겨진 다양한 패턴(Mode)을 왜곡하거나 가릴 수 있습니다. Datadog은 DDSketch 알고리즘을 활용한 히트맵(Heatmap) 시각화를 통해 수조 개의 데이터 포인트를 성능 저하 없이 고해상도로 구현하여, 집계된 지표 뒤에 숨겨진 시스템의 실제 동작을 명확하게 드러냅니다. 이를 통해 엔지니어는 단순 수치 이상의 풍부한 컨텍스트를 파악하고 대규모 인프라의 복잡한 성능 문제를 효과적으로 해결할 수 있습니다. **집계 데이터 시각화의 한계와 히트맵의 이점** * 선 그래프(p50, p99 등)는 수많은 이벤트를 단일 값으로 집계하여 특정 시점의 성능은 보여주지만, 데이터 분포의 전체적인 모습은 설명하지 못함. * 히트맵은 데이터를 과도하게 집계하지 않고 시각화하여, 서로 다르게 동작하는 여러 시스템 그룹(Modes)을 시각적 아티팩트로 분리해 보여줌. * 이를 통해 특정 벤치마킹 서비스로 인한 주기적 지연이나 헬스 체크 요청의 패턴 등 백분위수 그래프에서는 노이즈로 보일 수 있는 현상을 직관적으로 식별 가능함. **무한한 확장을 위한 엔지니어링: DDSketch** * DDSketch를 사용하여 정밀도를 미세하게 희생하는 대신, 방대한 양의 데이터를 '실제 값에 충분히 가까운' 형태로 효율적으로 표현함. * 프론트엔드 전송 시 전체 포인트 목록 대신 '빈(bin)과 카운트(count)' 구조를 사용하여 데이터 페이로드 크기를 일정하게 유지함. * 각 빈의 카운트 저장에 `float32` 타입을 채택하여, 이론적으로 수조 년 동안 매초 발생하는 호출도 수용할 수 있는 수치적 확장성을 확보함. **고해상도 구현 및 데이터 정렬 기술** * 수백조 개의 데이터 포인트를 시각화하기 위해 각 시간 범위(Time bucket)의 경계 값을 일렬로 정렬하고 저장 구조를 최적화함. * 데이터 보고 주기와 히트맵의 시간 버킷 간격이 일치하지 않을 때 발생하는 에일리어싱(Aliasing) 현상을 방지하기 위해 데이터 정렬 알고리즘을 적용함. * 선형 스케일 외에도 로그 스케일을 지원하여 소스 데이터의 해상도에 근접한 시각적 정밀도를 제공함. **색상 설계와 인지적 다이내믹 레인지 유지** * 색상 팔레트는 가독성을 위해 연한 파란색에서 보라색을 거쳐 주황색(Hot)으로 전환되도록 설계하며, 경고 느낌을 주는 빨간색은 의도적으로 배제함. * 인간의 시각이 밝기 차이를 비선형적으로 인지한다는 '스티븐스의 멱법칙(Stevens' Power Law)'을 시각화 로직에 반영함. * 데이터가 멱법칙 분포(롱테일)를 따를 때 선형 색상 보간을 사용하면 정보가 손실되므로, 비선형 보간법을 통해 미세한 빈도의 차이도 눈으로 식별할 수 있게 함. **실용적인 제언** 성능 분석 시 단순히 선 그래프의 추세에만 의존하기보다는 히트맵을 병행하여 사용하는 것이 권장됩니다. 특히 대규모 분산 시스템에서 발생하는 간헐적인 지연이나 특정 노드 그룹의 이상 행동은 히트맵을 통해서만 명확한 '시각적 패턴'으로 드러나기 때문에, 근본 원인 분석(RCA) 시간을 획기적으로 단축할 수 있습니다.

figma원문

피그마의 TypeScript (새 탭에서 열림)

피그마(Figma)는 자사의 모바일 렌더링 엔진의 핵심 언어였던 자체 개발 언어 'Skew'를 산업 표준인 TypeScript로 완전히 전환하는 데 성공했습니다. 과거 성능 최적화를 위해 도입했던 Skew가 팀 규모 확장에 따라 생산성 저해와 생태계 부재라는 한계에 부딪히자, 피그마는 일상적인 개발 흐름을 방해하지 않으면서도 자동화된 마이그레이션을 완수했습니다. 결과적으로 피그마는 성능 손실 없이 더 나은 개발 환경과 최신 JavaScript 생태계의 이점을 누릴 수 있게 되었습니다. ### 자체 개발 언어 Skew의 도입과 한계 * **성능 중심의 탄생:** 초기 피그마는 웹과 모바일 모두에서 프로토타입 뷰어를 구현하기 위해 Skew를 개발했습니다. 당시 Skew는 정적 타이핑과 더불어 상수 폴딩(constant folding), 가상 함수 호출 최적화(devirtualization) 등 고급 컴파일러 최적화를 통해 JavaScript보다 뛰어난 성능을 제공했습니다. * **확장의 걸림돌:** 하지만 팀이 커지면서 Skew는 신규 입사자의 적응을 어렵게 만들고, 린터(linter)나 정적 분석기 같은 현대적인 개발 도구 생태계를 활용할 수 없다는 단점이 부각되었습니다. * **기능의 부재:** async/await와 같은 현대적인 JavaScript 기능이 부족했고, 피그마 내부의 다른 코드베이스와 통합하는 데에도 높은 비용이 발생했습니다. ### TypeScript 전환이 가능해진 기술적 배경 * **WebAssembly(Wasm)의 보편화:** 2018년 이후 모바일 브라우저에서 WebAssembly 지원이 확대되었고, 2020년경에는 모바일에서도 안정적인 성능을 발휘하게 되었습니다. * **C++ 엔진으로의 교체:** Skew로 작성되었던 파일 로딩 등 핵심 성능 경로를 WebAssembly로 컴파일되는 C++ 엔진으로 대체함으로써, 나머지 로직을 TypeScript로 전환하더라도 전체 성능에 미치는 영향이 미미해졌습니다. * **팀 규모의 성장:** 개발 경험(DX) 개선에 전념할 수 있는 리소스를 확보할 만큼 팀이 성장하면서 자동화된 마이그레이션 도구 개발이 가능해졌습니다. ### 안전한 전환을 위한 3단계 자동화 프로세스 * **1단계 (Skew 작성, Skew 빌드):** 기존 빌드 프로세스를 유지하면서 Skew 코드를 TypeScript로 변환하는 트랜스파일러를 개발했습니다. 변환된 TypeScript 코드를 깃허브에 체크인하여 개발자들이 미래의 코드 모습을 확인할 수 있게 했습니다. * **2단계 (Skew 작성, TypeScript 빌드):** 개발자는 여전히 Skew로 코드를 짜지만, 실제 프로덕션 빌드는 트랜스파일러를 거친 TypeScript 코드로 진행했습니다. 이 과정에서 유닛 테스트를 통과시키고 타입 오류를 점진적으로 수정하며 안정성을 확보했습니다. * **3단계 (TypeScript 작성, TypeScript 빌드):** 특정 시점에 Skew 코드 생성을 중단하고 모든 Skew 소스 파일을 삭제했습니다. 이후 모든 개발자는 TypeScript를 직접 작성하게 되었으며, CI/CD 파이프라인도 TypeScript 기반으로 완전히 전환되었습니다. ### 실용적인 결론 및 시사점 피그마의 사례는 서비스 초기 성능을 위해 도입한 커스텀 기술이 성숙기에는 오히려 부채가 될 수 있음을 보여줍니다. 특히 대규모 코드베이스를 전환할 때는 **'점진적인 롤아웃'**과 **'자동화된 트랜스파일링'**이 핵심입니다. Skew와 TypeScript 간의 시맨틱 차이(예: 네임스페이스 초기화 순서 등)로 발생할 수 있는 런타임 오류를 방지하기 위해, 자체 컴파일러를 수정하여 제어권을 확보한 점은 기술적 난관을 극복한 훌륭한 전략으로 평가됩니다.

figma원문

C++ 빌드 시간 단축하기 (새 탭에서 열림)

피그마(Figma)는 C++ 코드베이스가 10% 증가할 때 빌드 시간이 50%나 급증하는 문제를 해결하기 위해, 컴파일러로 전송되는 데이터 양(바이트)을 줄이는 전략을 채택했습니다. 하드웨어 업그레이드나 캐싱만으로는 한계가 있음을 깨닫고, 불필요한 헤더 포함을 자동으로 찾아내고 방지하는 자체 도구인 'DIWYDU'와 'includes.py'를 개발하여 빌드 시간을 절반으로 단축했습니다. 결과적으로 빌드 시간의 핵심 지표가 전처리 후의 바이트 수에 비례한다는 점을 입증하며 대규모 개발 환경에서의 생산성을 확보했습니다. ### 헤더 포함 방식과 빌드 속도의 상관관계 * C++ 컴파일 과정에서 전처리기(Pre-processor)는 소스 파일에 포함된 모든 헤더 파일을 하나의 거대한 파일로 합치며, 이는 전이적 의존성(Transitive dependency)을 포함해 컴파일러가 처리해야 할 바이트 수를 기하급수적으로 늘립니다. * 피그마의 분석 결과, 실제 추가된 코드량보다 전처리 후 컴파일러로 전달되는 바이트 수의 증가 폭이 훨씬 컸으며, 이것이 빌드 시간 지연의 주요 원인으로 파악되었습니다. * 대형 파일에서 불필요한 헤더를 수동으로 제거하는 실험을 진행한 결과, 컴파일 바이트는 31%, 콜드 빌드 시간은 25% 감소하며 가설이 증명되었습니다. ### DIWYDU: 불필요한 헤더 제거 자동화 * 구글의 IWYU(Include What You Use)가 너무 엄격하여 적용이 어렵자, 피그마는 더 유연한 자체 도구인 DIWYDU(Don’t Include What You Don’t Use)를 개발했습니다. * 이 도구는 `libclang`의 파이썬 바인딩을 사용하여 추상 구문 트리(AST)를 분석하며, 특정 파일이 포함한 헤더에서 함수, 타입, 변수 등을 직접적으로 사용하는지 확인합니다. * 직접적인 의존성이 없는 헤더를 찾아내어 삭제하도록 플래그를 표시함으로써 모든 기능 브랜치에서 빌드 속도 저하를 방지합니다. * 다만, STL(표준 템플릿 라이브러리)의 프라이빗 헤더 구조나 `libclang` 파이썬 바인딩의 AST 노드 접근 제한(UNEXPOSED_EXPR 등)과 같은 기술적 한계는 존재합니다. ### includes.py를 통한 회귀 방지 및 측정 * 헤더를 실제로 사용하더라도 파일 크기가 너무 커서 빌드 속도를 늦추는 경우를 대비해, 전이적 바이트 수를 측정하는 `includes.py`를 구축했습니다. * Clang을 사용하지 않고 순수 파이썬으로 작성되어 실행 속도가 매우 빠르며(수 초 내외), CI(지속적 통합) 시스템에서 각 PR이 빌드 시간에 미치는 영향을 바이트 단위로 측정합니다. * 특정 PR이 컴파일 바이트 수를 과도하게 늘릴 경우 경고를 발생시켜 개발자가 전방 선언(Forward Declaration)을 사용하거나 헤더를 분리하도록 유도합니다. * 표준 라이브러리는 피그마 내부의 래퍼(Wrapper) 디렉토리를 통해 관리되므로, 표준 헤더의 바이트는 계산에서 제외하여 효율성을 높였습니다. C++ 프로젝트의 빌드 속도를 유지하기 위해서는 단순한 캐싱을 넘어 컴파일러가 처리하는 데이터의 총량을 관리해야 합니다. 불필요한 헤더 의존성을 제거하는 자동화 도구를 CI 파이프라인에 통합하고, '컴파일 바이트 수'를 성능 지표로 모니터링하는 것이 대규모 코드베이스의 개발 효율을 높이는 실질적인 방안이 될 수 있습니다.

datadog2분 읽기큐레이션 요약

Datadog의 데이터 시각

Datadog이 Gartner의 2026년 Observability Platforms 매직 쿼드런트에서 ‘Leader’로 선정되었다는 소식을 알리는 글입니다. 제공된 내용에는 세부 평가 기준이나 선정 근거보다 Datadog의 제품군과 플랫폼 범위를 보여주는 메뉴 정보가 중심적으로 포함되어 있습니다. ### Gartner 매직 쿼드런트 리더 선정 - Datadog은 Gartner® Magic Quadrant™ for Observability Platforms 2026에서 Leader로 소개됩니다. - 글의 핵심 목적은 Datadog의 관측성 플랫폼 시장 내 입지와 제품 역량을 강조하는 것입니다. - 다만 제공된 본문에는 Gartner의 평가 점수, 경쟁사 비교, 리더 선정의 구체적인 근거는 포함되어 있지 않습니다. ### 인프라 및 애플리케이션 모니터링 - 인프라 영역: - 인프라 모니터링, 메트릭, 컨테이너 및 Kubernetes 오토스케일링 - 네트워크·서버리스·GPU 모니터링 - 클라우드 비용 및 스토리지 관리 - 애플리케이션 영역: - APM과 Universal Service Monitoring - Continuous Profiler와 Dynamic Instrumentation - AI 에이전트 관측성 ### 로그·데이터 관측성 - 데이터베이스, 데이터 스트림, 데이터 품질 및 작업 모니터링을 제공합니다. - 로그 관리와 민감 데이터 탐지 기능을 포함합니다. - Observability Pipelines를 통해 관측 데이터를 처리하고 관리할 수 있습니다. - Audit Trail은 플랫폼 내 활동 추적을 지원합니다. ### 보안과 디지털 경험 - 보안 기능: - 코드 보안, SAST, IAST, 소프트웨어 구성 분석 - 클라우드 보안, 취약점 관리, CSPM 및 CIEM - Cloud SIEM, 워크로드 보호, 애플리케이션·API 보호 - 디지털 경험 기능: - 브라우저·모바일 RUM - 세션 리플레이, 신세틱 모니터링, 오류 추적 - 제품 분석, 실험 및 모바일 앱 테스트 ### 소프트웨어 제공과 서비스 관리 - CI Visibility, 테스트 최적화, 지속적 테스트, 코드 커버리지를 제공합니다. - 내부 개발자 포털, IDE 플러그인, 기능 플래그를 지원합니다. - 서비스 카탈로그, SLO, 인시던트 대응, 케이스 관리 기능을 포함합니다. - 워크플로 자동화와 App Builder를 통해 운영 절차를 자동화할 수 있습니다. ### AI 기반 운영 - Bits AI Agents, Bits Chat, Bits Investigation 등 AI 기반 기능을 제공합니다. - Watchdog을 활용한 이상 징후 탐지와 자동화 기능을 지원합니다. - MCP Server, Agent Builder, 보안 분석 에이전트 등 AI 에이전트 연동 기능도 포함됩니다. - GPU 모니터링과 AI 에이전트 관측성을 통해 AI 워크로드의 운영 가시성을 강화합니다. ### 실용적인 시사점 Datadog은 인프라·애플리케이션·로그·보안·사용자 경험·소프트웨어 제공을 하나의 플랫폼으로 통합하려는 전략을 취하고 있습니다. 실제 도입을 검토한다면 Gartner의 평가만으로 결정하기보다 필요한 모니터링 범위, 데이터 보존 비용, 기존 도구와의 연동성, 보안 및 AI 기능의 활용도를 함께 비교하는 것이 좋습니다.

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