업무 · 국민카드 · 엔더스

사내 공모전 플랫폼

응모·심사·포인트 지급을 연결하는 공모전 플랫폼의 포인트 도메인과 권한 체계를 구현했습니다.

기간
2022.10 - 2023.05
역할
플랫폼 개발 · 포인트 도메인 담당
기술
Java, Spring Boot, Thymeleaf, MyBatis, WebLogic

주요 성과

  • 심사 결과부터 포인트 지급·차감·이력까지 도메인 구현

    포인트 산정 기준과 트랜잭션, 중복 지급 방지 로직을 함께 구현해 잔액과 변경 이력을 관리하도록 구성했습니다.

  • 조회 특성에 따라 복합 인덱스와 캐시를 적용

    응모자 조회는 복합 인덱스로 개선하고, 반복되는 메타데이터 조회에는 Spring Cache를 적용해 DB 부하를 줄였습니다.

  • 응모자·심사자·관리자의 업무 권한 분리

    공모전의 업무 단계와 역할에 맞춰 접근 가능한 기능을 구분했습니다.

잔액뿐 아니라 지급 과정의 정합성 관리하기

심사 결과가 포인트로 연결되기 때문에 중복 지급이나 부여·차감 처리의 불일치는 결과 자체를 바꿀 수 있었습니다. 최종 잔액만 보여주는 것보다 어떤 기준으로 바뀌었는지 추적할 수 있어야 했습니다.

산정 기준을 정리하고 부여·차감을 트랜잭션으로 처리했습니다. 중복 지급 방지와 포인트 이력 관리를 함께 구현해, 지급 결과와 변경 과정을 같은 도메인에서 관리했습니다.

조회 성격에 따라 인덱스와 캐시 나누기

응모자 조회와 반복되는 메타데이터 조회는 다른 접근이 필요했습니다. 검색을 개선하는 작업과 같은 데이터를 반복해서 읽는 비용을 줄이는 작업을 구분했습니다.

응모자 조회에는 복합 인덱스를 추가하고, 메타데이터에는 Spring Cache를 적용했습니다. 조회 대상에 맞는 방식으로 성능과 DB 부하를 개선했습니다.

업무 역할을 기능 접근 권한으로 옮기기

응모자·심사자·관리자는 수행하는 업무가 달랐습니다. 같은 플랫폼에 접근하더라도 역할에 맞는 기능만 사용할 수 있도록 구분해야 했습니다.

업무 단계와 사용자의 책임을 기준으로 권한을 분리했습니다. 응모·심사·관리 기능의 접근 범위를 역할별로 구현했습니다.