기술 아티클
직접 쓰고 다듬은 기술 글입니다. 학습 일지에서 검증된 내용을 정리해 올립니다.
-
데이터 정합성 검증 자동화와 Data Contract 설계
데이터 사고는 대부분 조용히 일어난다. 원천 팀이 컬럼 하나를 바꾸거나 배치가 절반만 적재돼도 파이프라인은 성공으로 끝나고, 며칠 뒤 보고서 숫자가 틀린 것을 누군가 발견한다. 이 글은 생산자와 소비자 사이의 약속을 Data Contract로 문서화하고, 그 약속을 CI와 파이프라인에서
-
Data Lakehouse 아키텍처와 Apache Iceberg
데이터 레이크는 싸고 크지만 파일 묶음이라 트랜잭션도 스키마 관리도 없고, 웨어하우스는 정확하지만 비싸고 한 엔진에 묶인다. 레이크하우스는 객체 스토리지의 Parquet 파일 위에 테이블 메타데이터 계층을 얹어 두 장점을 합치는 구조다. 이 글은 그 계층을 대표하는 Apache Iceb
-
Vector Database의 HNSW 인덱스 동작 원리
벡터 검색의 지연 시간과 정확도는 대부분 인덱스 하나로 정해지고, 지금 가장 널리 쓰이는 인덱스가 HNSWHierarchical Navigable Small World다. 이 글은 Malkov와 Yashunin의 논문2016년 arXiv 공개, 2018년 IEEE TPAMI 게재이 정리
-
PostgreSQL Partitioning과 대용량 테이블 관리
수억 건짜리 테이블은 조회보다 관리에서 먼저 무너진다. 오래된 데이터를 지우는 DELETE가 몇 시간씩 돌고, VACUUM이 끝나지 않고, 인덱스 하나 만들 때마다 서비스 점검 공지를 낸다. 이 글은 PostgreSQL 선언적 파티셔닝으로 이 문제를 푸는 방법을 정리한다. 방식 고르기,
-
OLTP와 OLAP 아키텍처 분리 및 데이터 동기화
운영 DB 하나로 업무 처리와 통계를 함께 하면, 월말 집계 쿼리 한 번에 민원 접수 화면이 느려지는 일이 생긴다. 두 일은 데이터를 읽는 방식이 정반대라서 저장소를 나누는 것이 맞다. 다만 나누는 순간 "두 곳의 숫자가 같은가"라는 새 문제가 생긴다. 이 글은 OLTP와 OLAP를 왜
-
CDC와 Debezium으로 DB 변경 이벤트 수집하기
검색 색인, 분석 DB, 캐시가 원본 DB를 따라가려면 무엇이 바뀌었는지 빠짐없이 알아야 한다. 코드에 이벤트 발행을 끼워 넣으면 빠뜨리는 경로가 생기고, 테이블을 주기적으로 다시 읽으면 삭제를 놓친다. 이 글은 PostgreSQL WAL·MySQL binlog를 읽어 Kafka로 보내
-
LLM 서비스의 비결정성과 재현 가능한 테스트 설계
같은 입력에 다른 답을 내는 LLM은 "어제 통과한 테스트가 오늘 실패하는" 문제를 기본으로 안고 있고, 그대로 두면 팀은 빨간 CI를 무시하는 법부터 배운다. 이 글은 비결정성이 어디서 오는지 나누고, 녹화 재생·스키마 계약·불변식·N회 샘플링의 네 층으로 테스트를 짜서 실패를 다시
-
AI Agent의 비용 최적화: Model Routing과 Token Budget
AI Agent의 비용은 호출 한 번의 단가보다 루프가 몇 바퀴 도는지, 바퀴마다 무엇을 다시 보내는지에서 결정된다. 이 글은 Agent 비용이 생기는 지점을 작업 단위로 재는 법, 쉬운 일을 작은 모델에 보내는 Model Routing, 작업마다 한도를 거는 Token Budget,
-
LLM Semantic Cache 설계와 캐시 오염 방지
Semantic Cache는 "뜻이 같은 질문"에 지난 답을 돌려줘서 LLM 호출 비용과 지연을 줄인다. 대신 틀린 답, 다른 사용자의 개인정보, 프롬프트 인젝션에 오염된 답까지 그대로 재사용될 수 있다. 이 글은 Exactmatch 캐시와의 차이, 캐시 키 구성, 유사도 임계값을 정하
-
Agentic RAG와 일반 RAG의 아키텍처 차이
일반 RAG는 질문을 한 번 검색하고 찾은 문서를 붙여 바로 답한다. 질문이 여러 단계를 거치거나 답이 여러 저장소에 흩어져 있으면 이 한 번의 검색이 빗나가고, 모델은 빈약한 근거로 그럴듯한 답을 만든다. 이 글은 검색 자체를 판단의 대상으로 만드는 Agentic RAG가 일반 RAG