InkyuKim

ERP 를 만듭니다. 요구사항을 쿼리와 스키마로 정확히 옮기는 일과, 그렇게 옮긴 것이 운영에서 버티는지를 봅니다.

만든 것

5년치 시세 240만 건에서 "수익은 야간에 발생한다"는 구조를 실측으로 확인하고, 3개월 자동 검증 파이프라인을 구축

2026-08 · 개인 프로젝트 — 데이터 분석·검증 설계

PostgreSQL · Python · 증권사 OpenAPI · systemd

전략을 하나도 돌리지 않고, 일봉의 하루 수익을 두 조각으로 나눴다:

하루 = (시가 − 전일종가) + (종가 − 시가)
         ── 야간 ──        ── 주간 ──
  • 결과: 24종목 중 23종목이 야간 플러스 / 주간 마이너스.

장중이 구조적 마이너스라 장중 전략은 역풍을 안고 출발하고 있었다.

  • 백테스트 결과와 이 분해가 독립적으로 같은 값에 수렴하는 것을 교차 확인
  • 3개월 페이퍼 테스트를 systemd 타이머로 무인화 — 시세 증분수집 → 손익기록 → 알림.

킬 기준을 시작 전에 못박았다(역사적 최대낙폭 근거) — 나중에 고치면 검증이 아니라 소설이 된다.

클라우드 VM 한 대에 서비스 11개 도메인·컨테이너 18개를 단독 운영 — 자동배포·일일백업·아침 헬스리포트까지 무인화

2026-06 ~ 진행중 · 개인 서버 인프라 단독 구축·운영

Docker Compose · Caddy · PostgreSQL · GitLab CE + Runner · Authelia · systemd · OCI

백업이 조용히 비어 있던 것 — 로테이션이 폴더 날짜가 아니라 객체 mtime 을 봐서,컨테이너가 Up 인데 죽어 있던 것 — 프로세스가 예외 후에도 안 죽고 100% CPU 로 스핀.
  • 라우팅 — Caddy 1대가 전 도메인 리버스 프록시 + Let's Encrypt 자동발급/갱신
  • 자동배포 — GitLab CE + Runner. git push → 검증 게이트 → 빌드 → 헬스폴링까지 무인
  • 2FA 게이트 — Authelia(TOTP)로 관리 도구 보호. vhost 와 정책 양쪽이 다 있어야 열리는 구조
  • 백업 — 전 DB + GitLab + 각 스택 설정을 매일 오브젝트 스토리지로, 7일 보존
  • 아침 리포트 — 매일 06:45 온박스 점검 결과를 앱 화면에서 조회 (컨테이너·API 생사·CPU 스핀·디스크·인증서)

판매용 ERP SaaS 제품을 단독 설계·개발 — 화면 118본·마이그레이션 187본, 모든 설계 결정을 근거와 함께 문서화

2026-07 ~ 진행중 · 개인 프로젝트 — 기획·설계·개발·배포 전부 단독

Spring Boot 4 · Java 21 · PostgreSQL 16 · MyBatis · Flyway · React 18 · Vite · TypeScript

커밋 620 · 코드 92,159줄(마이그레이션 SQL 16,862줄 별도) · 표 131개 · 마이그레이션 187본구현 화면 118본 (견적→수주→출하→매출→채권 / 매입→채무 / 재고 전 구간 연결)설계 결정 66건 · 설계문서 3,803줄운영 중 — 실 서버 배포, 마이그레이션은 전부 운영 DB 리허설(BEGIN…ROLLBACK) 후 적용
  • 5축 정렬 아키텍처 — 화면 하나의 좌표가 패키지·매퍼경로·API·프론트경로·메뉴에서 동일.

300본 이상 양산을 전제로 한 규약이라, 새 화면은 좌표만 정하면 나머지가 따라온다.

  • 재고 그레인 7축 — 사업장·창고·품목·로트·재고유형·세부창고·소유자.

축은 나중에 못 늘린다(전 데이터 재적재가 된다)는 판단으로 쓰기 전에 먼저 열었다.

실제로 뒤늦게 세부창고·로트를 열 때 원장 4천 행이 이미 쌓여 있었는데, 축이 미리 있어서 재적재 없이 붙었다.

  • 재고 엔진을 DB 에 뒀다 — 수불구분 규칙표가 방향을 정하고, 트리거가 잔량을 파생하고, 음수재고를 엔진이 막는다.

화면이 막는 방식을 버린 이유는 문이 여럿이기 때문이다. 실제로 서비스 다섯 곳에 있던 경고 코드가

트리거가 statement 단위라 한 번도 도달한 적이 없었다 — 도달 불가를 증명하고 걷어냈다.

  • 공통 엔진화 — 같은 일을 두 번째로 지으면 규칙이 갈린다는 판단으로 단일화:

채번 · 감사이력(트리거) · 확정문서 잠금 · 선택팝업(팝업뱅크) · 자동완성 ·

그리드 공용값(컬럼 폭·건수 위치·감사 컬럼·로트 칸)

  • CI 게이트 — 프론트 7단(build·lint·test·knip·css·필드·번들예산) + 백엔드 3단(test·매퍼린트·라우팅정합).

린트는 사고를 겪고 추가했다(매퍼 OGNL 리터럴이 배포돼 조회가 500으로 죽은 뒤 checkMappers 를 CI 에 물림)

  • 설계 결정 66건 문서화(docs/decisions.md, 최신 D107) — 결정뿐 아니라 택하지 않은 안과 그 이유까지.

전제가 무너진 결정은 지우지 않고 각주·개정으로 남긴다(무엇이 왜 바뀌었는지가 사라지기 때문).

서비스마다 흩어져 있던 문서번호 채번 로직 4벌을 단일 엔진으로 통합하고, 채번 규칙을 코드 상수에서 DB 테이블로 옮겨 무중단 정책 변경이 가능하도록 재설계

2026-08 · 단독 개발 (설계·구현·배포)

Spring Boot 4 · PostgreSQL 16 · MyBatis · Flyway

채번 구현 4벌 → 1벌, 매퍼 SQL 12문 → 3문요청 VO에서 채번 중간값 필드 10개 제거 (서버 내부값이 화면 요청 객체에 얹혀 다니던 잔재)규칙 변경에 필요한 재배포 1회 → 0회도입 직후 실효 검증: 신규 기능 개발 중 접두어 CO 중복을 DB 제약이 설계 단계에서 차단
  • 채번 규칙을 테이블로 승격(tbl_number_range) — 접두·일자표기·자리수·리셋주기·시작번호를 행으로
  • 발급을 UPDATE ... RETURNING 단일 문장으로 — 기존 SELECT→UPDATE 2단계의 경합 구간 제거
  • 관리 화면 신설로 비개발자가 규칙 변경 가능
  • 두 글자 접두어 충돌을 DB 유니크 제약으로 차단

제약 유통사 ERP 구축을 요구사항 분석부터 데이터 이관·성능 튜닝·운영까지 단독 수행, 품목 검색 응답을 3초 → 0.1초로 단축

2023-07 ~ 2025-12 · 솔루션개발 R&D팀 / ERP 구축 담당

Java · Web ERP · MSSQL(추정) · GitLab CI · Nginx · Docker

품목 검색 3초 → 0.1초 (300만 건 기준, 30배)회계·영업·발주 3개 프로그램 → 1개로 통합계산서 발행이 프로그램 내로 들어오면서 영업지원팀 업무시간 감소
  • 요구사항 분석 → 추상·논리·물리 데이터 모델링
  • 10년치 데이터 이관 (여기서 정합성·슬로우쿼리·메모리 문제가 집중적으로 나왔다)
  • 인덱스 설계·조각화 관리·실행계획 분석으로 검색 성능 개선
  • 전자세금계산서 연동으로 계산서 발행을 ERP 안에서 처리

개인 PC 기반이던 테스트·배포 환경을 Docker + GitLab CI/CD로 전환하고, 무중단 배포와 실시간 헬스체크를 도입

2023-07 ~ 2025-12 · 사내 개발환경 개선 (주도)

GitLab · GitLab Runner · Docker · Nginx · PowerShell · Discord Webhook

개인 PC 의존 테스트 구조 제거배포 중 서비스 중단 없음장애를 사람이 발견하기 전에 알림이 먼저 오는 구조
  • SVN → GitLab 이관, CI/CD 파이프라인 구축·운영 (주도)
  • 무중단 배포 — Nginx 블루/그린 환경 구성
  • 운영 헬스체크 — PowerShell + Discord 웹훅으로 실시간 감시
  • Nginx 리버스 프록시 운영, SSL 자동갱신 관리

사람마다 다르던 쿼리 작성 방식을 트레이드오프 기준까지 담은 사내 가이드라인으로 표준화하고, DB 성능 교육을 진행

2024 ~ 2025 · 사내 DB 가이드라인 제작 · 교육

DBMS(인덱스·실행계획·I/O)

쿼리 리뷰 기준이 사람에서 문서로 이동(⚠ 숫자를 붙일 수 있으면 붙일 것 — 교육 인원, 슬로우쿼리 감소 건수 등)
  • 쿼리 가이드라인 제작 — 단순 금지 목록이 아니라 트레이드오프를 함께 적었다

(언제 이 방식이 유리하고 언제 불리한지)

  • 사내 DB 교육 — PK/FK, 인덱스 조각화 스케줄 관리, 인덱스 생성 시 주의사항,

I/O 원리, 실행계획 분석, 슬로우쿼리 탐색

  • 더존 iCube 데이터베이스 모델 문서화

경력

기간회사직무
2026.06 ~ 재직중㈜지엠피아이티ERP사업부 주임
2023.07 ~ 2025.12ERP·MES 개발사 (2년 6개월)솔루션개발 R&D팀 사원
2022.10 ~ 2022.12드론 유통사 (아르바이트)드론 AS 및 고객응대
2021.03 ~ 2021.09제조사 (아르바이트)생산팀
2019.02 ~ 2021.02공군본부 (전문하사)항공기체정비 하사

학력 · 자격

기간학교과정
2025.02 ~ 2026.02건국사이버대학컴퓨터공학 학사 졸업
2019.03 ~ 2021.02인하공업전문대학교항공기계과 전문학사
2014.03 ~ 2017.02경북항공고등학교헬기정비과
취득자격발행
2026.05정보처리기사 (필기)한국산업인력공단
2024.12SQL 개발자 (SQLD)한국데이터산업진흥원
2021.10초경량비행장치교통안전공단
2021.011종보통운전면허경찰청
2017.01항공정비사교통안전공단

이 페이지는 career 저장소의 facts/ 에서 자동으로 만들어집니다 — 이력서와 어긋나지 않게 하려고요. 마지막 갱신 2026-09-21.