정밀한 그리드로 배열된 어두운 모듈 블록 몇 개가 내부에서 오렌지빛으로 빛나는 이미지

사내 시스템 — 홈페이지·내부 도구·자동화 스위트

퍼포먼스 마케팅 대행사의 전산 담당으로 시작해, 회사 홈페이지 리뉴얼·내부 도구·마케팅 자동화 스위트까지 실제 운영되는 시스템을 코드로 구축했다.

2026 –사내 시스템 개발·운영 (1인)

  • PHP/MariaDB
  • TypeScript
  • React
  • Playwright
  • Cloudflare
452개실측마케팅 자동화 스위트 (11개 패키지) 자동화 테스트
415실측좌석 배치 내부 도구 누적 커밋
월 30–40h추정반복 업무 절감 (마케팅팀 산출 기준)

문제

중견 마케팅 대행사에는 “개발팀”이 없는 경우가 많다. 홈페이지는 외주 산출물 그대로 굳어 있고, 리포트·심의 관리·리드 검수·예산 점검은 전부 사람 손으로 돈다. 전산 담당으로 입사해 이 반복을 코드로 바꾸는 일을 스스로 범위에 넣었다.

무엇을 만들었나

회사 공식 홈페이지 리뉴얼. 레거시 정적 페이지를 관리자(CMS)·API·DB·KO/EN i18n을 갖춘 구조로 재구축했다. 보안 결함(평문 자격증명 하드코딩)을 발견해 제거하고, CSRF/이스케이프/서버 검증을 표준화했다. 테스트 서버 선검증 → 운영 반영 원칙을 도입해 실서비스 장애 없이 배포를 반복했다.

내부 운영 도구. 좌석 배치 관리 도구(415커밋)를 포함해, 관리 업무를 웹 도구로 전환. 서버리스(무료 티어) 배포로 유지비 0원.

마케팅 자동화 스위트 — 11개 패키지. 광고 성과 리포트 자동화(3포맷 자동 감지 → 대시보드 → XLSX/PPT 생성), 심의필번호 레지스트리(만료 시 파이프라인 차단), 리드 품질 검사기(28컬럼 검증·중복 탐지·CPA 집계), 예산 페이싱 모니터, 5개 매체 API 커넥터(HMAC/OAuth2/JWT 인증 실구현), 알림 브리지. 공통 원칙 세 가지:

  1. fail-closed — 만료·오류·중복이 있으면 파이프라인이 non-zero로 죽는다. 사람이 놓쳐도 시스템이 막는다.
  2. 개인정보 무반출 — 개인정보 컬럼은 파싱 즉시 건수로 환원되고, 값이 화면·리포트 어디에도 나가지 않음을 테스트로 강제한다.
  3. 정직 라벨 — 산출 불가능한 지표는 0으로 위장하지 않고 “산출 불가”로 표기한다.

결과

  • 11개 패키지 전체 빌드·테스트 green — 자동화 테스트 452개(실측), TypeScript strict.
  • 주간 리포트 1건 수작업 60–90분 → 업로드+내보내기 5분 이내(추정, 가정 문서화).
  • 읽기 전용 크롤러가 레퍼런스 실스캔에서 구 애널리틱스 태그 잔존 같은 실제 결함을 발견 — 수동 점검이 못 잡던 유형이다.

한계와 실패 모드

  • 회사 자산(코드·데이터)은 회사에 있다. 여기 적을 수 있는 것은 범위·방법론·실측 수치까지다 — 실데이터·실계정 화면은 공개하지 않는다.
  • 매체 API 커넥터는 인증·파싱까지 구현·테스트됐지만 실 API 키 수령 전이라, 실응답 스키마 차이에 대한 검증이 남아 있다(문서화됨).
  • 절감 시간은 추정이다 — 가정을 바꾸면 숫자도 바뀐다. 그래서 가정을 항상 함께 적는다.

배운 것

“개발자가 없는 조직”에서 시스템을 만들 때 가장 중요한 것은 화려함이 아니라 인수 가능성이다. 문서·테스트·게이트가 있는 시스템은 내가 없어도 돌아가고, 그것이 조직이 시스템을 신뢰하는 조건이다.