데이터베이스 설계

191 개의 포스트

netflix원문

RDS Postgres에서 Aurora Postgres로의 마 (새 탭에서 열림)

넷플릭스는 기능성, 성능 및 총소유비용(TCO)을 종합적으로 검토한 결과, 사내 관계형 데이터베이스 표준을 Amazon Aurora PostgreSQL로 전환하기로 결정했습니다. 약 400개에 달하는 기존 RDS PostgreSQL 클러스터를 효율적으로 이전하기 위해 넷플릭스는 가동 중지 시간을 최소화하고 데이터 무결성을 보장하는 자동화된 셀프 서비스 마이그레이션 워크플로우를 구축했습니다. 이를 통해 개별 서비스 팀은 운영 부담 없이 클라우드 네이티브 아키텍처의 확장성과 고가용성 이점을 누릴 수 있게 되었습니다. ### Aurora PostgreSQL 표준화 배경 * **높은 호환성:** 내부 분석 결과, 기존 관계형 데이터베이스에서 실행되는 애플리케이션의 95% 이상이 Aurora PostgreSQL 환경에서 원활하게 지원됨을 확인했습니다. * **클라우드 네이티브 이점:** 전통적인 단일 노드 PostgreSQL에 비해 확장성, 고가용성 및 탄력성 측면에서 Aurora의 분산 아키텍처가 월등한 우위를 점하고 있습니다. * **생태계 및 로드맵:** 강력한 커뮤니티 지원을 받는 PostgreSQL의 오픈 생태계와 대규모 글로벌 분산 애플리케이션에 최적화된 Aurora의 기능 로드맵이 결정적인 요인이 되었습니다. ### 대규모 마이그레이션의 운영 및 기술적 과제 * **운영의 규모 가변성:** 400개에 가까운 클러스터를 수동으로 이전하는 것은 인적 오류의 위험이 크고 운영 팀에 과도한 부담을 주므로, 자동화된 셀프 서비스 방식이 필수적이었습니다. * **데이터 무결성 및 가동 중지 최소화:** '제로 데이터 손실'을 보장하는 동시에, 서비스 신뢰도에 영향을 주지 않도록 쓰기 트래픽을 중단하고 전환하는 시간을 극도로 짧게 유지해야 합니다. * **제어 권한의 한계:** 플랫폼 팀은 데이터베이스를 관리하지만 클라이언트 애플리케이션의 동작(쓰기 일시 중단 등)을 직접 제어할 수 없으며, 보안상 사용자 데이터베이스의 자격 증명(Credentials)에 직접 접근하지 않고 마이그레이션을 수행해야 하는 제약이 있습니다. * **생태계 패리티 유지:** 핵심 데이터뿐만 아니라 파라미터 그룹, 읽기 전용 복제본(Read Replica), 복제 슬롯 등 연관된 모든 구성 요소를 동일하게 이전해야 성능 저하를 방지할 수 있습니다. ### AWS 권장 마이그레이션 기법의 활용 * **스냅샷 기반 마이그레이션:** RDS PostgreSQL의 수동 스냅샷을 생성하여 Aurora로 변환하는 방식으로, 구조는 단순하지만 스냅샷 생성부터 완료 시까지 쓰기 트래픽을 중단해야 하므로 가동 중지 시간이 길다는 단점이 있습니다. * **Aurora 읽기 전용 복제본 기반 마이그레이션:** 기존 RDS를 소스로 하는 Aurora 읽기 복제본을 생성하여 비동기 복제를 수행합니다. 복제 지연(Lag)이 충분히 낮아졌을 때 짧은 순간만 트래픽을 중단하고 복제본을 승격(Promote)시키므로, 스냅샷 방식보다 가동 중지 시간을 현저히 줄일 수 있습니다. ### 성공적인 전환을 위한 전략적 결론 대규모 데이터베이스 마이그레이션은 단순한 데이터 복사를 넘어 복제, 정지(Quiescence), 검증, 전환의 정교한 조율이 필요합니다. 넷플릭스의 사례처럼 데이터베이스 전문가가 아닌 서비스 담당자도 쉽고 안전하게 마이그레이션을 수행할 수 있도록 자동화된 컨트롤 플레인을 구축하는 것이 대규모 인프라 현대화의 핵심입니다. 특히 가동 중지 시간에 민감한 서비스라면 AWS의 읽기 전용 복제본 승격 방식을 자동화 워크플로우에 통합하는 것이 가장 권장되는 접근법입니다.

line원문

Scaling to Infinity: 한계를 넘어서는 LY Corporation의 관측 가능성 플랫폼 진화기 (새 탭에서 열림)

LY Corporation은 수만 대의 서버와 컨테이너 환경에서 발생하는 일간 수조 건의 지표를 효율적으로 처리하기 위해 독자적인 시계열 데이터베이스(TSDB)를 개발하여 운영하고 있습니다. 초기 MySQL과 OpenTSDB의 한계를 극복하고자 인메모리(IMDB), Cassandra, S3를 결합한 다중 계층 저장소 아키텍처를 구축함으로써 데이터 폭증에 유연하게 대응하고 있습니다. 이를 통해 개발자와 운영자가 인프라 관리 부담 없이 서비스의 건강 상태를 즉각적으로 파악하고, 향후 AI 기반의 지능형 관찰가능성 플랫폼으로 진화하는 것을 목표로 합니다. **시계열 데이터의 규모와 저장소의 중요성** * **기하급수적인 데이터 증가:** 서버 1대의 CPU 지표(15초 주기)는 연간 약 562 MiB를 차지하며, 수천 대 규모의 인프라에서는 연간 테비바이트(TiB) 단위의 저장 공간이 필요합니다. * **고해상도 데이터의 필요성:** 장애 징후를 사전에 포착하고 정밀하게 모니터링하기 위해 1분 미만의 고해상도 지표 수집이 필수적이지만, 이는 범용 데이터베이스에 엄청난 쓰기 부하를 줍니다. * **클라우드 네이티브의 복잡성:** 쿠버네티스 환경에서는 파드(pod)의 잦은 생성과 소멸로 인해 관리해야 할 대상(Cardinality)이 폭증하며, 이를 수용할 유연한 스키마 구조가 요구됩니다. **자체 시계열 데이터베이스 엔진 개발 과정** * **기존 솔루션의 한계:** MySQL은 쓰기 성능과 경직된 스키마 문제로, OpenTSDB는 태그 개수 제한 및 문자열 제약, 쿼리 전 웜업(warm-up) 필요성 등의 운영상 한계가 있었습니다. * **Gorilla 논문 기반 최적화:** 데이터 조회의 85%가 최근 26시간 이내에 집중된다는 점에 착안하여, 최근 데이터는 IMDB에 저장하고 과거 데이터는 디스크 기반 저장소로 보내는 전략을 수립했습니다. * **사용자 편의성 유지:** 백엔드 아키텍처를 근본적으로 교체하면서도 기존 API와의 호환성을 완벽히 유지하여, 사용자가 코드 수정 없이도 성능 향상의 혜택을 누리게 했습니다. **데이터 홍수에 대응하는 계층형 저장 구조** * **가중치 기반 부하 분산:** 서로 다른 스펙의 노드가 혼재된 환경에서도 성능을 극대화할 수 있도록 IMDB의 부하 분산 알고리즘을 개선했습니다. * **S3 기반의 하이브리드 저장소:** 고성능 처리가 필요한 최근 14일치 데이터는 Cassandra에, 그 이전의 방대한 데이터는 비용 효율적인 S3 호환 저장소에 적재하는 3단계 계층 구조를 도입했습니다. * **데이터 파이프라인 최적화:** IMDB의 데이터를 슬롯 단위로 읽어 블록화하여 S3에 저장하는 '덤퍼(Dumper)'와, 읽기 성능을 위해 디스크 캐싱을 수행하는 'Storage Gateway'를 구축했습니다. **기술적 난관 극복과 협업의 성과** * **메모리 고갈 문제 해결:** 스토리지 게이트웨이의 I/O 과정에서 페이지 캐시 점유율이 급증하는 문제를 발견하고, 직접 I/O(Direct I/O) 대신 커널 페이지 캐시를 효율적으로 쓰는 B+ 트리 기반 캐시로 전환했습니다. * **부서 간 협업:** 직접 I/O 적용 시 발생할 수 있는 클라우드 스토리지 대역폭 문제를 유관 부서와 긴밀히 소통하여 조기에 파악하고 최적의 해답을 도출했습니다. 대규모 시스템의 관찰가능성을 확보하기 위해서는 데이터의 접근 패턴에 맞춘 계층형 저장소 설계가 필수적입니다. 단순한 저장소 확장을 넘어, 파편화된 데이터를 통합하고 AI를 활용한 예측 모델을 결합함으로써 시스템의 안정성을 선제적으로 관리하는 지능형 플랫폼으로 나아가야 합니다.

grammarly원문

아이디어에서 데모까지 이 (새 탭에서 열림)

Superhuman은 2025년 해커톤을 통해 엔지니어링, 제품, 디자인, 마케팅 등 전 직군이 협업하여 AI 기술을 실제 제품 워크플로우에 어떻게 녹여낼 수 있는지를 탐구했습니다. 참가자들은 Claude Code와 Cursor 같은 최신 AI 도구를 적극 활용해 단 이틀 만에 고도화된 MVP를 구축했으며, 이는 AI 에이전트 시대에 걸맞은 새로운 사용자 경험(UX)과 데이터 활용 방식의 가능성을 입증했습니다. 특히 이번 행사는 기술적 장벽을 넘어 비개발 직군까지 제작 과정에 참여함으로써 AI가 주도하는 '제작의 민주화'를 실현했다는 점에서 큰 의미가 있습니다. ### 모든 곳에서의 Superhuman 커맨드(SCE) * Superhuman Mail의 핵심인 '커맨드 센터' 기능을 브라우저 전체로 확장하여, 이메일뿐만 아니라 Grammarly 등 다양한 도구의 기능을 단축키로 제어할 수 있게 합니다. * 사용자는 마우스 없이 키보드만으로 Grammarly의 교정 제안을 수락(E)하거나 거절(D)하고, 'J'와 'K' 키로 카드 사이를 이동하며 작업을 완수할 수 있는 워크플로우를 제공합니다. * 프론트엔드 개발 경험이 부족한 팀원들도 AI를 활용한 이른바 '바이브 코딩(vibe-coding)'을 통해 단 몇 시간 만에 복잡한 통합 기능을 구현해냈으며, 이는 키보드 중심의 새로운 AI 인터페이스 패러다임을 제시했습니다. ### Coda 내 화이트보드 및 AI 다이어그램 * Coda 문서 내에서 직접 브레인스토밍과 다이어그램 작성을 할 수 있는 화이트보드 기능을 구축하여, 문서 작업과 시각적 협업의 단절을 해소했습니다. * 사용자가 텍스트로 원하는 내용을 설명하면 AI가 이를 즉시 편집 가능한 형태의 다이어그램으로 생성해 주는 기능이 포함되어 있습니다. * 개발 배경이 없는 고객 성공 매니저(CSM)가 Claude Code와 Cursor를 활용해 독자적으로 MVP를 완성했으며, 기능 확장보다는 실제 사용자가 느끼는 UX의 부드러움과 직관성을 최우선으로 정교화했습니다. ### 데이터 통합을 통한 Superhuman Listening * Salesforce, Gong, Zendesk 등 여러 채널에 흩어진 파편화되고 구조화되지 않은 고객 피드백을 하나의 '진실 공급원(Single Source of Truth)'으로 통합하는 프로젝트입니다. * LLM API를 호출하여 고객 지원 티켓에서 긴급도와 감정을 추출하고, 이를 Coda 기반의 제품 로드맵과 연동하여 특정 기능에 대한 고객의 니즈를 정량적으로 파악합니다. * 13명의 다학제 팀이 협업하여 데이터의 노이즈를 제거하고 유의미한 제품 피드백 신호만을 포착하는 모델링 검증에 집중했습니다. ### 포용적 언어 에이전트(Inclusive Language Agent) * 업무 소통 중 무의식적으로 발생할 수 있는 편향되거나 비포용적인 표현을 감지하고, 더 나은 대안을 제안하는 언어 교정 도구입니다. * 언어학자들이 주도하여 단어 선택이 기업 문화와 고객 신뢰에 미치는 영향을 분석하고, AI가 조직 내 신뢰와 기회의 평등을 강화할 수 있도록 설계했습니다. 이번 해커톤의 결과물들은 AI 도구가 단순한 보조를 넘어 개발 생산성을 비약적으로 높이고, 사용자 인터페이스(UI)를 키보드 중심으로 재편할 수 있음을 보여줍니다. 특히 비개발자가 AI의 도움을 받아 복잡한 기능을 직접 구현한 사례는, 향후 제품 개발 프로세스에서 직군 간 경계가 허물어지고 창의적인 아이디어의 실현 속도가 더욱 빨라질 것임을 시사합니다.

woowahan원문

장애 대응의 성패를 가르는 First Action — 우아한형제들의 장애 관리 라이프사이클 (새 탭에서 열림)

우아한형제들은 장애 대응의 성패가 장애 인지 속도보다 'First Action(초동 조치)'의 속도와 종류에 달려 있음을 확인하고, 이를 체계적으로 관리하기 위한 장애 관리 라이프사이클을 정립했습니다. 실제 장애 사례 분석 결과, 핫픽스보다 롤백 위주의 기계적 완화 조치가 장애 지속 시간을 절반 가까이 줄이는 효과가 있었으며, 이를 위해 전사 공통의 메트릭과 단계를 정의하여 운영 프로세스를 개선하고 있습니다. 결과적으로 장애 대응을 개인의 역량이 아닌 시스템과 데이터 기반의 프로세스로 전환하여 고객 경험의 악영향을 최소화하는 것을 목표로 합니다. ## First Action의 중요성과 롤백의 효율성 * 70여 건의 장애 사례를 분석한 결과, 첫 조치로 핫픽스를 선택한 경우가 롤백을 선택한 경우보다 장애 지속 시간이 약 2배 더 길게 나타났습니다. * 핫픽스는 원인 파악, 코드 수정, 빌드 및 배포 과정을 거쳐야 하므로 서비스 상태가 방치되는 시간이 길어지는 반면, 롤백은 즉각적인 상태 복구가 가능합니다. * 장애 대응에서 중요한 것은 완벽한 원인 분석보다 '얼마나 빨리 의미 있는 완화 조치를 실행했는가'이며, 이를 위해 롤백이나 스케일 조정 같은 사전 정의된 기계적 조치를 우선시해야 합니다. ## 장애 관리 라이프사이클의 표준화 * 팀마다 장애 인지 및 대응 시점의 기준이 달라 발생하는 혼선을 방지하기 위해 전사 공통의 언어와 구조인 '장애 관리 라이프사이클'을 정의했습니다. * 라이프사이클은 크게 '잠재적 장애 상태(이상 탐지)'와 '실제 장애 상태(6단계)'로 구성되어 총 7단계의 흐름을 가집니다. * 각 단계는 이상 탐지(Anomaly) → 인지 및 전파(Open) → 분석(Investigating) → 원인 확인 및 조치(Identified) → 모니터링(Monitoring) → 해소 확인(Resolved) → 이행 추적(Closure Time)으로 이어집니다. * 특히 '조치(Identified)' 단계에서는 원인 규명에 매몰되기보다 여러 완화 조치를 병렬로 검토하여 고객 영향을 줄이는 데 집중합니다. ## 대응 속도와 병목을 측정하는 핵심 메트릭 * **MTTD(평균 탐지 및 인지 시간):** 단순히 알람이 울린 시점이 아니라, 담당자가 이를 확인하고 'ACK' 등의 객관적 근거를 남긴 시점까지 포함하여 탐지 체계의 신뢰도를 측정합니다. * **MTTR(평균 복구 시간):** 장애 인지 후 서비스가 정상화될 때까지의 시간으로, 복구 작업의 복잡성과 의사결정 구조의 효율성을 나타냅니다. * **MTTFA(평균 초동 조치 시간):** 장애 발생 후 롤백이나 스케일 조정 같은 최초의 기계적 조치가 실행되기까지의 시간으로, 대응 절차의 단순화 수준을 평가합니다. * **MTTEA(평균 유효 조치 시간):** 조치 실행 후 실제로 서비스 지표가 개선되기 시작한 시점까지의 시간으로, 수행한 조치가 얼마나 실질적인 효과가 있었는지 검증합니다. ## 이행 추적과 지속적인 운영 개선 * 장애가 해소(Resolved)된 이후에도 근본 원인 분석(RCA)을 문서화하고 재발 방지 대책을 실행하는 'Closure Time' 단계를 두어 운영 개선의 선순환을 만듭니다. * 장애 보고서 작성과 후속 대책 이행 프로세스를 분리하여 관리함으로써, 장애가 단순 종료에 그치지 않고 실제 시스템 고도화로 이어지도록 관리합니다. * 메트릭 측정을 통해 도출된 데이터는 어디에서 지연이 발생하는지 파악하는 '속도계' 역할을 하며, 이를 기반으로 자동화 도입이나 표준 대응 절차(SOP)를 개선합니다. 장애 대응의 핵심은 장애 상황에서 발생할 수 있는 '판단의 시간'을 줄이는 것입니다. 이를 위해 복잡한 분석 없이도 즉시 실행 가능한 롤백 환경을 구축하고, MTTFA와 같은 지표를 통해 초동 조치 속도를 구조적으로 단축하는 노력이 필요합니다. 조직 전체가 동일한 라이프사이클과 메트릭을 공유할 때, 장애 대응은 개인의 판단이 아닌 데이터 기반의 체계적인 시스템으로 작동할 수 있습니다.

gitlab원문

Git 2.53.0 (새 탭에서 열림)

Git 2.53.0 버전은 대규모 저장소 관리 효율성을 높이고 데이터 무결성을 강화하는 데 초점을 맞춘 업데이트를 선보였습니다. 이번 릴리스의 핵심은 부분 클론(Partial Clone) 환경에서의 기하급수적 재패킹 지원과 히스토리 재작성 시 유효한 서명을 선별적으로 보존하는 기능의 도입입니다. 이를 통해 개발자와 운영자는 대규모 프로젝트를 관리할 때 성능 최적화와 보안 신뢰성을 동시에 확보할 수 있게 되었습니다. ## 부분 클론 환경의 기하급수적 재패킹(Geometric Repacking) 지원 * 전통적인 'all-into-one' 재패킹 방식은 모든 객체를 하나의 패크파일로 합쳐 조회 성능은 좋지만, 대규모 저장소에서는 작업 시간이 지나치게 길어지는 단점이 있습니다. * 이를 보완하는 '기하급수적 전략'은 패크파일들의 크기를 일정 비율(두 배 이상)로 유지하며 필요한 부분만 결합하지만, 그동안 부분 클론 환경의 '프로미서(promisor)' 패크파일을 제대로 처리하지 못하는 기술적 한계가 있었습니다. * Git 2.53에서는 기하급수적 재패킹 시 프로미서 패크파일을 별도로 구분하여 관리하도록 개선되었습니다. 이를 통해 부분 클론을 사용하는 저장소에서도 데이터 손상 위험 없이 효율적인 객체 관리가 가능해졌습니다. ## 유효한 커밋 서명만 보존하는 git-fast-import 개선 * 저장소 히스토리를 대량으로 재작성하는 `git-fast-import` 명령어에 `--signed-commits` 옵션의 새로운 모드인 `strip-if-invalid`가 추가되었습니다. * 기존에는 히스토리를 재작성할 때 서명을 일괄 삭제하거나 무효한 서명을 그대로 남겨둬야 했으나, 이제는 재작성으로 인해 내용이 바뀐 커밋의 서명만 골라 삭제할 수 있습니다. * 이 기능 덕분에 히스토리 재작성 과정에서 변경되지 않은 객체들의 유효한 서명은 안전하게 보존할 수 있어, 데이터의 무결성을 유지하는 데 큰 도움이 됩니다. ## 저장소 구조 분석 도구(git-repo-structure)의 데이터 수집 강화 * 저장소의 성능 특성을 파악하기 위해 도입된 `git repo structure` 명령어가 이제 도달 가능한 객체들의 상세 크기 정보를 제공합니다. * 커밋, 트리, 블롭, 태그 등 각 객체 유형별로 압축 해제 시 크기(Inflated size)와 실제 디스크 점유 크기(Disk size)를 모두 확인할 수 있습니다. * 이는 외부 도구 없이도 네이티브 명령어를 통해 대규모 저장소의 구조적 부하를 진단하고 하드웨어 자원 계획을 세우는 데 유용하게 활용됩니다. 대규모 저장소를 운영하거나 히스토리 정제 작업을 빈번하게 수행하는 팀이라면 이번 Git 2.53.0 업데이트를 적극 권장합니다. 특히 부분 클론을 활용한 CI/CD 환경에서 기하급수적 재패킹을 통해 성능을 최적화하고, 히스토리 수정 시에도 유효한 서명을 유지함으로써 보안 수준을 한 단계 높일 수 있습니다.

gitlab원문

GitLab Duo 에이전트 (새 탭에서 열림)

GitLab은 개발자가 코드를 작성하는 시간을 넘어 소프트웨어 개발 수명 주기(SDLC) 전반의 혁신 속도를 높이기 위해 'GitLab Duo Agent Platform'의 정식 출시(GA)를 발표했습니다. 이 플랫폼은 단순히 코드를 생성하는 수준을 넘어, 지능적인 오케스트레이션과 에이전트 기반 AI 자동화를 통해 코드 리뷰, 보안 점검, 파이프라인 최적화 등 기존의 병목 구간을 해결하는 데 초점을 맞춥니다. 결과적으로 팀은 인간과 AI의 유기적인 협업을 통해 복잡한 작업을 자율적으로 수행하고 전체 개발 프로세스를 가속화할 수 있습니다. ### AI 패러독스 해결과 통합된 협업 경험 * **AI 패러독스 극복:** 개발자가 코드 작성에 할애하는 시간은 전체의 약 20%에 불과하며, 나머지 80%의 업무에서 발생하는 병목 현상을 해결하기 위해 에이전트 중심의 접근 방식을 도입했습니다. * **통합 UX:** GitLab 웹 UI와 IDE(VS Code, JetBrains, Cursor, Windsurf 등) 전반에서 'Duo Agentic Chat'을 사용할 수 있으며, 이슈, 병합 요청(MR), 파이프라인 활동 내에서 AI와 실시간으로 소통할 수 있습니다. * **상황 맥락 인식:** 단순 응답을 넘어 이슈, 보안 결과물, 파이프라인 상태 등 전체 수명 주기의 맥락을 이해하고 다단계 추론을 통해 정확한 가이드를 제공합니다. ### 지능형 에이전틱 채팅의 주요 기능 * **분석 및 분석:** 웹 UI에서 이슈, 에픽, MR을 생성하거나 요약할 수 있으며, 복잡한 프로젝트 구조와 의존성을 파악하는 데 도움을 줍니다. * **코드 및 인프라 자동화:** 다양한 언어와 프레임워크에 걸쳐 코드, 구성 파일, IaC(Infrastructure-as-Code)를 생성하며 버그 수정 및 아키텍처 현대화를 지원합니다. * **CI/CD 및 보안:** 기존 파이프라인의 문제를 해결하거나 새로 구축하며, 보안 취약점을 설명하고 도달 가능성에 기반해 수정 우선순위를 제안합니다. ### 전문화된 에이전트 시스템 * **기본 에이전트(Foundational Agents):** GitLab 전문가들이 사전 구축한 에이전트로, 업무를 구조화하는 'Planner Agent'와 취약점 영향을 분석하는 'Security Analyst Agent'가 포함됩니다. * **커스텀 에이전트(Custom Agents):** 조직 고유의 표준과 가이드라인을 학습시킨 에이전트를 'AI Catalog'를 통해 관리하고 공유할 수 있습니다. * **외부 에이전트(External Agents):** Anthropic의 Claude Code나 OpenAI의 Codex CLI와 같은 외부 AI 도구를 GitLab 플랫폼 내에서 네이티브하게 연결하여 사용할 수 있습니다. ### 복잡한 업무를 처리하는 자동화 플로우(Flows) * **Issue to MR 플로우:** 잘 정의된 이슈로부터 구조화된 병합 요청(MR)을 자동으로 생성하여 개발 착수 시간을 단축합니다. * **CI/CD 전환 및 수정:** 타 시스템의 파이프라인 구성을 GitLab CI/CD로 현대화하거나, 실패한 파이프라인을 분석하여 변경 사항을 제안합니다. * **코드 리뷰 플로우:** 코드 변경 사항과 댓글을 분석하여 AI 기반의 심층적인 피드백을 제공함으로써 리뷰 프로세스를 간소화합니다. ### 사용 권한 및 새로운 과금 체계 * **GitLab Credits 도입:** 사용량 기반 과금 방식인 'GitLab Credit'을 통해 에이전트 플랫폼을 이용할 수 있습니다. * **구독별 혜택:** Premium 구독자에게는 사용자당 월 $12, Ultimate 구독자에게는 월 $24 상당의 크레딧이 추가 비용 없이 매월 제공됩니다. * **기존 고객 전환:** Duo Pro 또는 Enterprise 사용자는 기존 계약 잔여분을 크레딧으로 전환하여 즉시 에이전트 플랫폼으로 마이그레이션할 수 있습니다. GitLab Duo Agent Platform은 단순한 AI 비서를 넘어 실제 업무를 수행하는 '가상 팀원'을 제공합니다. 조직의 생산성을 높이기 위해서는 먼저 기본 제공되는 Planner 및 Security 에이전트를 활용해보고, 점진적으로 조직 특화된 커스텀 에이전트와 자동화 플로우를 구축하여 개발 전체 사이클의 효율을 극대화할 것을 권장합니다.

gitlab원문

에이전트 이해 (새 탭에서 열림)

GitLab Duo 에이전트 플랫폼은 소프트웨어 개발 수명 주기(SDLC) 전반에 걸쳐 협업할 수 있는 세 가지 유형의 AI 에이전트—기본(Foundational), 맞춤형(Custom), 외부(External)—를 제공합니다. 사용자는 별도의 설정 없이 바로 사용 가능한 기본 에이전트를 활용하거나, 특정 팀의 워크플로우에 맞춘 맞춤형 에이전트를 구축하고, 외부의 전문화된 AI 모델을 연동하여 비동기적인 자동화 워크플로우를 구현할 수 있습니다. 이러한 다각적인 접근 방식은 개발 팀이 코드 작성부터 보안 분석, 데이터 가공에 이르는 복잡한 작업을 효율적으로 관리할 수 있도록 지원합니다. ### 즉시 활용 가능한 기본 에이전트 GitLab에서 직접 구축하고 유지 관리하는 에이전트로, 별도의 설정 없이 IDE나 웹 UI의 'Agentic Chat'을 통해 즉시 사용할 수 있습니다. * **GitLab Duo:** 일반적인 개발 협업을 위한 기본 에이전트로, 코드 생성 및 수정, 머지 리퀘스트(MR) 생성, 이슈 트리이징 등 전반적인 SDLC 맥락 내에서의 작업을 수행합니다. * **Planner Agent:** 제품 기획 단계에서 에픽(Epic)을 세분화하고 구조화된 이슈를 생성하여 관리자가 기획 생산성을 높일 수 있도록 돕습니다. * **Security Analyst Agent:** 취약점 스캔 결과를 분석하여 오탐을 식별하고, 실제 위험도에 따라 보안 이슈의 우선순위를 정렬합니다. * **Data Analyst Agent:** GitLab 쿼리 언어(GLQL)를 사용하여 플랫폼 전체의 데이터를 조회하고 시각화하며, 이슈 해결 시간 트렌드나 팀별 작업량 등의 인사이트를 제공합니다. ### 팀 표준에 최적화된 맞춤형 에이전트 프로젝트나 그룹 설정 내에서 시스템 프롬프트를 정의하여 팀 고유의 워크플로우와 기준에 최적화된 에이전트를 생성할 수 있습니다. * **시스템 프롬프트 설정:** 에이전트의 전문 분야와 행동 방식을 정의하는 핵심 요소입니다. 예를 들어 디버깅 에이전트의 경우, CI/CD 로그와 런타임 데이터를 상관 분석하도록 역할을 부여할 수 있습니다. * **가시성 제어:** 프로젝트 멤버만 사용할 수 있는 'Private' 모드와 AI 카탈로그에 노출되어 다른 프로젝트에서도 활성화할 수 있는 'Public' 모드 중 선택이 가능합니다. * **주요 활용 사례:** 특정 프로그래밍 언어나 사내 규정에 맞춘 문서화 지원, 신규 팀원을 위한 온보딩 가이드, 현지 언어 기반의 고객 지원 서비스 등이 있습니다. ### 외부 AI 연동을 통한 비동기 자동화 플랫폼 외부에서 구동되는 에이전트로, 이슈나 머지 리퀘스트에서 '@mentions'를 통해 트리거되어 배경에서 작업을 수행합니다. * **전문 AI 모델 활용:** Anthropic의 'Claude Code'(코드 생성 및 분석)나 OpenAI의 'Codex'(작무 위임 및 코드 보조)와 같은 특화된 외부 LLM 기능을 GitLab 내로 가져올 수 있습니다. * **이벤트 기반 자동화:** 사용자와 실시간 대화하는 방식이 아니라, 특정 이벤트가 발생했을 때 백그라운드에서 실행되므로 복잡한 코드 리뷰나 분석 작업에 적합합니다. * **통합 자격 증명 관리:** GitLab은 사용자가 직접 API 키를 관리하거나 순환시킬 필요가 없도록 GitLab 관리형 자격 증명 방식을 지원하여 보안성을 높였습니다. ### 효과적인 에이전트 운용을 위한 제언 에이전트를 도입할 때는 처음부터 모든 권한을 부여하기보다 읽기 전용 권한으로 시작하여 충분한 테스트를 거치는 것이 중요합니다. 특히 맞춤형 에이전트를 제작할 때는 시스템 프롬프트에 역할과 책임을 구체적으로 명시하고, 예상되는 출력 예시를 포함하여 답변의 일관성을 확보해야 합니다. 이를 통해 반복적인 수동 작업을 줄이고 창의적인 개발 업무에 더 집중할 수 있는 환경을 구축할 수 있습니다.

gitlab원문

GitLab Duo Agentic Chat 시작하기 (새 탭에서 열림)

GitLab Duo Agentic Chat은 단순한 질의응답을 넘어 소프트웨어 개발 수명 주기(SDLC) 전반에서 능동적으로 작업을 수행하는 자율형 AI 협업 파트너입니다. 이 플랫폼은 코드 수정, 병합 요청(MR) 생성, 보안 취약점 해결 등 실질적인 액션을 실행하며, 프로젝트의 컨텍스트를 완벽히 이해하여 개발자의 생산성을 극대화합니다. 사용자는 웹 UI와 IDE 내에서 최적화된 모델과 전용 에이전트를 선택함으로써 복잡한 워크플로우를 자동화하고 고품질의 소프트웨어를 빠르게 배포할 수 있습니다. **자율적인 AI 협업 파트너의 핵심 역량** * **능동적 작업 수행:** 질문에 답하는 수준을 넘어 파일을 생성 및 수정하고, 이슈를 트리아지(Triage)하거나 CI/CD 파이프라인의 오류를 직접 해결합니다. * **맥락 인식 능력:** 대화 기록은 물론 프로젝트 아키텍처, 코드베이스, 위키, GitLab 문서 및 보안 스캔 결과까지 광범위한 컨텍스트를 활용합니다. * **확장성 및 통합:** Model Context Protocol(MCP)을 통해 외부 서비스와 통합할 수 있으며, 목적에 따라 전문화된 멀티 에이전트 시스템을 지원합니다. **작업별 최적화를 위한 모델 및 에이전트 선택** * **유연한 모델 구성:** 대규모 언어 모델(LLM)마다 강점이 다르므로 작업 요구사항에 따라 적절한 모델을 선택할 수 있으며, 이는 그룹 또는 사용자 단위로 설정 가능합니다. * **전용 에이전트 활용:** 제품 관리를 위한 'Planner Agent', 보안 분석을 위한 'Security Analyst Agent' 등 특정 도메인에 특화된 에이전트로 전환하여 전문적인 도움을 받을 수 있습니다. * **간편한 접근성:** 웹 UI의 사이드바나 IDE 내의 드롭다운 메뉴를 통해 작업 흐름을 끊지 않고 에이전트와 모델을 즉시 변경할 수 있습니다. **실무 생산성 향상을 위한 주요 활용 사례** * **이슈 및 보안 관리:** 특정 라벨이 지정된 이슈 목록 추출, 에픽(Epic)의 세부 작업 분할, 보안 취약점 분석 및 이를 해결하기 위한 자동 수정 MR 생성이 가능합니다. * **코드 이해 및 온보딩:** 복잡한 코드베이스의 아키텍처 개요 파악, 특정 함수의 호출 위치 검색, 신규 팀원을 위한 로컬 개발 환경 설정 안내 등을 수행합니다. * **디버깅 및 품질 개선:** 실패한 파이프라인 로그를 분석해 원인을 진단하고, 기존 코드를 SOLID 원칙에 맞춰 리팩토링하거나 최신 프로그래밍 언어 버전으로 변환하는 작업을 지원합니다. * **기능 구현 및 테스트:** REST API 엔드포인트 생성, 유닛 테스트 코드 자동 생성, UI 구성 요소의 접근성 검토 등 개발 전 과정을 보조합니다. GitLab Duo Agentic Chat의 잠재력을 최대한 끌어내기 위해서는 작업의 성격에 맞는 전용 에이전트를 선택하는 것이 가장 중요합니다. 보안 분석이나 기획 단계 등 정밀한 컨텍스트가 필요한 작업일수록 일반 채팅보다는 특화된 에이전트를 활용할 것을 권장하며, 향후 출시될 CLI 지원을 통해 터미널 환경에서도 동일한 AI 협업 경험을 확장해 나갈 수 있습니다.

gitlab원문

GitLab Duo Agent Platform을 사용자 정의 (새 탭에서 열림)

GitLab Duo Agent Platform은 개발 팀의 특정 워크플로우와 요구사항에 맞춰 AI 에이전트의 행동을 세밀하게 조정할 수 있는 강력한 사용자 정의 기능을 제공합니다. 개발자는 사용자, 워크스페이스, 프로젝트 등 다양한 수준에서 규칙을 설정하여 일관된 코딩 표준을 유지하고 자동화된 작업의 정확도를 높일 수 있습니다. 이를 통해 팀의 고유한 개발 환경에 최적화된 지능형 에이전트 환경을 구축하고 생산성을 극대화할 수 있습니다. ### 채팅 규칙을 통한 에이전트 행동 제어 * **다층적 설정 구조**: 규칙은 모든 프로젝트에 적용되는 '사용자 수준'과 특정 프로젝트에만 적용되는 '워크스페이스 수준'으로 나뉩니다. 워크스페이스 설정은 사용자 설정을 덮어쓰므로 프로젝트별 유연한 대응이 가능합니다. * **구체적인 지침 작성**: `chat-rules.md` 파일을 통해 "JSDoc 주석 필수 포함", "async/await 사용", "문자열에 홑따옴표 사용"과 같이 AI가 즉각적으로 이행할 수 있는 명확한 액션 위주의 규칙을 정의합니다. * **워크플로우 통합**: 설정된 규칙은 에이전트가 코드를 제안하거나 설명을 제공할 때 팀의 스타일 가이드를 준수하도록 강제하며, 코드 리뷰나 테스트 실행 방식에 일관성을 부여합니다. ### AGENTS.md를 활용한 표준화된 커스터마이징 * **업계 표준 준수**: `AGENTS.md`는 업계 표준 형식을 따르는 설정 파일로, GitLab 내부 에이전트뿐만 아니라 Claude Code와 같은 외부 AI 도구와도 호환되어 범용적인 지침으로 활용할 수 있습니다. * **상세한 페르소나 및 보안 정의**: 에이전트의 말투와 성격부터 프로젝트 아키텍처 패턴, 보안 지침(API 키 하드코딩 금지, 입력값 검증 등)까지 폭넓은 영역을 제어합니다. * **모노레포 지원**: 프로젝트 루트 외에도 하위 디렉토리에 개별 `AGENTS.md`를 배치할 수 있어, 모노레포 환경 내의 서비스나 모듈별로 서로 다른 기술 스택과 규칙을 적용할 수 있습니다. ### 사용자 정의 구현을 위한 최적의 실천법 * **구체성과 우선순위**: 모호한 설명 대신 구체적인 예시를 제공하고, 가장 중요한 규칙을 상단에 배치하여 AI의 이해도를 높여야 합니다. * **팀 협업 및 승인 프로세스**: `Code Owners` 기능을 활용해 규칙 파일의 변경 사항을 관리함으로써 팀의 합의된 표준이 유지되도록 관리하는 것이 권장됩니다. * **기술적 요구사항**: 해당 커스터마이징 기능을 활용하기 위해서는 GitLab 18.8 이상 버전이 필요하며, IDE 사용자의 경우 VS Code용 GitLab Workflow 확장 프로그램 6.60 이상 버전이 설치되어 있어야 합니다. 팀의 코딩 컨벤션과 보안 정책이 반영된 `AGENTS.md`를 프로젝트 루트에 먼저 구성해 보시기 바랍니다. 이를 통해 AI가 생성하는 코드의 품질을 별도의 수정 없이도 즉시 실무에 투입 가능한 수준으로 끌어올릴 수 있습니다.

gitlab원문

AI 카탈로그: 에이 (새 탭에서 열림)

GitLab의 AI 카탈로그는 조직 내에서 AI 에이전트와 워크플로우를 중앙 집중식으로 관리하고 공유할 수 있는 핵심 저장소입니다. 사용자는 이를 통해 사전 구축된 솔루션을 검색하여 즉시 적용하거나, 팀의 특정 요구사항에 맞춘 맞춤형 에이전트 및 플로우를 생성하여 개발 협업 효율성을 극대화할 수 있습니다. 결과적으로 개발 생명주기 전반에 걸쳐 일관되고 재사용 가능한 AI 자동화 환경을 구축하는 것을 목표로 합니다. ## AI 카탈로그의 구성과 활용 방식 * **중앙 저장소 역할:** 조직 내에서 생성된 모든 AI 자산(에이전트 및 플로우)을 한곳에서 탐색하고, 복제하여 커스터마이징하거나 프로젝트에 즉시 활성화할 수 있습니다. * **에이전트(Agents):** 특정 태스크나 전문 분야(예: 디버깅, 코드 리뷰)에 특화된 대화형 AI 도구로, 시스템 프롬프트와 도구 접근 권한을 설정하여 동작을 정의합니다. * **플로우(Flows):** 여러 단계로 구성된 복잡한 자동화 프로세스로, YAML 구조를 통해 여러 에이전트를 조율하고 반복 가능한 멀티 스텝 워크플로우를 실행합니다. ## 맞춤형 자산 생성 및 가시성 관리 * **세밀한 권한 설정:** 에이전트 생성 시 코드, 이슈, 머지 리퀘스트(MR) 등에 대한 도구 접근 권한을 제한적으로 부여하여 보안성을 높일 수 있습니다. * **비공개(Private) 모드:** 특정 프로젝트 멤버나 소유자만 접근할 수 있는 설정으로, 민감한 워크플로우를 개발하거나 초기 실험 단계에서 유용합니다. * **공개(Public) 모드:** 인스턴스 내 모든 사용자가 검색하고 자신의 프로젝트에 활성화할 수 있도록 공유하여 조직 전체의 생산성을 높입니다. * **공유 모범 사례:** `security-code-review`와 같이 명확한 명명 규칙을 사용하고, 상세한 사용 사례와 전제 조건을 문서화하여 품질을 유지할 것을 권장합니다. ## 안정성을 보장하는 버전 관리 시스템 * **자동 의미론적 버전 관리(Semantic Versioning):** 시스템 프롬프트나 구성이 변경될 때마다 GitLab이 자동으로 버전을 업데이트(예: 1.0.0에서 1.1.0으로)하며, 각 버전은 불변(Immutable) 상태로 유지됩니다. * **버전 고정(Version Pinning):** 하위 프로젝트에서 에이전트를 사용할 때 특정 버전으로 고정되어, 카탈로그의 원본이 업데이트되더라도 기존 워크플로우가 예기치 않게 변경되는 것을 방지합니다. * **수동 업데이트 방식:** 새로운 기능이나 개선 사항을 적용하려면 사용자가 직접 업데이트 버튼을 클릭하고 변경 사항을 검토한 후 최신 버전으로 갱신하는 '옵트인(Opt-in)' 방식을 채택합니다. 효과적인 AI 도입을 위해 처음에는 비공개 모드로 에이전트를 생성하여 충분히 테스트한 후, 검증된 자산에 한해 문서화와 함께 공개 모드로 전환하여 조직 전체에 배포하는 전략을 추천합니다.

datadog원문

런타임 보안을 위한 eBPF 강화: Datadog Workload Protection의 교훈 (새 탭에서 열림)

Datadog은 지난 5년간 수천 개의 환경에서 eBPF 기반의 런타임 보안 제품인 'Workload Protection'을 운영하며 얻은 실전 경험과 교훈을 공유합니다. eBPF는 기존 커널 모듈이나 감사(Audit) 프레임워크보다 안전하고 효율적이지만, 대규모 운영 환경에서는 커널 호환성이나 성능 오버헤드 같은 복잡한 문제들이 발생합니다. 결론적으로 eBPF는 강력한 도구이나, 실제 운영 환경에서 신뢰성을 확보하기 위해서는 단순한 구현을 넘어 정교한 모니터링과 배포 전략이 필수적입니다. **기존 커널 모니터링 기술의 한계와 평가** * **커널 모듈(LKM):** 시스템의 거의 모든 부분을 제어할 수 있는 강력한 권한을 가지지만, 코드 오류가 커널 전체의 크래시로 이어질 수 있어 안정성 측면에서 위험부담이 큽니다. * **전통적인 트레이싱 인터페이스:** inotify, fanotify, kprobes 등은 시스템 내부를 들여다볼 수 있게 해주지만, 전체적인 시스템 활동을 파악하려면 여러 도구를 복잡하게 조합해야 하는 파편화 문제가 있습니다. * **ptrace 및 seccomp-bpf:** 사용자 공간의 프로세스를 추적하는 데 유용하지만, 모든 프로세스 액세스를 감시하기에는 성능 오버헤드가 발생하며 커널 수준의 가시성이 부족합니다. * **Linux Audit 프레임워크:** 가장 널리 사용되는 보안 솔루션이지만, 대량의 이벤트가 발생할 때 시스템 성능에 상당한 영향을 미치는 단점이 있습니다. **보안 제품에 eBPF를 선택한 핵심 이유** * **검증된 안전성:** eBPF 프로그램은 로드되기 전 커널 검증기(Verifier)를 통해 무한 루프나 잘못된 메모리 접근 여부를 정적으로 분석하므로 커널 모듈보다 훨씬 안전합니다. * **통합 가시성:** 프로세스 실행, 파일 시스템 접근, 네트워크 활동 등을 단일 메커니즘으로 모두 추적할 수 있어 시스템 전반에 대한 통합적인 가시성을 제공합니다. * **컨테이너 최적화:** 네임스페이스(Namespace)와 cgroup에 대한 이해도가 높아 컨테이너 환경에서 일관된 모니터링이 가능하며, 특히 CO-RE(Compile Once – Run Everywhere) 도입으로 배포가 쉬워졌습니다. * **강력한 제어 권한:** BPF LSM 기능을 통해 단순한 모니터링을 넘어 시스템 호출을 차단하는 등의 강제 접근 제어(Mandatory Access Control)를 수행할 수 있습니다. **대규모 생산 환경에서의 운영 교훈** * **커널 호환성 유지:** 특정 커널 버전에서는 작동하지만 다른 버전에서는 실패하는 경우를 방지하기 위해 프로그램 로드 및 부착(Attach) 과정을 정교하게 관리해야 합니다. * **성능 비용 관리:** eBPF가 효율적이긴 하지만, 수많은 훅(Hook)이 동시에 실행될 때 발생하는 성능 비용을 지속적으로 측정하고 제어하는 메커니즘이 필요합니다. * **풍부한 데이터 처리:** 캡처된 원시 데이터를 단순히 전달하는 것이 아니라, 보안 분석에 유용하도록 문맥(Context)을 보강하고 정확하게 강화하는 로직이 중요합니다. * **안전한 변경 배포:** 수천 대의 호스트에 영향을 줄 수 있으므로, eBPF 프로그램의 변경 사항을 안전하게 롤아웃하고 문제 발생 시 즉시 감지할 수 있는 시스템을 갖춰야 합니다. **실용적인 제언** eBPF를 도입할 때 "안전하고 성능 저하가 없다"는 마케팅적 수사에만 의존해서는 안 됩니다. 모니터링하려는 워크로드의 특성에 따라 성능 임팩트가 달라질 수 있으므로, 자체적인 성능 모니터링 지표를 구축하고 커널 버전별로 철저한 회귀 테스트를 거치는 것을 추천합니다.

toss원문

레거시 정산 개편기: 신규 시스템 투입 여정부터 대규모 배치 운영 노하우까지 (새 탭에서 열림)

토스페이먼츠는 20년 동안 운영되어 온 레거시 정산 시스템의 한계를 극복하기 위해 대대적인 개편을 진행했습니다. 거대하고 복잡한 단일 쿼리 기반의 로직을 객체지향적인 코드로 분산하고, 데이터 모델링을 집계 중심에서 거래 단위로 전환하여 정산의 정확성과 추적 가능성을 확보했습니다. 이를 통해 폭발적인 거래량 증가에도 대응할 수 있는 고성능·고효율의 현대적인 정산 플랫폼을 구축하는 데 성공했습니다. ### 거대 쿼리 중심 로직의 분할 정복 * **문제점:** 수많은 JOIN과 중첩된 DECODE/CASE WHEN 문으로 이루어진 거대한 공통 쿼리가 모든 비즈니스 로직을 처리하고 있어 유지보수와 테스트가 매우 어려웠습니다. * **도메인 및 기능 분리:** 거대 쿼리를 분석하여 도메인별, 세부 기능별로 카테고리를 나누는 분할 정복 방식을 적용했습니다. * **비즈니스 규칙의 가시화:** 복잡한 SQL 로직을 Kotlin 기반의 명확한 객체와 메서드로 재구성하여, 코드상에서 비즈니스 규칙이 명확히 드러나도록 개선했습니다. * **점진적 전환:** 기능을 단위별로 분할한 덕분에 전체 시스템 개편 전이라도 특정 기능부터 우선적으로 새 시스템으로 전환하며 실질적인 가치를 빠르게 창출했습니다. ### 데이터 모델링 개선을 통한 추적 가능성 확보 * **최소 단위 데이터 관리:** 기존의 집계(Sum) 기반 저장 방식에서 벗어나 모든 거래를 1:1 단위로 관리함으로써, 오류 발생 시 원인 추적을 용이하게 하고 데이터 재활용성을 높였습니다. * **설정 정보 스냅샷 도입:** 계산 결과와 함께 당시의 계약 조건(수수료율 등)을 스냅샷 형태로 저장하여, 시간이 지나도 과거의 정산 맥락을 완벽히 복원할 수 있게 했습니다. * **상태 기반 재처리:** 거래별로 독립적인 상태를 기록하는 설계를 통해, 장애 발생 시 전체 재처리가 아닌 실패한 건만 선별적으로 복구할 수 있도록 효율화했습니다. ### 고해상도 데이터 대응을 위한 DB 최적화 * **파티셔닝 및 인덱스 전략:** 정산일자 기준의 Range 파티셔닝과 복합 인덱스를 활용해 데이터량 증가에 따른 조회 성능 저하를 방지했습니다. * **조회 전용 테이블 및 데이터 플랫폼 활용:** 실시간 조회가 필요한 핵심 기능은 전용 테이블로 대응하고, 복잡한 어드민 통계는 고성능 데이터 플랫폼에 위임하여 시스템 부하를 분산했습니다. ### 배치 시스템 성능 극대화 * **I/O 횟수 최소화:** 배치 실행 시점에 가맹점 설정 정보를 전역 캐시에 로드하여 반복적인 DB 조회를 제거했습니다. * **Bulk 조회 및 처리:** Spring Batch의 `ItemProcessor`에서 개별 건별로 I/O가 발생하지 않도록 Wrapper 구조를 도입하여 묶음 단위(Bulk)로 조회하도록 개선했습니다. * **멀티 스레드 활용:** `AsyncItemProcessor`와 `AsyncItemWriter`를 도입하여 단일 스레드 제약을 극복하고 처리 속도를 비약적으로 향상시켰습니다. 이번 개편은 단순히 기술적인 스택을 바꾸는 것을 넘어, 레거시 시스템에 숨겨진 복잡한 비즈니스 맥락을 명확한 도메인 모델로 추출해냈다는 점에서 큰 의미가 있습니다. 대규모 트래픽과 복잡한 정산 규칙을 다루는 시스템이라면, 데이터를 최소 단위로 관리하고 I/O 최적화와 캐싱을 적극적으로 활용하는 아키텍처를 검토해볼 것을 추천합니다.

toss원문

레거시 결제 원장을 확장 가능한 시스템으로 (새 탭에서 열림)

토스페이먼츠는 20년 된 레거시 결제 원장의 구조적 한계와 도메인 간 강한 결합을 해결하기 위해 MySQL 기반의 신규 원장 시스템을 구축했습니다. 데이터 불변성을 보장하는 INSERT-only 원칙과 이벤트 기반 아키텍처를 도입하여 복합 결제 지원 등 비즈니스 확장성을 확보했습니다. 이 과정에서 발생한 데이터 불일치와 타임아웃 문제를 해결하며 시스템의 자가 회복 능력을 강화하고 안정적인 운영 환경을 마련했습니다. ### 레거시 원장 시스템의 한계와 과제 - **데이터 구조의 불일치:** 결제수단별로 테이블 구조가 다르고, 동일한 성격의 데이터가 서로 다른 테이블에 저장되어 유지보수와 온보딩에 큰 비용이 발생했습니다. - **도메인 간 강한 결합:** 결제, 정산, 회계 등 여러 서비스가 하나의 원장 테이블과 컬럼을 공유하여, 작은 기능 수정 시에도 전사적인 영향도 분석이 필요했습니다. - **구조적 확장성 부족:** 결제와 결제수단이 1:1 관계로 묶여 있어, 더치페이나 복합 결제(카드+포인트)와 같은 현대적인 결제 시나리오를 지원할 수 없었습니다. ### 신규 원장 설계의 3가지 전략 - **데이터 불변성과 일관성:** 모든 승인 내역을 공통 테이블(`approve`)에 저장하고, 수정 대신 INSERT-only 방식을 채택하여 데이터의 정합성을 높이고 데드락을 방지했습니다. - **이벤트 기반의 도메인 분리:** 각 도메인이 직접 DB를 조회하는 대신 Kafka 이벤트를 구독하여 데이터를 처리하게 함으로써 도메인 간 의존성을 제거했습니다. - **결제와 승인 개념의 분리:** '결제'는 주문의 상태를, '승인'은 실제 결제수단의 실행을 의미하도록 분리하여 하나의 결제에 여러 승인 수단이 연결될 수 있는 유연한 구조를 만들었습니다. ### 무중단 마이그레이션 및 정합성 검증 - **비동기 점진적 적재:** 실서비스 장애를 방지하기 위해 기존 원장에 먼저 저장한 후, 신규 원장에는 별도의 ThreadPool을 통한 비동기 방식으로 데이터를 적재했습니다. - **검증 배치 운영:** 비동기 적재 중 발생할 수 있는 누락을 방지하기 위해, 매 5분마다 Read-Only DB를 기반으로 기존 원장과 신규 원장의 데이터를 비교하고 보정하는 배치를 실행했습니다. - **고성능 이관 작업:** 수억 건의 데이터 이관을 위해 Bulk Insert를 도입하고, 네트워크 지연 최소화를 위해 마이그레이션 서버를 DB와 동일한 가용 영역(AZ)에 배치했습니다. ### 운영 중 장애 대응과 시스템 고도화 - **쿼리 최적화:** 옵티마이저의 판단 오류로 발생한 풀 스캔(Full Scan) 문제를 인덱스 힌트(Index Hint) 추가와 롤백 시스템을 통해 빠르게 해결했습니다. - **타임아웃 및 정합성 관리:** MSA 구조에서 서버 간 타임아웃 설정을 일치시키고, 외부 원천사와의 상태 불일치를 해결하기 위한 망취소(Network Cancellation) 로직을 강화했습니다. - **이벤트 처리의 신뢰성:** 아웃박스(Outbox) 패턴과 로그 기반 복구를 통해 이벤트 누락을 방지하고, 헤더에 멱등키를 포함해 중복 이벤트 처리 문제를 해결했습니다. 신규 시스템으로의 전환은 단순한 DB 교체가 아니라 시스템의 지속 가능성을 확보하는 과정입니다. 초기 설계의 완벽함보다 중요한 것은 운영 중 발생하는 예외 상황에 시스템이 스스로 대응하고 회복할 수 있는 '자가 회복 구조'를 갖추는 것이며, 이를 위해 데이터 보정 배치와 로깅 시스템 같은 안전장치를 반드시 고려해야 합니다.

datadog원문

eBPF를 활용한 실시간 파일 모니터링 확장: 분당 수십억 개의 커널 이벤트를 필터링하는 방법 (새 탭에서 열림)

Datadog은 현대적인 대규모 인프라에서 신뢰할 수 있는 파일 무결성 모니터링(FIM) 시스템을 구축하기 위해 기존의 주기적 스캔이나 `auditd` 방식 대신 eBPF 기술을 채택했습니다. 이들은 커널 수준에서 실시간 가시성을 확보함으로써 프로세스 및 컨테이너 맥락이 포함된 상세한 보안 데이터를 수집하는 데 성공했습니다. 특히 초당 수십억 건에 달하는 방대한 이벤트를 처리하기 위해, 데이터의 94%를 커널 내부에서 미리 걸러내고 에이전트 단위에서 로컬 규칙 검사를 수행하는 2단계 필터링 아키텍처를 통해 시스템 성능 저하 없이 보안 가시성을 극대화했습니다. ### 기존 모니터링 방식의 기술적 한계 * **주기적 파일 시스템 스캔:** 스캔 사이에 발생했다가 복구된 공격자의 변경 사항을 감지할 수 없으며, 파일이 '어떻게', '왜', '누구에 의해' 변경되었는지에 대한 맥락 정보가 부족합니다. * **inotify:** 파일 이벤트와 프로세스 또는 컨테이너 간의 상관관계를 파악하는 데 필요한 시스템 레벨의 컨텍스트를 제공하지 못합니다. * **auditd:** 시스템 부하가 높은 환경에서 과도한 오버헤드가 발생하며, 대규모 환경에서의 확장성 문제가 고질적인 단점으로 지적됩니다. ### eBPF를 활용한 심층 가시성 확보 * **실시간 커널 모니터링:** eBPF를 통해 커널에서 직접 실시간 파일 활동을 관찰함으로써, 파일 변경 사실뿐만 아니라 이를 유발한 프로세스와 컨테이너 정보까지 포함된 풍부한 보안 데이터를 확보했습니다. * **데이터 폭증의 난제:** 모든 인프라에서 발생하는 파일 관련 이벤트가 분당 100억 건을 넘어서며, 이벤트당 약 5KB인 데이터를 모두 전송할 경우 초당 수 테라바이트의 네트워크 트래픽이 발생하는 심각한 규모의 문제에 직면했습니다. ### 에이전트 기반의 로컬 규칙 필터링 * **에지(Edge)에서의 결정:** 수집된 모든 데이터를 백엔드로 전송하는 대신, 각 호스트의 에이전트에서 로컬 보안 규칙에 따라 데이터를 1차 검증합니다. * **트래픽 절감:** 로컬 필터링을 통해 백엔드로 전송되는 데이터를 분당 100억 건에서 약 100만 건 수준으로 획기적으로 줄여, 네트워크 비용과 시스템 자원 소모를 최소화했습니다. ### 커널 내부 프리필터링(In-kernel prefiltering)을 통한 최적화 * **링 버퍼(Ring Buffer) 드롭 방지:** 에이전트가 처리할 수 있는 속도보다 더 빠르게 이벤트가 생성될 경우 데이터 유실이 발생하는데, 이를 막기 위해 처리 로직의 상당 부분을 커널 내 eBPF 프로그램으로 이동시켰습니다. * **2단계 평가 모델:** * **커널 내부 필터링:** 'Approvers'와 'Discarders' 개념을 도입하여, 무관한 시스템 호출(syscall)의 94%를 유저 공간으로 넘기기 전에 커널 단계에서 즉시 폐기합니다. * **유저 공간 평가:** 커널을 통과한 선별된 이벤트에 대해서만 유저 공간에서 상세한 맥락 정보를 결합하고 복잡한 상관관계 분석을 수행합니다. ### 실용적인 제언 대규모 시스템에서 FIM을 구현할 때는 단순한 데이터 수집보다 '불필요한 데이터의 조기 차단'이 성능의 핵심입니다. eBPF를 활용하되 모든 로직을 커널에 넣기보다는, 커널 내에서의 가벼운 필터링과 유저 공간에서의 심층 분석을 결합한 하이브리드 접근 방식을 취하는 것이 확장성과 보안성을 모두 잡는 전략이 될 수 있습니다.

datadog원문

복제의 재정의: 저지연 멀티테넌트 데이터 복제 플랫폼 구축기 (새 탭에서 열림)

데이터독(Datadog)은 모놀리식 포스트그레스(Postgres) 데이터베이스의 확장성 한계와 수동 데이터 파이프라인의 복잡성을 해결하기 위해 자동화된 관리형 데이터 복제 플랫폼을 구축했습니다. 이 플랫폼은 체계적인 변경 데이터 캡처(CDC)와 비동기 복제 방식을 통해 데이터 일관성을 유지하면서도 시스템 성능을 비약적으로 향상시켰습니다. 결과적으로 엔지니어링 팀은 인프라 관리의 부담에서 벗어나 안정적이고 낮은 지연 시간으로 대규모 데이터를 다양한 서비스 간에 자유롭게 이동시킬 수 있게 되었습니다. **포스트그레스의 확장성 한계와 데이터 재건축** * 서비스 초기에는 포스트그레스의 ACID 보장과 편의성이 유용했으나, 데이터량이 증가하면서 복잡한 조인 및 집계 쿼리의 응답 시간이 수 밀리초에서 수 초 단위로 급격히 악화되었습니다. * 특정 조직의 메트릭 요약 페이지에서 수십만 개의 행을 조인할 때 P90 지연 시간이 7초에 달했으며, 인덱스 팽창(Bloat)과 VACUUM 작업 부하로 인한 I/O 병목 현상이 발생했습니다. * OLTP 부하와 검색/필터링 부하를 분리하기 위해, 복제 과정에서 데이터를 비정규화(Denormalization)하여 전용 검색 플랫폼으로 전송하는 아키텍처로 전환했습니다. * 이러한 최적화를 통해 페이지 로드 시간을 최대 97% 단축(30초 → 1초)하고, 복제 지연 시간을 500ms 수준으로 유지하는 성과를 거두었습니다. **Temporal을 활용한 복제 파이프라인 프로비저닝 자동화** * Debezium, Kafka, Elasticsearch 등 다양한 기술 스택이 결합된 복제 파이프라인을 수동으로 구축하는 과정은 운영상 큰 부담이 되었습니다. * 포스트그레스의 `wal_level` 설정, 논리적 복제 슬롯 생성, 사용자 권한 관리, Kafka 토픽 매핑 등 반복적이고 오류가 잦은 단계를 Temporal 워크플로우를 통해 모듈화했습니다. * WAL(Write-Ahead Log) 보존 문제를 해결하기 위한 하트비트 테이블 설정부터 싱크 커넥터 배포까지의 모든 과정을 오케스트레이션하여 운영 탄력성을 높였습니다. * 자동화된 플랫폼 덕분에 개발자들은 인프라 설정 대신 혁신에 집중할 수 있게 되었으며, 멀티 테넌트 환경에서도 일관된 파이프라인 관리가 가능해졌습니다. **성능과 확장성을 위한 비동기 복제 전략** * 강한 일관성을 보장하는 동기 복제 대신, 대규모 고처리량 환경에 적합한 비동기 복제 방식을 채택했습니다. * 동기 복제는 네트워크 지연이나 복제본의 응답 상태가 기본 시스템의 성능에 직접적인 영향을 주지만, 비동기 방식은 애플리케이션의 쓰기 성능을 네트워크 지연으로부터 격리합니다. * 장애 발생 시 미세한 데이터 지연이 발생할 수 있는 트레이드오프가 있으나, 이는 확장성과 가용성을 우선시하는 데이터독의 분산 환경에 더 적합한 선택이었습니다. **결론 및 권장사항** 대규모 시스템에서 데이터베이스의 성능 저하를 방지하려면 OLTP와 읽기 전용 검색 워크로드를 분리하는 것이 필수적입니다. 이때 발생하는 복잡한 데이터 이동 문제는 Temporal과 같은 워크플로우 엔진으로 자동화하여 운영 비용을 낮추고, 비동기 복제 모델을 통해 시스템의 전체적인 처리량과 가용성을 확보하는 전략이 권장됩니다.