블로그
-
C++ gRPC 운영 기능: 인터셉터, 로드밸런싱, 데드라인 전파, 재시도, 헬스 체크
프로덕션 C++ gRPC 서비스에 필요한 인터셉터 체인, Kubernetes 환경의 round_robin 로드밸런싱, Jitter를 섞은 재시도, Health Checking Protocol과 grpc_health_probe, 그레이스풀 셧다운을 예제로 구현합니다.
-
C++에서 Elasticsearch 8.x 쓰기: libcurl REST API와 Elasticlient
공식 C++ 클라이언트가 없는 Elasticsearch 8.x를 쓰기 위해 libcurl+nlohmann/json 헬퍼와 Elasticlient를 비교하고, 매핑·전문 검색·집계, Bulk 재시도, 스크롤과 search_after, ILM 롤오버, 자주 나는 에러 해결을 C++ 예제로 설명합니다.
-
vcpkg 기초: 설치, Manifest 모드, Triplet, 버전 고정, 오버레이 커스텀 포트
vcpkg를 서브모듈로 추가하고 vcpkg.json Manifest 모드로 의존성을 선언하는 방법, 정적·동적 링크를 가르는 Triplet, builtin-baseline으로 버전을 고정하는 법, 사내 라이브러리를 오버레이 포트로 넣는 법을 예제로 봅니다.
-
X-Macro로 중복 없애기: enum↔문자열 매핑, 에러 코드 표, 상태 머신, 커맨드 테이블
enum과 문자열 배열을 따로 정의하다 한쪽만 고쳐 어긋나는 문제를 X-Macro로 한 곳에서 관리하는 방법을 보여줍니다. enum↔문자열 양방향 변환과 개수 자동 계산, 에러 코드·HTTP 상태 표, 상태 머신 전이 테이블, CLI 커맨드 디스패치 예제를 다룹니다.
-
C++로 작은 DB 엔진 만들기: Pager·B-Tree 저장 엔진, SQL 파서, 실행기, WAL 트랜잭션
페이지 기반 Pager, B-Tree 인덱스, SQL 토크나이저/파서, 실행기, WAL 트랜잭션까지 간단한 DB 엔진의 핵심 구성 요소를 C++로 구현합니다. 풀 스캔 병목, 부분 커밋, WAL fsync 누락 같은 실전 문제 시나리오를 함께 다룹니다.
-
C++ 앱의 DB 쿼리 최적화: 인덱스 선택, 실행 계획, 통계 기반 비용 모델
API 응답이 수 초씩 걸리거나 인덱스가 있는데도 풀 스캔이 나는 문제를 인덱스 설계와 실행 계획 분석으로 풉니다. 복합 인덱스 컬럼 순서, 커버링·부분 인덱스, PostgreSQL·SQLite 실행 계획 읽기, 통계 갱신과 N+1 쿼리 개선을 다룹니다.
-
string_view와 span: 복사 없이 넘기기, SSO와의 관계, mdspan, 댕글링 방지
C++ std::string_view와 std::span 정리. 복사 없이 문자열과 배열을 넘기는 방법, SSO와의 관계, mdspan, 댕글링 참조가 생기는 경우와 방지법, 성능 비교를 다룹니다.
-
time() 대신 std::chrono: duration·time_point, 클럭 선택, duration_cast, C++20 달력
C++ time() 대신 std::chrono로 정확한 시간 측정. duration, time_point, system_clock, steady_clock, duration_cast, 벤치마크·타임아웃·로그 타임스탬프까지 실전 패턴.
-
C++ volatile의 정확한 의미: MMIO 레지스터, ISR 공유 변수, std::atomic과의 차이
C++ volatile의 의미, 메모리 맵 I/O(MMIO), 인터럽트 서비스 루틴(ISR), volatile vs std::atomic 차이, 자주 하는 실수, 프로덕션 패턴까지. 릴리스 빌드에서 사라지는 하드웨어 접근 문제 해결.
-
noexcept로 C++ 이동 연산 최적화하기: 예외 계약 설계 패턴
커스텀 타입을 넣은 vector의 resize가 느린 이유가 이동 생성자에 noexcept가 없어 복사를 고르기 때문이라는 데서 출발합니다. noexcept 지정자와 연산자, move_if_noexcept, 조건부 noexcept, 예외 안전성 보장 수준과 terminate 문제를 다룹니다.