Hello, I'm

Kim Taewoo.

Software Engineer.

운영 중인 서비스에서 배포, 장애 대응, 보안을 맡아 온 백엔드 개발자입니다.AI 에이전트와 일하는 방식을 직접 만들고, 결과는 다시 실행해 확인합니다.

프로젝트 보기

About Me

김태우

안녕하세요, 백엔드 개발자 김태우입니다. 한국외국어대학교 컴퓨터공학부를 2027년 2월에 졸업할 예정이고, 지금은 버즈앤비에서 현장실습을 하고 있습니다.

대학 스포츠 응원 서비스 훕치치에서 8개월째 서버의 배포, 모니터링, 장애 대응을 맡고 있습니다. 대회 때마다 사용자가 몰리는 서비스라, 배포가 서비스를 끊지 않게 하고 문제가 생기면 원인을 기록으로 좁히는 일을 주로 해 왔습니다.

Claude Code와 Codex로 일하는 방식도 직접 만들어 씁니다. 구현은 에이전트에 맡기더라도 검증은 제가 다시 실행해서 하고, 효과를 재 보지 않은 변경은 넣지 않으려고 합니다.

프론트엔드 개발 / 미국 시장 리드 발굴

버즈앤비 (Vling)
2026.07 ~ 현재 · 현장실습
  • 유튜브 채널·영상 데이터 SaaS Vling의 영상 검색과 채널 검색 개편을 팀원과 함께 출시 (2026.09)
  • 검색 화면 CLS 0.246 → 0.002, 정렬 변경 응답 2,194ms → 40ms (샌드박스 실측)
  • 배포 후 확인용 스모크 스크립트를 AI 에이전트로 만들어 앱 3개를 26초에 검증
  • 2026.09부터 미국 시장 콜드메일 채널 구축: 리드 추출·세그먼트 분류, 영문 메일 시퀀스, 발송 도메인 워밍업
TypeScriptReactNext.jsGraphQL

Projects

백엔드·인프라

클라우드 계정 장애 복구와 IaC 재구축

Hufscheer · 2026.09 ~ 10

클라우드 계정 장애로 서비스 전체가 멈췄을 때 새 계정에 인프라를 Terraform으로 다시 세워 운영을 재개했습니다.

  • DNS를 AWS 밖(Cloudflare)으로 옮겨 계정 문제와 도메인·메일을 분리
  • S3 접근은 앱 고정 키 대신 인스턴스 역할로 전환
  • 계정 밖 가동 점검(Cloudflare Worker)과 Grafana 알림 17종, GuardDuty, 비용 이상 알림 추가
TerraformAWSCloudflareGrafanaDocker
백엔드·인프라

CI·배포 시간 단축

Hufscheer · 2026.09 ~ 10

8~17분으로 들쭉날쭉하던 CI의 원인을 테스트마다 도는 TRUNCATE와 러너 디스크로 좁혀 고쳤습니다.

  • MySQL을 tmpfs에 올려 테스트 DB 시간을 101~632초에서 54초로 고정
  • 배포 잡에서 중복으로 돌던 전체 테스트를 문서 테스트만 남겨 510초 → 132초
  • 테스트 병렬 실행은 CI 러너에서 이득이 오차 범위라 적용하지 않음
GitHub ActionsMySQLGradle
백엔드·인프라

응원 지표 지키기

Hufscheer · 2026.04 ~ 07

아직 시작하지 않은 경기에 8분 동안 같은 문구의 응원톡 7,617건이 쌓여 팀 응원 순위가 흔들린 일을 막고, 지표가 무엇을 세는지 다시 봤습니다.

  • 방문자(쿠키)당 60초에 120건, 3초 안에 같은 문구는 4번째부터 차단 (Caffeine)
  • 응원 수를 부풀리려던 봇 요청(분당 57회)은 입력 범위 검증에서 모두 거절
  • 응원톡 21,715건 중 99%가 프리셋 버튼 3종임을 확인하고 시상 기준을 팀에 질문
Spring BootCaffeineMySQL
백엔드·인프라

무중단 배포와 부하 테스트 판단

Hufscheer · 2026.05

대회 직전에도 배포가 서비스를 끊지 않게 했고, 부하 테스트는 지표를 근거로 하지 않기로 했습니다.

  • nginx 라우터와 graceful shutdown 기반 Blue/Green 배포로 최대 30초이던 배포 중단 제거
  • 대회 2개가 겹치는 기간을 앞두고 Prometheus 14일 치를 확인: CPU 최대 32%, 힙 44%, 봇이 몰린 날에도 CPU 7.6%
  • 5~10일이 드는 부하 테스트는 하지 않기로 결정
nginxDockerPrometheus
AI

LLM 욕설 마스킹 비용 줄이기

Hufscheer · 2026.04 ~ 05

응원톡 욕설 마스킹에 쓰는 LLM 호출을 줄이고, 결과에 설명문이 섞여 나오는 누수를 막았습니다.

  • LLM 앞단에 정적 필터와 결과 캐시를 두어 호출 수 감소
  • 공급자를 인터페이스로 분리해 설정만으로 Gemini와 OpenRouter 전환
  • 마스킹 결과 대신 설명문이 섞여 나오는 누수를 출력 검사와 프롬프트 두 단계로 차단
Spring BootGeminiOpenRouterCaffeine
AI

작업 기록 검색 서버 (MCP)

개인 · 2026.06 ~ 현재

코딩 에이전트 대화, 커밋, 문서 같은 제 작업 기록을 매일 모아 에이전트가 쓰는 검색 서버로 만들었습니다.

  • 전문 검색에 의미 검색을 붙이며 골드셋 43개 질의로 전후를 재 상위 10건 재현율 0.77 → 0.84
  • 바꿔 말한 질문은 두 방식 모두 0.42로 나아지지 않았음도 기록
  • 배포 전마다 같은 질의로 재는 회귀 게이트, 응답 중앙값 30ms
TypeScriptSQLite FTS5MCPEmbedding
AI

에이전트 모바일 웹앱

개인 · 2026.06 ~ 현재

AI 비서 봇 3개와 Claude Code를 휴대폰 한 화면에서 쓰는 PWA를 만들어 매일 쓰고 있습니다.

  • 진행 중인 일이 칸반에 안 보이던 불편을 노션 상태 자동 반영과 완료 3일 뒤 자동 보관으로 해결
  • 응답이 느린 문제에서 추론 강도·우선 처리 옵션은 실측 결과 효과가 없어 빼고, 최종 답을 받으면 바로 완료 처리하도록 바꿔 메시지당 약 0.9초 단축
  • 구현은 하위 에이전트에 맡기고, 새 테스트는 고친 코드를 빼고 돌려 실제로 실패하는지 확인
ReactPWANode.jsPlaywright
프론트엔드

Vling 영상 검색·채널 검색 개편

버즈앤비 · 2026.07 ~ 09

유튜브 데이터 SaaS Vling의 검색 화면 두 개를 팀원과 함께 개편해 2026년 9월 출시했습니다.

  • 영상 검색: 큐레이션 섹션 4개, 결과 그리드, 관련 채널 추천, 요금제별 노출 한도 연결
  • 채널 검색: 정성 필터 11종, 광고 부적합 채널 제거, URL 검색, 즐겨찾기 폴더
  • 카테고리 필터를 넣으면 일부 계정에서 섹션이 통째로 사라지는 문제를 배포 전에 찾아 폴백 추가
TypeScriptReactNext.jsApollo Client
프론트엔드

검색 화면 성능 개선

버즈앤비 · 2026.07 ~ 09

측정 스크립트로 느린 곳을 먼저 찾고 고쳤습니다. 수치는 모두 샌드박스 실측입니다.

  • 검색 화면 CLS 0.246 → 0.002 (스켈레톤 key를 그리드 슬롯 번호로)
  • 정렬 변경 응답 2,194ms → 40ms (shallow 라우팅), 썸네일 TTFB 928ms → 154ms
  • 검색 결과 오염 원인을 태그 오매칭으로 봤다가, 재검증에서 제 분석 실수임을 확인하고 철회
Next.jsWeb VitalsPlaywright
백엔드·인프라

Lo.ci 위치 기반 SNS

백엔드 1인 · 2025.11 ~ 2026.02

지도에서 수만 건의 마커를 조회하는 위치 기반 SNS의 서버를 혼자 만들었습니다.

  • H3 셀 인덱싱과 구역 집계 사전 계산으로 마커 조회 3초 → 0.1초
  • 동시 갱신 때 생기던 중복 INSERT를 ON DUPLICATE KEY UPDATE로 DB에서 원자 처리
  • 알림을 커밋 뒤 비동기 이벤트로 분리, N+1은 JOIN FETCH와 @BatchSize로 해결
JavaSpring BootMySQLRedisUber H3
백엔드·인프라

Pinta (Lo.ci 재설계)

개인 · 2026.02 ~ 04

Lo.ci에서 부딪힌 인증, 쿼리, 이미지 문제를 다시 설계했습니다.

  • 인증마다 하던 DB 조회를 Caffeine JWT 캐시(30초)로 감소
  • 프로필 통계 3쿼리 → 1쿼리, 피드 페이지당 쿼리 20개 감소
  • CloudFront 온디맨드 이미지 리사이징을 Lambda@Edge로 만든 뒤 imgproxy(EC2)로 교체
JavaSpring BootCaffeineCloudFrontFlyway
백엔드·인프라

VitaCheck 영양제 추천

5인 팀 백엔드 · 2025.07 ~ 12

섭취 중인 영양제 성분을 분석해 맞춤 영양제를 추천하는 서비스의 서버를 팀으로 만들었습니다.

  • user와 auth 모듈을 분리하고 알림 코드를 user 모듈로 옮겨 모듈 경계 정리
  • Gemini 기반 추천에 중복 성분 검증 추가, 구글 로그인 구현
  • 목적별 검색 페이지네이션을 Page에서 Slice로 전환 (팀원의 OOM 수정 후속)
JavaSpring BootQueryDSL멀티모듈

Resume & Skills

이력서 다운로드

Backend

JavaSpring BootJPAQueryDSL

Data

MySQLRedis

Infra

AWSDockerTerraformGitHub ActionsPrometheusGrafana

Web

TypeScriptReactNext.js

AI

Claude CodeCodexMCP