관리자 쿠폰 설정에 신규 공급사 탭 추가
목차
쿠폰 관리 시스템에 새로운 공급사 탭을 추가했다. 기존 관리자 화면에서 여러 공급사별 쿠폰 정책을 각각 관리할 수 있도록 탭 UI를 확장한 작업이다. 자바 백엔드 웹 컨트롤러 클래스와 JSP 뷰 레이어를 수정해서 구현했는데, 단순해 보이는 "탭 하나 추가"가 실제로는 꽤 신경 쓸 부분들이 많았다.
왜 이 작업을 했나
쿠폰 시스템은 보통 여러 공급사(파트너사)와 협력하면서 운영된다. 각 공급사마다 쿠폰 정책(할인율, 유효기간, 대상 상품 등)이 다르고, 경우에 따라 실시간으로 조정이 필요하다. 기존에는 관리자가 공급사를 선택한 뒤 일일이 설정을 수정했는데, 여러 공급사를 동시에 비교하거나 한 화면에서 한눈에 보기가 어려웠다. 그래서 탭 UI로 공급사를 나누고, 각 탭 안에서 해당 공급사의 쿠폰 정책을 독립적으로 관리할 수 있게 만들었다. 특히 여러 공급사의 정책을 잠깐 비교해야 하는 운영 시나리오에서 UX가 훨씬 나아진다.
구현 내용
자바 웹 프레임워크(egovframework)를 쓰는 프로젝트라서 변경이 두 개 레이어에 걸쳤다:
백엔드 (Java 웹 컨트롤러):
- 쿠폰 설정 조회/수정 API 엔드포인트에서 공급사별 데이터를 나누는 로직 추가
- 각 공급사의 쿠폰 정책을 별도로 fetch하거나 필터링하는 부분
- 기존 조회 로직에서 이미 다중 공급사를 지원하고 있었으므로, 그걸 잘 재사용하되 응답 구조를 탭 친화적으로 리팩토링
프론트엔드 (JSP 뷰):
- 탭 UI 컴포넌트 추가 (보통 부트스트랩이나 자체 UI 라이브러리 사용)
- 각 탭의 form 엘리먼트를 공급사별로 namespace 분리
- 저장 시 어느 탭의 데이터를 전송할지 명확히 하는 submit 로직
탭 기능 추가할 때의 주의점들
탭 기능은 간단해 보이지만, 실제론 여러 함정이 있다:
-
상태 관리: 사용자가 탭 A에서 입력한 뒤 탭 B로 넘어갔을 때, 저장을 안 했다면 탭 A의 데이터가 사라질까? 아니면 유지될까? 운영팀 입장에서는 보통 "일단 저장 안 하고 여러 탭 본 뒤 마지막에 한 번에 저장" 패턴을 쓰는데, 그럼 form 상태를 로컬에 캐싱해야 한다.
-
검증 로직: form 검증이 필요하면, 모든 탭의 데이터를 동시에 검증할지, 아니면 현재 활성 탭만 검증할지 결정해야 한다. 특히 공급사별로 필수 필드가 다르면 더 복잡해진다.
-
데이터 동기화: 서버에서 공급사 목록이 추가/제거되면 탭도 자동으로 추가/제거되어야 한다. 하드코딩 말고, 동적으로 대응할 수 있어야 한다.
내가 구현할 때는 이 부분들을 먼저 팀과 논의해서 정책을 정했다. "최소 MVP"로는 현재 활성 탭만 검증하고, 각 탭을 독립적인 form으로 취급하기로 했다. 나중에 필요하면 통합 검증이나 다중 탭 저장은 언제든 추가할 수 있으니까.
유지보수와 확장성 관점
이 기능이 중요한 이유는 비즈니스 측면이다. 앞으로 새로운 공급사가 계속 추가될 텐데, 그때마다 백엔드 코드를 수정해야 하면 안 된다. 공급사 목록을 DB 또는 설정 파일에서 로드해서, 동적으로 탭을 생성하도록 설계했다.
또한 나중에 팀원이 이 기능을 수정하거나 확장할 때를 생각했다. JSP는 가독성이 떨어지기 쉽기 때문에, 탭 생성 로직을 별도의 include 파일로 분리하고, 주석을 충분히 달아두었다. "왜 이렇게 했는가"를 코드에 남겨두면 3개월 뒤 나나 팀원이 "아 이건 공급사가 동적으로 추가되니까 이렇게 한 거구나" 하고 이해할 수 있다.
배운 점과 다음을 위한 노트
간단한 UI 추가라도 실제론 데이터 흐름, 상태 관리, 확장성을 함께 생각해야 한다는 걸 다시 한 번 느꼈다. 특히 쿠폰처럼 금전과 관련된 기능이면 더 신경 써야 한다. "어떤 공급사의 쿠폰 데이터를 수정했는가"를 명확히 하지 않으면 나중에 장애 상황에서 디버깅이 어렵다.
다음에 비슷한 작업을 할 때는:
- 탭 선택 시 자동 저장 여부를 미리 정할 것
- 공급사별 쿠폰 수정 이력(audit log)을 기록할 수 있게 설계할 것
- 권한 체크(특정 운영자는 특정 공급사의 탭만 볼 수 있는지)를 고려할 것
이번 작업은 요청사항 자체는 "탭 하나 추가"지만, 그 배후의 운영 프로세스와 데이터 무결성을 함께 고려했다. 이게 좋은 개발이라고 생각한다.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.