From ca0a0bfc94a01ecf90059d4c0701386929961b82 Mon Sep 17 00:00:00 2001 From: MINJUN KIM <86342736+minjunkim-dev@users.noreply.github.com> Date: Fri, 30 Oct 2026 13:59:14 +0900 Subject: [PATCH] about, writing: rename RAG bot to auto-answer, plain wording for agent conditions and disk cleanup; disclose agent implementation in web deploy article Co-Authored-By: Claude Opus 5.5 --- .../writing/web-deploy-verify-public-sha256.mdx | 2 +- src/pages/about.astro | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/content/writing/web-deploy-verify-public-sha256.mdx b/src/content/writing/web-deploy-verify-public-sha256.mdx index 6e3bac3..dc521fe 100644 --- a/src/content/writing/web-deploy-verify-public-sha256.mdx +++ b/src/content/writing/web-deploy-verify-public-sha256.mdx @@ -24,7 +24,7 @@ import release from '../../../examples/web-deploy-verify-public-sha256/release.t MyD는 개인 데이터 지갑 앱이다. 앱 안의 WebView 화면, 관리자 웹, B2B 웹, 이렇게 웹 프론트 3종이 따로 배포된다. 운영 환경에서는 CDN(CloudFront)이 정적 파일을 내보낸다. 파일은 CloudFront만 읽을 수 있게 막은 S3(OAC)에 있다. 개발 환경에서는 사내 웹 서버(NGINX)가 내보낸다. -2026년 8~10월에 앱 업무와 병행하면서 이 배포를 다시 만들었다. 같은 시기에 CI도 Jenkins에서 GitLab CI로 옮겼다. Jenkins와 GitLab CI에서 같은 기준으로 배포하려면 "무엇을 하면 배포가 성공한 것인가"를 먼저 정해야 했다. +2026년 8~10월에 앱 업무와 병행하면서 이 배포를 다시 만들었다. 같은 시기에 CI도 Jenkins에서 GitLab CI로 옮겼다. 구현은 대부분 AI 코딩 에이전트(Claude Code·Codex)가 했고, 나는 에이전트가 지킬 조건을 정하고 결과를 검증했다. Jenkins와 GitLab CI에서 같은 기준으로 배포하려면 "무엇을 하면 배포가 성공한 것인가"를 먼저 정해야 했다. ## 문제: 성공 신호가 결과를 증명하지 못한다 diff --git a/src/pages/about.astro b/src/pages/about.astro index 933c2bc..62a6272 100644 --- a/src/pages/about.astro +++ b/src/pages/about.astro @@ -27,7 +27,7 @@ import { SITE } from '../data/site';

개발팀(구 앱팀) · 선임연구원 · 정규직

2022.06.02 — 2026.10.19

-

MyD의 iOS 기능 개발·심사·배포를 맡았고, React Native 앱의 양 플랫폼 출시와 모바일 신분증 모듈 통합을 수행했습니다. 2026년에는 사내 고객 문의 RAG 봇을 운영에 연결했고, B2B 고객사 앱이 공공기관 데이터(건강검진·안전교육 이수)를 가져오게 하는 SDK와 인증 서버를 설계했습니다. 구현은 AI 코딩 에이전트 위주로 하고, 결과는 직접 검증했습니다. 사내 CI·배포·모니터링 구성도 맡았습니다.

+

MyD의 iOS 기능 개발·심사·배포를 맡았고, React Native 앱의 양 플랫폼 출시와 모바일 신분증 모듈 통합을 수행했습니다. 2026년에는 사내 고객 문의 자동 답변(RAG)을 운영에 연결했고, B2B 고객사 앱이 공공기관 데이터(건강검진·안전교육 이수)를 가져오게 하는 SDK와 인증 서버를 설계했습니다. 구현은 AI 코딩 에이전트 위주로 하고, 결과는 직접 검증했습니다. 사내 CI·배포·모니터링 구성도 맡았습니다.

@@ -107,12 +107,12 @@ import { SITE } from '../data/site';

RAG·SDK·서버·배포 자동화

-

MyD 고객 문의 RAG 봇 (2026.06 — 2026.07)

-

Jira로 들어온 MyD 앱 고객 문의에 FAQ 근거로 답하는 사내 봇을 만들어 n8n으로 운영에 연결했습니다. FAQ를 bge-m3로 임베딩해 ChromaDB에 저장하고, 사내 서버의 로컬 LLM이 검색한 근거로 답합니다. 근거 점수가 기준보다 낮으면 답하지 않고 운영자에게 넘깁니다. 샘플 FAQ를 실제 FAQ 9개 문서로 바꿔 실제 고객 문의에 적용했고, 2026년 10월까지 운영했습니다. 구현은 AI 코딩 에이전트로 했고, 작업 조건 지정과 결과 검증은 제가 맡았습니다.

+

MyD 고객 문의 자동 답변(RAG) (2026.06 — 2026.07)

+

Jira로 들어온 MyD 앱 고객 문의에 FAQ 근거로 답하는 사내 답변 서버를 맡아 n8n으로 운영에 연결했습니다. FAQ를 bge-m3로 임베딩해 ChromaDB에 저장하고, 사내 서버의 로컬 LLM이 검색한 근거로 답합니다. 근거 점수가 기준보다 낮으면 답하지 않고 운영자에게 넘깁니다. 샘플 FAQ를 실제 FAQ 9개 문서로 바꿔 실제 고객 문의에 적용했고, 2026년 10월까지 운영했습니다. 구현은 AI 코딩 에이전트로 했고, 저는 에이전트가 지킬 조건을 정하고 결과를 검증했습니다.

B2B 데이터 SDK와 인증 서버 (2026.08 — 2026.09)

-

B2B 고객사 앱에 넣는 공공기관 데이터 수집 SDK(iOS·Android, 고객사 전달 전 중단)와 Node.js·PostgreSQL 인증 서버를 설계했습니다. 구현은 AI 코딩 에이전트 위주로 했고, 작업 조건과 결과 검증은 제가 맡았습니다. 고객사의 영구 API 비밀키를 앱에 넣지 않도록 짧은 수명 토큰과 서버가 서명한 정책을 SDK가 검증하는 구조를 만들었습니다. Android SDK 테스트가 2,400세션 중 15건 간헐적으로 실패했습니다. 원인을 제품 코드의 실행 순서 경합(race)으로 규명했고, 같은 2,400세션 반복에서 실패가 0건이 되었습니다.

+

B2B 고객사 앱에 넣는 공공기관 데이터 수집 SDK(iOS·Android, 고객사 전달 전 중단)와 Node.js·PostgreSQL 인증 서버를 설계했습니다. 구현은 AI 코딩 에이전트 위주로 했고, 저는 에이전트가 지킬 조건을 정하고 결과를 검증했습니다. 고객사의 영구 API 비밀키를 앱에 넣지 않도록 짧은 수명 토큰과 서버가 서명한 정책을 SDK가 검증하는 구조를 만들었습니다. Android SDK 테스트가 2,400세션 중 15건 간헐적으로 실패했습니다. 원인을 제품 코드의 실행 순서 경합(race)으로 규명했고, 같은 2,400세션 반복에서 실패가 0건이 되었습니다.

배포 자동화와 사내 인프라 (2026.07 — 2026.10)

-

Runner를 새 서버로 옮긴 뒤 마이주식 Android 빌드는 413초에서 174초가 됐습니다. 유휴 상태의 이전 Runner와 캐시가 있는 새 Runner를 비교한 값입니다. CI 서버 디스크 100% 장애를 정리하고 자동 정리기를 설치했습니다. 웹 프론트 배포는 공개 응답의 SHA-256이 빌드 결과물과 같을 때만 성공으로 판정하도록 재설계했습니다. 구현은 대부분 AI 코딩 에이전트가 했고, 작업 조건 지정과 결과 검증은 제가 맡았습니다.

+

Runner를 새 서버로 옮긴 뒤 마이주식 Android 빌드는 413초에서 174초가 됐습니다. 유휴 상태의 이전 Runner와 캐시가 있는 새 Runner를 비교한 값입니다. CI 서버 디스크 100% 장애를 정리하고, 다시 차지 않게 정리 작업을 5분마다 자동으로 돌리며 디스크가 찰수록 오래된 데이터를 더 일찍 지우게 했습니다. 웹 프론트 배포는 공개 응답의 SHA-256이 빌드 결과물과 같을 때만 성공으로 판정하도록 재설계했습니다. 구현은 대부분 AI 코딩 에이전트가 했고, 저는 에이전트가 지킬 조건을 정하고 결과를 검증했습니다.

마이주식 · 인턴 프로젝트 기술 지원 (2026.09 출시)

Firebase Functions에서 Apple 연결 해제와 Google·Naver 토큰 흐름, 개인정보 보존을 맡고(카카오·네이버 연결 해제와 7일 유예는 인턴 구현) App Attest 기반 App Check를 연동했습니다. 인턴 2명의 프로젝트로, 앱 로직·UI는 인턴들이 맡고 저는 보조로 보안·배포·서버리스 백엔드를 지원했습니다. 1.1.0 업데이트 출시 당일, 아직 1.0.0을 쓰던 사용자의 회원가입이 실패했습니다. 원인은 제가 넣은 새 필수 필드였습니다. 새 필드가 없는 1.0.0 요청을 따로 구분해 받고, 별개 원인인 손상된 Apple 비밀키도 바로잡아 소셜 가입 방식 4종을 복구했습니다.

기술 조사·설계 (2024)