space‑l · 고객사 전용 OS
기간 — 현재
진행 상황을 문서와 메신저로 따로 전하던 일을 한곳에 모았습니다. 서버와 배포 체계를 맡았습니다.
해외 3개 시장의 광고 성과와 일별 매출을 한 화면에
- 고객사는 아이디·비밀번호, 사내는 슬랙 로그인으로 들어오는 두 경로
- 현지 통화 금액과 원화 참고액 함께 표시
- 일정 타임라인과 자료 공유
- 사내 CRM과 문의 접수
고객 데이터와 사내 데이터
- 문제
- 고객사 화면과 사내 CRM을 한 앱에서 다루더라도 고객사 데이터는 서로 섞이면 안 됐습니다.
- 해결
- 화면은 Next.js, 인증·DB·파일·메일은 Go API 서버로 나눴습니다. 고객사 담당자는 자기 회사 화면만 봅니다. 파일은 고객별 저장소와 그 저장소만 쓰는 권한으로 격리했습니다.
고객사마다 쌓이는 분기
- 문제
- 고객사별 요구를 코드에 그대로 넣으면 고객사가 늘 때마다 분기가 쌓입니다.
- 해결
- 공통 기능과 고객사별 업무 모듈을 나눴습니다. 데이터는 고객, 브랜드, 프로젝트·캠페인, 업무 순의 계층으로 묶고, 고객별 하드코딩은 규칙으로 막았습니다. 서버 업무를 공통 기능과 업무 모듈 11개로 나눴습니다.
개발자를 거쳐야 했던 화면 수정
- 문제
- 화면 수정을 반영할 때마다 PM이 개발자에게 병합과 배포를 부탁해야 했습니다.
- 해결
- 사내 배포기가 브랜치를 2분마다 확인해 검사 뒤 배포합니다. PM이 라벨을 붙이면 검사를 통과한 PR만 병합합니다. PM이 개발자 도움 없이 화면 수정을 반영하고, 배포 토큰은 저장소에서 걷어 냈습니다.