TIL 35
- 벡터 검색만으로 AI의 기억을 만들 수 있을까: OpenHuman의 Memory Tree
- .env에 넣으면 안전할까? 비밀값 관리와 1Password·Bitwarden
- AI 에이전트는 어떻게 판단하고 행동할까: LLM, 도구, 관찰, 반복 구조
- Spec-kit만으로는 부족했다: 팀 병렬 개발을 위한 SDD 문서 구조 설계
- RAG 청킹 전략 비교: 문서를 길이로 자를까, 의미로 자를까?
- RAG는 LLM에게 지식을 학습시키는 기술이 아니다
- MVP는 기능을 줄이는 것이 아니라 가설을 줄이는 과정이다
- 클린 코드를 읽고, 읽기 쉬운 코드의 기준이 달라졌다
- 실무에서 PostgreSQL을 선택하는 이유: 데이터 정합성과 JSONB를 중심으로
- 포인트 결제 동시성은 어디서 막아야 할까: 조건부 UPDATE부터 Redis 분산 락까지
- 단일 Redis 장애에서 Sentinel까지: Primary-Replica와 자동 Failover 이해하기
- 대용량 트래픽 처리는 서버를 늘리는 것부터 시작하지 않는다
- 기록을 저장하는 것에서 연결하는 것으로: 온톨로지와 AI 세컨드 브레인
- Kafka 재처리와 DLT는 예외 처리가 아니라 운영 설계다
- Kubernetes를 명령어가 아니라 조정 루프로 이해하기
- RAG의 핵심은 생성이 아니라 검색이다
- Nginx를 단순 프록시가 아니라 배포 전환 지점으로 이해하기
- Docker Compose 다음에 Kubernetes가 필요한 이유
- Nginx는 왜 Spring Boot 앞단에 있을까?
- JWT 인증 필터에서 검증 책임을 분리한 이유
- k6로 성능 테스트를 코드로 관리하기
- AI가 코드를 만드는 시대, 개발자는 무엇을 검증해야 할까
- 코드보다 먼저 명세를 정리한다는 것
- AI 에이전트가 브라우저를 사용한다는 것의 의미
- PortOne 결제 연동에서 배운 보상 트랜잭션 설계
- 배포 자동화와 오토스케일링은 어떻게 연결될까?
- 사용자의 요청은 AWS 내부에서 어떻게 처리될까?
- 실전 클라우드 배포와 운영: 내가 마주한 기술적 고민과 해결책
- 왜 컨테이너만으로는 부족할까?
- Docker 이미지는 정말 OS일까?
- 컨테이너는 어떻게 격리될까?
- VM과 컨테이너는 무엇이 다를까?
- 자바의 구동 원리: JDK, JVM 그리고 플랫폼 독립성
- AI보다 먼저 '에러 메시지'를 믿어야 하는 이유 (feat. JSON Syntax Error)
- 개발 효율을 높이는 API 명세서 작성의 5단계 원칙