모든 포스트

PostgreSQL 실전 강좌 #4 인덱스 전략 심화: 부분·복합·커버링, 그리고 GIN·BRIN
4 분 소요

PostgreSQL 실전 강좌 #4 인덱스 전략 심화: 부분·복합·커버링, 그리고 GIN·BRIN

기초 4편의 B-tree 기본기 위에 실전 전략을 쌓습니다. WHERE 조건까지 인덱스에 넣는 부분 인덱스, 테이블 접근을 생략하는 커버링 인덱스(INCLUDE)와 Index Only Scan의 조건, B-tree 밖의 선택지(GIN·GiST·BRIN)를 고르는 기준, 안 쓰는 인덱스를 pg_stat_user_indexes로 찾아 정리하는 법, 인덱스 블로트와 REINDEX CONCURRENTLY까지 다루겠습니다.

Rust 실전 강좌 #4 이터레이터 실전: 집계와 top-N, 그리고 release 빌드의 차이
4 분 소요

Rust 실전 강좌 #4 이터레이터 실전: 집계와 top-N, 그리고 release 빌드의 차이

파서 위에 분석을 올립니다. 파싱 실패를 세면서 성공만 흘려보내는 집계 구조, HashMap entry로 만드는 상태 코드 분포, 정렬로 뽑는 top-N, 커맨드 두 개(stats·top)의 완성, 그리고 Instant로 직접 재 보는 debug와 release 빌드의 성능 차이(왜 수십 배가 나는지, 왜 release가 기본값이 아닌지)까지 다루겠습니다.

SRE 실무 #2 에러 버짓 운영: 정책 문서와 번 레이트
5 분 소요

SRE 실무 #2 에러 버짓 운영: 정책 문서와 번 레이트

에러 버짓을 개념에서 운영 도구로 바꾸는 방법을 다룹니다. 버짓이 소진됐을 때 무엇을 할지 장애가 나기 전에 합의해 두는 에러 버짓 정책 문서, 피처 동결이 실제로 작동하기 위한 경영진 합의, 버짓이 줄어드는 속도를 나타내는 번 레이트의 계산, 빠른 소진과 느린 소진을 구분해서 대응하는 법, 릴리스 판단에 버짓을 연결하는 실무 패턴까지 다룹니다.

테라폼 기초 강좌 #5 state의 정체: tfstate 파일 구조와 plan이 변경을 계산하는 원리
5 분 소요

테라폼 기초 강좌 #5 state의 정체: tfstate 파일 구조와 plan이 변경을 계산하는 원리

terraform.tfstate 파일을 직접 열어 구조를 확인하고, plan이 코드, state, 실제 인프라 세 가지를 비교해 변경을 계산하는 원리를 정리합니다. state에 민감 정보가 평문으로 남는 문제와 커밋 금지 규칙, state list와 show, mv, rm 같은 조작 명령, state를 잃었을 때 일어나는 일까지 다루겠습니다.

PostgreSQL 실전 강좌 #3 성능 진단 루틴: pg_stat_statements로 느린 쿼리 찾기
4 분 소요

PostgreSQL 실전 강좌 #3 성능 진단 루틴: pg_stat_statements로 느린 쿼리 찾기

"DB가 느려요"에서 출발해 범인 쿼리까지 도달하는 표준 루틴을 만듭니다. 지금 무슨 일이 벌어지는지 보는 pg_stat_activity(활성 쿼리·대기·오래 걸리는 트랜잭션), 누적 통계로 비싼 쿼리를 찾는 pg_stat_statements의 설치와 핵심 컬럼(total_exec_time·mean_exec_time·calls), 총합 상위와 평균 상위의 다른 의미, 느린 쿼리 로그(log_min_duration_statement) 설정, 그리고 EXPLAIN으로 넘기는 연결까지 다루겠습니다.

Rust 실전 강좌 #3 파일 IO와 파싱: BufReader로 읽고, 로그 한 줄을 구조체로
4 분 소요

Rust 실전 강좌 #3 파일 IO와 파싱: BufReader로 읽고, 로그 한 줄을 구조체로

대용량 파일을 다루는 두 가지 기본기를 세웁니다. 전체를 메모리에 올리는 read_to_string과 줄 단위로 흘리는 BufReader의 선택 기준, 시스템 콜과 버퍼링의 관계, 액세스 로그 한 줄을 LogEntry 구조체로 바꾸는 파서(따옴표 처리, 상태 코드 변환, 2편 ParseError의 실전 투입), 그리고 serde로 JSON Lines 로그까지 받는 확장을 다루겠습니다.

SRE 실무 #1 SLI·SLO 설계: 무엇을 측정하고 몇 9를 약속할 것인가
6 분 소요

SRE 실무 #1 SLI·SLO 설계: 무엇을 측정하고 몇 9를 약속할 것인가

SRE 실무 시리즈의 첫 편으로 SLI와 SLO를 실제로 설계하는 과정을 다룹니다. 사용자 여정에서 측정 대상을 고르는 법, 좋은 SLI가 good/total 비율 형태인 이유, 로드밸런서·서버·클라이언트 중 어디서 측정할지의 트레이드오프, SLO 수치를 현재 성능에서 출발시켜야 하는 이유, 측정 창 선택, 그리고 SLO 명세 문서에 반드시 적어야 할 항목까지 다룹니다.

테라폼 기초 강좌 #4 데이터 소스와 표현식: 만들지 않고 읽어 오기, 조건식과 for
4 분 소요

테라폼 기초 강좌 #4 데이터 소스와 표현식: 만들지 않고 읽어 오기, 조건식과 for

테라폼이 만들지 않은 기존 리소스의 정보를 읽어 오는 data 블록을 최신 AMI 조회 예제로 다루고, 조건식으로 환경별 분기를 만들고 for 표현식과 스플랫으로 리스트와 맵을 가공하는 방법을 정리합니다. 자주 쓰는 내장 함수와 표현식 실험장인 terraform console까지 다루겠습니다.

PostgreSQL 실전 강좌 #2 커넥션 풀: max_connections의 오해와 PgBouncer
4 분 소요

PostgreSQL 실전 강좌 #2 커넥션 풀: max_connections의 오해와 PgBouncer

트래픽이 늘면 반드시 만나는 커넥션 문제를 다룹니다. PostgreSQL 커넥션이 프로세스 하나라서 비싼 이유, max_connections를 올리는 것이 답이 아닌 이유(많은 커넥션은 오히려 처리량을 떨어뜨립니다), 애플리케이션 풀과 PgBouncer 같은 외부 풀러의 역할 분담, PgBouncer transaction 모드의 효과와 제약(세션 상태 기능 사용 불가), 그리고 적정 풀 크기의 감각까지 다루겠습니다.

Rust 실전 강좌 #2 에러 설계: anyhow와 thiserror, 죽는 방법을 설계한다
5 분 소요

Rust 실전 강좌 #2 에러 설계: anyhow와 thiserror, 죽는 방법을 설계한다

CLI 도구에서 에러 메시지는 사용자 인터페이스의 일부입니다. 애플리케이션 계층의 기본값인 anyhow(main이 anyhow::Result를 반환, context로 맥락 쌓기)와 라이브러리 계층의 thiserror(호출자가 종류로 분기할 수 있는 구체 에러 타입)의 역할 분담, 두 크레이트를 고르는 판단 기준, 그리고 종료 코드까지 loglens의 에러 경로를 설계하겠습니다.

테라폼 기초 강좌 #3 변수·출력·로컬 값: 하드코딩을 걷어내는 세 가지 도구
4 분 소요

테라폼 기초 강좌 #3 변수·출력·로컬 값: 하드코딩을 걷어내는 세 가지 도구

variable 블록으로 값을 코드 밖으로 빼내는 방법과 tfvars 파일, -var 플래그, 환경 변수라는 네 가지 입력 경로의 우선순위를 정리합니다. validation으로 잘못된 값을 입구에서 막고, output으로 결과를 꺼내고, locals로 내부 계산에 이름을 붙이는 것까지, 같은 코드로 여러 환경을 만드는 기반을 다지겠습니다.

파이썬 3.14 새 기능 정리: t-string, 지연 어노테이션, 프리스레딩 공식 지원
5 분 소요

파이썬 3.14 새 기능 정리: t-string, 지연 어노테이션, 프리스레딩 공식 지원

2025년 10월 릴리스된 파이썬 3.14의 실무 관점 변화를 정리합니다. f-string과 닮았지만 템플릿 객체를 만드는 t-string, 기본 동작이 된 어노테이션 지연 평가, 실험 딱지를 뗀 프리스레딩(GIL 제거) 빌드의 의미, 표준 라이브러리에 들어온 다중 인터프리터와 Zstandard 압축, 괄호 없는 except 문법, 원격 디버깅 인터페이스까지, 업그레이드 전에 알아둘 것들을 다룹니다.