아버지의 '참회' 시를 읽으며
아버지께서 쓰신 시 ‘참회(懺悔)’ 의 전문과 내가 적은 짧은 감상문.
아버지께서 쓰신 시 ‘참회(懺悔)’ 의 전문과 내가 적은 짧은 감상문.
Rust + Python + React 로 개발하고 있는 개인 자동매매 플랫폼의 중간 회고. ETF 리밸런싱과 개별 종목 시그널 매매까지 기능은 갖췄지만, 운영 진입 전에 안전 잠금장치(중지/차단/감지/시뮬레이션)부터 만들게 된 경위 기록.
백테스트 결과가 운인지 전략 때문인지 정량적으로 가르는 Walk-forward 분석의 구조, IS-OOS 성과 차이와 파라미터 안정성 측정, 모멘텀 lookback 튜닝 케이스, 그리고 분석의 한계.
종합·ISA·연금저축·IRP 네 계좌의 핵심 제약(비과세, 세액공제, 위험자산 70% 룰, 해외 직투 가능 여부), 전략-계좌 매핑, 그리고 세후 수익에 미치는 영향.
Look-ahead Bias와 Survivorship Bias 두 함정의 구체 케이스 — 모멘텀 전 구간 정규화, 재무 공시 지연, 종가 체결, S&P 500 시점 구성, 무료 API의 한계 — 그리고 회피 체크리스트.
여러 자산의 비중을 어떻게 결정할지의 수학적 토대인 마코위츠 평균-분산 모델, 효율적 프론티어 위의 두 가지 최적해(Min-Variance, Tangency), 그리고 실무에서 모델이 무너지는 지점과 보정 방법을 정리한다.
MSA 는 서비스를 어느 기준으로 가를 것인가의 결정이다. 도메인 경계, 데이터 소유권, 스케일 패턴, 장애 격리 — 어느 것을 우선하느냐가 경계를 만들고 통신과 데이터를 차례로 결정한다.
ES 와 CQRS 는 시스템의 원본 데이터와 그 표현의 분리를 다룬다. 도입 비용이 시스템 전반에 분산되므로 채택 가치를 명시할 수 있을 때 채택할 만하다고 본다.
분산 트랜잭션은 모놀리스의 단일 ACID 트랜잭션이 분산 환경에서 어떻게 분해되고, 그 조각을 어떻게 재조립하는가의 문제다. 2PC, Saga (Choreography vs Orchestration), Outbox 의 역할과 트레이드오프.
settings.json, CLAUDE.md, slash commands, subagents, hooks. Claude Code 커스터마이징 표면은 ‘언제 개입하는가’라는 축 하나로 네 레이어로 정돈된다.
alacritty + tmux + nvim + zsh + Claude Code 다섯 도구로 구성한 터미널 중심 개발 환경. 각 도구의 선택 이유와 조합 방식을 정리한다.
좋은 엔지니어는 기술을 잘 아는 사람이 아니라, 그 기술을 팀과 나눌 수 있는 사람이라는 것을 알게 되었다.
운영 중인 DB의 민감 정보를 컬럼 레벨로 암호화한 작업 회고. 봉투 암호화 도입, DEK 관리 단위 결정, WHERE 절 제약과 HMAC 우회, 마이그레이션 자동화 Skill까지.
사내 해커톤 회고. 본인이 제안한 아이디어가 팀과 함께 발전해 1등 + 사내 런칭으로 이어진 과정과, AI 도구를 본격 활용하기 시작한 출발점이 된 경험.
JIRA의 이슈와 워크플로우를 작업 단위의 그래프로 보고, Sprint 라이프사이클·이슈 계층·Git/GitHub 연동 패턴·자동화 흐름을 정리한다.
GitHub Actions를 저장소 이벤트 기반 자동화 엔진으로 보고, workflow / job / step 3단 추상과 trigger·runner·secret 운영을 정리한다.
GitHub PR을 Git 변경 그래프 위에 협업 레이어를 더한 추상으로 보고, Code Review 사이클·PR 단위 설계·머지 전략을 정리한다.
Git을 명령어 모음이 아닌 변경의 그래프로 보고, commit hygiene·branch strategy·merge vs rebase 결정이 그래프 모양에 대한 선택임을 정리한다.
Security Group(stateful, 인스턴스 단위)과 NACL(stateless, Subnet 단위)이 어떻게 서로 다른 계층의 방어선을 만드는지, 그리고 흔한 함정 시나리오를 정리한다.
VPC 간/온프레미스/서비스 연결을 책임지는 4가지 메커니즘 — Peering, Transit Gateway, Site-to-Site VPN, PrivateLink — 의 토폴로지와 비용 트레이드오프를 정리한다.
외부 SSP 연동 광고 서비스에서 성과가 낮은 인벤토리를 자동으로 식별하고 트래픽을 제한하여 공헌이익을 개선한 프로젝트 회고. Imp Cost Ratio 에서 예측 공헌이익률 기반으로 접근법이 진화한 과정.
VPC 안의 트래픽 경로를 결정하는 Route Table, 외부 출입구 역할의 Internet Gateway와 NAT Gateway, Public/Private Subnet 구분의 실체를 정리한다.
VPC가 IP CIDR, Subnet, Tenancy 세 요소를 조합해 사설 네트워크 경계를 시뮬레이션하는 원리를 정리한다. AWS/GCP/Azure/Alibaba 벤더 명칭 매핑 포함.
가격 움직임을 읽는 기술적 지표(RSI, SMA Cross, MACD, Bollinger Bands)의 공식과 해석, 복합 시그널 설계, 그리고 세 가지 전략 유형의 시간축 비교를 정리한다.
개별 지표를 종합 점수로 만드는 팩터 스코어링(Z-Score, Rank)과, 포트폴리오를 구성하고 운용하는 리밸런싱·자산 배분의 기초를 정리한다.
전략의 성과를 측정하는 CAGR, MDD, Sharpe Ratio 등의 공식과 해석, 그리고 백테스트 결과를 의심해야 하는 다섯 가지 함정을 정리한다.
과거 수익률 추세(모멘텀)와 배당수익률이 팩터 투자에서 어떤 역할을 하는지 정리한다.
기업이 싼지(밸류에이션)와 잘 버는지(퀄리티)를 판단하는 지표 — PER, PBR, PSR, ROE, ROA, 부채비율의 공식과 해석을 정리한다.
퀀트 투자의 출발점인 OHLCV 데이터, 단순 수익률과 로그 수익률의 차이, 시가총액의 의미를 정리한다.
이중 쓰기와 fallback 읽기를 조합하여 운영 중인 서비스의 데이터 형식을 무중단으로 전환하는 3단계 패턴을 정리한다.
봉투 암호화의 CMK/DEK 2중 키 구조가 키 유출 영향을 제한하고 키 회전을 단순화하는 원리를 정리한다.
AI 배경이 없는 백엔드 엔지니어로서 광고 Fallback CTR을 위한 첫 ML Lifecycle 3단 구조를 만들며 내린 기술 결정들과, 운영 끝에 배운 것들.
MLflow의 네 조각이 ML Lifecycle의 어느 칸을 메우는지, 그리고 경량 팀이 그 중 어떤 조각을 고를 수 있는지.
Circuit Breaker 의 차단 트리거와 회복 전략은 함께 설계되어야 한다. 회복 없는 차단은 의존성을 영구히 끊고, 차단 기준 없는 회복은 무의미한 cycling 이다.
Rate Limit 알고리즘을 고르기 전에, 어느 계층에서 보호할지가 먼저 알고리즘의 선택지를 좌우한다. L4/L7/Application 계층과 Token/Leaky/Sliding/Fixed 알고리즘의 교차 관계를 정리한다.
외부 이벤트로 광고 트래픽이 급증하면서 cascading failure 가 발생했다. 진짜 문제는 필터링 컴포넌트가 단일 장애점이었고 fallback 까지 그 위에 묶여 있어서 한 곳의 무너짐이 양쪽의 동시 붕괴로 이어졌다는 것이었다. 개선은 세 갈래 — fallback 의 의존 제거(독립화), 필터링 컴포넌트에 Rate Limit(보호), 그리고 런타임 재검토(처리량 증대).
sklearn과 ONNX는 같은 레이어의 경쟁자가 아니다. 두 도구의 자리를 분리해서 보면 ‘ONNX 레이어가 필요한가’라는 질문이 자연스럽게 남는다.
CTR 예측의 baseline으로서 Logistic Regression의 구조와 특성을 정리한다. 오래된 모델이 여전히 baseline 으로 쓰이는 이유.
배포는 이틀 전에 끝났지만 변경점은 적용되지 않은 채 잠재해 있었다. 캐시 갱신 배치를 끄는 순간 광고 서빙이 멈췄다. 배포 변경점 검증의 부재를 회고한다.
Container 오케스트레이션의 기본 구조와 백엔드 개발자가 알아야 할 핵심 오브젝트, 네트워크, 스케일링, 운영 방법을 정리한다.
Go의 동시성 모델은 CSP를 기반으로 Goroutine과 Channel을 핵심 도구로 제공한다. 각 도구의 동작 원리와 선택 기준을 정리한다.
Go의 동시성 패턴 세 가지(mutex, channel, lock-free)를 직접 구현하고 벤치마크하며 체화한 과정의 기록.
같은 NoSQL 우산 아래에서 MongoDB 와 Redis 가 서로 다른 역할로 자리잡은 이유. 데이터 모델·스토리지·스키마·확장·사용 사례를 기준으로 비교 정리.
실무에서 깊이 다루기 어려웠던 Kafka와 Hexagonal Architecture를 채팅 시스템 개인 프로젝트로 직접 설계하고 구현한 과정의 기록.
Spring MVC는 요청당 스레드를 할당한다. I/O 대기가 길어지면 스레드가 묶인다. WebFlux는 이벤트 루프 기반 논블로킹 모델로 이 문제를 해결한다. MVC와의 구조적 차이, Reactor 패턴, 선택 기준을 정리한다.
HTTP/1.1은 요청과 응답이 순차적이다. HTTP/2는 멀티플렉싱, 바이너리 프레이밍, 헤더 압축으로 이 구조를 바꿨다. 두 프로토콜의 차이와 HTTP/2 위에서 동작하는 gRPC의 특성을 정리한다.
Container의 개념과 VM과의 차이를 정리하고, Docker의 아키텍처, Dockerfile, Docker Compose의 기본 사용법을 설명한다.
코드를 기술 계층별로 나누는 수평 분할과, 기능/도메인별로 나누는 수직 분할의 차이를 정리한다. 각각의 장단점과 선택 기준.
레거시 광고 서버를 제거하면서 Nest.js 기반 fallback 서버를 새로 설계한 과정. 단일 API에 복잡한 비즈니스 로직이 집중된 구조에서 수평 계층 아키텍처를 선택한 배경과 결과.
Nest.js는 Node.js 생태계에서 DI 컨테이너와 Module 시스템을 프레임워크 수준에서 제공한다. IoC, DI, Module, Provider 등 핵심 설계 원칙을 정리한다.
레이어드 아키텍처는 기술적 책임 기준으로 코드를 수평 계층으로 나눈다. 4계층 구조의 각 역할, 의존성 방향 규칙, DIP로 계층 간 결합을 끊는 방법을 정리한다.
Kafka의 핵심 개념(토픽, 파티션, 컨슈머 그룹, 복제)을 정리하고, ZooKeeper 의존성을 제거한 KRaft 모드의 등장 배경을 설명한다.
Hexagonal Architecture의 핵심 개념과 Go에서의 관용적 구현. 암묵적 인터페이스와 패키지 구조를 활용한 의존성 방향 제어.
Builder 는 생성자의 세 가지 한계가 동시에 모일 때의 해결책이다. 매개변수 수가 많고, 일부가 선택적이고, 단계적 검증이 필요한 경우. 셋이 같이 모이지 않으면 다른 도구로 충분하다. 언어가 named/default 매개변수를 제공하면 Builder 의 필요도 자연스럽게 줄어든다.
Factory 의 공통 의도는 객체 생성과 사용의 분리다. 세 변형 (Factory Method / Abstract Factory / Static Factory Method) 은 분리 방식이 다르고 적합한 상황도 다르다. 실무에서는 Static Factory Method 가 가장 자주 쓰이고, DI 컨테이너가 등장하면 명시적 Factory 의 일부 역할이 컨테이너로 흡수된다.
Singleton 은 가장 단순한 패턴이지만 안티패턴 논란의 대표 사례다. 단일 인스턴스 보장과 전역 접근을 한 패턴에 묶은 결정이 강한 결합과 테스트 어려움의 원인. DI 가 두 의도를 분리한 일반 대안이다.
DIP(원칙), IoC(패턴), DI(기법)는 서로 다른 추상 수준에 있는 개념이다. 위계를 분명히 봐야 프레임워크 기능과 설계 원리가 섞이지 않는다.
전량 갱신 방식의 캐시를 변경분만 갱신하도록 전환하는 패턴. 데이터를 성격별로 분리하고 변경 감지 전략을 적용하여 네트워크 비용을 줄이는 구조를 정리한다.
변경이 드문 캠페인 설정 데이터를 전량 갱신하던 캐시 구조를 개선하여 네트워크 비용을 줄이고 인스턴스를 스케일 다운한 과정을 기록한다.
RDB 트랜잭션의 ACID 4개 속성이 실제로 무엇을 보장하는가. A/C/D 는 비교적 명확한 보장이지만 I 만 ‘단계’ 가 존재하는 이유 — 정확성과 동시성의 트레이드오프 도입.
고정 규칙으로 동작하던 광고 예산 페이싱을, 캠페인별 학습과 실시간 보정의 2계층 제어 구조로 옮긴 회고. 캠페인 특성의 다양성을 어떻게 자동 흡수하게 만들었는가.
Rust Book Chapter 20의 멀티스레드 HTTP 서버를 따라 구현하며 소유권과 동시성이 타입 레벨에서 강제되는 것을 체감한 기록.
백엔드 개발에서 자주 마주치는 두 전송 프로토콜, TCP와 UDP의 동작 원리를 정리한다. 연결 수립, 신뢰성 보장, 흐름/혼잡 제어 메커니즘과 선택 기준.
딥페이크 기반 얼굴 합성 밈 서비스 SwapDo. 창업 팀에 합류해 백엔드와 Android 앱 개발을 맡았던 5개월의 기록.
HTTP는 stateless다. 사용자 인증을 유지하려면 상태를 어딘가에 저장해야 한다. 서버에 저장하는 세션 방식과 토큰에 담아 클라이언트에 위임하는 JWT 방식의 구조, 트레이드오프, 저장 전략을 정리한다.
예전부터 가끔 하던 롤에서 시작된 창업. 아키텍처 설계부터 데스크톱 앱까지, 2명이 시작해 10,000 유저의 서비스를 만들어간 5개월의 기록.
GDG Korea Android 11 끝장개발대회에 단독으로 참가해 서버와 앱을 3주 만에 완성한 기록.
철도산업정보센터 주최 공공데이터 활용 대회. 지하철 역의 숨은 휴식 공간을 알려주는 Android 앱을 3주간 3명이 만든 기록.