$ whoami — backend developer, 7 yrs

회사에선 운영 시스템을,
퇴근 후엔 작은 서비스를 만듭니다.

전국 53개 지점이 쓰는 CRM·ERP를 7년째 개발하고 운영하고 있습니다. 회사 밖에서는 필요한 걸 직접 만들어 실제 사용자에게 내놓습니다. 회사에서든 개인 서비스에서든 데이터를 잃지 않는 설계를 가장 먼저 챙깁니다.

01

회사 업무

쥬비스다이어트 시스템 개발팀 · 파트장 개발자 · 2020.10 ~ 현재
회원 30만 · 계약 65만 건 규모의 CRM·ERP·상담 시스템을 맡고 있습니다.

운영 성과

Java/Spring 기반 백엔드와 배치가 주력입니다. PHP 레거시 재개발, EC2 → EKS 전환, CI/CD 구축을 맡았습니다.

21.7분장애 대응 착수 평균
104/105VOC 원인 확인 후 종결
4.6 → 1.8일VOC 평균 처리 기간
51개팀 공용 AI 스킬 운영

최근 풀어낸 장애

  • 쿠폰 발행 목록 504 · 복합 인덱스 재설계209s → 16.6s
  • COUNT+LIST 순차 실행으로 게이트웨이 타임아웃원인 규명
  • 예외를 삼킨 채 커밋 → 알림 최대 6회 중복타임아웃·예외 전파
  • Redis 장애 시 큐 적재 대기로 발송 실패 응답237s 실측
2026.08 ~

Slack 개발·운영 봇 (Iris)

PR 자동 리뷰, 500 알럿 발생 시 Jira 티켓 자동 생성

리뷰·티켓 등록 수동 작업 제거
2026.03 ~ 06

AI 코딩 도구 생산성 체계

팀 공용 Claude Code 스킬 레포 구축, VOC 처리 절차를 스킬화

당일 처리 12% → 46%
2026.03 ~ 04

기기 스케줄링(CMP) 신규 개발

고객 유형 기반 기기 추천, 모드 결정 시점을 자산 확정 시점으로 이동

예정대로 오픈, 데일리 이슈 0
2025.11 ~ 2026.03

Java → NestJS CRM 마이그레이션

로그인·권한 영역 설계, 메뉴·권한 API 20건

서비스 자체 결함 0건
2025.06 ~ 10

AWS EKS 전사 전환

컨테이너화, Helm, ArgoCD, GitHub Actions CI

배포 수십 분 → 수 분
2025.03 ~ 06

ERP 배치 재개발

PHP 배치를 Spring Batch로, Job/Step 공통 틀 설계

신규 배치 개발 시간 40%↓
02

개인 프로젝트

회사와 무관하게 퇴근 후 직접 기획·개발·운영하는 것들

온전한 하루 웹사이트 대표 이미지운영 중

온전한 하루

웨딩 축의대 운영 서비스

결혼식 축의대 대행 서비스의 공식 사이트입니다. 가격 안내, 현장 기록, 실시간 확정 일정을 보여주고 상담은 카카오톡 채널로 연결합니다.

  • 관리자 CMS에서 공지·후기·Q&A 직접 관리
  • Google Calendar 연동으로 확정 일정 실시간 노출
  • GA4 행동 이벤트 수집 + 주간 성과 리포트 자동 발송
설계 포인트예약 폼과 자체 DB를 일부러 두지 않았습니다. 개인정보를 저장하지 않으면 지켜야 할 것도 없습니다. 상담은 카카오톡, 일정은 캘린더에 맡기고 운영 부담을 0에 가깝게 유지합니다.
Cloudflare PagesWorkersGA4Kakao SDKPlaywright
Shelf 홈 화면Shelf 등록 화면
베타

Shelf

생필품 유통기한 관리 앱

사진 한 장으로 유통기한을 등록하고, 임박하면 알림으로 알려줍니다. 로그인 없이 바로 씁니다.

  • 기기 내 OCR로 날짜·제품명 자동 인식
  • 제품별 알림 시점·시간 설정
  • 분류·장소·상태 필터와 기한순 정렬
설계 포인트스키마 v1→v6 마이그레이션 동안 기존 물품과 사진을 전부 보존했습니다. 저장에 실패해도 복구하고, 되돌리기가 최신 상태를 덮어쓰지 않게 막았습니다.
FlutterSQLiteML Kit OCRLocal Notifications
베이비로그 홈 화면
개발 중

베이비로그

임신 다이어리 앱

출산까지의 하루하루를 사진과 함께 기록합니다. 주차 계산, 캘린더, 다이어리를 한곳에 담았습니다.

  • 임신 주차·D-day 자동 계산
  • 사진 다이어리와 캘린더 뷰
  • 정부 지원 정보·영양·병원 정보 내장
  • 백업·복원과 전체 데이터 삭제
설계 포인트모든 데이터를 기기에만 두는 local-first 구조입니다. 백업 파일은 사진을 풀지 않고 먼저 검사하고, 디스크 오류와 손상된 백업을 구분해서 알려줍니다.
FlutterDriftSQLiteGolden Test
$ python3 scripts/upload_naver.py draft.json
✓ 이미지 12장 · EXIF 보정 · 얼굴 모자이크
✓ 본문·사진 순서대로 입력
✓ 장소 · 카테고리 · 해시태그
→ 임시저장 완료 (--publish 없이 발행 안 함)
오픈소스
Py

블로그 자동 업로드

네이버 블로그 발행 자동화

사진과 초안만 있으면 네이버 블로그 에디터 입력부터 임시저장까지 자동으로 처리합니다. AI 에이전트 스킬로 설치해서 대화하며 글을 씁니다.

설계 포인트기본 동작은 임시저장이고, 명시적인 --publish가 있을 때만 공개합니다. 계정과 세션은 사용자 컴퓨터를 떠나지 않습니다.
PythonPlaywrightPillowAgent Skills
~/.claude
├─ CLAUDE.md · 지침
├─ skills/ ● 51
├─ hooks ● on
├─ agents/ · plugins/
└─ sessions ● 3 active
오픈소스
JS

Claude Dashboard

Claude Code 워크스페이스 관리

흩어진 Claude Code 설정을 한 화면에서 다룹니다. 지침, 스킬, 훅, 에이전트, 플러그인, 활성 세션까지 한눈에 확인합니다.

설계 포인트별도 서버 없이 로컬 ~/.claude 디렉토리를 그대로 읽고 씁니다. 파일을 직접 열지 않고도 설정 상태를 파악하고 고칠 수 있습니다.
React 19ViteNode.js
03

이 사이트가 배포되는 방식

정적 사이트지만 회사에서 운영하는 서비스와 같은 원칙으로 배포합니다. 테스트를 통과하지 못하면 배포하지 않고, 배포한 뒤에는 실제로 반영됐는지 확인합니다.

pull_request모든 변경은 PR로
  1. HTML 검사html-validate
  2. E2E 테스트Playwright · 데스크톱/모바일
  3. 미리보기 배포pr-N.minyeong-dev.pages.dev
  4. 반영 검증/api/health 커밋 대조
  5. PR 댓글미리보기 주소 회신
push → main머지되면 운영으로
  1. 같은 테스트재사용 워크플로
  2. 운영 배포Cloudflare Pages · 순차 실행
  3. 반영 검증엣지 전파까지 폴링
  4. 스모크 테스트운영 주소 대상
  5. Slack 알림실패해도 배포와 분리
지금 서빙 중인 버전
commit
—
배포
—
실행
—
이 값은 GET /api/health(Pages Function)에서 실시간으로 받아옵니다.
  • "배포 성공" ≠ "반영됨"CDN 엣지에는 이전 버전이 남아 있을 수 있습니다. 배포 명령의 성공 여부를 믿지 않고, 응답에 담긴 커밋이 방금 배포한 커밋과 같은지 직접 확인합니다.
  • 운영 배포는 한 번에 하나연달아 머지돼도 배포가 서로 덮어쓰지 않도록 concurrency 그룹으로 순서를 보장합니다.
  • 부가 기능이 본 흐름을 막지 않게Slack 알림은 별도 job으로 분리했습니다. 알림이 실패해도 배포 결과는 바뀌지 않습니다.