ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 카카오클라우드 - 클라우드 개발자 교육 21주차 후기 (4/13 ~ 4/17)
    bootcamp 2026. 4. 20. 14:19

    중간 발표 주간 — 399개 테스트를 어떻게 설명할 것인가...? 

     

     

     

     발표 대본 1차 작성

     대본 작성 방법론
    심사위원이 25분 발표 (15분 본 + 10분 Q&A 예정) 에서 뭘 물을지 예측하는 게 먼저였어요.

    우리 프로젝트의 특수성:
    - 5-서비스 마이크로서비스 같은 서비스 — "왜 이렇게 쪼갰냐" 필수 질문
    - 3개 DB 하이브리드 (Qdrant + ES + Neo4j) — "꼭 3개여야 하냐"
    - 로컬 LLM + API 하이브리드 — "비용 vs 응답지연 tradeoff"

     

     

     

     

    예상 Q&A 10선

    Q1. EXAONE 32B 를 로컬에서 돌리는 비용이 Solar API 보다 저렴합니까?
    > 월 1천만 토큰 기준으로 GPU 비용(Tesla T4 온프렘) 을 상각하면 Solar API 의 약 40%. 그런데 응답 지연 p95 가 Solar 3초 vs EXAONE 7초라서 **한국어 생성은 EXAONE / 의도·감정·이미지는 qwen / 분류·추출·설명은 Solar** 로 역할 분담한 하이브리드가 비용·속도 양쪽을 잡습니다.

    Q2. RRF 의 k=60 은 왜 60 이에요?
    > Cormack(2009) 논문 경험값. `1/(k+rank)` 에서 k 가 너무 작으면 1등 후보가 과도하게 독점하고, 너무 크면 순위 차이가 뭉개져요. k=60 이 "1~10위까지 의미 있는 기여 + 20위 밖도 완전 무시는 아님" 의 절충점이라 하이브리드 검색 관례로 굳어졌습니다.

    Q3. Cold Start (신규 유저) 는 어떻게 처리해요?
    > `cold_start_checker` 노드가 `watch_history 5편 미만`이면 Cold Start 로 판정. CF 가중치 0 + CBF 100% 로 자동 전환하고, 인기작 fallback 을 섞습니다. Warm(5~29편) 은 CF 50% / CBF 50%, Heavy(30편+) 는 CF 60% / CBF 40% 로 **동적 가중치**.

    Q4. Neo4j 를 꼭 써야 했냐? JOIN 으로 되잖아?
    > "봉준호 감독 → 스릴러 배우 → 다른 영화" 같은 **멀티홉 3~4단계** 는 관계형 JOIN 으로 하면 쿼리가 30줄 넘어요. 동등 Cypher 는 4줄. 더 중요한 건 **성능**: JOIN 은 카티시안 곱이 폭발하지만 Neo4j 는 인접 노드 탐색이 O(1). 저희 테스트에서 4-hop 쿼리가 MySQL 900ms vs Neo4j 80ms.

    Q5. 테스트 399건 전부 돌리는 데 얼마나 걸려요?
    > CI 에서 Agent 340건 1.3초, Recommend 59건 1.0초. **Mock 기반** 이라서 외부 서버 없이 돌아요. 로컬 개발 중에는 `pytest -k "unit"` 으로 300건만 돌리면 0.5초.

    Q6. LangGraph 쓰는 이유가 뭐예요?
    > 조건부 분기가 많은 에이전트를 **시각적 그래프** 로 관리할 수 있어요. 저희 Chat Agent 는 16노드인데, 코드로만 보면 flow 파악이 어려워요. `graph.get_graph().draw_mermaid()` 로 자동 생성되는 Mermaid 다이어그램이 설계서 역할도 합니다.

    Q7. 결제 시스템 동시성 처리는?
    > Toss Payments v2 의 **Idempotency-Key** 헤더로 중복 결제 방지. 서버 쪽은 `SELECT ... FOR UPDATE` 로 포인트 차감 레이스 방지. 구독 갱신은 `@Scheduled(cron="0 0 * * * *")` 로 매 시간 Cron + **2-Phase 트랜잭션** (결제 commit → 리워드 지급 commit).

    Q8. 운영 배포는 어떻게 해요?
    > 로컬 빌드 → Docker tar 저장 → rsync 로 VM2 전송 → `docker load` → `compose up`. 자동화 스크립트는 다음 스프린트 과제. 현재는 3-VM 순차 배포 (`scripts/deploy-prod.sh`) 계획 중.


    *Q9. 관찰성 스택 비용은?
    > VM3 (2 vCPU / 4GB RAM) 한 대에 Prometheus + Grafana + ELK 전부 올림. 월 약 4만원. Log retention 7일로 잡아서 ES 용량 부담 최소화.

    Q10. AI 가 부정확한 추천을 하면 어떻게 알아요?
    > 두 가지 지표로 모니터링:
    > ① 회귀 테스트 — 운영 버그마다 재발 방지 테스트 필수 추가 (최근 3주 6건)
    > ② recommendation_log + user_feedback — 사용자가 추천 결과에 좋아요/관심없음 남기면 학습. Grafana 대시보드 `monglepick-api` 에 "추천 클릭률" 차트.

     

    예상 질문은 중, 하 난이도로.

    100개중 10개만.


    ### 모의 발표 (수요일)
    팀원 4명 중 2명이 심사위원 역할. 15분 발표 타이머 설정.

    Q&A 모의 10분:
    - 예상 못한 질문 :
      - "실서비스 런칭 계획은?" → 현재 베타, 1천명 대기자 리스트. 

     

     

    회고

    잘한 것:
    - 3단계 답변 준비 (30초 / 1분 / 3분) — 실제 Q&A 에서 꼬리질문에 당황 안 함
    - 예상 Q&A 10선 중 5개 적중 — 정확히 반은 맞춤. 나머지 반은 여기 안적음.
    - 시연 영상 미리 녹화 — 라이브 데모 실패 리스크 제거

    못한 것:
    - 예상 못한 질문 2개 — 몽글이 페르소나 + 런칭 계획. 다음엔 비즈니스 관점 질문도 준비
    - 발표 중 긴장으로 말 더듬음 — 첫 질문부터 끝까지 나였음
    - 관찰성 스택 슬라이드 시각 부족 — 대시보드 캡처 확대 필요

    ### 다음 스프린트 목표
    - 운영 배포 자동화 스크립트 (`scripts/deploy-prod.sh`)
     - 로컬 빌드 / rsync / VM2 load / compose up / 헬스체크 / 롤백 오케스트레이션
     - `.env` 동기화 검증 필수 (이번 배포 때 교훈)
    - 도장깨기 리뷰 검증 에이전트 실구현 (현재 `POST /admin/ai/review-verification/verify` 는 503 스텁)
    - 몽글이 LoRA 파인튜닝 — EXAONE 4.0 1.2B 기반
    - VM2 디스크 확장 OR Agent 이미지 슬림 리팩토링
    - Neo4j Browser + Swagger 운영 Nginx 프록시 추가 
    - OCR 자동 추출 — Google Cloud Vision API 연동

     

    —————————————————————————— 
    본 후기는 [카카오엔터프라이즈x스나이퍼팩토리] 카카오클라우드로 배우는 AIaaS 마스터 클래스 3기(B-log) 리뷰로 작성 되었습니다.

Designed by Tistory.