데이터베이스 설계

191 개의 포스트

discord원문

디스코드의 엘릭 (새 탭에서 열림)

Discord는 Elixir의 강력한 동시성 메커니즘을 활용하여 각 서버(길드)를 독립적으로 운영함으로써 수억 명의 사용자에게 실시간에 가까운 채팅 경험을 제공합니다. 그러나 급격한 트래픽 증가로 시스템 자정 능력이 한계에 도달할 때, 기존의 메트릭이나 자체 개발한 메모리 기반 분석 도구만으로는 복잡한 성능 병목 현상과 사용자 경험의 실질적인 저하 원인을 파악하는 데 한계가 있었습니다. 이를 해결하기 위해 Discord는 Elixir 환경에 맞춤화된 분산 추적(Distributed Tracing) 시스템을 직접 구축하여 서비스 중단 없이 시스템 전반의 가시성을 확보하는 데 성공했습니다. **기존 관측 도구의 한계와 실무적 어려움** * **지표와 로그의 한계:** 대시보드는 엔진 온도계처럼 시스템의 상태를 보여주지만, 온도가 높을 때 사용자가 느끼는 실제 주행 경험(지연 시간의 체감 등)이나 구체적인 결과까지는 설명해주지 못합니다. * **길드 타이밍(Guild Timings) 도구:** 길드별 작업 소요 시간을 분 단위로 메모리에 기록하는 커스텀 도구를 사용해왔으나, 데이터 양이 너무 방대하여 대형 길드를 제외하고는 데이터를 빠르게 순환(Rotation)시켜야 하므로 과거 이력 분석이 어렵습니다. * **다운스트림 효과 파악 불가:** 기존 도구들은 개별 작업의 소요 시간은 보여주지만, 해당 작업이 연쇄적으로 일으키는 다운스트림 서비스의 영향과 전체적인 실행 흐름을 시각화하지 못하는 단점이 있었습니다. **Elixir 환경에서의 분산 추적 도입 과정** * **분산 추적(APM)의 필요성:** 작업의 구성 요소별 소요 시간을 한눈에 파악할 수 있는 분산 추적 기술을 통해 시스템 내부의 복잡한 상호작용을 투명하게 확인하고자 했습니다. * **기술적 난관:** 일반적인 추적 도구는 HTTP 헤더와 같은 메타데이터 레이어를 통해 추적 정보를 전달하지만, Elixir의 기본 통신 도구들에는 이러한 메타데이터 레이어가 내장되어 있지 않았습니다. * **커스텀 메타데이터 레이어 구축:** 서비스 간 통신 방식에 추적 정보를 함께 전달할 수 있는 자체 메타데이터 전달 메커니즘을 설계하여 문제를 해결했습니다. * **무중단 통합:** 서비스 간의 통신 방식을 근본적으로 변경하는 작업임에도 불구하고, 철저한 설계를 통해 시스템 가동 중단(Downtime) 없이 새로운 추적 시스템을 성공적으로 통합했습니다. 복잡한 분산 시스템에서 단순한 성능 지표만으로는 문제의 근본 원인을 파악하기 어렵습니다. 특히 Elixir와 같이 특수한 통신 구조를 가진 환경에서는 표준적인 APM 도구를 그대로 적용하기보다, 시스템의 특성에 맞춰 메타데이터 전달 계층을 직접 구현함으로써 인프라 전반의 흐름을 명확히 파악할 수 있는 분석 환경을 구축하는 것이 중요합니다.

gitlab원문

깃랩이 보안 통제 (새 탭에서 열림)

GitLab의 보안 컴플라이언스 팀은 기존의 범용 보안 제어 프레임워크가 자사의 클라우드 네이티브 환경과 다각화된 제품군에 최적화되어 있지 않다는 점을 발견하고, 이를 해결하기 위해 자체적인 'GitLab 제어 프레임워크(GCF)'를 구축했습니다. GCF는 복잡한 인증 요구사항을 통합 관리하면서도 개별 제품의 특성을 반영할 수 있도록 설계되어, 불필요한 보안 규제를 줄이고 실질적인 보안 운영 효율을 높이는 데 기여하고 있습니다. 결과적으로 이러한 맞춤형 프레임워크는 조직이 확장됨에 따라 늘어나는 다양한 외부 인증(SOC 2, ISO, FedRAMP 등)에 유연하고 빠르게 대응할 수 있는 기반이 되었습니다. ### 기존 프레임워크의 한계와 맞춤형 프레임워크의 필요성 * NIST SP 800-53과 같은 범용 프레임워크는 1,000개 이상의 방대한 제어 항목을 포함하지만, 모든 항목이 GitLab의 클라우드 환경에 필수적인 것은 아니었습니다. * 범용 항목은 세분성(Granularity)이 부족하여 실무 적용에 어려움이 있었습니다. 예를 들어 NIST의 '계정 관리(AC-2)'는 계정 생성, 수정, 삭제, 모니터링 등 성격이 다른 6개 이상의 활동을 하나로 묶어 관리하므로 책임 소재와 테스트 절차가 불명확해지는 문제가 발생합니다. * 불필요하거나 과도하게 제한적인 제어 항목은 실무자들이 보안 절차를 우회하도록 유도하여 오히려 전체적인 보안 수준을 저하시킬 위험이 있습니다. ### GitLab 제어 프레임워크(GCF) 구축 단계 * **요구사항 분석 및 벤치마킹**: SOC 2, ISO 시리즈, PCI DSS, FedRAMP 등 현재와 미래의 모든 인증 요구사항을 매핑하여 베이스라인을 설정하고, NIST CSF나 Adobe/Cisco의 CCF 같은 선진 사례를 참고하여 구조적 누락을 방지했습니다. * **도메인 및 계층 구조 설계**: GitLab의 실제 보안 운영 조직과 일치하도록 18개의 커스텀 도메인을 정의하고, '무엇을 구현해야 하는가(Level 1)'와 '제품별로 어떻게 구현했는가(Level 2)'를 분리하여 설계했습니다. * **상세 메타데이터 통합**: 단순한 제어 항목 설명을 넘어 소유자(Owner), 적용 환경, 대상 자산, 수행 빈도, 자동화 수준(Nature), 테스트 세부 정보 등의 구체적인 데이터를 각 항목에 결합했습니다. ### 멀티 제품 환경을 위한 계층적 제어 구조 * GitLab.com(멀티테넌트 SaaS), GitLab Dedicated(단일 테넌트), 정부용 Dedicated 등 각 제품군이 서로 다른 인프라(GCP, AWS)와 감사 요구사항을 가지므로, 이를 개별 프레임워크로 관리하는 대신 계층화된 구조를 도입했습니다. * 조직 전체에 공통으로 적용되는 '엔티티 제어(Entity Controls)'는 모든 제품이 상속받고, 제품별 고유한 구현 방식은 하위 계층(Level 2)에서 별도로 캡처하여 관리 중복을 최소화했습니다. * 이러한 구조 덕분에 특정 팀이 소유한 항목이나 자동화가 가능한 수동 프로세스를 즉각적으로 필터링하여 파악할 수 있는 '운영 가능한 인벤토리'를 구축하게 되었습니다. ### 지속 가능한 확장 및 성숙도 확보 * 새로운 국가적 인증(ISMAP, IRAP 등)을 추진할 때, GCF에 이미 구축된 데이터와 비교하여 격차(Gap)를 신속하게 식별하고 필요한 제어 항목만 추가하는 방식으로 대응 속도를 높였습니다. * 제어 항목의 성숙도를 정기적으로 평가하고 자동화 비중을 높임으로써, 컴플라이언스 업무가 단순히 감사를 준비하는 행위에 그치지 않고 지속적인 보안 강화 프로세스로 작동하도록 유도합니다. 성공적인 보안 컴플라이언스 프로그램을 운영하기 위해서는 표준 프레임워크를 맹목적으로 따르기보다 조직의 비즈니스 구조와 운영 방식에 맞게 재설계하는 과정이 필요합니다. GitLab처럼 제어 항목의 '요구사항'과 '구현 방식'을 분리하고 상세한 운영 컨텍스트를 메타데이터로 관리한다면, 복잡한 멀티 인증 환경에서도 일관성 있고 효율적인 보안 체계를 유지할 수 있습니다.

datadog원문

에이전트를 위한 MCP 도구 설계: Datadog의 MCP 서버 구축을 통해 배운 교훈 (새 탭에서 열림)

AI 에이전트를 위한 관측성(Observability) 인터페이스 구축 시, 단순히 기존 API를 그대로 노출하는 방식은 컨텍스트 창의 한계와 비용 문제로 인해 한계가 명확합니다. Datadog은 MCP(Model Context Protocol) 서버를 구축하며 데이터 포맷 최적화, SQL 기반 쿼리 도입, 도구의 효율적 관리라는 세 가지 핵심 설계를 통해 에이전트의 작업 효율을 극대화했습니다. 결과적으로 이러한 설계 변경은 에이전트의 추론 정확도를 높이는 동시에 토큰 사용량을 줄여 운영 비용을 절감하는 효과를 가져왔습니다. ### 컨텍스트 창 효율성 극대화 * **데이터 포맷 최적화**: JSON은 프로그래밍 방식에는 적합하지만 토큰 소모가 큽니다. 평면적인 데이터에는 CSV(토큰 약 50% 절감)를, 계층 구조가 있는 데이터에는 YAML(약 20% 절감)을 사용하여 동일한 컨텍스트 내에 더 많은 정보를 담았습니다. * **필드 트리밍**: 에이전트에게 불필요한 필드를 기본 출력에서 제거하고 필요한 경우에만 요청하게 함으로써, 동일한 토큰 예산 내에서 레코드 수용량을 최대 5배까지 늘렸습니다. * **토큰 기반 페이지네이션**: 레코드 개수 단위로 데이터를 끊어 보내는 전통적인 방식 대신, 실제 소비되는 토큰량을 기준으로 응답을 제한하여 에이전트의 컨텍스트 창이 예기치 않게 가득 차는 문제를 방지했습니다. ### 단순 조회를 넘어선 SQL 기반 쿼리 도입 * **서버 측 집계**: 에이전트가 수천 개의 로그를 직접 내려받아 트렌드를 분석하는 대신, 서버에서 SQL을 실행하여 요약된 결과만 받도록 개선했습니다. * **비용 및 성능 개선**: SQL을 통해 꼭 필요한 필드만 선택(SELECT)하고 행을 제한(LIMIT)함으로써, 평가 시나리오에서 실행 비용을 약 40% 절감하고 정답률을 높였습니다. * **에이전트 적응력**: AI 에이전트는 SQL 작성에 매우 능숙하며, 이를 통해 컨텍스트 윈도우에 들어갈 데이터를 스스로 세밀하게 제어할 수 있게 되었습니다. ### 도구 비대화 방지 및 관리 전략 * **유연한 도구 설계**: 개별 API 엔드포인트마다 도구를 만드는 대신, 하나의 도구가 여러 유즈케이스를 처리할 수 있도록 스키마를 범용적으로 설계하여 도구의 총 개수를 줄였습니다. * **도구 세트(Toolsets) 분리**: 모든 도구를 한꺼번에 노출하지 않고, 핵심 도구와 특정 워크플로우를 위한 선택적 도구 세트를 구분하여 에이전트의 혼란을 방지하고 컨텍스트 소모를 최소화했습니다. * **도구 계층화**: "어떻게 작업을 수행할지"를 묻는 도구와 실제 동작 도구를 분리하여 검색 효율을 높였습니다. 다만, 이 방식은 레이턴시 증가라는 기회비용이 발생하므로 신중한 적용이 필요합니다. AI 에이전트를 위한 도구를 설계할 때는 인간 사용자를 위한 API 설계와는 다른 접근이 필요합니다. 에이전트가 데이터를 직접 처리하게 두기보다, 서버 측에서 데이터를 가공하고 요약할 수 있는 강력한 쿼리 기능을 제공하고 전송 포맷을 최적화하는 것이 성능과 비용 측면에서 모두 유리합니다.

netflix원문

JDK Vector API를 활용 (새 탭에서 열림)

넷플릭스는 추천 시스템의 핵심 로직인 '비디오 참신성 점수(serendipity scoring)' 계산 과정에서 발생하는 과도한 CPU 점유율(7.5%) 문제를 해결하기 위해 대대적인 최적화를 수행했습니다. 개별 벡터의 유사도를 반복 계산하던 기존 방식을 행렬 연산 기반의 배치 처리로 전환하고, 메모리 레이아웃 최적화와 JDK Vector API를 도입함으로써 연산 효율을 극대화하고 클러스터 유지 비용을 절감하는 성과를 거두었습니다. **기존 구현의 성능 병목 현상** * 후보 영화군(M)과 사용자의 시청 기록(N)을 비교할 때 $O(M \times N)$의 중첩 루프 구조로 코사인 유사도를 계산하여 순차적 작업 부하가 컸습니다. * 파편화된 메모리 접근 방식과 반복적인 임베딩 조회로 인해 캐시 지역성이 떨어졌으며, 이는 서비스 전체 CPU 프로파일링에서 주요 핫스팟으로 나타났습니다. * 특히 대량의 배치 요청이 들어올 경우 계산량이 기하급수적으로 늘어나 전체 서비스의 응답 속도에 악영향을 주었습니다. **행렬 연산으로의 전환 및 배치화** * 수많은 작은 도트 곱(dot product) 연산을 하나의 행렬 곱셈($M \times D$와 $D \times N$ 행렬의 곱)으로 재설계하여 수학적 최적화의 기반을 마련했습니다. * 모든 행을 단위 벡터로 정규화한 후 행렬 연산을 수행하여 한 번에 모든 유사도 점수를 산출하는 방식으로 알고리즘을 개선했습니다. * 단일 요청과 배치 요청을 모두 지원하도록 인터페이스를 확장하여 하위 호환성을 유지하면서도 처리 효율을 높였습니다. **메모리 레이아웃 최적화와 객체 재사용** * 다차원 배열(`double[][]`) 사용 시 발생하는 가비지 컬렉션(GC) 압박과 메모리 비연속성 문제를 해결하기 위해 1차원 평면 버퍼(`double[]`) 구조를 도입했습니다. * `ThreadLocal<BufferHolder>`를 활용해 각 스레드에서 연산용 버퍼를 재사용함으로써 매 요청마다 발생하는 메모리 할당 비용을 제거했습니다. * 데이터 레이아웃을 행 우선(row-major) 순서의 연속된 메모리로 배치하여 CPU 캐시 효율을 비약적으로 향상했습니다. **네이티브 라이브러리(BLAS)의 한계와 대안** * 고성능 선형 대수 라이브러리인 BLAS 도입을 검토했으나, 자바와 네이티브 코드 간의 JNI(Java Native Interface) 전환 오버헤드로 인해 실질적인 성능 이득이 크지 않았습니다. * 또한 자바의 행렬 레이아웃과 네이티브 라이브러리 요구 사양 간의 차이로 인해 추가적인 데이터 복사 비용이 발생하여 기대 성능에 미치지 못했습니다. * 이를 해결하기 위해 자바 환경 내에서 하드웨어의 SIMD 기능을 직접 활용할 수 있는 JDK Vector API가 최종적인 최적화 도구로 선택되었습니다. 알고리즘의 시간 복잡도를 개선하는 것만큼이나 메모리 배치와 CPU의 하드웨어 가속(SIMD)을 고려한 저수준 최적화가 중요합니다. 특히 대규모 트래픽을 처리하는 자바 기반 마이크로서비스라면 JDK Vector API를 통해 네이티브 라이브러리 호출 없이도 고성능 연산을 구현할 수 있습니다.

cloudflare원문

2026 Cloudflare 위 (새 탭에서 열림)

2026년의 사이버 위협 지형은 단순한 기술적 정교함을 넘어 결과 중심의 '효율성 측정(MOE, Measure of Effectiveness)'을 최우선시하는 산업화된 구조로 진화했습니다. 공격자들은 이제 막대한 비용이 드는 제로데이 취약점 대신 탈취된 세션 토큰이나 신뢰받는 클라우드 도구를 활용하여 방어망을 교묘히 우회하고 있습니다. 이번 보고서는 이러한 고신뢰 기반 착취 모델과 AI 기반의 고속화된 공격 전략에 대응하기 위한 전략적 로드맵을 제시합니다. ### 공격의 새로운 기준: 효율성 측정(MOE)의 부상 * 현대의 공격자들은 복잡하고 값비싼 일회성 해킹 기법보다는 최소한의 노력으로 최대의 결과를 얻을 수 있는 '처리량(Throughput)' 중심의 MOE 지표를 따릅니다. * 공격자들은 비싼 제로데이 취약점을 찾는 대신, 이미 인증된 세션 토큰을 탈취하거나 평판이 좋은 클라우드 인프라(LotX)를 활용해 탐지를 피하면서 전달률을 높이는 경제적 선택을 합니다. * AI는 민감 데이터의 연결 고리를 식별하는 작업을 자동화하여, 공격자가 가장 짧은 시간 내에 임무를 완수할 수 있는 연속적인 시스템을 구축하도록 돕습니다. ### 2026년의 8대 핵심 보안 트렌드 * **AI 기반 고속 운영**: 생성형 AI를 활용한 실시간 네트워크 매핑과 공격 코드 개발, 딥페이크 제작이 보편화되면서 숙련도가 낮은 공격자도 고영향도 작전을 수행할 수 있게 되었습니다. * **국가 주도 인프라 침투**: 중국 기반 공격 그룹인 Salt Typhoon과 Linen Typhoon 등은 장기적인 지정학적 우위를 점하기 위해 북미의 통신, 정부, IT 서비스 인프라에 사전 침투해 거점을 마련하고 있습니다. * **SaaS 통합 리스크 확장**: 과도한 권한이 부여된 서드파티 API 연동(Salesloft 사례 등)을 통해 단일 접점의 침투가 수백 개의 기업 환경으로 확산되는 연쇄 피해가 발생하고 있습니다. * **신뢰 기반 도구의 무기화**: 구글 캘린더, 드롭박스, 깃허브 등 합법적인 SaaS 및 IaaS 도구를 악용해 명령 및 제어(C2) 트래픽을 정상적인 기업 활동처럼 위장합니다. * **딥페이크 위장 취업**: 북한의 국가 주도 해커들이 딥페이크와 허위 신분으로 서구 기업에 원격 IT 인력으로 위장 취업하여 첩보 활동과 불법 수익 창출을 병행하고 있습니다. * **다중 인증(MFA) 무력화**: LummaC2와 같은 정보 탈취 도구를 사용해 활성 세션 토큰을 직접 수확함으로써, 기존의 다중 인증 절차를 건너뛰고 바로 사후 인증 단계로 진입합니다. * **브랜드 위장 피싱**: 메일 서버의 발신자 재검증 허점을 노린 피싱 봇들이 신뢰도 높은 브랜드로 위장해 사용자 편지함에 직접 침투하는 사례가 늘고 있습니다. * **초대형 DDoS 공격**: Aisuru와 같은 대규모 봇넷을 이용한 하이퍼 볼륨 DDoS 공격이 기록을 경신하며, 인간이 대응할 수 있는 시간적 여유를 완전히 박탈하고 있습니다. ### 클라우드 서비스의 'Living off the Land' 전략 * 공격자들은 자체 악성 서버를 운영하는 대신 구글 드라이브, MS 팀즈, 아마존 S3와 같은 합법적인 클라우드 생태계를 활용하는 'Living off anything-as-a-service' 전략을 구사합니다. * Amazon SES나 SendGrid와 같이 대량 메일 발송을 위해 설계된 서비스를 악용하여 정교한 피싱 및 멀웨어를 유포함으로써 기존 스팸 필터를 효과적으로 우회합니다. * 이러한 방식은 신뢰받는 서비스의 외피를 입고 수행되기에 정상적인 기업 트래픽과 구분이 거의 불가능하며, 공격 인프라의 확장성과 신뢰성을 동시에 확보해 줍니다. 조직은 더 이상 고전적인 경계 보안이나 단순 기술적 방어에만 의존해서는 안 됩니다. 공격자들의 MOE 중심 전략을 이해하고, 신뢰받는 SaaS 도구에 대한 가시성 확보 및 세션 토큰 보호와 같은 'ID 중심 보안' 체계로의 근본적인 전환이 필요합니다.

cloudflare원문

Cloudflare 위협 인텔리전 (새 탭에서 열림)

Cloudflare는 복잡한 ETL(추출, 변환, 적재) 파이프라인을 제거하고 SQLite 기반의 샤딩된 아키텍처를 활용하여 차세대 위협 인텔리전스 플랫폼(TIP)을 구축했습니다. 이 플랫폼은 전 세계 네트워크 엣지에서 GraphQL을 직접 실행함으로써 수백만 건의 위협 이벤트를 1초 미만의 지연 시간으로 쿼리하고 시각화할 수 있는 성능을 제공합니다. 이를 통해 보안 팀은 단순히 위협을 관찰하는 수준을 넘어, 위협 행위자와 멀웨어를 실시간으로 연결하고 Cloudflare 네트워크 전체에서 공격을 선제적으로 차단할 수 있는 통합된 방어 체계를 갖추게 되었습니다. ### 위협 인텔리전스 플랫폼의 필요성과 진화 Cloudforce One 팀이 공격자 인프라를 추적하기 위해 내부용으로 개발했던 도구가 이제 모든 사용자를 위한 클라우드 네이티브 위협 인텔리전스 플랫폼으로 발전했습니다. 단순히 데이터를 나열하는 것이 아니라 위협의 전체 생명주기를 매핑하여 공격자와 멀웨어, 케이스, 지표를 하나로 연결합니다. * **데이터의 유용성 확보:** 방대한 텔레메트리 데이터 속에서 실행 가능한 통찰력을 추출하여 보안 운영 센터(SOC)의 의사결정을 지원합니다. * **엣지 기반의 혁신:** Cloudflare Workers 환경을 활용하여 실시간으로 위협 이벤트를 그래프와 다이어그램으로 합성하며, 데이터 수집과 가용성 사이의 지연 시간을 완전히 제거했습니다. ### SIEM의 한계 극복과 지능형 강화 실시간 로그 집계와 알람에 최적화된 기존 SIEM과 달리, TIP는 공격자 패턴을 추적하기 위한 전용 스키마와 장기 보관 기능을 제공하여 보안 생태계를 보완합니다. * **상황 맥락 제공:** 단순한 IP나 해시 값을 넘어 해당 지표의 역사, 관련 위협 행위자, 캠페인 내 역할 및 위험 점수를 즉각적으로 제공하여 분석가의 수동 조사 시간을 단축합니다. * **선순환 피드백 루프:** 분석가가 발견한 새로운 침해 지표(IOC)를 플랫폼에 다시 입력하면 자동화된 방어 기능이 강화되어, 모든 사용자가 실시간으로 업데이트된 인텔리전스의 혜택을 누릴 수 있습니다. ### 병목 현상을 제거한 ETL-less 아키텍처 중앙 집중식 데이터베이스의 성능 한계를 극복하기 위해 SQLite 기반의 Durable Objects를 활용한 분산 샤딩 구조를 채택했습니다. * **고가용성 샤딩:** 위협 이벤트를 수천 개의 논리적 샤드(Durable Objects)로 분산 저장하여 쓰기 병목 현상을 방지하고 고성능 트랜잭션을 보장합니다. * **계층화된 저장소:** 고부하 공격 시 발생하는 데이터 스파이크를 Cloudflare Queues로 처리하며, 장기 데이터는 R2에 저장하고 즉각적인 조회가 필요한 인덱스는 Durable Object 내의 SQLite에 유지합니다. ### 엣지에서의 병렬 쿼리 실행 사용자가 GraphQL 엔드포인트를 통해 검색을 수행하면 플랫폼은 단일 테이블이 아닌 네트워크 전역에 분산된 여러 샤드에 쿼리를 동시에 전송(Fan-out)합니다. * **지연 시간 최소화:** Smart Placement 기술을 통해 쿼리를 처리하는 Worker를 데이터가 보관된 Durable Object와 물리적으로 가까운 곳에 배치하여 응답 속도를 극대화했습니다. * **권한 기반 필터링:** 쿼리 실행 전 사용자 권한과 날짜 기반 샤드 필터링을 거쳐 필요한 데이터만 병렬로 취합함으로써 효율적인 데이터 검색을 실현합니다. 보안 운영의 효율성을 높이기 위해서는 데이터의 양보다 그 데이터가 얼마나 빠르게 실행 가능한 정보로 전환되는지가 중요합니다. Cloudflare의 새로운 TIP는 인텔리전스를 별도의 분리된 데이터셋이 아닌 방어 체계의 일부로 통합함으로써, 보안 팀이 사후 대응 방식에서 벗어나 선제적이고 능동적인 방어 태세를 구축할 수 있도록 돕습니다.

cloudflare원문

위험 탐지부터 해결까지: (새 탭에서 열림)

Cloudflare가 자사의 Cloud Access Security Broker(CASB)에 탐지된 보안 위험을 대시보드에서 즉시 수정할 수 있는 '리메디이에션(Remediation)' 기능을 도입했습니다. 그동안 CASB가 SaaS 앱 내의 설정 오류나 과도한 파일 공유를 시각화하는 데 집중했다면, 이제는 보안 팀이 별도의 관리 도구 없이 원클릭으로 문제를 해결할 수 있는 능동적인 제어 평면으로 진화했습니다. 이 기능은 먼저 Microsoft 365와 Google Workspace를 대상으로 출시되어 비즈니스 크리티컬한 데이터의 노출을 신속하게 차단합니다. **SaaS 보안 가시성에서 즉각적인 조치로의 확장** * Cloudflare CASB는 Microsoft 365, Google Workspace, Slack, GitHub 등 다양한 SaaS 환경과 API로 연결되어 통합된 보안 뷰를 제공합니다. * 기존 프로세스에서는 보안 팀이 발견된 위험을 해결하기 위해 각 앱의 개별 관리자 UI에 접속하거나 해당 툴의 담당자에게 티켓을 발송해야 하는 번거로움이 있었습니다. * 리메디이에션 기능은 이러한 루프를 폐쇄하여, 발견(Finding) 페이지에서 직접 공유 설정을 변경함으로써 조치 시간을 획기적으로 단축합니다. **고위험 파일 공유 리스크 해결** * 인터넷상의 누구나 접근 가능한 공공 링크, 전사적 공유 설정, 외부 도메인이나 개인 계정으로의 공유 등 가장 빈번하고 위험한 공유 패턴을 즉시 해제합니다. * 특히 고객 정보나 금융 데이터 등 민감 정보를 포함한 DLP(데이터 손실 방지) 프로필과 일치하는 파일에 대해 우선적인 조치가 가능합니다. * 이 기능은 파일 자체를 삭제하거나 소유권을 변경하지 않고 '위험한 공유 구성'만을 제거하여 업무의 연속성을 해치지 않으면서 보안을 강화합니다. **서버리스 아키텍처를 통한 기술적 안정성 확보** * Cloudflare Workers, Workflows, Queues, Hyperdrive 등 자사의 기술 스택을 활용해 대규모 환경에서도 빠르고 견고한 실행 환경을 구축했습니다. * 서드파티 API 호출 시 발생하는 속도 제한(429 에러) 문제를 Workflows의 기본 재시도(Retry) 기능을 통해 별도의 복잡한 상태 추적 시스템 없이도 효율적으로 관리합니다. * 성능 테스트 결과, 작업 완료 시간 중간값(p50)은 48초, 90분위수(p90)는 72초로 매우 빠른 응답성을 보이며 모든 조치 내역은 SIEM 연동을 위해 관리자 로그에 기록됩니다. **향후 계획 및 자동화 방향** * 향후 고위험 파일을 안전한 장소로 격리하는 'Quarantine' 조치와 티켓 생성 등 외부 워크플로우를 트리거하는 '커스텀 웹훅' 기능을 추가할 예정입니다. * 보안 정책에 따라 CASB가 자동으로 위험을 수정하는 '자동 리메디이에션(Autoremediation)' 정책을 도입하여 보안 운영의 효율성을 더욱 높일 계획입니다. SaaS 환경에서 발생하는 데이터 유출 사고의 상당수가 실수로 설정된 공유 권한에서 기인하는 만큼, Microsoft 365나 Google Workspace를 사용하는 조직은 CASB 리메디이에션 기능을 통해 '가시성 확보'와 '즉각적인 위험 제거'라는 두 마리 토끼를 잡을 것을 권장합니다. 특히 DLP 프로필과 연계하여 민감한 데이터가 포함된 파일의 외부 공유를 정기적으로 점검하고 즉시 조치하는 프로세스를 수립하는 것이 좋습니다.

netflix원문

넷플릭스의 마운트 메 (새 탭에서 열림)

넷플릭스는 컨테이너 런타임을 현대화하는 과정에서 수백 개의 컨테이너가 동시에 부팅될 때 시스템이 멈추거나 헬스 체크가 실패하는 심각한 병목 현상에 직면했습니다. 조사 결과, 이는 컨테이너 보안을 위해 도입된 사용자 네임스페이스(User Namespace)의 `idmap` 마운트 작업이 리눅스 커널의 VFS(가상 파일 시스템) 전역 잠금 장치에서 경합을 일으키기 때문으로 밝혀졌습니다. 특히 이러한 현상은 구형 다중 소켓(NUMA) 하드웨어 아키텍처에서 더욱 두드러지게 나타났으며, 최신 단일 소켓 인스턴스로 전환함으로써 스케일링 성능을 크게 개선할 수 있었습니다. **컨테이너 보안 강화와 마운트 폭증의 관계** - 넷플릭스는 보안 강화를 위해 각 컨테이너에 고유한 사용자 범위를 할당하는 새로운 런타임(Kubelet + Containerd)으로 전환했습니다. - 파일 소유권을 실제로 변경하는 비용을 줄이기 위해 커널의 `idmap` 마운트 기능을 사용하는데, 이는 각 레이어마다 `open_tree`, `mount_setattr`, `move_mount` 등의 호출을 발생시킵니다. - 50개의 레이어를 가진 컨테이너 100개를 동시에 실행할 경우, 이론적으로 약 20,000번 이상의 마운트 관련 작업이 수행되며 이는 커널의 마운트 테이블 전역 락(Global Lock)에 엄청난 부하를 줍니다. **커널 및 하드웨어 수준의 병목 현상 진단** - 시스템 분석 결과, CPU는 커널의 `path_init()` 함수 내 시퀀스 락(Sequence Lock)을 기다리는 스핀 루프(Spin Loop)에서 대부분의 시간을 소비하며 'Pause' 명령어를 반복 실행했습니다. - TMA(Topdown Microarchitecture Analysis) 분석에 따르면 파이프라인 슬롯의 95.5%가 경합된 액세스로 인해 중단되었으며, 57%는 가짜 공유(False Sharing)로 인해 발생했습니다. - 여러 코어가 동일한 캐시 라인에 접근하려고 시도하면서 캐시 라인 바운싱(Cache Line Bouncing) 현상이 발생하여 시스템 성능이 급격히 저하되었습니다. **인스턴스 아키텍처에 따른 성능 차이** - 테스트 결과, 5세대 인텔 듀얼 소켓 인스턴스인 `r5.metal`은 100개 이상의 컨테이너가 동시에 실행될 때 성능이 급격히 저하되며 실패하는 모습을 보였습니다. - 반면, 단일 소켓 및 단일 NUMA 도메인을 사용하는 7세대 인스턴스(`m7i.metal-24xl`, `m7a.24xlarge`)는 높은 동시성 환경에서도 훨씬 낮은 지연 시간과 높은 성공률을 유지했습니다. - 이는 NUMA 아키텍처의 프로세서 간 상호 연결(Interconnect) 대기 시간이 전역 락 경합 상황에서 병목 현상을 수배로 증폭시키기 때문입니다. 대규모 컨테이너 환경을 운영한다면 컨테이너 이미지의 레이어 수를 최소화하여 마운트 발생 횟수를 줄여야 합니다. 또한, 컨테이너 생성 및 삭제가 빈번한 워크로드의 경우 다중 소켓 기반의 구형 인스턴스보다는 메모리 접근 대기 시간이 짧고 락 경합에 유리한 최신 단일 소켓 혹은 단일 NUMA 노드 아키텍처를 선택하는 것이 성능 안정성에 유리합니다.

netflix원문

MediaFM: 넷 (새 탭에서 열림)

넷플릭스는 방대한 콘텐츠 카탈로그를 정밀하게 이해하기 위해 비디오, 오디오, 텍스트를 결합한 자체 멀티모달 파운데이션 모델인 MediaFM을 개발했습니다. 이 모델은 쇼트(Shot) 단위의 정보를 긴 문맥 속에서 학습하여 내러티브 구조와 감정적 흐름을 파악하며, 광고 타겟팅, 클립 인기 예측, 장르 분류 등 다양한 서비스의 기반 기술로 활용됩니다. 결과적으로 MediaFM은 단순한 프레임 분석을 넘어 영상의 전체적인 맥락을 기계가 읽을 수 있게 변환함으로써 넷플릭스의 콘텐츠 운영 효율과 사용자 경험을 크게 향상시키고 있습니다. **트리모달 데이터의 결합과 전처리** * 모델의 기본 분석 단위는 쇼트 경계 감지 알고리즘으로 분할된 '쇼트(Shot)'이며, 각 쇼트에서 비디오, 오디오, 텍스트 세 가지 핵심 모달리티를 추출합니다. * 비디오는 내부 모델인 SeqCLIP, 오디오는 Meta의 wav2vec2, 자막 및 오디오 설명은 OpenAI의 text-embedding-3-large를 사용하여 개별 임베딩을 생성합니다. * 추출된 세 임베딩을 하나로 결합하여 2304차원의 통합 벡터를 만들고, 이를 최대 512개의 시퀀스로 구성하여 트랜스포머 인코더에 입력합니다. * 작품의 시놉시스와 태그 같은 타이틀 수준의 메타데이터를 [GLOBAL] 토큰으로 변환하여 삽입함으로써, 개별 쇼트가 전체 작품의 맥락을 반영할 수 있도록 설계했습니다. **트랜스포머 기반 아키텍처와 학습 방식** * MediaFM은 BERT와 유사한 구조의 트랜스포머 인코더를 사용하여 쇼트 간의 시간적 관계와 문맥적 정보를 학습합니다. * '마스크 쇼트 모델링(Masked Shot Modeling, MSM)' 기법을 학습 목표로 사용하며, 입력 시퀀스의 20%를 마스킹하고 주변 정보를 통해 원래의 결합 임베딩을 코사인 유사도 기반으로 예측하도록 훈련합니다. * 최적화 과정에서 하이퍼파라미터 튜닝을 위해 Muon 옵티마이저를 도입하여 기존 AdamW 방식보다 성능을 유의미하게 개선했습니다. * 이 과정을 통해 생성된 임베딩은 단순한 정보를 넘어 영상의 전후 흐름이 반영된 '문맥화된 표현(Contextualized representation)'이 됩니다. **주요 활용 사례 및 성능 평가** * 광고 적합성(Ad Relevancy): 추출된 임베딩을 통해 특정 광고 배치에 적합한 클립을 분류하고 후보군을 식별하여 광고 서빙 시스템의 효율을 높입니다. * 클립 인기 및 톤 분석: 클립의 클릭률(CTR)을 바탕으로 상대적 인기를 예측하거나, 영상의 분위기(공포, 유머 등 100여 개 카테고리)를 정밀하게 분석합니다. * 장르 분류 및 리트리벌: 11개의 주요 장르 분류와 더불어, 특정 작품을 홍보하기에 적합한 '가치 있는 클립'인지 여부를 판별하는 이진 분류 작업에 활용됩니다. * 성능 평가 결과, 특정 클립을 단독으로 분석하는 것보다 전체 에피소드라는 더 큰 문맥 안에서 임베딩을 추출할 때 모든 작업에서 월등한 성능을 보였습니다. MediaFM은 넷플릭스가 보유한 대규모 엔터테인먼트 특화 데이터를 학습하여 콘텐츠의 깊은 의미를 파악하는 강력한 도구입니다. 특히 신작 출시 시 데이터가 부족한 '콜드 스타트' 문제를 해결하고, 예고편이나 아트워크 같은 홍보 자산을 최적화하는 데 기여함으로써 미디어 산업에서 멀티모달 AI가 나아가야 할 실질적인 방향을 제시하고 있습니다.

gitlab원문

GitLab 위협 인텔리 (새 탭에서 열림)

GitLab 위협 인텔리전스 팀은 북한 연계 위협 그룹이 수행하는 '전염성 인터뷰(Contagious Interview)'와 가짜 IT 개발자 취업 캠페인의 세부 수법을 공개하고, 이들이 GitLab 플랫폼을 어떻게 악용했는지 분석했습니다. 북한 해커들은 채용 담당자로 위장해 개발자들에게 악성 코드가 포함된 기술 과제를 실행하도록 유도하며, 이를 통해 자금 탈취와 자격 증명 절취를 시도하고 있습니다. GitLab은 2025년 한 해 동안 130개 이상의 관련 계정을 차단했으며, 이들의 인프라 분석을 통해 확보한 지표를 공유하여 보안 커뮤니티의 대응 역량 강화를 촉구했습니다. **전염성 인터뷰(Contagious Interview)의 실체** * **공격 방식:** 해커들이 구인 구직 플랫폼에서 채용 담당자로 위장해 개발자에게 접근한 뒤, 기술 면접을 빙자하여 악성 코드가 포함된 프로젝트를 내려받아 실행하도록 유도합니다. * **주요 악성코드:** 주로 BeaverTail과 Ottercookie로 알려진 JavaScript 기반의 악성코드 패밀리가 사용됩니다. * **피해 결과:** 개발자의 장비에 대한 원격 제어 권한을 획득하고, 암호화폐 지갑 정보나 로그인 자격 증명을 탈취하여 금융 자산 절도 및 내부 네트워크 침투의 발판으로 삼습니다. **2025년 캠페인 추세 및 주요 특징** * **공격 규모:** 2025년 한 해 동안 총 131개의 북한 연계 위협 계정이 차단되었으며, 특히 9월에 공격 활동이 정점에 달했습니다. * **인프라 활용:** 공격자의 90%가 Gmail 계정을 사용해 GitLab에 가입했으며, 탐지를 피하고자 소비자용 VPN이나 전용 VPS 인프라를 통해 접속했습니다. * **타겟 산업:** 주로 암호화폐, 금융, 부동산 분야의 개발자를 타겟팅했으나, 최근에는 AI 및 게임 산업으로도 범위를 넓히고 있습니다. * **외부 서비스 악용:** 악성 페이로드를 GitLab에 직접 저장하지 않고, Vercel과 같은 합법적인 호스팅 서비스나 커스텀 도메인을 활용해 외부에서 불러오는 방식을 취했습니다. **악성 코드 삽입 및 은닉 기술** * **환경 변수 위장:** `.env` 파일 내에 악성 페이로드 URL과 헤더 값을 Base64로 인코딩하여 일반적인 설정값처럼 보이게 위장합니다. * **동적 코드 실행:** `Function.constructor`를 사용하여 문자열 형태의 원격 콘텐츠를 실행 가능한 코드로 로드하는 커스텀 에러 핸들러 기법을 사용합니다. * **최신 변종 기법:** VS Code 작업을 통한 악성 쉘 명령 실행, 가짜 폰트 파일 내에 숨겨진 바이너리 데이터 디코딩, 프로젝트 실행 직전에 생성된 악성 NPM 종속성 활용 등의 수법이 관찰되었습니다. **가짜 IT 노동자 운영 사례** * **신분 위조 파이프라인:** 최소 135개의 가짜 페르소나를 생성하는 자동화된 파이프라인을 구축하여 전문적인 인맥을 형성하고 구인 제안을 수집했습니다. * **신분증 조작:** 도용된 미국 시민권자의 신분증에 자신의 사진을 합성하여 21개의 고유한 가짜 신분을 관리하는 사례가 발견되었습니다. * **글로벌 거점:** 러시아 모스크바 등 해외 거점에서 활동하며 미국 내 조력자를 모집하고, 제재를 피하면서 미국 기업으로부터 수익을 창출하고 있습니다. 개발자들은 신뢰할 수 없는 출처에서 제공된 기술 면접용 코드 프로젝트를 실행할 때 각별히 주의해야 합니다. 특히 `.env` 파일에 인코딩된 의심스러운 문자열이 있거나, 프로젝트 실행 시 외부 URL에서 콘텐츠를 불러오는 로더가 포함되어 있는지 철저히 검증하는 보안 습관이 필요합니다.

spotify원문

아카이브 내부: 2025 Wrapped 하이라이트 이면의 기술 | 스포티파이 엔지니어링 (새 탭에서 열림)

스포티파이는 2025년 'Wrapped(연말 결산)'를 통해 사용자의 1년 감상 기록 중 가장 의미 있는 순간들을 발굴하고, 이를 LLM(대규모 언어 모델)을 활용해 개인화된 서사로 풀어내는 'Wrapped Archive' 기능을 선보였습니다. 이 시스템은 약 3억 5천만 명의 사용자에게 최대 5개씩, 총 14억 개의 리포트를 생성하기 위해 고도화된 데이터 추출 휴리스틱과 모델 증류(Distillation) 기술, 그리고 대규모 병렬 처리가 가능한 분산 아키텍처를 활용했습니다. 단순한 통계 나열을 넘어 데이터에 기반한 창의적인 스토리텔링을 대규모로 구현하면서도 비용 효율성과 시스템 안정성을 동시에 확보한 것이 핵심입니다. ### 데이터 기반의 '특별한 날' 선정 알고리즘 스포티파이는 수억 개의 감상 이벤트 중에서 사용자에게 가장 의미 있을 법한 날들을 선별하기 위해 우선순위가 지정된 휴리스틱 세트를 설계했습니다. * **다양한 지표 활용**: 단순히 청취 시간이 긴 날뿐만 아니라, 처음 듣는 아티스트가 가장 많았던 '발견의 날', 특정 장르가 지배적이었던 날, 평소 취향에서 크게 벗어난 '이색적인 날' 등을 정의했습니다. * **서사적 가치 부여**: 생일이나 새해 첫날 같은 맥락적 데이터와 결합하여 통계적 강점과 이야기로서의 잠재력이 높은 날을 최대 5개까지 압축했습니다. * **분산 데이터 파이프라인**: 대규모 데이터를 처리하기 위해 분산 파이프라인을 구축하여 사용자별 후보일을 계산하고, 이를 오브젝트 스토리지에 저장한 뒤 메시지 큐(PubSub)를 통해 비동기적으로 리포트 생성 단계에 전달했습니다. ### 14억 개 리포트 생성을 위한 LLM 최적화 모든 사용자에게 고품질의 리포트를 제공하기 위해서는 거대 모델의 성능과 소형 모델의 경제성 사이에서 균형을 잡아야 했습니다. * **정교한 프롬프트 엔지니어링**: 시스템 프롬프트를 통해 데이터 기반의 스토리텔링, 재치 있는 톤앤매너, 안전 가이드라인을 정의하고, 사용자 프롬프트에는 구체적인 청취 로그와 수학적 통계 블록을 포함해 할루시네이션(환각)을 방지했습니다. * **모델 증류 및 미세 조정(Fine-tuning)**: 비용 절감을 위해 고성능 프런티어 모델로 생성한 고품질 데이터를 학습 데이터(Gold Dataset)로 사용하여 더 작고 빠른 모델을 미세 조정했습니다. * **DPO(Direct Preference Optimization) 적용**: 인간의 피드백을 반영한 A/B 테스트 데이터를 바탕으로 DPO를 실시하여, 소형 모델임에도 불구하고 베이스라인 모델에 필적하는 성능을 확보했습니다. ### 대규모 병렬 처리와 데이터 정합성 유지 나흘 동안 멈춤 없이 14억 개의 리포트를 생성하고 저장하기 위해 높은 처리량과 안정성을 보장하는 인프라를 구축했습니다. * **배치 처리 엔진**: 초당 수천 건의 요청을 처리할 수 있도록 시스템을 설계했으며, 한 사용자의 리포트가 생성될 때 이전 리포트의 내용을 참고하게 하여 내용 중복을 방지했습니다. * **경합 없는 스토리지 설계**: 열 지향(Column-oriented) 키-값 데이터베이스를 사용하여 각 리포트를 고유한 컬럼 식별자(YYYYMMDD)로 저장했습니다. 이를 통해 락(Lock)이나 복잡한 읽기-수정-쓰기 과정 없이 병렬 쓰기가 가능하게 했습니다. * **쓰기 순서 제어**: 리포트 본문을 먼저 저장한 후 메타데이터를 작성하는 방식을 채택하여, 생성 중인 리포트가 사용자에게 노출되는 현상을 방지하고 데이터 일관성을 유지했습니다. 대규모 사용자 데이터를 바탕으로 LLM 서비스를 기획한다면, 처음부터 거대 모델을 직접 호출하기보다 고성능 모델로 생성한 고품질 데이터를 활용해 소형 모델을 증류(Distillation)하고 특정 목적에 최적화하는 전략이 비용과 성능 면에서 훨씬 유리합니다. 또한, 수억 건의 동시 쓰기가 발생하는 환경에서는 데이터베이스의 물리적 구조를 활용해 경합을 최소화하는 스키마 설계가 필수적입니다.

gitlab원문

Claude Opus 4.6, (새 탭에서 열림)

GitLab은 Anthropic의 가장 강력한 AI 모델인 Claude Opus 4.6을 GitLab Duo 에이전트 플랫폼에 도입하여 개발자들에게 더욱 강력한 자율 성능을 제공합니다. 이 모델은 복잡한 개발 과업을 주도적으로 수행하는 '에이전틱(Agentic)' 역량이 극대화되었으며, 100만 토큰에 달하는 방대한 컨텍스트 창을 지원하는 것이 특징입니다. 개발자들은 이제 GitLab의 풍부한 DevSecOps 데이터와 결합된 최신 AI를 통해 대규모 코드베이스 분석부터 다단계 워크플로우 자동화까지 한층 높은 차원의 개발 경험을 누릴 수 있게 되었습니다. **Claude Opus 4.6의 핵심 에이전트 역량** * **능동적 과업 수행:** 이전 모델보다 적은 가이드로도 스스로 행동을 결정하고 작업을 추진하며, 복잡한 워크플로우를 해결하기 위해 하위 에이전트를 생성하거나 도구 호출을 병렬로 처리하는 능력이 탁월합니다. * **심화 및 적응형 추론:** 테스트 시간 연산(test-time compute)을 통해 문제의 난이도에 따라 사고 과정을 스스로 조정하며, 단순한 질문에는 빠르게 답하고 복잡한 문제에는 깊이 있는 추론을 적용합니다. * **압도적인 컨텍스트 창:** 기존 4.5 모델보다 5배 확장된 100만 토큰의 컨텍스트 창을 통해 전체 코드베이스, 상세 문서, 프로젝트 전체 이력을 단 한 번의 상호작용으로 파악할 수 있습니다. **GitLab Duo 플랫폼과의 통합 및 활용** * **풍부한 컨텍스트 제공:** GitLab 리포지토리, 병합 요청(MR), 파이프라인, 보안 결과물 등 플랫폼 내의 실제 DevSecOps 데이터를 활용하여 더욱 정확한 결과물을 산출합니다. * **지원 범위:** GitLab.com의 모든 에이전트와 에이전틱 채팅(Agentic Chat) 내 모델 선택기에서 사용할 수 있으며, 지원되는 IDE 내에서의 모델 선택 기능도 곧 출시될 예정입니다. (Duo Classic 기능은 제외) * **엔터프라이즈급 제어:** 인간 참여형(Human-in-the-loop) 제어 기능과 그룹 기반 액세스 권한 관리를 통해 고성능 AI를 안전하고 신뢰할 수 있는 방식으로 워크플로우에 통합할 수 있습니다. **모델 사용을 위한 크레딧 정책** * **프롬프트 크기별 차등 적용:** 200k 토큰 이하의 요청은 크레딧당 1.2회 사용 가능하며, 200k 토큰을 초과하는 대규모 요청은 크레딧당 0.7회의 비율로 계산됩니다. * **효율적 활용:** 방대한 데이터를 처리하는 작업일수록 크레딧 소모율이 달라지므로, 작업의 복잡도에 맞게 모델을 선택하여 사용하는 것이 권장됩니다. 현재 GitLab Duo 에이전트 플랫폼을 사용 중인 고객은 모델 선택기에서 즉시 Claude Opus 4.6으로 전환하여 그 성능을 체험할 수 있습니다. 대규모 마이그레이션이나 복잡한 보안 취약점 해결과 같이 고도의 지능이 필요한 작업에 이 모델을 적극 활용하여 팀의 생산성을 극대화해 보시기 바랍니다.

netflix원문

넷플릭스의 LL (새 탭에서 열림)

넷플릭스는 일반적인 기초 모델을 자사 서비스의 카탈로그와 사용자 맥락에 맞게 최적화하기 위해, 인프라의 복잡성을 추상화한 '포스트 트레이닝(Post-Training) 프레임워크'를 구축했습니다. 이 프레임워크는 대규모 분산 GPU 클러스터 환경에서 데이터 파이프라인과 모델 훈련 워크플로우를 효율적으로 조율하여 연구자들이 하드웨어가 아닌 모델 혁신에만 집중할 수 있게 돕습니다. 결과적으로 엔지니어링 병목 현상을 해결함으로써 개인화 추천 및 검색 경험을 고도화하는 데 핵심적인 역할을 수행합니다. ### 데이터 처리 및 모델 설정의 기술적 난제 - **정교한 손실 마스킹(Loss Masking):** 지시어 이행(Instruction following)이나 연쇄 사고(CoT) 품질을 높이기 위해, 프롬프트가 아닌 응답(Assistant) 토큰에만 손실을 적용하여 모델이 부적절한 텍스트를 학습하지 않도록 제어합니다. - **시퀀스 패킹(Sequence Packing):** 가변적인 문장 길이로 인한 연산 낭비를 줄이기 위해 여러 샘플을 고정 길이 시퀀스로 묶고, 샘플 간 간섭을 방지하는 '도큐먼트 마스크'를 적용하여 GPU 효율을 극대화합니다. - **분산 로딩 및 메모리 최적화:** 단일 GPU 메모리를 초과하는 모델을 위해 FSDP(Fully Sharded Data Parallel)나 TP(Tensor Parallel) 샤딩을 사용하며, 대규모 어휘집 처리 시 발생하는 메모리 스파이크를 방지하기 위해 로짓 청킹(Logit chunking) 기법을 도입했습니다. ### 넷플릭스 포스트 트레이닝 프레임워크의 구조 - **기술 스택의 통합:** 넷플릭스 내부 ML 플랫폼인 'Mako' 위에서 PyTorch, Ray, vLLM 등 오픈소스 구성 요소를 결합하여 단일 노드부터 수백 개의 GPU까지 확장 가능한 환경을 제공합니다. - **표준화된 레시피:** SFT(지도 미세 조정), DPO(직접 선호도 최적화), RL(강화 학습), 지식 증류 등 주요 워크플로우를 설정 파일만으로 실행할 수 있는 재사용 가능한 레시피 형태로 지원합니다. - **유연한 아키텍처 확장성:** 단순 챗 모델을 넘어 도메인 특화 특수 토큰 사용이나 비표준 아키텍처 실험이 가능하도록 유연성과 확장성을 최우선으로 설계되었습니다. ### 시스템 고도화를 위한 4대 핵심 요소 - **데이터(Data):** 로컬 저장 공간을 초과하는 대규모 데이터를 클라우드에서 실시간 스트리밍하며, CPU 기반 패킹 작업을 GPU 연산과 비동기적으로 병렬 처리하여 유휴 시간을 제거합니다. - **모델(Model):** Qwen, Gemma 등 최신 아키텍처와 MoE(Mixture-of-Experts) 모델을 지원하며, LoRA 통합 및 고수준 샤딩 API를 통해 복잡한 분산 코딩 없이도 대형 모델을 다룰 수 있게 합니다. - **연산(Compute):** MFU(Model FLOPS Utilization) 모니터링을 통해 연산 효율을 실시간 추적하며, 장애 발생 시 훈련 상태를 정확히 복구할 수 있는 정교한 체크포인팅 시스템을 갖추었습니다. - **워크플로우(Workflow):** 단순 학습 루프를 넘어 온폴리시(On-policy) 강화 학습처럼 생성(Rollout)과 업데이트가 반복되는 복잡한 단계를 SPMD(Single Program, Multiple Data) 스타일로 관리합니다. 복잡한 분산 시스템의 세부 사항을 프레임워크 수준에서 표준화함으로써, 넷플릭스는 고도화된 AI 모델 실험의 진입 장벽을 낮추고 대규모 서비스에 최적화된 모델을 더 빠르게 배포할 수 있는 기반을 마련했습니다. 이러한 엔지니어링 접근 방식은 인프라의 복잡성에 구애받지 않고 최신 모델링 기법을 신속하게 도입하려는 기업들에게 유용한 사례가 됩니다.

line원문

Claude Code Action: 조직 전반의 코드 품질을 지키는 AI 코드 리뷰 플랫폼화 (새 탭에서 열림)

LINE NEXT는 조직의 성장에 따른 코드 리뷰 품질 편차를 줄이고 개인 단위로 파편화된 AI 도구 활용을 조직 차원의 표준으로 통합하기 위해 Claude Code를 활용한 플랫폼화된 코드 리뷰 시스템을 구축했습니다. GitHub Actions를 기반으로 설계된 이 시스템은 리뷰 기준과 실행 로직을 중앙에서 관리함으로써 수많은 프로젝트에 일관된 품질의 피드백을 신속하게 제공합니다. 결과적으로 개별 팀의 운영 부담은 최소화하면서 보안과 거버넌스가 강화된 자동화된 리뷰 환경을 전사적으로 확산시키는 성과를 거두었습니다. ### AI 코드 리뷰 플랫폼화의 배경과 목적 * **품질 편차 해소:** 조직 규모가 커짐에 따라 리뷰어의 경험과 성향에 따라 달라지는 코드 리뷰의 깊이와 관점을 조직 차원에서 일관되게 유지할 필요가 있었습니다. * **개인 도구의 한계 극복:** 개별 개발자가 로컬에서 AI를 사용할 때 발생하는 리뷰 기준의 상이함, 프로세스 단절, 신규 구성원 온보딩의 어려움을 해결하고자 했습니다. * **DevOps 관점의 표준화:** 파편화된 품질 프로세스를 하나로 묶어 PR(Pull Request) 워크플로에 자연스럽게 녹아드는 '표준 구성 요소'로 재정의했습니다. ### GitHub Actions 기반의 통합 전략 * **기존 흐름 유지:** LINE NEXT의 표준 소스 관리 도구인 GitHub와 CI/CD 도구인 GitHub Actions를 활용하여 개발자의 학습 비용을 낮추고 기존 워크플로에 즉시 통합했습니다. * **인프라 운영 효율화:** DevOps 팀이 공통 GitHub App Runner 환경을 제공함으로써, 각 서비스 팀은 추가 인프라 구성 없이 설정만으로 AI 리뷰를 도입할 수 있게 했습니다. * **접근성 향상:** PR 내에서 `@claude` 멘션만으로 리뷰를 트리거하고, 결과물은 GitHub 댓글이나 리뷰 형태로 즉각 확인하는 직관적인 UX를 제공합니다. ### 호출과 실행을 분리한 설계 구조 (Caller-Executor) * **서비스 리포지터리(Caller):** AI 리뷰의 진입점 역할만 수행하며, 서비스명과 리뷰 타입 등 최소한의 정보만 전달하여 구조적 단순함을 유지합니다. * **중앙 리포지터리(Executor):** 프롬프트 관리, 페르소나 정의, 리뷰 정책, 권한 제어 등 핵심 로직을 집약하여 관리합니다. * **일관성 및 확산성:** 중앙에서 프롬프트를 수정하면 연결된 모든 프로젝트에 즉시 반영되며, 새로운 프로젝트는 표준 워크플로 호출만으로 빠르게 온보딩이 가능합니다. * **보안 강화:** GitHub Apps 기반의 인증과 Secrets 중앙 관리를 통해 외부 AI 호출 시의 보안 권한과 코드 접근 이력을 명확히 추적하고 통제합니다. ### 기술적 제약 극복: 포크(Fork) 기반 PR 처리 개선 * **공식 Action의 한계:** Claude Code Action의 초기 버전은 변경 코드가 `origin` 저장소에 있다는 것을 전제로 하여, 외부 포크 저장소에서 생성된 PR의 차이(diff)를 가져오지 못하는 문제가 있었습니다. * **내부 참조(ref) 활용:** 특정 브랜치를 fetch하는 방식 대신, GitHub가 모든 PR에 대해 자동으로 생성하는 특수한 참조 주소인 `refs/pull/<PR 번호>/head`를 사용하도록 로직을 재설계했습니다. * **결과:** 이 구조적 개선을 통해 내부 브랜치뿐만 아니라 외부 기여자의 포크 PR에 대해서도 중단 없는 AI 코드 리뷰가 가능한 범용적인 플랫폼 환경을 완성했습니다. ### 실용적인 제언 AI 코드 리뷰 도구를 도입할 때는 단순히 개별 리포지터리에 적용하는 것을 넘어, **'호출은 단순하게, 책임은 중앙으로'** 분리하는 아키텍처를 설계하는 것이 중요합니다. 이를 통해 조직 전체의 리뷰 품질을 상향 평준화하고, 보안 정책 변경이나 프롬프트 고도화 시 발생하는 운영 비용을 획기적으로 줄일 수 있습니다.

line원문

슬로우 쿼리 해결기: 함수형 인덱스로 비트 연산 쿼리 최적화하기 (새 탭에서 열림)

LINE VOOM 서비스는 헤비 유저의 프로필 조회 시 비트 연산 조건으로 인해 발생하는 30초 이상의 슬로우 쿼리 문제를 해결하기 위해 MySQL 8.0.13의 함수형 인덱스(functional index)를 도입했습니다. 기존의 비트 연산 조건은 인덱스를 무력화하여 수십만 건의 데이터를 풀 스캔하게 만들었으나, 연산 결과를 인덱싱하고 이를 10진수 동등 비교 쿼리로 전환함으로써 스캔 범위를 3% 수준으로 대폭 축소했습니다. 이 과정에서 무중단 인덱스 생성과 점진적 롤아웃을 통해 운영 안정성을 확보하며 시스템 성능을 성공적으로 최적화했습니다. ### 비트 연산 조건에 의한 성능 저하 원인 * LINE VOOM의 포스트 메타데이터 테이블은 `category_flag`와 `access_flag`라는 `bit(64)` 타입 컬럼에 서비스 상태 정보를 압축 저장합니다. * 특정 상태를 필터링하기 위해 `category_flag & 0x0100`과 같은 비트 연산을 사용했는데, 이는 인덱스에 저장된 원본 값이 아닌 연산 결과를 조건으로 활용하므로 기존 인덱스를 타지 못합니다. * 결과적으로 특정 사용자의 모든 포스트를 일일이 순회하며 연산을 수행해야 했고, 포스트가 수십만 건에 달하는 헤비 유저의 경우 쿼리 타임아웃이 빈번하게 발생했습니다. ### 함수형 인덱스를 활용한 최적화 설계 * MySQL 8.0.13에서 도입된 함수형 인덱스는 표현식의 결과를 가상 컬럼 형태로 저장하고 인덱싱하는 기능을 제공합니다. * 팀은 `user_id`와 비트 연산 표현식을 결합한 복합 인덱스 `idx_user_premium_searchable (user_id, (category_flag & 0x0100), (access_flag & 0x0001))`를 설계했습니다. * 이 방식은 기존 테이블 스키마를 크게 변경하지 않으면서도 특정 비트 패턴에 대해 즉각적인 인덱스 조회를 가능하게 합니다. ### 인덱스 활성화를 위한 쿼리 튜닝 및 검증 * 개발 환경 테스트 결과, 단순히 비트 연산을 포함하는 것만으로는 인덱스가 작동하지 않는 것을 확인했습니다. * 인덱스를 타기 위해서는 쿼리의 표현식이 인덱스 정의와 완벽히 일치해야 하며, 특히 비트 연산 결과를 **10진수 값으로 동등 비교**(`= 256`)했을 때만 인덱스가 정상적으로 적용되었습니다. * 최적화 후 스캔 행 수가 805건에서 31건으로 줄어드는 등 극적인 성능 향상을 보였으며, 인덱스 용량 증가(약 24%)는 운영 환경에서 수용 가능한 수준으로 판단되었습니다. ### 운영 환경 적용 및 시행착오 해결 * **무중단 인덱스 생성**: DBA 팀과 협업하여 Online DDL 방식을 사용함으로써 서비스 중단 없이 수십 개의 테이블에 인덱스를 추가했습니다. * **복제 지연 대응**: 인덱스 생성 중 발생한 마스터-슬레이브 복제 지연으로 인해 최신 글이 보이지 않는 이슈가 발생했으나, 캐시 만료 시간을 단축하여 사용자 불편을 최소화했습니다. * **논리 오류 방지**: 비트 연산을 동등 비교로 바꿀 때 OR 조건과 AND 조건의 의미 차이로 인한 버그를 발견했습니다. 이를 방지하기 위해 동적 설정을 활용해 샤드별로 쿼리를 점진적으로 적용하며 안전하게 검증을 마쳤습니다. 비트 연산과 같이 컬럼 가공이 필요한 조건을 상시로 사용해야 한다면, MySQL의 함수형 인덱스는 스키마 변경 부담을 최소화하면서 성능을 극대화할 수 있는 강력한 도구입니다. 다만, 인덱스가 적용되는 정확한 표현식(10진수 비교 등)을 사전에 검증하고, 대규모 테이블 작업 시 발생할 수 있는 복제 지연과 논리적 조건 변화를 세심하게 모니터링하는 것이 중요합니다.