
사내 시스템 — 홈페이지·내부 도구·자동화 스위트
퍼포먼스 마케팅 대행사의 전산 담당으로 시작해, 회사 홈페이지 리뉴얼·내부 도구·마케팅 자동화 스위트까지 실제 운영되는 시스템을 코드로 구축했다.
- PHP/MariaDB
- TypeScript
- React
- Playwright
- Cloudflare
문제
중견 마케팅 대행사에는 “개발팀”이 없는 경우가 많다. 홈페이지는 외주 산출물 그대로 굳어 있고, 리포트·심의 관리·리드 검수·예산 점검은 전부 사람 손으로 돈다. 전산 담당으로 입사해 이 반복을 코드로 바꾸는 일을 스스로 범위에 넣었다.
무엇을 만들었나
회사 공식 홈페이지 리뉴얼. 레거시 정적 페이지를 관리자(CMS)·API·DB·KO/EN i18n을 갖춘 구조로 재구축했다. 보안 결함(평문 자격증명 하드코딩)을 발견해 제거하고, CSRF/이스케이프/서버 검증을 표준화했다. 테스트 서버 선검증 → 운영 반영 원칙을 도입해 실서비스 장애 없이 배포를 반복했다.
내부 운영 도구. 좌석 배치 관리 도구(415커밋)를 포함해, 관리 업무를 웹 도구로 전환. 서버리스(무료 티어) 배포로 유지비 0원.
마케팅 자동화 스위트 — 11개 패키지. 광고 성과 리포트 자동화(3포맷 자동 감지 → 대시보드 → XLSX/PPT 생성), 심의필번호 레지스트리(만료 시 파이프라인 차단), 리드 품질 검사기(28컬럼 검증·중복 탐지·CPA 집계), 예산 페이싱 모니터, 5개 매체 API 커넥터(HMAC/OAuth2/JWT 인증 실구현), 알림 브리지. 공통 원칙 세 가지:
- fail-closed — 만료·오류·중복이 있으면 파이프라인이 non-zero로 죽는다. 사람이 놓쳐도 시스템이 막는다.
- 개인정보 무반출 — 개인정보 컬럼은 파싱 즉시 건수로 환원되고, 값이 화면·리포트 어디에도 나가지 않음을 테스트로 강제한다.
- 정직 라벨 — 산출 불가능한 지표는 0으로 위장하지 않고 “산출 불가”로 표기한다.
결과
- 11개 패키지 전체 빌드·테스트 green — 자동화 테스트 452개(실측), TypeScript strict.
- 주간 리포트 1건 수작업 60–90분 → 업로드+내보내기 5분 이내(추정, 가정 문서화).
- 읽기 전용 크롤러가 레퍼런스 실스캔에서 구 애널리틱스 태그 잔존 같은 실제 결함을 발견 — 수동 점검이 못 잡던 유형이다.
한계와 실패 모드
- 회사 자산(코드·데이터)은 회사에 있다. 여기 적을 수 있는 것은 범위·방법론·실측 수치까지다 — 실데이터·실계정 화면은 공개하지 않는다.
- 매체 API 커넥터는 인증·파싱까지 구현·테스트됐지만 실 API 키 수령 전이라, 실응답 스키마 차이에 대한 검증이 남아 있다(문서화됨).
- 절감 시간은 추정이다 — 가정을 바꾸면 숫자도 바뀐다. 그래서 가정을 항상 함께 적는다.
배운 것
“개발자가 없는 조직”에서 시스템을 만들 때 가장 중요한 것은 화려함이 아니라 인수 가능성이다. 문서·테스트·게이트가 있는 시스템은 내가 없어도 돌아가고, 그것이 조직이 시스템을 신뢰하는 조건이다.