레오의 빌드로그
글프로젝트소개English

핀로그

장소 이름이 기억나지 않아도 경험과 감정으로 다시 찾는 AI 장소 기록 서비스

화면

개요

기간
2026.07 – 2026.08 (5주)
팀
6명 · SSAFY 공통 프로젝트
역할
인프라 리드

풀고 싶었던 문제

장소를 저장해도 이름이 떠오르지 않으면 다시 찾기 어렵고, 저장한 이유와 경험은 남지 않음. 인프라는 클라우드 권한 없이 주어진 서버 한 대 위에서 여러 서비스를 배포·운영해야 했음.

해결 방법

  1. 01
    저장한 맥락을 자연어로 검색장소와 함께 저장한 이유·경험을 기록하고, 장소 이름 대신 문장으로 다시 찾음
  2. 02
    익명 컬렉션으로 발견신원과 맥락 원문을 드러내지 않는 공개 컬렉션에서 다른 사람의 취향을 발견하고, 발견한 장소에 나만의 맥락을 더함
  3. 03
    서버 한 대에서 GitOps 배포모든 서비스를 공용 Helm 차트로 배포하고, Git에 선언한 상태를 Argo CD가 k3s에 반영

담당 업무

k3s 기반 배포·운영 인프라 설계·구축 총괄. 배포 자동화, 자원 분리, 관측, AI 운영 알림, 백업·복구 담당

  1. 01
    검증된 이미지만 배포서비스 CI 성공과 레지스트리 digest를 확인한 뒤 배포 변경 PR 자동 생성, 병합 직전 커밋 재확인. 롤백도 Git revert로 기록GitHub Actions · private GHCR · full commit SHA + image digest 고정 · Helm · Argo CD ApplicationSet
  2. 02
    서버 한 대의 자원 분리개발·운영 영역 분리와 자원 상한, 관측 도구 용량 제한으로 서비스끼리의 자원 경쟁 방지namespace 분리 · 자원 예산 · NetworkPolicy · Pod Security Admission
  3. 03
    AI 운영 알림경보와 관련된 메트릭·로그를 제한된 범위에서 조회해 한국어 알림으로 정리. AI가 실패하거나 근거가 부족하면 규칙 기반 알림으로 대체, 클러스터는 자동 변경하지 않음Alertmanager → Sentinel Receiver(민감정보 제거 · 허용 필드 JSON) → AI API → 출력 검증 → Mattermost
  4. 04
    관측과 외부 감시메트릭·로그 수집과 대시보드 구성. 서버 전체가 멈춰도 알 수 있도록 외부 HTTPS·TLS 확인 경로를 별도 운영Prometheus · Loki · Alloy · Grafana · GitHub-hosted 외부 probe
  5. 05
    시크릿과 접근 권한시크릿은 암호화해 Git에 보관하고, 배포 자동화 토큰은 저장소별 최소 권한으로 분리Sealed Secrets · 최소 권한 토큰 · Cloudflare Tunnel · Traefik

운영하며 고친 것

  1. 01
    컨테이너 런타임이 CPU를 계속 점유하던 문제Docker와 cri-dockerd 경로에서 Kubelet의 반복 조회가 CPU를 점유하던 문제를 K3s 내장 containerd로 전환해 해결. DB 백업·설정 보존·롤백 경로를 갖춘 절차로 전환
  2. 02
    깨진 백업이 최신 복구 지점이 될 수 있던 문제dump 생성 후 archive를 검사하고, 검증한 파일만 latest.dump로 원자적으로 반영하도록 변경

기술

인프라
k3s · Helm · Argo CD · GitHub Actions · Cloudflare · Traefik
관측
Prometheus · Loki · Alloy · Grafana · Alertmanager
백엔드
Spring Boot · PostgreSQL + pgvector · Redis
AI
FastAPI · pgvector
프론트엔드
React 19 · TypeScript · Vite · TanStack Router/Query

관련 글