인프라

PostgreSQL 기초 강좌 #5 EXPLAIN 읽는 법: 실행 계획으로 쿼리 진단하기
4 분 소요

PostgreSQL 기초 강좌 #5 EXPLAIN 읽는 법: 실행 계획으로 쿼리 진단하기

쿼리가 느린 이유를 추측이 아니라 실행 계획으로 확인하는 방법을 다룹니다. EXPLAIN과 EXPLAIN ANALYZE의 차이(후자는 실제 실행), 계획 트리를 안쪽부터 읽는 순서, Seq Scan·Index Scan·Index Only Scan·Bitmap Scan의 의미, cost와 actual time·rows의 추정치와 실측치 비교, 추정이 크게 어긋날 때의 처방(ANALYZE), 그리고 BUFFERS로 읽기량을 보는 습관까지 다루겠습니다.

PostgreSQL 기초 강좌 #4 인덱스는 언제 사용되는가
4 분 소요

PostgreSQL 기초 강좌 #4 인덱스는 언제 사용되는가

조회를 빠르게 만드는 인덱스를 PostgreSQL 기준으로 다룹니다. B-tree 인덱스가 조회를 바꾸는 구조, 인덱스를 만들었는데도 사용되지 않는 대표 원인들(선행 컬럼 불일치, 컬럼에 함수 적용, 자료형 불일치, 낮은 선택도), 쓰기 성능과 저장 공간이라는 비용, 그리고 "느린 쿼리의 WHERE·JOIN·ORDER BY를 보고 만든다"는 실무 순서까지 다루겠습니다.

PostgreSQL 기초 강좌 #3 조인과 집계: 읽기 쿼리의 실무 감각
4 분 소요

PostgreSQL 기초 강좌 #3 조인과 집계: 읽기 쿼리의 실무 감각

읽기 쿼리의 실무 8할을 차지하는 조인과 집계를 다룹니다. INNER와 LEFT 조인의 선택 기준과 LEFT 조인 결과를 WHERE로 걸러 INNER로 만들어 버리는 고전적 실수, GROUP BY와 HAVING의 역할 구분, 집계와 조인이 섞일 때의 중복 집계 함정, 서브쿼리와 조인의 갈림길, 그리고 그룹별 최신 1건을 뽑는 PostgreSQL다운 방법(DISTINCT ON)까지 다루겠습니다.

PostgreSQL 기초 강좌 #2 자료형과 테이블 설계: 무엇으로 저장할 것인가
5 분 소요

PostgreSQL 기초 강좌 #2 자료형과 테이블 설계: 무엇으로 저장할 것인가

PostgreSQL 설계의 절반은 자료형 선택입니다. 문자열은 text 하나로 충분한 이유, 돈 계산에서 numeric이 필수인 이유, 시각 저장의 표준인 timestamptz와 timestamp의 함정, 기본 키 전략(bigint IDENTITY vs UUID, 그리고 uuidv7), NOT NULL·CHECK·외래 키로 데이터 무결성을 DB 층에서 지키는 설계, enum과 배열을 쓸 곳까지 다루겠습니다.

PostgreSQL 기초 강좌 #1 PostgreSQL이란: 널리 쓰이는 데이터베이스가 된 이유, 설치와 psql 첫 사용
4 분 소요

PostgreSQL 기초 강좌 #1 PostgreSQL이란: 널리 쓰이는 데이터베이스가 된 이유, 설치와 psql 첫 사용

PostgreSQL이 신규 프로젝트의 기본 데이터베이스가 된 배경부터 시작합니다. 표준 준수와 풍부한 자료형, 확장 생태계(pgvector·PostGIS), 관대한 라이선스라는 선택의 이유, 도커로 로컬에 띄우는 가장 빠른 설치, psql 접속과 메타 명령(\l, \dt, \d)의 기본기, 첫 테이블을 만들고 넣고 조회하는 한 사이클, 그리고 강좌 전체의 지도까지 다루겠습니다.

LLM 환각(할루시네이션): 원인과 실전 대응책
5 분 소요

LLM 환각(할루시네이션): 원인과 실전 대응책

LLM이 그럴듯한 거짓을 자신 있게 생성하는 환각 현상을 정리합니다. 다음 토큰 확률 예측이라는 동작 원리에서 환각이 필연적으로 나오는 이유, 사실 오류·출처 날조·코드 API 환각 같은 유형, RAG와 인용 강제, 도구 사용, 구조화 출력 검증, 평가 파이프라인까지 실무에서 환각을 줄이는 수단들, 그리고 완전히 없앨 수 없다는 전제 위에서 사람 검토 지점을 설계하는 운영 관점까지 다룹니다.

임베딩과 벡터 검색: 의미로 찾는 검색의 동작 원리
5 분 소요

임베딩과 벡터 검색: 의미로 찾는 검색의 동작 원리

RAG와 시맨틱 검색의 기반인 임베딩과 벡터 검색을 한 편으로 정리합니다. 텍스트를 숫자 벡터로 바꾸는 임베딩의 개념, 코사인 유사도로 의미의 가까움을 재는 원리, 전수 조사 kNN과 근사 검색 ANN의 트레이드오프, pgvector·전용 벡터 DB·검색 엔진 확장 중에서 저장소를 고르는 기준, 키워드 매칭에 약한 임베딩의 한계와 하이브리드 검색, 모델 교체 시 전체 재색인 같은 운영 비용까지 다룹니다.

토큰과 컨텍스트 윈도우: LLM 비용과 한계를 결정하는 단위
6 분 소요

토큰과 컨텍스트 윈도우: LLM 비용과 한계를 결정하는 단위

LLM 요금표와 스펙표에 빠지지 않는 토큰과 컨텍스트 윈도우를 한 편으로 정리합니다. 토큰이 어떻게 쪼개지는지, 한국어가 영어보다 토큰을 더 쓰는 이유, 입력·출력 단가가 다른 요금 구조와 대화가 길어질수록 비용이 불어나는 원리, 컨텍스트 윈도우가 실제로 제한하는 것, 긴 컨텍스트의 성능 함정, 프롬프트 캐싱과 히스토리 관리 같은 실무 대응까지 다룹니다.

CDN이 속도를 높이는 방법: 캐시 히트부터 동적 콘텐츠까지
5 분 소요

CDN이 속도를 높이는 방법: 캐시 히트부터 동적 콘텐츠까지

실무자 관점에서 CDN의 동작을 정리합니다. 거리(RTT)를 줄이는 엣지 구조, 캐시 히트율을 결정하는 Cache-Control과 캐시 키, 무효화와 배포 전략, 캐시가 안 되는 동적 콘텐츠까지 CDN이 돕는 방식(TLS 종료·커넥션 재사용), 그리고 히트율을 갉아먹는 흔한 실수들을 다룹니다.

NAT Gateway 요금 절감: 시간당이 아니라 처리 요금이 본체입니다
5 분 소요

NAT Gateway 요금 절감: 시간당이 아니라 처리 요금이 본체입니다

NAT Gateway 청구서를 분해하고 절감 순서를 정리합니다. 시간당·데이터 처리·인터넷 전송이 겹치는 3층 과금 구조, 다운로드에도 처리 요금이 붙는 지점, 무료인 게이트웨이 엔드포인트부터 인터페이스 엔드포인트, IPv6와 NAT 인스턴스까지 이어지는 우회 경로별 손익, 트래픽 주범을 찾는 진단 방법, 멀티 AZ 배치의 비용 구조까지 다룹니다.

DynamoDB vs RDS: AWS 데이터베이스 선택 기준
5 분 소요

DynamoDB vs RDS: AWS 데이터베이스 선택 기준

DynamoDB와 RDS를 가르는 실무 기준을 정리합니다. 키-밸류와 관계형이라는 데이터 모델 차이, 요청당 과금과 인스턴스 시간당 과금이 갈라 놓는 청구서 구조, 액세스 패턴을 먼저 설계해야 하는 DynamoDB의 제약, GSI가 쓰기 비용을 배수로 만드는 함정, 트래픽 패턴으로 가르는 판단 순서와 둘을 병행하는 구성까지 다룹니다.

Redis가 빠른 이유: 메모리, 단일 스레드, 자료구조
5 분 소요

Redis가 빠른 이유: 메모리, 단일 스레드, 자료구조

Redis가 초당 수십만 요청을 처리하는 구조적 이유를 정리합니다. 디스크 없는 메모리 접근, 락이 필요 없는 단일 스레드 이벤트 루프, 목적에 맞게 구현된 자료구조라는 세 기둥과, 단일 스레드의 함정(느린 명령이 전체를 막는 구조), 그리고 Redis가 느려지는 경우까지 다룹니다.