데이터베이스 설계

191 개의 포스트

line원문

LINE 서비스의 대규모 광고 데이터를 처리하기 위한 Spark on Kubernetes 적용기 (새 탭에서 열림)

LINE 광고 플랫폼(LINE Ads) 팀은 급격히 증가하는 광고 데이터와 연산량을 효율적으로 처리하기 위해 기존 Hadoop 기반의 YARN 환경을 Spark on Kubernetes로 전환했습니다. 기존 구조의 자원 경합 및 인프라 종속성 문제를 해결함으로써, 컴퓨팅과 스토리지를 분리하고 컨테이너 기반의 유연한 운영 환경을 구축하는 데 성공했습니다. 이를 통해 데이터 파이프라인의 확장성을 확보하고 최신 기술 스택을 자유롭게 활용할 수 있는 인프라 독립성을 달성했습니다. **기존 Spark on YARN의 구조적 한계** * **자원 경합 발생:** HDFS 스토리지와 컴퓨팅 자원이 단일 노드에 결합된 구조여서, 대규모 연산 시 HDFS 서비스와 Spark 작업 간의 리소스 간섭이 발생했습니다. * **확장의 비효율성:** 컴퓨팅 자원만 필요한 상황에서도 Hadoop 노드 전체를 증설해야 하므로 운영 비용과 스토리지 낭비가 초래되었습니다. * **환경 종속성:** Hadoop 클러스터의 설정에 묶여 있어 최신 Spark 버전이나 특정 라이브러리, JVM 환경을 자유롭게 변경하기 어려웠습니다. **Spark on Kubernetes의 작동 원리와 장점** * **파드 기반 실행:** Spark 드라이버와 익스큐터를 독립적인 Kubernetes 파드로 실행하며, Kubernetes가 클러스터 매니저 역할을 수행하여 리소스를 할당합니다. * **클러스터 모드 채택:** `spark-submit`을 통해 드라이버 파드를 먼저 생성하고, 드라이버가 직접 익스큐터 파드를 요청 및 관리하는 방식을 통해 운영 권한을 Kubernetes에 위임했습니다. * **완전한 컨테이너화:** 모든 의존성을 Docker 이미지에 포함하여 환경 재현성을 높였으며, CI/CD 파이프라인과의 연동이 쉬워졌습니다. **인프라 독립성 및 운영 효율성 확보** * **스토리지 자유도:** HDFS에 국한되지 않고 S3, GCS 등 다양한 클라우드 네이티브 스토리지를 자유롭게 선택할 수 있는 기반을 마련했습니다. * **오토 스케일링 용이:** 클러스터 오토스케일러를 통해 워크로드에 따라 유연하게 자원을 확장할 수 있으며, 온프레미스 제약에서 벗어났습니다. * **거버넌스 강화:** 네임스페이스와 리소스 쿼터(ResourceQuota)를 활용해 팀별로 자원을 격리하고, RBAC 기반의 세밀한 권한 제어가 가능해졌습니다. **통합 데이터 플랫폼을 위한 레이어 구성** * **배포 레이어:** GitHub Actions와 ArgoCD를 결합하여 코드 기반의 자동 배포 및 실시간 상태 모니터링, 손쉬운 롤백 체계를 구축했습니다. * **컴퓨팅 레이어:** Spark Operator를 도입해 Kubernetes 커스텀 리소스(CRD)로 앱을 관리하며, Apache YuniKorn을 통해 배치 잡 스케줄링을 최적화했습니다. * **관측성 및 로깅:** 파드의 로그를 OpenSearch에 실시간 적재하고, Prometheus 지표를 통해 Spark 애플리케이션의 성능을 정밀하게 모니터링합니다. 대규모 데이터 처리가 필요한 환경에서 인프라 유연성과 운영 자동화를 동시에 달성하고자 한다면 Spark on Kubernetes 도입을 적극 권장합니다. 특히 컴퓨팅과 스토리지를 분리하여 비용을 최적화하고, 다양한 워크로드를 하나의 클러스터에서 통합 운영하려는 조직에 매우 효과적인 솔루션이 될 것입니다.

aws원문

AWS 주간 요약: AWS AI/ML Scholars 프로그램, AWS 서버리스용 에이전트 플러그인 등 (2026년 3월 30일) | Amazon Web Services (새 탭에서 열림)

AWS는 2026 AI & ML Scholars 프로그램을 통해 전 세계 10만 명의 학습자에게 무료 교육 기회를 제공하며 AI 인재 양성에 박차를 가하고 있습니다. 이와 동시에 개발 생산성을 극대화하기 위해 AI 코딩 어시스턴트와의 통합을 강화하고, 서버리스 및 데이터베이스 서비스의 성능과 편의성을 대폭 개선했습니다. 이번 업데이트는 초보자부터 전문가까지 아우르는 교육적 지원과 고성능 워크로드 처리를 위한 기술적 진보를 동시에 포함하고 있습니다. **AWS AI & ML Scholars 및 글로벌 이벤트** - 전 세계 18세 이상 누구나 신청 가능한 '2026 AWS AI & ML Scholars' 프로그램이 시작되었으며, 상위 4,500명에게는 Udacity 나노디그리 장학금이 지원됩니다. - 4월 파리와 런던을 시작으로 전 세계 주요 도시에서 AWS Summit이 개최되어 클라우드 및 AI 기술에 관한 혁신 사례를 공유할 예정입니다. - 개발자 커뮤니티가 주도하는 'AWS Community Days'도 샌프란시스코와 루마니아 등에서 개최되어 기술 워크숍과 실습 기회를 제공합니다. **AI 코딩 도구 연동 및 개발자 경험 개선** - 'Agent Plugin for AWS Serverless' 출시로 Kiro, Claude Code, Cursor 등의 AI 코딩 어시스턴트에서 서버리스 애플리케이션의 구축과 관리가 더욱 간편해졌습니다. - Amazon SageMaker Studio가 Kiro와 Cursor IDE의 원격 연결을 지원하여, 개발자가 익숙한 로컬 환경에서 SageMaker의 확장 가능한 컴퓨팅 자원을 활용할 수 있게 되었습니다. - AWS 관리 콘솔에 시각적 커스터마이징 기능이 추가되어 계정별 색상을 지정하거나 사용하지 않는 리전 및 서비스를 숨김으로써 인지 부하를 줄일 수 있습니다. **서버리스 및 데이터베이스 성능 강화** - Amazon Aurora PostgreSQL에 'Express Configuration'이 도입되어 단 두 번의 클릭으로 몇 초 만에 서버리스 데이터베이스를 생성할 수 있습니다. - AWS 프리티어에 Aurora PostgreSQL이 포함되어 신규 가입자에게 크레딧 혜택을 제공하며, Ruby 개발자를 위한 Aurora DSQL 커넥터도 새롭게 출시되었습니다. - AWS Lambda의 파일 디스크립터 한도가 4,096개로 4배 상향되었으며, 최대 32GB 메모리와 16 vCPU를 지원하여 데이터 집약적인 워크로드를 인프라 관리 없이 처리할 수 있습니다. **Amazon Polly의 양방향 스트리밍 지원** - Amazon Polly에 새롭게 도입된 양방향 스트리밍 API는 텍스트가 생성되는 도중에 실시간으로 음성 합성을 시작할 수 있게 해줍니다. - 이는 LLM(거대언어모델) 응답과 같이 텍스트가 순차적으로 생성되는 대화형 AI 애플리케이션에서 지연 시간을 획기적으로 줄여줍니다. 이번 발표에서 주목할 점은 서버리스 환경의 성능 한계가 대폭 확장되었다는 것입니다. 고성능 컴퓨팅이 필요한 워크로드를 운영 중이라면 상향된 Lambda 리소스를 적극 활용해 보시기 바라며, AI 역량을 쌓고자 하는 분들은 6월 24일 마감되는 AWS AI & ML Scholars 프로그램에 지원해 보실 것을 추천합니다.

line원문

대규모 서비스 환경에서의 이미지 콘텐츠 모더레이션(feat. 멀티모달 LLM) (새 탭에서 열림)

대규모 플랫폼에서의 이미지 콘텐츠 모더레이션은 방대한 데이터 처리 성능과 정교한 맥락 이해라는 두 가지 과제를 동시에 해결해야 하는 고난도 영역입니다. LY Corporation은 전통적인 ML 모델과 멀티모달 LLM을 결합한 하이브리드 구조를 도입하고 vLLM 프레임워크를 최적화함으로써 높은 탐지 정확도와 비용 효율성을 모두 달성했습니다. 이를 통해 단순히 시각적 객체를 인식하는 수준을 넘어, 이미지 내 텍스트와 정황을 결합해 정책 위반의 의도까지 파악할 수 있는 선제적 대응 체계를 구축했습니다. ### 이미지 모더레이션의 기술적 난제 * **비정형성과 시각적 복잡성**: 이미지는 배경, 객체, 구도 등 다양한 요소가 복합적으로 작용하며, 동일한 객체라도 상황에 따라 유해성 여부가 달라지는 맥락 의존성이 높습니다. * **교묘한 우회 시도**: 밈(Meme), 일부 가리기, 생성형 AI를 활용한 합성 등 탐지 시스템을 회피하기 위한 변형이 지속적으로 발생하여 난이도가 상승하고 있습니다. * **대규모 처리 인프라 요구**: 하루 수백만 건 이상의 이미지를 실시간에 가깝게 처리해야 하므로, 높은 정확도뿐만 아니라 낮은 지연 시간(Latency)과 운영 비용 효율이 필수적입니다. ### 높은 정확도와 처리 속도를 위한 3단계 최적화 * **전통적 ML 모델의 고도화**: PyTorch 기반 모델을 ONNX 형식으로 변환하고 FP16(Half Precision) 정밀도를 적용하여, 메모리 사용량을 줄이면서도 처리량을 최대 4.3배까지 개선했습니다. * **ML과 LLM의 하이브리드 파이프라인**: 1차 필터(ML 모델)가 명확한 데이터를 90% 이상 신속히 처리하고, 판단이 모호한 사례만 2차 필터(멀티모달 LLM)로 전달하여 LLM의 높은 연산 비용을 효율적으로 관리합니다. * **vLLM 기반 성능 극대화**: * `enable_prefix_caching`: 반복되는 시스템 프롬프트의 KV 캐시를 재사용하여 연산량을 절감했습니다. * `max_model_len` 및 `max_num_seqs`: 메모리 과할당을 방지하고 서비스 특성에 맞는 동시 처리 수를 조절하여 지연 시간을 안정화했습니다. * `max_num_batched_tokens`: 프리필(Prefill) 중심의 워크로드에 맞춰 설정하여 GPU 자원 활용도를 높였습니다. ### 맥락과 의도를 파악하는 하이브리드 판별 구조 * **단일 모델의 한계 극복**: 특정 객체의 존재 여부만 학습하던 기존 엔드 투 엔드(End-to-End) 모델에서 벗어나, 국가별·서비스별로 복잡한 정책을 유연하게 적용할 수 있는 구조로 재설계했습니다. * **시각 정보와 텍스트의 결합**: OCR(광학 문자 인식) API를 통합하여 이미지 내 텍스트를 추출하고, 이를 시각 정보와 결합해 단순 노출이 아닌 '판매 행위'나 '특정 의도'가 담긴 콘텐츠를 정교하게 판별합니다. * **확장성 있는 의사 결정**: 모든 정책을 모델이 직접 학습하는 대신, 정보를 분리하여 추출하고 멀티모달 LLM이 추론하는 방식을 통해 빠르게 변화하는 운영 정책에 유연하게 대응합니다. ### 실용적인 권장 사항 대규모 이미지 모더레이션 시스템을 설계할 때는 모든 데이터를 고성능 모델로 처리하기보다, 데이터의 분포를 분석하여 다수의 일반 케이스를 저비용 모델로 걸러내는 **계층적 구조**를 설계하는 것이 중요합니다. 또한 vLLM과 같은 최신 서빙 프롬프트의 최적화 옵션을 적극적으로 활용하고, 비동기 스케줄링 및 양자화 기술을 지속적으로 업데이트하여 인프라 효율을 높일 것을 권장합니다.

grammarly원문

단계별 챗봇 만들기: 초보자 가이드 (새 탭에서 열림)

챗봇 제작은 더 이상 전문 개발자만의 영역이 아니며, 노코드 및 로코드 도구의 발전으로 누구나 목적에 맞는 챗봇을 설계하고 배포할 수 있게 되었습니다. 성공적인 챗봇 구축의 핵심은 명확한 목표 설정과 그에 적합한 기술적 유형(규칙 기반, AI 기반 등)을 선택하는 데 있으며, 지속적인 테스트와 모니터링을 통해 사용자 경험을 최적화하는 과정이 필수적입니다. 결과적으로 잘 설계된 챗봇은 반복 업무를 줄이고 일관된 고객 경험을 제공하는 강력한 도구가 됩니다. ### 챗봇의 목적 및 상호작용 정의 챗봇 제작의 첫 단계는 챗봇이 해결해야 할 구체적인 과업과 사용자를 정의하는 것입니다. * **목표 구체화:** 반품 정책 설명, 주문 상태 확인 등 챗봇이 처리할 2~3가지 핵심 작업을 식별하고 이를 통해 달성할 성공 지표(문의 티켓 감소, 응답 시간 단축 등)를 설정합니다. * **상호작용 방식 선택:** 텍스트 기반인지 음성 기반인지, 웹사이트 내 채팅창인지 아니면 별도의 메시징 플랫폼인지 등 사용자와 만날 접점을 결정합니다. * **개입 시점 결정:** 사용자가 먼저 말을 걸 때까지 기다리는 수동형 방식과 특정 페이지 방문 시 먼저 도움을 제안하는 능동형 방식 중 선택합니다. ### 기술적 유형과 작동 원리 챗봇은 복잡성과 유연성에 따라 크게 네 가지 유형으로 나뉘며, 비즈니스 요구사항에 맞는 유형을 선택해야 합니다. * **규칙 기반(Rule-based):** 미리 정의된 의사결정 트리와 메뉴를 따라 대화가 진행되며, 예측 가능한 질문에 대해 일관된 답변을 제공할 때 유리합니다. * **키워드 기반(Keyword-based):** 사용자가 입력한 특정 단어나 짧은 문구를 인식하여 대응하며, 간단하고 직접적인 요청 처리에 적합합니다. * **AI 기반(AI-powered):** 자연어 처리(NLP)와 인공지능을 활용해 맥락을 파악하고 개방형 질문에 대응할 수 있으나, 더 많은 학습 데이터와 지속적인 관리가 필요합니다. * **하이브리드(Hybrid):** 일반적인 작업은 구조화된 규칙으로 처리하고, 복잡한 후속 질문은 AI가 담당하여 예측 가능성과 유연성을 동시에 확보합니다. ### 개발 플랫폼 및 구현 방식 기술적 역량과 요구되는 커스터마이징 수준에 따라 적절한 구축 플랫폼을 선택합니다. * **노코드(No-code) 플랫폼:** Chatling, Voiceflow, Zapier, Landbot 등 드래그 앤 드롭 방식의 인터페이스를 제공하여 코딩 없이도 빠르게 챗봇을 런칭할 수 있습니다. * **로우코드/풀코드(Low/Full-code):** Python이나 Node.js 같은 프로그래밍 언어와 AI 프레임워크를 사용하여 기존 시스템과 깊이 있게 통합하거나 복잡한 기능을 맞춤형으로 개발합니다. * **데이터 학습 및 구성:** 챗봇이 정확한 정보를 제공할 수 있도록 지식 베이스를 구축하고, 브랜드의 톤앤매너에 맞는 답변 가이드를 설정합니다. ### 대화 흐름 설계 및 사후 관리 실제 구축 전 대화 시나리오를 시각화하고 배포 후에도 지속적인 개선 과정을 거쳐야 합니다. * **플로우차트 작성:** 대화의 시작부터 끝까지의 흐름을 설계하여 막다른 골목(Dead ends)이 생기지 않도록 방지하고 사용자 경험을 매끄럽게 만듭니다. * **테스트와 배포:** 초기 버전 구축 후 내부 테스트를 통해 오답이나 오류를 수정하고, 실제 환경에 배포한 뒤 사용자 피드백을 수집합니다. * **지속적 모니터링:** 챗봇은 한 번의 배포로 끝나는 것이 아니라, 변화하는 데이터와 사용자 요구에 맞춰 주기적으로 내용을 업데이트하고 성능을 최적화해야 합니다. 성공적인 챗봇 운영을 위해서는 처음부터 모든 기능을 넣으려 하기보다, **가장 빈번하게 발생하는 단순 문의부터 자동화하는 '작은 시작'을 추천합니다.** 이후 데이터가 쌓임에 따라 점진적으로 AI 기능을 도입하거나 복잡한 워크플로우를 추가하는 것이 관리 효율성과 사용자 만족도 측면에서 모두 유리합니다.

cloudflare원문

연간 600시간을 절약한 쿠버네티스 한 줄 수정 (새 탭에서 열림)

쿠버네티스 환경에서 테라폼(Terraform) 운영 도구인 아틀란티스(Atlantis)의 재시작 시간을 30분에서 수 초 내외로 단축하여, 연간 600시간의 엔지니어링 대기 시간을 줄인 사례를 소개합니다. 문제의 원인은 수백만 개의 파일을 포함한 퍼시스턴트 볼륨(PV)을 마운트할 때 쿠버네티스가 기본적으로 수행하는 파일 권한 변경 작업이었습니다. 이를 해결하기 위해 `securityContext`에 단 한 줄의 설정을 추가함으로써 불필요한 재귀적 권한 검사를 방지하고 시스템 효율성을 극대화했습니다. ### 원인 불명의 느린 재시작 문제 아틀란티스는 테라폼 프로젝트의 상태를 유지하기 위해 퍼시스턴트 볼륨(PV)을 사용하는 싱글톤 스테이트풀셋(StatefulSet)으로 운영됩니다. 자격 증명 갱신이나 프로젝트 온보딩 시 재시작이 필수적인데, 이때마다 다음과 같은 심각한 지연이 발생했습니다. * **지속적인 지연:** 매 재시작 시 30분 동안 포드가 `Init:0/1` 상태에 머물며 인프라 변경 작업이 완전히 중단됨. * **운영 부담:** 매달 약 100회의 재시작이 발생하여 월 50시간, 연간 600시간의 엔지니어링 시간이 낭비되고 온콜 엔지니어에게 불필요한 알람이 전송됨. * **한계 도달:** 파일 시스템의 아이노드(Inode) 고갈로 볼륨 크기를 키워야 하는 상황에서, 재시작 지연 문제는 더욱 두드러짐. ### Kubelet 로그를 통한 기술적 병목 파악 일반적인 `kubectl events`로는 포드가 이미지를 풀링하기 전 단계에서 왜 멈춰 있는지 알 수 없었습니다. 팀은 노드 레벨의 `kubelet` 로그를 분석하여 구체적인 원인을 찾아냈습니다. * **로그 추적:** 로그상에서 볼륨 마운트 성공 메시지 이후 `context deadline exceeded` 오류가 반복적으로 발생하며 포드 생성이 지연됨을 확인. * **fsGroup 권한 설정:** 쿠버네티스는 볼륨을 마운트할 때 포드의 `fsGroup` 설정과 일치시키기 위해 볼륨 내의 모든 파일과 디렉토리에 대해 재귀적으로 `chown` 및 `chmod`를 실행함. * **파일 개수의 영향:** 아틀란티스 볼륨에 쌓인 수백만 개의 파일에 대해 매번 이 작업을 수행하면서 30분이라는 막대한 시간이 소요됨. ### 단 한 줄의 설정 변경으로 문제 해결 쿠버네티스 1.20 버전(GA 기준)부터 도입된 `fsGroupChangePolicy` 설정을 통해 이 문제를 간단히 해결할 수 있었습니다. * **기본값(Always):** 포드가 시작될 때마다 항상 모든 파일의 권한을 재귀적으로 변경함. * **해결책(OnRootMismatch):** 볼륨 루트 디렉토리의 권한이 `fsGroup`과 일치하지 않을 때만 재귀적 변경을 수행함. 이미 권한이 올바르게 설정되어 있다면 이 과정을 건너뜀. * **적용 코드:** ```yaml securityContext: fsGroup: 1000 fsGroupChangePolicy: "OnRootMismatch" ``` ### 실용적인 권장 사항 수백만 개의 작은 파일이 포함된 대규모 볼륨을 사용하는 애플리케이션(예: Prometheus, Atlantis, Jenkins 등)을 쿠버네티스에서 운영 중이라면, `fsGroupChangePolicy: "OnRootMismatch"` 설정을 기본적으로 적용하는 것이 좋습니다. 이를 통해 볼륨 마운트 시 발생하는 불필요한 디스크 I/O를 제거하고, 포드 시작 시간을 획기적으로 개선하여 인프라 운영의 가용성을 높일 수 있습니다.

aws원문

수 초 만에 Amazon Aurora PostgreSQL 서버리스 데이터베이스 생성 기능 발표 | Amazon Web Services (새 탭에서 열림)

Amazon Aurora PostgreSQL Serverless의 '익스프레스 구성(Express Configuration)' 기능이 정식 출시되어, 이제 단 몇 초 만에 데이터베이스를 생성하고 사용할 수 있게 되었습니다. 이 기능은 복잡한 네트워크 설정과 인증 과정을 자동화하여 개발자가 아이디어를 즉시 애플리케이션으로 구현할 수 있는 환경을 제공합니다. 특히 인터넷 액세스 게이트웨이와 IAM 인증을 기본으로 설정해 보안과 편의성을 동시에 확보한 것이 핵심입니다. **익스프레스 구성을 통한 초고속 데이터베이스 생성** * 단 두 번의 클릭만으로 사전에 정의된 최적의 설정을 통해 Aurora PostgreSQL Serverless 인스턴스를 즉시 생성할 수 있습니다. * 생성 과정에서 용량 범위(Capacity range)를 조정하거나, 생성 후 읽기 복제본(Read Replica) 추가 및 파라미터 그룹 수정을 자유롭게 수행할 수 있습니다. * AWS CLI나 SDK 사용 시 `--with-express-configuration` 옵션을 추가하면 단 한 번의 API 호출로 클러스터와 인스턴스를 동시에 구축할 수 있어 자동화에 용이합니다. **복잡한 설정이 필요 없는 네트워크 및 보안 환경** * Amazon VPC를 직접 구성하거나 VPN, Direct Connect를 연결할 필요 없이, 새로운 '인터넷 액세스 게이트웨이(Internet Access Gateway)' 라우팅 계층을 통해 외부 개발 도구에서 즉시 접속이 가능합니다. * 이 게이트웨이는 여러 가용 영역(AZ)에 분산되어 있어 Aurora 클러스터와 동일한 수준의 고가용성을 보장하며 PostgreSQL 와이어 프로토콜을 지원합니다. * 기본적으로 AWS IAM 인증이 활성화되어 있어, 별도의 비밀번호 관리 없이도 안전한 '패스워드리스(Passwordless)' 인증 환경을 기본으로 제공합니다. **개발자 친화적인 연결 및 도구 통합** * AWS 콘솔 내에서 Python, Node.js, Go, TypeScript 등 다양한 언어별 연결 코드 스니펫을 제공하여 애플리케이션 코드에 즉시 반영할 수 있습니다. * AWS CloudShell을 통해 별도의 클라이언트 설치 없이 브라우저에서 바로 SQL 쿼리를 실행할 수 있는 통합 환경을 지원합니다. * Vercel의 'v0'와 같은 AI 기반 도구와 통합되어 자연어만으로 데이터베이스가 포함된 풀스택 애플리케이션을 신속하게 구축할 수 있습니다. 이제 Amazon Aurora가 AWS 프리티어(Free Tier) 범위에 포함되어 초기 비용 부담 없이 시작할 수 있습니다. 신속한 프로토타이핑이나 현대적인 서버리스 애플리케이션 개발이 필요한 경우, 익스프레스 구성을 활용해 인프라 설정 시간을 단축하고 비즈니스 로직 구현에 집중할 것을 추천합니다.

dropbox원문

개발 속도 향상을 위한 모노레포 크기 줄이기 (새 탭에서 열림)

Dropbox는 87GB에 달하던 서버 모노레포 크기를 20GB로 약 77% 줄여 개발자 속도와 CI 효율성을 획기적으로 개선했습니다. 이 과정에서 Git의 기본 델타 압축 알고리즘이 특정 디렉토리 구조에서 비효율적으로 작동한다는 점을 발견했으며, GitHub 팀과 협력하여 최적화된 리팩(Repack) 설정을 적용해 저장소 용량 한계 문제를 해결했습니다. 결과적으로 1시간 이상 걸리던 클론 시간을 15분 미만으로 단축하며 운영상의 리스크를 제거했습니다. ### 대규모 모노레포 성장이 유발하는 운영 병목 - 저장소 크기가 87GB를 넘어서면서 초기 개발 환경 구축을 위한 클론 시간이 1시간을 초과했고, 이는 매번 신규 클론을 수행하는 CI(지속적 통합) 파이프라인의 성능 저하로 이어졌습니다. - 코드 데이터는 매일 20~60MB씩 증가하며 GitHub Enterprise Cloud의 하드 리밋인 100GB에 근접해 가고 있었으며, 이는 단순한 코드 양의 증가라기보다 저장 방식의 구조적 결함에 의한 현상이었습니다. - 내부 동기화 시스템의 타임아웃 발생 빈도가 높아지는 등 저장소 크기 자체가 엔지니어링 루프 전체를 느리게 만드는 핵심 원인이 되었습니다. ### Git 델타 압축 알고리즘과 디렉토리 구조의 충돌 - Git은 파일 간의 차이점(Delta)만 저장하여 용량을 줄이는데, 비교 대상 파일을 선정할 때 파일 경로의 '마지막 16자'만을 참조하는 휴리스틱 방식을 사용합니다. - Dropbox의 다국어(i18n) 파일 구조는 `i18n/[언어코드]/LC_MESSAGES/[파일명].po` 형태였는데, 언어 코드가 경로 중간에 있어 Git은 서로 다른 언어의 동일 파일명을 가진 파일들을 비교 대상으로 묶었습니다. - 내용이 전혀 다른 언어 간의 파일을 비교하다 보니 압축 효율이 극도로 낮아졌고, 아주 작은 번역 수정에도 불필요하게 큰 팩(Pack) 파일이 생성되는 결과로 이어졌습니다. ### GitHub 서버 측 리팩 최적화를 통한 문제 해결 - 실험적 플래그인 `--path-walk`를 사용하면 파일 경로 전체를 탐색해 압축 효율을 극대화할 수 있음을 로컬 테스트로 확인했으나, 이는 GitHub 서버의 비트맵 및 델타 아일랜드 최적화 기능과 호환되지 않았습니다. - 로컬에서 최적화하여 푸시하더라도 GitHub 서버가 전송 시 자체 설정으로 다시 팩을 구성하기 때문에, GitHub 지원팀과 협력하여 서버 측 리팩 설정을 조정하는 방식을 택했습니다. - Git이 더 넓고 깊게 유사성을 검색할 수 있도록 `window`와 `depth` 매개변수를 각각 250으로 상향 조정한 공격적인 리팩을 수행하여, 데이터 손실 없이 저장소 크기를 20GB 수준으로 압축하는 데 성공했습니다. ### 대규모 저장소 관리를 위한 제언 - 모노레포의 크기가 비정상적으로 급증한다면 단순한 바이너리 파일 유입뿐만 아니라, Git의 델타 압축 메커니즘과 현재의 디렉토리 구조가 상충하고 있지는 않은지 점검해야 합니다. - 저장소 최적화는 클라이언트 단의 노력만으로는 한계가 있으며, 호스팅 서비스(GitHub 등)의 서버 측 리팩 설정과 인프라 호환성을 반드시 고려하여 전략을 수립해야 합니다.

toss원문

Metric Review, 실행을 이끌다 (새 탭에서 열림)

토스플레이스는 데이터 분석이 실질적인 제품 성장과 사업적 변화로 이어지지 못하는 문제를 해결하기 위해 '메트릭 리뷰(Metric Review)'를 도입했습니다. 메트릭 리뷰는 데이터 분석가가 단순한 리포트 작성자를 넘어 '메트릭 오너(Metric Owner)'로서 조직의 목표와 정렬된 지표를 관리하고, 가설 검증과 실행을 독려하는 핵심 운영 체계입니다. 이를 통해 전사 구성원이 데이터 리터러시를 갖추고 "어떤 지표를 움직일 것인가"를 고민하며 의사결정하는 구조를 확립했습니다. **메트릭 리뷰의 운영 원칙과 분석 사이클** * **OKR 기반의 메트릭 하이어라키(Metric Hierarchy):** 전사 목표인 Key Result를 각 팀의 하위 지표인 드라이버 메트릭(Driver Metric)으로 세분화하여, 무엇이 위협 요소이고 기회인지를 명확히 파악합니다. * **주간 단위의 분석 리듬:** 매주 지표를 검토함으로써 월간 단위로는 놓치기 쉬운 이상 신호를 조기에 포착하고, 수치 변화의 원인을 파고드는 과정에서 데이터 분석가의 도메인 지식을 강화합니다. * **실행으로 연결되는 분석 루프:** 단순 현황 공유에 그치지 않고 '지표 분석 → 가설 검증 → 인사이트 제시 → 실행 독려' 순으로 이어지는 사이클을 반복하며, 탐색적 데이터 분석(EDA)을 통해 도출된 가설을 실제 액션 아이템으로 전환합니다. **실제 사례로 증명된 메트릭 기반의 변화** * **전사 협업 구조 최적화 (Growth Tribe):** 지표를 중심으로 디자이너는 로그 설계 방향을 제안하고, 개발자는 분석에 용이한 서버 테이블 구조를 설계하는 등 전 직군이 목표 지표 달성을 위한 유기적인 협업 체계를 구축했습니다. * **군집 분석을 통한 맞춤형 전략 (POS Tribe):** 대리점별 확산 편차를 해결하기 위해 군집 분석을 수행하고, 설치 비율이 낮은 군집에는 온보딩 강화를, 높은 군집에는 사용성 개선을 제안하는 등 데이터 기반의 정교한 처방을 실행했습니다. * **예측 기반의 공급망 관리 (SCM):** 단말기 출고 및 설치 현황을 모니터링하여 재고 및 발주를 예측함으로써, 유통 구조의 최적화와 비용 절감이라는 실질적인 사업적 성과를 거두었습니다. **데이터 분석가가 지향해야 할 실무 방향** * 화려한 분석 기법보다는 '실행으로 연결되는 분석'에 가치를 두고, 문제를 구조화하며 가설을 검증 가능한 형태로 만드는 것이 중요합니다. * 데이터 분석가는 단순 지원 조직이 아니라 제품과 사업의 임팩트에 집중하는 주체로서, 액션 이후의 검증 지표까지 끝까지 추적하는 책무를 가져야 합니다. * 조직의 언어를 "무엇을 만들까"에서 "어떤 지표를 변화시킬까"로 바꾸는 것이 데이터 리터러시 향상의 본질이며, 이는 꾸준한 메트릭 리뷰를 통해 완성됩니다.

line원문

SRE 팀의 반복 작업을 10분의 1로 줄인 SRE 봇 개발기 (새 탭에서 열림)

LINE Home DevOps 팀은 인프라 전환과 서비스 확대로 급증한 운영 문의 및 반복적인 배포 요청 문제를 해결하기 위해 Slack 기반의 통합 자동화 도구인 'SRE 봇'을 구축했습니다. 기존에 수동으로 수행하던 Jira 티켓 생성, 컨플루언스 체크리스트 복사, 배포 매뉴얼 검색 등의 프로세스를 자동화하여 업무 시간을 획기적으로 단축하고 휴먼 에러를 방지했습니다. 이를 통해 팀은 단순 반복 업무에서 벗어나 서비스 안정화와 인프라 고도화라는 본연의 업무에 집중할 수 있는 환경을 마련했습니다. ### 수동 운영 프로세스의 한계와 비효율성 * **복잡한 워크플로와 컨텍스트 스위칭:** 배포 요청 한 건을 처리하기 위해 Slack, Confluence, Jira 등 여러 플랫폼을 오가며 정보를 복사-붙여넣기해야 했으며, 이 과정에서 1건당 약 1시간의 시간이 소요되었습니다. * **휴먼 에러의 빈번한 발생:** 수동 작업 특성상 릴리스 버전 설정 오류, 필수 체크리스트 항목 누락, Epic 링크 연결 누락 등 실수가 잦았고, 긴급 상황일수록 이러한 문제는 더욱 심화되었습니다. * **가시성 부족과 정량화의 어려움:** Slack 멘션으로 들어오는 요청은 휘발성이 강해 진행 상황 추적이 어려웠으며, 팀의 업무량을 정량적으로 파악하여 성과로 증명하기 힘든 구조였습니다. ### 사용자 편의와 시스템 안정성을 고려한 기술적 설계 * **Slack 워크플로 기반 UI:** 사용자가 직접 명령어를 입력하는 방식 대신 Slack 워크플로 양식을 채택하여 필수 항목 누락을 방지하고 사용자의 진입 장벽을 낮췄습니다. * **백그라운드 비동기 처리:** Slack API의 응답 제한 시간(3초) 내에 외부 시스템(Jira, Confluence)과의 복잡한 연동을 마칠 수 없으므로, 즉시 응답 후 실제 작업은 백그라운드에서 수행하는 비동기 방식을 선택했습니다. * **Redis를 활용한 상태 관리:** Slack 스레드와 Jira 티켓 간의 매핑 정보를 Redis에 저장(TTL 30일 설정)하여 100ms 미만의 빠른 조회 성능을 확보하고, 트랜잭션을 통해 여러 SRE가 동시에 작업할 때 발생할 수 있는 동시성 문제를 해결했습니다. ### 헥사고날 아키텍처를 통한 유연한 확장성 확보 * **포트와 어댑터 패턴 적용:** Slack, Jira, Redis 등 외부 시스템과의 결합도를 낮추기 위해 헥사고날 아키텍처를 도입했습니다. * **비즈니스 로직 보호:** 인터페이스를 통해 외부 환경을 격리함으로써 Jira API 버전 업그레이드나 Slack SDK 변경 등 외부 변화가 발생하더라도 내부의 핵심 비즈니스 로직을 수정할 필요가 없도록 설계했습니다. * **테스트 및 유지보수 용이성:** 각 레이어가 명확히 분리되어 있어 기능 추가 시 영향 범위를 최소화할 수 있으며, 테스트 코드 작성이 수월해져 안정적인 코드베이스 유지가 가능해졌습니다. ### 도입 후 시나리오별 변화 및 성과 * **배포 요청 처리 시간 단축:** 기존 30분 이상 걸리던 배포 요청 처리가 SRE 봇 도입 후 1분 이내로 단축되었습니다. 봇이 Fix Version 생성, 티켓 연결, 매뉴얼 검색을 10초 만에 자동 수행하기 때문입니다. * **긴급 대응 및 가시성 개선:** 긴급 요청 시 즉시 우선순위가 높게 설정된 티켓이 생성되고 채널에 알림이 공유됩니다. SRE는 이모지 클릭만으로 본인에게 티켓을 할당하고 상태를 업데이트할 수 있어 실시간 추적이 용이해졌습니다. * **정기적인 업무 정량화:** 모든 요청이 정형화된 Jira 티켓으로 자동 기록됨에 따라, 팀원당 투입 시간과 처리 건수를 명확히 데이터화하여 운영 성과를 증명할 수 있게 되었습니다. 단순 반복적인 운영 업무로 인해 팀의 에너지가 고갈되고 있다면, 기술적인 자동화 레이어를 구축하여 'Zero Manual Work'를 지향하는 것이 장기적인 팀 생산성 향상의 핵심입니다. Slack과 같은 협업 툴을 Single Point of Truth로 설정하고 외부 시스템을 유연하게 연결하는 아키텍처를 고민해 보시기 바랍니다.

aws원문

AWS 주간 소식: Amazon Bedrock의 NVIDIA Nemotron 3 Super, Nova Forge SDK, Amazon Corretto 26 등(2026년 3월 23일) | Amazon Web Services (새 탭에서 열림)

AWS는 최근 NVIDIA Nemotron 3 Super 모델의 Amazon Bedrock 추가와 Nova Forge SDK 출시를 통해 생성형 AI 생태계를 대폭 확장하고, 엔터프라이즈급 AI 맞춤화 기능을 강화했습니다. 동시에 Amazon Redshift의 쿼리 성능을 최대 7배 향상시키고 Amazon EKS의 가용성 실효 수준(SLA)을 99.99%로 높이는 등 클라우드 인프라의 성능과 신뢰성 측면에서도 유의미한 진전을 이루었습니다. 이번 업데이트는 개발자 중심의 도구 개선과 고성능 워크로드 지원이라는 AWS의 핵심 전략을 잘 보여줍니다. **생성형 AI 모델 및 맞춤화 도구 확장** * **NVIDIA Nemotron 3 Super 출시:** Amazon Bedrock API를 통해 NVIDIA의 고성능 언어 모델인 Nemotron 3 Super를 사용할 수 있게 되었습니다. 텍스트 생성, 복잡한 추론, 요약, 코드 생성에 최적화되어 있으며 별도의 인프라 관리 없이 기존 워크플로우에 통합 가능합니다. * **Nova Forge SDK 도입:** 기업용 Nova 모델을 도메인 특화 데이터에 맞게 미세 조정(Fine-tuning)하고 배포할 수 있는 간소화된 수단을 제공하여 맞춤형 AI 솔루션 구축의 복잡성을 낮췄습니다. * **에이전트 정확도 향상:** Strands 에이전트 팀이 발표한 'Steering Hooks' 기법을 통해 AI 에이전트의 정확도를 100%까지 달성했으며, 이는 기존 프롬프트 엔지니어링보다 뛰어난 제어 능력을 보여줍니다. **데이터 분석 및 컴퓨팅 인프라 성능 고도화** * **Amazon Redshift 성능 개선:** 대시보드 및 ETL 워크로드에서 캐시되지 않은 새로운 쿼리의 실행 속도가 최대 7배 빨라졌습니다. 이는 쿼리 변동성이 큰 대화형 대시보드의 대기 시간을 획기적으로 줄여줍니다. * **Amazon EKS SLA 및 확장성 강화:** 프로비저닝된 컨트롤 플레인 클러스터의 SLA가 99.99%로 상향되었으며, 4XL 대비 처리 용량이 2배인 8XL 스케일링 티어를 도입하여 대규모 AI/ML 학습 및 데이터 처리 환경을 지원합니다. * **AWS Lambda 가용 영역(AZ) 메타데이터 지원:** 함수 호출 시 실행 중인 AZ 정보를 확인할 수 있게 되어, 지연 시간에 민감한 멀티 AZ 워크로드의 관찰 가능성과 문제 해결 능력이 향상되었습니다. **개발자 편의성 및 운영 효율성 증대** * **Amazon Corretto 26 정식 출시:** OpenJDK의 최신 장기 지원(LTS) 버전인 Corretto 26이 출시되어 최신 Java 기능과 보안 패치를 다양한 운영체제에서 무료로 사용할 수 있습니다. * **CloudWatch Logs HTTP 기반 로그 수집:** 커스텀 에이전트나 SDK 없이 표준 HTTP 엔드포인트를 통해 로그를 직접 전송할 수 있게 되어 중앙 집중식 로그 관리 장벽이 낮아졌습니다. * **학생용 Kiro 지원:** 미래의 개발자들이 AI 기반 개발 도구를 무료로 경험할 수 있도록 Kiro 서비스를 학생들에게 개방했습니다. 이번 업데이트를 통해 엔터프라이즈 환경에서는 Nova Forge SDK를 활용한 도메인 특화 AI 모델 구축을 검토해 볼 가치가 있으며, 고가용성이 필요한 대규모 워크로드 운영 시 강화된 EKS 8XL 티어와 99.99% SLA를 적극 활용하는 것을 추천합니다. 또한 2026년 4월부터 시작되는 파리, 런던 등 전 세계 AWS 서밋 일정을 확인하여 최신 기술 트렌드를 직접 확인하시기 바랍니다.

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와 같은 현대적인 언어로 소프트웨어 아키텍처를 재설계함으로써 하드웨어의 물리적 변화를 성능 도약의 기회로 전환하는 전략이 필요합니다.

datadog원문

업서트가 업데이트하지 않아도 쓰기가 발생하는 경우: 대규모 Postgres 성능 디버깅 (새 탭에서 열림)

데이터독(Datadog)은 수백만 개의 일시적인 호스트 메타데이터를 효율적으로 관리하기 위해 새로운 업서트(Upsert) 쿼리를 도입했으나, 예상과 달리 디스크 쓰기와 WAL(Write-Ahead Logging) 동기화가 급증하는 문제에 직면했습니다. 조사 결과, PostgreSQL의 `ON CONFLICT DO UPDATE` 구문은 `WHERE` 조건에 의해 실제 업데이트가 수행되지 않더라도 행 잠금을 위해 WAL 레코드를 생성한다는 점이 원인이었습니다. 이 글은 고성능 시스템에서 단순한 쿼리 최적화 가정이 어떻게 물리적 성능 병목으로 이어질 수 있는지, 그리고 이를 어떻게 진단했는지 설명합니다. ### 효율적인 업서트 테이블 설계 * **업데이트 비용 절감:** PostgreSQL은 MVCC(MultiVersion Concurrency Control)를 사용하므로 업데이트 시마다 새로운 행 버전이 생성됩니다. 메타데이터 테이블의 비대화를 막기 위해 `last_ingested` 필드를 별도의 전용 테이블로 분리하여 쓰기 데이터양을 최소화했습니다. * **HOT(Heap-Only Tuples) 업데이트 활용:** 인덱스가 있는 컬럼을 수정하면 인덱스 페이지도 함께 수정되어야 합니다. 이를 피하기 위해 `last_ingested` 컬럼에는 인덱스를 생성하지 않았으며, `fillfactor`를 80%로 설정하여 페이지 내 여유 공간을 확보함으로써 HOT 업데이트가 가능하도록 설계했습니다. * **업데이트 빈도 제한:** 7일간 데이터가 없는 호스트를 식별하는 것이 목적이므로 1일 단위의 정밀도로 충분했습니다. 따라서 `WHERE` 절을 사용하여 마지막 업데이트로부터 24시간이 지난 경우에만 실제 쓰기가 발생하도록 쿼리를 구성했습니다. ### 예상치 못한 성능 지표의 변화 * **I/O 및 WAL 동기화 급증:** 쿼리 배포 후 업데이트 속도는 예상대로 낮게 유지되었으나, 디스크 쓰기 IOPS는 2배, WAL sync 횟수는 4배나 증가했습니다. * **쓰기 예산 소모:** PostgreSQL 클러스터는 단일 라이터(writer) 구조이므로 처리 가능한 쓰기 작업량에 한계가 있습니다. 실제 데이터 변경이 없는 'No-op' 쿼리들이 이 한정된 자원을 과도하게 소모하는 문제가 발생했습니다. * **내부 동작의 모순:** `INSERT ... ON CONFLICT DO UPDATE` 문에서 `WHERE` 조건이 거짓(false)이 되어 행이 업데이트되지 않더라도, 데이터베이스는 동시성 제어를 위해 해당 행에 락(lock)을 겁니다. 이 잠금 행위 자체가 WAL에 기록되면서 물리적인 쓰기 부하를 유발한 것입니다. ### pg_walinspect를 이용한 심층 진단 * **WAL 레코드 조사:** Postgres 15에서 도입된 `pg_walinspect` 확장 프로그램을 사용하여 실제 WAL에 어떤 데이터가 기록되고 있는지 분석했습니다. * **진단 도구 설정:** `pg_get_wal_records_info` 함수를 호출하여 특정 LSN(Log Sequence Number) 범위 내의 레코드를 확인했습니다. 이를 통해 쿼리 실행 시 업데이트가 발생하지 않음에도 불구하고 WAL 레코드가 생성되는 과정을 구체적으로 확인했습니다. * **원인 규명:** 분석 결과, `ON CONFLICT` 상황에서 잠금 처리가 WAL에 기록되는 것을 확인했으며, 이것이 전체적인 디스크 I/O 상승의 주범임을 입증했습니다. ### 실용적인 제언 PostgreSQL에서 고빈도 업서트를 설계할 때는 `WHERE` 조건문이 애플리케이션 레벨의 논리적 업데이트는 막아줄 수 있지만, 데이터베이스 엔진 레벨의 물리적 쓰기(WAL)까지 완전히 차단하지 못할 수 있음을 유의해야 합니다. 극도로 높은 처리량이 요구되는 환경에서는 `pg_walinspect`와 같은 도구를 사용하여 쿼리의 물리적 오버헤드를 사전에 검증하고, 불필요한 잠금 발생을 줄이는 방향으로 쿼리를 재작성하는 과정이 필수적입니다.

line원문

기획서 없이 내재화하기: 검증 로직으로 동일함을 증명하다 (새 탭에서 열림)

사양서나 소스 코드를 참조할 수 없는 블랙박스 상태의 레거시 시스템을 내재화하기 위해, Kafka 생태계를 활용한 자동화된 검증 파이프라인을 구축하여 시스템의 동일성을 증명했습니다. 데이터 발생부터 분석까지 이어지는 검증 루프를 통해 불일치 건수를 0으로 수렴시키는 과정을 거쳤으며, 결과적으로 대규모 커머스 데이터를 안전하고 정밀하게 신규 시스템으로 이관할 수 있었습니다. **통합 커머스 검색의 도메인 구조** * **상품과 카탈로그**: 판매자가 등록한 개별 '상품'들을 동일 모델별로 묶어 최적의 정보를 제공하는 상위 객체인 '카탈로그'로 관리하며, 이는 최저가 산출 및 객단가 지표 제공의 핵심이 됩니다. * **수신 파이프라인**: 대규모 상품 데이터를 내부 표준 형식으로 변환하고 정합성을 검사하여 상품 및 카탈로그 정보에 반영하는 거대 파이프라인으로, 서비스 전체에 막대한 영향력을 미칩니다. **무중단 검증 루프의 설계** * **검증 파이프라인 아키텍처**: 트리거(DB 변경/이벤트) → 실행 및 비교(양쪽 시스템에 동일 입력 주입) → 가공 및 적재(불일치 데이터 저장) → 분석 및 개선(오류 패턴 수정)으로 이어지는 유기적인 루프를 생성했습니다. * **입력과 출력의 정의**: 동일한 ID나 스냅숏을 입력값으로 설정하고, API 응답이나 DB 업데이트 결과를 출력값으로 명확히 정의함으로써 내부 로직이 복잡하더라도 통계적으로 동일함을 증명할 수 있는 환경을 만들었습니다. **조회 로직 검증과 블랙박스 분석** * **CDC와 Kafka 기반 비교**: DB의 바이너리 로그를 실시간 스트리밍하는 CDC(Change Data Capture)를 트리거로 사용하고, Kafka를 통해 검증 로직을 물리적으로 격리하여 서비스 성능에 영향을 주지 않으면서 기존/신규 API 응답을 1:1로 대조했습니다. * **재귀적 필드 비교 및 정렬**: 100개가 넘는 API 응답 필드를 `Map<String, Object>` 구조로 변환해 재귀적으로 탐색했으며, 리스트 내 순서 차이로 인한 노이즈를 제거하기 위해 문자열 정렬 후 2차 비교를 수행하는 유연한 로직을 도입했습니다. * **가시성 확보 및 최적화**: ksqlDB를 활용해 실시간으로 이상 징후를 Slack으로 알리고 OpenSearch로 상세 로그를 분석했으며, 처리율 제한(Rate Limit)을 적용해 동일 패턴의 중복 오류가 분석을 방해하지 않도록 제어했습니다. **상태 변화를 다루는 업데이트 로직 검증** * **실시간 시뮬레이션**: 카탈로그 통계 업데이트 시 CDC 이벤트가 발생하면 검증 모듈이 신규 로직으로 예상 결과값을 즉시 산출하고, 이를 기존 로직이 업데이트한 DB의 실제값과 대조하는 시뮬레이션 방식을 채택했습니다. * **비동기 지연 및 트리거 누락 해결**: 비동기 환경의 시차 문제는 'N회차 재시도 큐' 전략으로 해결하고, 특정 필드 변경 시에만 검증이 작동하도록 필터링하여 리소스를 최적화했습니다. 또한 ETL 배치 검증을 병행하여 실시간 스트림에서 놓칠 수 있는 트리거 누락 결함까지 포착했습니다. **성공적인 시스템 전환을 위한 제언** 복잡한 시스템의 내재화는 단순히 코드를 옮기는 것이 아니라 '기존과 동일하게 작동함'을 객관적으로 입증하는 과정입니다. 데이터 스트림 기반의 자동화된 검증 체계를 구축하면 블랙박스 로직의 베일을 하나씩 벗겨낼 수 있을 뿐만 아니라, 실시간 트래픽 환경에서의 성능 비교 지표까지 확보하여 안정성과 성능이라는 두 마리 토끼를 모두 잡을 수 있습니다.

toss원문

LLM을 이용한 서비스 취약점 분석 자동화 #2 (새 탭에서 열림)

AI 기술의 비약적인 발전으로 취약점 분석 자동화가 새로운 국면을 맞이한 가운데, 대규모 소스코드를 효율적으로 분석하기 위한 구체적인 기술적 구현 방법과 보안 관점의 변화가 필요합니다. 본 글은 MCP(Model Context Protocol)를 통한 정밀한 코드 탐색과 SAST 도구를 활용한 분석 후보군 추출을 결합하여 분석의 일관성과 정확도를 높인 사례를 제시합니다. 결과적으로 AI가 단순한 보조 도구를 넘어 복합적인 추론을 수행하는 능동적인 보안 분석 주체로 진화하고 있음을 강조합니다. **MCP를 활용한 효율적인 소스코드 탐색** * 기존의 단순 패턴 매칭 방식은 불필요한 탐색으로 토큰을 낭비하거나 정확한 정의를 찾지 못하는 한계가 있어, 이를 개선하기 위해 ctags와 tree-sitter를 결합한 MCP 서버를 구축했습니다. * AI에게 IDE의 'Go to Definition'과 유사한 능력을 부여하기 위해 `find_references`(참조 검색), `read_definition`(심볼 정의 및 함수 범위 감지), `read_source`(주변 코드 읽기), `get_project_structure`(전체 구조 파악) 등 4가지 핵심 도구를 구현했습니다. * 이 시스템은 AI가 원격 서버 환경에서도 프로젝트의 전체적인 청사진을 이해하고, 분석이 필요한 코드의 맥락을 정확하게 짚어낼 수 있도록 돕습니다. **SAST와 AI의 결합을 통한 분석 범위 확장** * 분석의 일관성을 확보하기 위해 SAST(Semgrep 등)를 취약점 탐지용이 아닌, AI가 반드시 검토해야 할 '모든 입력 경로(Taint Path)'를 추출하는 보조 도구로 활용했습니다. * Spring 프레임워크의 @RequestParam, @RequestBody 등 모든 입력 지점(Source)에서 함수 호출(Sink)까지의 도달 경로를 추출하는 규칙을 설정하여 분석 후보군을 빠짐없이 확보했습니다. * 취약점 유무를 판단하기 어려운 복잡한 비즈니스 로직이나 보안 필터링의 유효성을 AI가 직접 검토하게 함으로써, 기존 정적 분석 도구의 한계를 AI의 문맥 이해 능력으로 보완했습니다. **체계적인 추론 과정(CoT) 설계** * AI가 분석을 시작하기 전 '계획 수립 - 도구 실행 - 검증 - 결과 분석'의 단계를 거치도록 Chain of Thought(CoT) 방식을 적용하여 분석 결과의 신뢰도를 높였습니다. * 단순히 코드를 단편적으로 보는 것이 아니라, MCP 도구를 활용해 연관된 코드와 비즈니스 로직을 충분히 탐색한 후 최종 판단을 내리도록 설계하여 오탐(False Positive)을 획기적으로 줄였습니다. * 이러한 구조화된 추론 과정을 통해 AI는 10개의 취약점 중 일부만 찾는 불완전한 분석에서 벗어나, 정해진 후보군 전체를 일관성 있게 전수 조사할 수 있게 되었습니다. **보안 패러다임의 전환** 현재의 AI는 단순한 챗봇을 넘어 보안 전문가의 사고 과정을 모사하는 에이전트로 진화하고 있습니다. 보안 담당자는 이제 AI에게 효율적인 코드 탐색 도구(MCP)를 제공하고 정밀한 분석 경로(SAST 활용)를 설계해 주는 'AI 오케스트레이터'로서의 역할을 고민해야 합니다. AI가 가진 강력한 추론 능력을 신뢰하되, 이를 올바른 방향으로 이끌 수 있는 환경을 구축하는 것이 보안 자동화의 핵심입니다.

cloudflare원문

에이전트에 힘을 더하다: Workers AI, 이제 Kimi K2.5를 시작으로 대규모 모델 실행 지원 (새 탭에서 열림)

Cloudflare는 자사의 AI 추론 플랫폼인 Workers AI에서 Moonshot AI의 **Kimi K2.5**를 시작으로 대규모 프런티어 모델 지원을 공식화했습니다. 이를 통해 개발자는 Durable Objects, Workflows 등 기존의 강력한 인프라와 고성능 LLM을 결합하여 에이전트의 전체 라이프사이클을 단일 플랫폼에서 관리할 수 있게 되었습니다. 특히 대형 모델의 추론 비용을 획기적으로 낮추고 성능을 최적화함으로써, 복잡한 추론 기능이 필요한 지능형 에이전트 구축의 진입 장벽을 제거했다는 점이 핵심입니다. ### Kimi K2.5 도입과 경제적 효용성 * **성능 사양:** 256k의 방대한 컨텍스트 윈도우를 지원하며, 멀티턴 도구 호출(Tool Calling), 비전 입력, 구조화된 출력 기능에 특화되어 복잡한 에이전트 작업에 적합합니다. * **비용 절감:** Cloudflare 내부의 보안 리뷰 에이전트에 적용한 결과, 기존 유료 독점 모델 대비 성능 저하 없이 비용을 약 77% 절감하는 효과를 거두었습니다. * **확장성:** 개인용 에이전트나 코딩 에이전트의 사용량이 급증하는 추세에서, 독점 모델의 높은 비용 문제를 해결하고 엔터프라이즈급 추론 능력을 경제적으로 제공합니다. ### 대규모 모델 추론 스택의 기술적 최적화 * **커스텀 커널 및 엔진:** 자체 추론 엔진인 'Infire'를 기반으로 Kimi K2.5에 최적화된 커스텀 커널을 적용하여 GPU 활용도와 처리 속도를 극대화했습니다. * **병렬화 및 분산 처리:** 데이터, 텐서, 전문가(Expert) 병렬화 기술뿐만 아니라, 프리필(Prefill)과 생성(Generation) 단계를 분리하는 '분산 프리필' 전략을 통해 높은 처리량을 확보했습니다. * **서버리스 편의성:** ML 엔지니어나 DevOps 전문가 없이도 API 호출만으로 이러한 고차원적인 최적화 기술이 적용된 대형 모델을 즉시 사용할 수 있습니다. ### 에이전트 워크로드를 위한 플랫폼 개선 * **프리픽스 캐싱(Prefix Caching):** 대화 맥락이나 시스템 프롬프트 등 중복되는 입력 텐서를 캐싱하여 프리필 단계의 계산을 생략함으로써, 첫 토큰 생성 시간(TTFT)을 단축하고 처리량을 높였습니다. * **세션 어피니티(Session Affinity) 헤더:** `x-session-affinity` 헤더를 도입하여 요청을 동일한 모델 인스턴스로 라우팅함으로써 캐시 히트율을 높이고 추론 비용을 추가로 절감할 수 있도록 지원합니다. * **캐시 토큰 할인:** 캐싱된 토큰 사용량을 명확히 시각화하여 제공하며, 일반 입력 토큰보다 저렴한 가격 정책을 적용하여 대규모 컨텍스트를 사용하는 에이전트의 비용 부담을 줄였습니다. 고성능 추론 능력이 필요한 복잡한 AI 에이전트를 구축하고자 한다면, Cloudflare Workers AI 플랫폼에서 Kimi K2.5와 세션 어피니티 기능을 활용해 보시기 바랍니다. 인프라 구축의 복잡성을 Cloudflare에 맡김으로써 개발자는 에이전트의 논리와 비즈니스 가치 창출에만 집중할 수 있습니다.