SOHEE KIMWEB DEVELOPER

어떤 경험이 궁금하세요?

PROJECT 04

ECOMMERCE / BACKEND & OPERATIONS

스룩 · 2021—2023

운영 데이터를 빠르게 조회하고,
문제의 원인을 기록으로 찾도록

마케팅과 CRM 시스템의 백엔드를 중심으로 담당했습니다. 통계 조회를 개선하고 외부 전화 서비스의 중복 데이터 유입을 추적해 예외 처리하며, 운영자가 필요한 정보를 빠르게 확인할 수 있도록 구성했습니다.

담당
백엔드 중심 · 일부 프론트엔드
핵심 작업
통계 조회 · 운영 DID · CRM 오류 추적
기술 환경
C# · ASP.NET · MSSQL · Vue.js · IIS

01 / CONTEXT & ROLE

세 가지 사용자 영역을 지원하는 운영 플랫폼

공급자, 판매업체, 마케팅 운영자를 위한 백오피스로 구성됐습니다. 그중 마케팅 셀렉션 BO, 운영 CRM, 일부 판매자 BO를 담당했습니다.

회사 서비스 구조

공급자 BO

상품을 공급하고 관리하는 영역

일부 판매자 BO 담당

판매업체 BO · 판매자샵 FR

상품 운영과 실제 판매 화면

담당

마케팅 셀렉션 BO

마케팅과 판매 운영 관리

운영 CRM

전화 상담과 고객 운영 업무 지원를 위한 백엔드를 담당했습니다. 통계 조회와 데이터 유입 문제를 개선하고, 운영자가 반복하는 입력 작업을 줄이는 기능을 구현했습니다.

02 / QUERY PERFORMANCE & DASHBOARD

과거 데이터는 미리 집계하고,
오늘 데이터만 15초마다 갱신합니다

관리자 통계 화면은 정산, 매출, 원가, 할인 등 여러 테이블을 한 번에 조인해서 보느라, 조회 대기 시간이 길었습니다. ASP.NET 화면의 조회는 MSSQL 저장 프로시저에서 맞춰 갔습니다.

문제

조회할 때마다 무거운 전체 집계

인덱싱과 쿼리 튜닝 후에도 전체 데이터를 조회하는 데 시간이 걸렸습니다. 반복 갱신하는 대시보드에는 조회 범위를 줄이는 방식이 필요했습니다.

개선

과거 집계와 당일 조회 분리

매일 새벽에 당일 00시 이전의 총매출·총비용 등을 별도 테이블에 저장하고, 대시보드는 당일 데이터만 조회해 과거 집계와 합산하도록 구성했습니다.

운영 DID의 데이터 조회 흐름
매일 새벽 / 과거 집계
  1. 당일 00시 이전
  2. 매일 새벽 집계
  3. 통계 테이블 저장
15초 주기 / 당일 조회
  1. 당일 데이터
  2. 15초마다 조회
  3. 과거 집계와 합산
Vue.js 운영 DID

저장된 과거 집계 + 당일 데이터

  • 총매출
  • 총비용
  • 이익
  • 판매 제품 현황

실제 영업 업무에서 사용한 대시보드

영업 담당자가 매출·비용·이익과 판매 제품 현황을 확인하는 데 사용했고, 업무에 도움이 됐다는 피드백을 받았습니다.

쿼리 튜닝과 통계 집계구현 과정 펼치기구현 과정 접기

실행 계획에서 인덱스 사용 확인

검색 조건과 조인 키가 인덱스를 사용하는지 실행 계획으로 확인하고, 사용할 수 있는 인덱스를 적용했습니다. 정산·매출·원가·할인을 함께 조회하는 저장 프로시저에서 실제로 수행하는 일을 줄이는 방향으로 접근했습니다.

행을 줄인 뒤 조인

전체 테이블을 붙인 뒤 기간을 필터링하는 대신, 각 테이블에서 필요한 기간·상태의 행을 먼저 남기고 조인하도록 구성했습니다. 여러 원장의 관계는 유지하면서 중간 결과가 커지는 것을 줄였습니다.

과거 집계와 당일 조회의 역할 분리

매일 새벽에 당일 00시 이전의 총매출·총비용 등을 계산해 별도 통계 테이블에 저장합니다. Vue.js 운영 DID는 15초마다 당일 데이터만 조회하고 저장된 과거 집계와 합산합니다.

관리자 메뉴에서 확인하던 집계를 매출·이익·카테고리별 현황 중심으로 구성해, 영업 담당자가 모니터에서 운영 상황을 확인할 수 있도록 했습니다.

03 / CRM TROUBLESHOOTING

전화 한 번에 쌓이던 중복 데이터,
Sentry 로그에서 원인을 찾았습니다

외부 업체가 제공하는 WebSocket 기반 CRM 리모트 콜 서비스에서, 전화 한 번에 불필요한 데이터가 추가로 쌓이는 문제가 있었습니다. 기존 전화 연동의 오류 분석과 예외 처리를 담당했습니다.

  1. 01 / 관찰

    유입 데이터 기록

    외부 WebSocket 연동에서 들어오는 데이터를 확인할 수 있도록 Sentry 로그를 추가했습니다.

  2. 02 / 원인 확인

    불필요한 중복 유입 발견

    한 번의 전화 이후 추가로 들어오는 데이터를 로그로 확인했습니다.

  3. 03 / 수정

    예외 처리 적용

    중복되는 불필요한 데이터가 처리되지 않도록 예외 처리를 적용했습니다.

운영 로그로 외부 연동 문제를 추적한 경험

이 작업을 통해 처음으로 WebSocket 기반 연동을 다루고, Sentry를 활용해 실제 유입 데이터에서 오류의 원인을 확인했습니다.

04 / OPERATIONS SUPPORT

공동구매 대량 주문 등록

운영자가 주문을 하나씩 입력하지 않도록 Excel 파일로 대량 주문을 등록하는 기능을 구현했습니다.

입력
Excel 파일
처리
대량 주문 등록
기술 환경
C# · ASP.NET · MSSQL