Archives
All the articles I've archived.
-
[26.11.03] 학습: idle connection 유지 비용과 connection pool 크기 조정하기
idle connection의 유지 비용과 생성 지연을 비교해 pool 조정 기준을 정리했습니다.
-
[26.11.02] 학습: 목표와 이유가 드러나도록 글 다듬기
글쓰기 자료에서 배운 관점과, 글의 목적에 맞게 적용하며 달라진 점을 돌아봤습니다.
-
[26.10.30] 알툴즈 AI API의 정책 관리를 위한 코드 역분석과 관리 화면 구성하기
사용 기록을 통합하고, 기능별 한도를 한 표에서 비교하고 수정하도록 구성했습니다.
-
[26.10.29] 학습: 주문 데이터를 여러 DB로 나누기 위한 샤딩 설계하기
샤드 경계와 JPA 라우팅을 정하고, 조회 구조와 데이터 이관으로 분산의 한계에 대응합니다.
-
[26.10.28] ClickHouse 800억 건 집계 비용 줄이기
공통 집계로 조회를 확장하고, 반복 집계와 대시보드 조회의 CPU 및 메모리 비용을 줄였습니다.
-
[26.10.27] ClickHouse 800억 건 적재 비용 줄이기
Splunk 기능 통계의 정확성을 확인하고, 정렬과 인덱스로 보관 용량과 매분 건수 확인 비용을 줄였습니다.
-
[26.10.26] ClickHouse 통합 전 분석과 복구 검토하기
ClickHouse 통계 통합 리뷰의 피드백을 바탕으로 데이터 조합과 원본 복구를 어떻게 검증할지 정리했습니다.
-
[26.10.23] 학습: ArrayList 확장과 GC의 객체 이동 비교하기
Heap dump로 ArrayList의 내부 배열 교체와 G1의 객체 이동을 확인했습니다.
-
[26.10.22] 사내 버셀에 정적 페이지 업로드 API 추가하기
AI가 만든 정적 페이지를 사내 버셀에 배포하도록 기존 배포 과정과 API, 안내 문서를 연결했습니다.
-
[26.10.21] 학습: 조회 패턴에 맞춰 복합 인덱스 설계하기
ESR과 ERS를 기준으로 복합 인덱스의 컬럼 순서를 정하고, 반환 컬럼 추가와 실제 값 길이에 따른 조회 비용을 비교했습니다.
-
[26.10.20] ClickHouse로 300억 건 통계 통합하기
전체 통계 전환을 맡아 통합 구조와 원문 보관, 재처리 시 운영 영향을 정리했습니다.
-
[26.10.19] ClickHouse 100억 건 조회 부하 줄이기
Rill 조회가 DB에 주는 CPU 부하를 줄이려고 요청 처리와 집계 구조를 바꿨습니다.
-
[26.10.16] ClickHouse 100억 건 적재를 위한 수집 조정하기
100억 건의 로그 적재를 위해 ClickHouse를 운영에 적용하며 수집 부하와 CPU, 디스크 사용량을 점검했습니다.
-
[26.10.15] 학습: 알툴즈 AI API의 파일 읽기 방식별 메모리 사용 비교하기
파일 읽기 방식에 따른 메모리 차이를 비교하고, 기존 장애 조치와 소켓 통신 사례를 연결했습니다.
-
[26.10.14] 알툴즈 AI API의 단계적 전환을 위한 API와 데이터 변경 범위 정하기
AI API 전환과 리팩토링 기준, 사내 버셀 런칭 후 활용과 협업 경험을 정리했습니다.
-
[26.10.13] 사내 버셀의 빌드를 분리하고 빌드 결과 기록하기
개발 서버의 외부 접근을 줄이기 위해 빌드를 분리하고, 배포 판단과 장애 확인 방식을 정리했습니다.
-
[26.10.12] 사내 버셀 연동을 위해 LGTM을 직접 관리하기
설정 수정이 막힌 경험을 계기로, 개발팀이 LGTM을 직접 관리하고 Git 기반 배포를 구성합니다.
-
[26.10.09] 알툴즈 AI API의 구독 확장을 위한 판별 책임과 정책 분리하기
구독 정책 분리와 배포 파이프라인의 타임아웃, 장애 격리 방식을 정리했습니다.
-
[26.10.08] 사내 버셀의 포털 사용성 개선과 이용 흐름 분석
포털 진입과 오류 처리를 개선하고 가입, 배포, 체험 링크 클릭을 집계했습니다.
-
[26.10.07] 사내 버셀의 배포와 권한 조회 개선하기
서버 배포를 자동화하고, 권한 조회를 DB로 바꿔 응답 시간 p95를 1.8초에서 0.7초로 줄였습니다.
-
[26.10.06] 사내 버셀의 HTML 배포 지원과 GitHub 조직 초대 자동화하기
공통 배포 절차를 유지하며 HTML 지원을 추가하고, 조직 가입과 초대를 포털에서 처리하도록 바꿨습니다.
-
[26.10.05] 사내 버셀을 Spring으로 통합하기
공통 설정을 재사용하기 위해 Spring을 선택하고, Control API부터 단계적으로 전환합니다.
-
[26.10.02] ClickHouse Merge 증가 원인 분석하기
ClickHouse가 데이터를 읽고 쓰는 방식을 정리하고, 부하테스트에서 병합 횟수가 계속 늘어난 이유와 설정 기준을 찾았습니다.
-
[26.10.01] ClickHouse로 적재 구조 단순화하기
하둡과 집계 스크립트로 처리하던 로그 적재와 집계를 Vector와 ClickHouse로 바꾸는 구조를 정리했습니다.
-
[26.09.30] 로그 수집 방식을 최상·평균·최악의 경우로 나눠 비교하기
『다시, 소프트웨어 엔지니어』 1장을 읽고, 로그 수집 방식 두 가지를 최상·평균·최악의 경우로 나눠 비교했습니다.
-
[26.09.29] 학습: 트랜잭션 유무별 조회와 이벤트 리스너 동작 확인하기
readOnly 조회와 @TransactionalEventListener가 트랜잭션 유무에 따라 어떻게 동작하는지 원문과 Spring 소스로 확인했습니다.
-
[26.09.28] 챌린지 API의 QA 대응을 위한 테스트 도구와 수정 자동화 구성하기
QA 엔지니어를 위한 출석 테스트 환경을 만들고, 할당된 일감의 수정과 검증을 자동화했습니다.
-
[26.09.25] Fluent Bit 설정과 로그 유실 대응 고민하기
Fluent Bit의 공통 설정을 나누고, 재시도 실패·버퍼 한도 초과·강제 종료 때 로그가 얼마나 유실되는지 실험했습니다.
-
[26.09.23] 챌린지 API의 DB 호출 지연 분석을 위한 쿼리 실행과 대기 시간 구분하기
인스턴스별 DB p95와 두 측정값을 비교하고, CFS 스로틀과 네트워크 지연을 구분할 지표를 찾았습니다.
-
[26.09.22] 챌린지 API의 쿼리 지연 분석을 위한 실행 정보 수집 방식 비교하기
느린 쿼리의 실행 정보를 DB와 애플리케이션 중 어디서 뽑을지 실험으로 비교했습니다.
-
[26.09.21] 챌린지 API의 횟수 원장 통합을 위한 보관과 조회 방식 비교하기
압축 실험과 기업 사례를 통해 횟수 원장의 보관, 조회, 삭제 기준을 고민했습니다.
-
2026년 9월 3주차 회고: 챌린지 API 출시와 로그 유실 검증
로그가 사라지는 조건을 시험하고, 출시 전후 성능과 출석 달력의 오류를 확인했습니다.
-
[26.09.18] 이해하기 쉽게 설명하려다 말이 길어질 때
책 1장을 읽고, 상대가 판단하고 행동할 수 있도록 설명의 순서와 범위를 정리했습니다.
-
[26.09.17] 챌린지 API의 출시 후 검증을 위한 운영 지표 점검하기
출시 후 CPU 사용률과 API 응답 시간을 확인하고, 바이브독과 비교해 사내 버셀에 필요한 기능을 정리했습니다.
-
[26.09.16] 챌린지 API의 출석 달력 검증을 위한 회차 경계 테스트 보강하기
회차 마지막 날과 회차 시작일을 구분하고, 출석·연장 전후와 다음 날의 경계값 테스트를 추가했습니다.
-
사내 버셀 구축 - 2단계: 보안 피드백 반영
사내 MVP 플랫폼의 보안 피드백과 격리 설정을 반영한 로컬 Docker 실험 결과를 정리합니다.
-
[26.09.15] 알툴즈 AI API의 OOM kill과 정상 종료 과정 구분하기
OOM kill과 정상 종료에서 요청이 중단되는 조건과 처리 상태별 복구 기준을 설명합니다.
-
[26.09.14] 챌린지 API의 장시간 동작 검증을 위한 30시간 Soak Test 진행하기
30시간 soak test를 마무리하고, FireLens로 Splunk 통계 수집을 일원화하는 PoC를 진행하고 있습니다.
-
2026년 9월 2주차 회고: 챌린지 API 검증과 공항 PoC
출석 설계와 테스트, 공항 PoC, 부하테스트, 독서에서 얻은 판단 기준을 모았습니다.
-
[26.09.11] 챌린지 API의 응답 지연을 줄이기 위한 DB 풀과 서버 CPU 조정하기
부하테스트에서 DB 풀과 서버 CPU를 조정하며 응답 지연을 줄인 과정을 기록했습니다.
-
[26.09.10] 공공데이터로 만든 ‘공항 지금’ PoC
공항 주차·항공편 서비스를 직접 배포하고, 기능을 고른 이유와 구현 과정에서 얻은 판단을 정리했습니다.
-
[26.09.09] 챌린지 API의 조건별 검증을 위한 경계값 테스트 설계하기
출석 리워드의 복잡한 조건을 변수와 경계값으로 나눠 테스트를 설계했습니다.
-
[26.09.07] 챌린지 API의 화면 선택을 위한 출석과 리워드 상태 구분하기
출석과 리워드의 상태 조합을 정리하고, 서버에서 화면을 선택하도록 바꿨습니다.
-
2026년 9월 1주차 회고: MVP 플랫폼 구축과 챌린지 API 설계 의사결정
개인 홈 서버에서 사내 버셀을 만들며 책임과 실행 단위를 나누고, 실무지식 7장에서 IO 병목과 자원 효율을 공부한 기록입니다.
-
사내 버셀 구축 - 1단계: 홈 서버 구축
Updated:개인 홈 서버에 사내 버셀을 만들고 프로젝트 생성부터 빌드, 테스트, Preview 배포와 복구까지 연결했습니다.
-
2026년 8월 4주차 회고: 동시성 제어와 CDC 컨슈머 최적화
동시성 제어의 선택 기준을 정리하고, CDC 컨슈머 처리량을 초당 3만 건에서 8만 건으로 높인 한 주의 기록입니다.
-
[26.08.24] 학습: CDC 컨슈머 처리량을 초당 3만 건에서 8만 건으로 올리기
로컬에 Debezium과 MySQL binlog로 CDC 파이프라인을 만들고 초당 19만 건을 넣어 lag을 115만까지 쌓았다. 설정과 코드를 하나씩만 바꿔 재면서 컨슈머 병목을 찾은 기록이다.
-
2026년 8월 3주차 회고: DND 세미나 발표와 실무지식 5장
오픈소스 기여 경험을 20명 가까운 참여자 앞에서 발표했다. 커리어에 도움이 되는지를 육각형 여섯 축으로 나눠 본 기록과 실무지식 5장 정리입니다.
-
2026년 8월 2주차 회고: JVM 네이티브 메모리 추적기 3편
MALLOC_ARENA_MAX=4를 운영에 넣고 RSS 증가가 멎었다. 『주니어 백엔드 개발자가 반드시 알아야 할 실무지식』 4장 정리도 함께 담은 기록입니다.
-
알툴즈 AI API의 JVM 네이티브 메모리 추적기: 힙 밖 1.2GB를 추적한 방법
힙은 정상인데 RSS가 계속 늘었다. glibc가 해제된 메모리를 OS에 반환하지 않는 원인을 찾고, 설정을 바꿔 확인한 과정을 정리했다.
-
설계 노트: 재고 원장과 스냅샷으로 동시성 다루기
커머스 시스템 설계 스터디에서 논의한 재고 관리 구조를 정리했습니다. 원장 방식을 선택한 이유와 한계, 스냅샷을 차용하며 지켜야 할 원칙을 다룹니다.
-
설계 노트: 포인트 차감과 결제 사이의 정합성 다루기
시스템 설계 스터디에서 논의한 포인트 차감과 PG 결제의 순서, 보상 조치, 멱등성과 정합성 보정 전략을 정리했습니다.
-
2026년 8월 1주차 회고: JVM 네이티브 메모리 추적기 2편
NMT 밖 1GB는 앱이 쓰는 메모리가 아니었다. free된 메모리를 반환하지 않는 glibc를 로컬 실측으로 증명한 기록입니다.
-
2026년 7월 4주차 회고: 『주니어 백엔드 개발자가 반드시 알아야 할 실무지식』 2장
『주니어 백엔드 개발자가 반드시 알아야 할 실무지식』 2장을 읽고 응답 시간·처리량·커넥션 풀·캐시를 정리한 기록입니다.
-
2026년 7월 3주차 회고: JVM 네이티브 메모리 추적기 1편
힙은 2GB인데 RSS는 3.7GB. 나머지를 추적하다 내 가설이 틀렸다는 걸 확인한 기록입니다.
-
이미지 확장(아웃페인팅) 기능 PoC — 작은 모델로 품질 끌어올리기
아웃페인팅 PoC에서 20B 모델의 메모리 한계에 막힌 뒤, 1/5 크기인 FLUX.2 Klein 4B에 배경 캡션과 2-pass 파이프라인을 얹어 품질을 확보한 기록입니다.
-
파일 전송 처리량을 높이기 위한 Nginx와 Spring 역할 나누기
스토리지 서비스 벤치마크에서 Nginx와 Spring Boot의 역할을 분리하고 속도와 안정성 사이의 균형을 찾아간 기록입니다.
-
외부 API 호출 시 커넥션 끊김 대응기 — RST, FIN, 그리고 커넥션 풀의 한계
Cloudflare가 idle 커넥션을 선제적으로 끊어 발생한 Connection reset by peer 에러를 커넥션 풀 설정으로 대응하며 RST와 FIN의 차이, eviction race condition, 풀 타입까지 파고든 기록입니다.
-
클라우드 GPU 비용을 줄이기 위한 사내 GPU 서버 구축하기 - 1편
클라우드 GPU 비용을 줄이기 위해 로컬 PoC와 개발 서버 AI Platform 구축을 거쳐 온프레미스 GPU로 전환하고, GPU 코어가 진짜 병목임을 확인한 기록입니다.
-
2025년 연간 회고
경험의 밀도를 높이며 방황을 성장으로 바꿔온 한 해의 기록.
-
우아콘에서 얻은 아이디어를 n8n 자동화로 검증하기
우아콘에서 얻은 AI 에이전트 아이디어를 파일 병합, 코드 리뷰, 에러 분석 자동화에 적용하며 품질 조건을 찾아간 기록입니다.
-
토스 고양이 키우기를 참고한 게이미피케이션 PoC
게이미피케이션 적용을 시도하며 Event Sourcing과 CQRS, 이벤트 기반 모듈 분리의 필요성을 배운 PoC 기록입니다.
-
UPSERT, INSERT IGNORE 사용기 - 상태 변경과 멱등성 관리
포인트 이력 관리에서 겪은 동시성과 성능 문제를 UPSERT와 INSERT IGNORE로 해결하며 상태 변경과 멱등성을 다룬 기록입니다.
-
온라인 추첨 서비스 사이드 프로젝트 회고
온라인 추첨 서비스의 문제를 정의하고 제품 가설을 검증하면서 인증, 인프라, 바이브코딩까지 경험한 사이드 프로젝트 회고입니다.
-
유지보수하기 쉬운 객체지향 코드 만들기
책임 주도 설계 강의를 통해 객체의 협력과 메시지, 응집도와 결합도, 필요한 만큼만 설계하는 기준을 정리한 기록입니다.
-
켄트 벡의 Tidy First?로 배운 점진적인 코드 정리
책과 강연을 통해 동작 변경과 구조 변경을 구분하고, 작은 코드 정리를 지속하는 판단 기준을 세운 기록입니다.
-
외부 API 연동의 정합성, 분산락, 그리고 테스트 전략
포인트 전환 시스템을 개선하며 겪은 정합성, 보상 트랜잭션, 분산락 점유 시간 문제와 해결 과정을 정리한 기록입니다.
-
어깨너머 성과지표 배워보기 - 29cm 편
29cm 배송비 시스템 구축기를 읽고 성공 지표와 성과 지표 설계 방식을 학습해 내 업무에 적용해본 기록입니다.
-
리버스 엔지니어링으로 MSA 환경 개선하기
다른 회사의 마이크로서비스 전환 사례를 리버스 엔지니어링해 우리 MSA 환경의 모호한 경계, 서비스 의존성, 관리 부담 문제를 개선해 본 기록입니다.
-
2024년 연간 회고
구조를 다루고, 강점 분석으로 나를 잘게 쪼개 이해하려 한 해의 기록.
-
분산락을 큐로 대체할 수 있을까
분산락의 한계를 큐로 풀 수 있는지 직접 구현, Redis Streams, RabbitMQ 순으로 부하 테스트하고 PoC로 마무리한 기록입니다.
-
2023년 연간 회고
성능을 근거로 증명하려 했고, 하나의 서비스를 런칭부터 운영까지 책임진 해의 기록.