다음은 개발자와 AI 간의 오늘 하루 대화 로그야. 이 로그를 분석해서 내가 하루 동안 무엇에 집중하고 시간을 썼는지 한눈에 파악할 수 있도록 Obsidian 마크다운 형식으로 요약해줘.
📅 일간 개발 로그 요약 (2026-03-11)
1. 작업 분포
| 카테고리 | 비중 | |
|---|---|---|
| 백엔드/프론트엔드 개발 및 디버깅 | 35% | ████░░░░░░ |
| 인프라 구성 및 트러블슈팅 (Terraform/AWS) | 25% | ███░░░░░░░ |
| 프로젝트 기획 및 문서화 (API/DB 설계) | 20% | ██░░░░░░░░ |
| 시스템 운영 및 툴링 (로그/스크립트) | 15% | ██░░░░░░░░ |
| 기술 학습 (AWS, Kubernetes) | 5% | █░░░░░░░░░ |
2. 집중 영역 / 시간 소모 포인트
🟢 생산적 작업
- Mock PG 및 멱등성 아키텍처 구현: 비동기 결제 처리, 콜백 시나리오 테스트를 완료하고,
checkoutId기반의 멱등성 로직을 백엔드/프론트엔드에 적용하여 데이터 정합성을 확보함. - 인프라 마이그레이션 및 안전장치 강화: EC2 내부 DB를 AWS RDS/ElastiCache로 이관하는 Terraform 코드를 작성하고 배포함.
terraform실행 시-auto-approve를 차단하는 래퍼 스크립트를 개선하여 운영 안전성을 높임. - 로그 시스템 최적화: 10GB에 달하는
.claude폴더 용량 문제를 분석하고, 로그 수집 시tool_result를 필터링하며 발화 경계(User:/AI:) 기반으로 청킹을 나누는 로직으로 개선함. - 프로젝트 설계 문서화: MSA 프로젝트의 DB 스키마(Saga 패턴 고려), API 명세서, 시스템 아키텍처를 상세히 작성하여 개발 방향성을 구체화함.
🔴 삽질/시간 소모 포인트
- 배포 환경 문제: EC2 빌드 시
buildx미설치,application-prod.yaml의 인코딩(EUC-KR) 문제, 타임존 불일치(JVM KST vs DB UTC) 등으로 인해 애플리케이션이 기동하지 않거나 타임딜이 즉시 만료되는 문제를 해결하는 데 시간 소요. - 프론트엔드 데이터 연동 오류: 백엔드와 프론트엔드의 ID 필드명 불일치(
timeDealIdvsid), 얕은 복사로 인한 SKU 정보 유실, JS의 정수 정밀도 한계(Snowflake ID) 등으로 인해 결제 흐름이 끊기는 문제를 연쇄적으로 디버깅함. - Terraform State 충돌: 리전 변경 과정에서 기존 State와 신규 코드가 충돌하여 리소스 삭제가 실패하고, 이전 코드로 임시 복원 후 삭제하는 번거로운 과정을 거침.
- 외부 접속 및 OS 호환성: Ollama의 외부 접속 허용 설정(CORS), Windows 11 Home에서의 SSH 접속 실패(백신 방화벽, OpenSSH 제한) 등 환경 설정 이슈 해결.
3. 타임라인
| 시간 | 주요 작업 내용 |
|---|---|
| 09:59 | 🦦 AWS SAA-C03 Directory Service 문서 생성 및 내용 검수. |
| 10:00 | 🦦 ai-log-sync 로그 분석 및 용량 최적화 방안(tool_result 필터링) 도출. |
| 11:28 | 🦦 SAA-C03 가이드의 Obsidian 호환성(이모지, 태그) 수정. |
| 11:42 | 🦦 1주일치 로그 분석을 통해 청킹 로직 개선 및 버그 수정. |
| 14:01 | 🦦 로그 청크 처리 기술 논의 및 .claude 폴더 10GB 원인 분석. |
| 14:34 | 🦦 Mock PG 비동기 API 및 콜백 설정 구현 완료. |
| 14:40 | 🦦 로컬 환경 기동 및 Mock PG 기능 검증. |
| 14:46 | 🦦 Claude VM 이미지가 디스크를 차지한다는 원인 분석 결과 전달. |
| 15:22 | 🦦 노션 문서에 신규 API 및 테스트 시나리오 업데이트. |
| 15:29 | 🦦 로그 요약 툴(obsidian.go) 개선(청킹, 롤링 요약) 및 빌드. |
| 15:40 | 🦦 pposiraegi 레포의 멱등성 설계 분석 및 DB 유니크 제약(checkout_id) 추가 PR 생성. |
| 15:53 | 🦦 프론트엔드 OrderCheckout.jsx에 checkoutId 관련 로직 적용 및 PR 생성. |
| 16:07 | 🦦 백엔드 MockPgClient 생성을 통해 PG 검증 로직 구현 시작. |
| 16:25 | 🦦 Terraform으로 ElastiCache 및 RDS 이관 계획 수립 및 코드 작성. |
| 16:48 | 🦦 terraform apply 실행 및 EC2 빌드 시작. |
| 17:03 | 🐹 EC2 접속하여 buildx 설치 및 설정 파일 수정 후 기동 성공. |
| 18:10 | 🦦 배포 브랜치가 main인 것을 확인하고 feat/pg-verification으로 전환 후 재빌드. |
| 18:16 | 🦦 ObjectMapper 빈 누락 문제를 AppConfig.java 수정으로 해결. |
| 19:36 | 🦦 타임존 미스매치(JVM KST vs DB UTC) 원인 규명 및 docker-compose.yml 수정. |
| 19:51 | 🦦 어드민 타임딜 수정 API 누락에 대한 백엔드 로직 추가. |
| 20:00 | 🦦 OrderNumberGenerator의 포맷 문자열 하이픈 제거로 숫자 파싱 오류 해결. |
| 20:36 | 🦦 프론트엔드 mapDeal 함수의 필드명 불일치(id vs timeDealId) 수정. |
| 20:56 | 🦦 API 응답 병합 시 깊은 병합(Deep Merge) 로직 적용하여 SKU 유실 문제 해결. |
| 21:18 | 🦦 기존 인프라 삭제 후 Bastion, Private Subnet 등 보안 요소를 포함한 Terraform 코드로 복원. |
| 21:51 | 🐹 Safety Hook 미작동 원인(위험 명령어 목록 누락) 규명. |
| 22:07 | 🐹 Terraform 래퍼 스크립트 경로 수정 및 -auto-approve 차단 로직 고도화. |
| (오전) | 🐹 MSA 프로젝트 전략(Saga/Circuit Breaker 집중) 수립 및 로드맵 작성. |
| (점심) | ⌨️ Ollama의 OLLAMA_ORIGINS 환경변수 설정을 통해 외부 접속 403 오류 해결. |
| (오후) | 🦦 쿠버네티스 네트워킹(Service, Ingress, Network Policy) 심화 학습. |
| (설계) | 🦦 프로젝트 DB 설계(reserved_quantity 등), 시스템 아키텍처 다이어그램 작성. |
| (설계) | 🦦 VPC, RDS, EKS 리소스 생성을 위한 Terraform 코드(모듈화) 작성. |
| (저녁) | 🐹 인프라 마이그레이션 가이드 작성 및 AI 프롬프팅 방향성(Why vs How) 정립. |
4. 해결한 문제와 인사이트
핵심 문제 해결
- 타임딜 즉시 만료 (Scheduler)
- 원인: Dockerfile의
-Duser.timezone=Asia/Seoul설정으로 인해 JVM은 KST로, DB는 UTC로 시간을 인식하여endTime <= now로직이 꼬임. - 해결:
docker-compose.yml오버라이드 파일에TZ: UTC와JAVA_OPTS를 추가하여 전체 시스템을 UTC로 통일.
- 원인: Dockerfile의
- 결제 Flow ID 누락 및 정밀도 손실
- 원인: 백엔드 응답 필드명(
timeDealId)과 프론트 참조 필드(id) 불일치, 18자리 Snowflake ID를 JavaScriptNumber로 변환 시 정밀도 손실. - 해결:
mapDeal함수 수정 및 원시 JSON 문자열 템플릿을 사용하여 ID를 String으로 전달하도록 수정.
- 원인: 백엔드 응답 필드명(
- 인프라 운영 안전성 확보
- 내용: Terraform의 파괴적 명령어 실행을 방지하기 위해 래퍼 스크립트에
-auto-approve플래그 감지 로직을 추가하고, 이를 문서화하여 AI 에이전트의 행동을 제어.
- 내용: Terraform의 파괴적 명령어 실행을 방지하기 위해 래퍼 스크립트에
- 로그 스토리지 최적화
- 내용: 로그 파일 내용 분석 결과
tool_result가 용량의 대부분을 차지함을 확인하고, 이를 필터링하는 로직을 추가하여 저장소 효율성 증대.
- 내용: 로그 파일 내용 분석 결과
주요 인사이트
- Docker 환경변수 주의: 실행 중인 컨테이너의 환경변수 변경은
restart가 아닌up -d --force-recreate로 재생성해야 적용됨. - MSA 프로젝트 전략: 모든 패턴을 적용하는 ‘얕고 넓은’ 프로젝트보다, 핵심 패턴(Saga 등)을 깊이 있게 구현하는 ‘좁고 깊은’ 프로젝트가 가치 있음.
- AI 협업 철학: 인프라 작업 시 AI에게 단순 구현(How)을 맡기기보다, 설계와 순서(Why)를 먼저 질문하여 개발자가 판단 주체가 되어야 함.
5. 주요 코드 변경 사항
- Mock PG (
server.js): 비동기 콜백 처리 로직 내에 성공/실패 통계 카운트를 추가하고,/pay/async등 신규 엔드포인트 구현. - 백엔드 (
Order.javain pposiraegi):checkout_id컬럼에 유니크 제약조건(uniqueConstraints) 추가하여 멱등성 보장. - 백엔드 (
AppConfig.java):RestTemplate및ObjectMapper빈 등록. - 백엔드 (
TimeDealAdminController.java): 타임딜 수정 기능(PUT 메서드) 추가. - 백엔드 (
OrderNumberGenerator.java):String.format포맷 문자열에서 하이픈(-) 제거하여 파싱 오류 방지. - 프론트엔드 (
timedeal.js):mapDeal함수에서 필드명 매핑(id: deal.timeDealId) 수정 및 목록/상세 API 병합 로직을 Deep Merge로 변경. - 프론트엔드 (
OrderCheckout.jsx): SKU ID를 올바르게 전달하도록 로직 수정. - 로그 툴 (
client/interface.go,output/obsidian.go): 문자 수 기준 청킹을User:/AI:경계 기준으로 변경하고, 프롬프트 누출 방지 로직 강화. - 인프라 (
docker-compose.yml): 타임존 설정(TZ: UTC) 및 Java 옵션 추가. - 인프라 (
terraformwrapper script): 실행 경로 수정 및-auto-approve플래그 차단 로직 구현.
Supported by ai-log-sync & GLM-4.7