Gitsunmin

식봄

← Works
식봄

식봄

마켓보로

2024.01 ~ 2025.12

전화·팩스로 이뤄지던 식자재 발주를 온라인으로 옮긴 B2B 커머스 식봄의 프론트엔드를 담당했습니다. 레거시 PHP 웹과 Next.js 신규 웹이 같은 도메인에서 병행 운영되는 구조라, 양쪽을 함께 다루며 검색·상세·주문·쿠폰 등 핵심 사용자 흐름을 개발하고 대형 장바구니 성능을 측정 기반으로 최적화했습니다. 관리자 웹과 인쇄 템플릿 라이브러리까지 여러 레이어를 함께 맡았습니다.

Next.js React TypeScript Tailwind CSS GraphQL Relay PHP Storybook Datadog

담당 범위

  • 식봄 웹 (Next.js) — 장바구니 쿠폰 영역과 장바구니 성능 개선
  • 레거시 웹 (PHP) — 아무도 맡지 않던 검색·퍼블리싱을 자원해 주도 개발
  • 관리자 웹 (React) — 쿠폰 관리, 레거시 도구의 기능 단위 React 전환
  • 인쇄 템플릿 라이브러리 — 설계부터 개발·배포까지 단독 수행
  • 팀 개발·테스트 기준 정리 — 커스텀 ESLint, 테스트 계층 분리
B2B 식자재 유통 플랫폼
유통사 창고유통사식자재 공급
식봄
🥬
🥩
🐟
🥚
식당식당음식점 사장님
발주
배송
수령
발주

클릭 한 번으로 실시간 식자재 발주

음식점 사장님이 전화·팩스 없이 식봄 앱에서 식자재를 바로 주문합니다. 실시간 가격 확인과 즉시 발주로 기존 발주 방식의 불편함을 해소합니다.

  • 식자재 카탈로그 실시간 가격 조회
  • 장바구니 기반 간편 주문
  • 필터기반 상품 검색 지원
배송

유통사에서 식당까지, 식봄이 연결합니다

주문 완료 즉시 유통사에 발주가 전달되고 배송이 시작됩니다. Datadog RUM으로 수집한 실사용 지표를 기반으로 사용자 경험을 지속 개선합니다.

  • GraphQL + Relay로 데이터 오버페칭 방지
  • Datadog RUM 기반 모니터링
수령

식자재 도착, 투명한 디지털 거래

식당에 식자재가 안전하게 도착하거나 문제가 발생하면 즉시 배송 상태로 상품의 상태를 확인할 수 있습니다.

    고지: 전 직장의 영업비밀 보호를 위해 내부 식별자·파일 경로·연동 규격 등 일부 항목은 생략하거나 실제와 다르게 표기했습니다.

    배경

    마켓보로는 식자재 유통 시장의 디지털 전환을 목표로 식봄 서비스를 운영합니다. 식봄은 음식점 사장님이 식자재를 온라인으로 주문하는 B2B 커머스로, 전화·팩스 중심의 발주 방식을 실시간 가격 확인·즉시 발주·배송 추적이 가능한 구조로 대체합니다.

    식봄은 레거시 PHP 웹과 Next.js 신규 웹이 동시에 운영되는 서비스입니다. 한 번에 갈아엎는 대신 CDN 레벨 라우팅으로 두 서비스를 같은 도메인에 붙여두고, 인증·검색 등 기능 단위로 현대화했습니다. 사용자는 두 서비스의 존재를 인지하지 못합니다.

    동일 도메인 진입
      ├── 전환 완료 기능 → Next.js 신규 웹
      └── 미전환 기능    → PHP 레거시 웹

    이 구조 때문에 신규 웹과 레거시 웹 양쪽을 모두 만질 수 있어야 했고, 실제로 프론트엔드뿐 아니라 PHP(CodeIgniter) 단의 퍼블리싱과 기능 구현까지 담당했습니다.

    해결한 문제

    각 문제의 상황·원인·접근·결과·한계는 아래 탭의 문서에 케이스 단위로 정리했습니다.

    문제어디에
    재현되지 않는 “장바구니가 느리다” — 로컬에서 재현되지 않는 성능 저하를 Datadog RUM으로 사용자군을 특정해 계측 대상으로 바꾸고, 크리티컬 패스를 정리식봄 웹 탭
    알림이 너무 많아서, 정작 장애를 놓쳤다 — 로그 레벨을 “필요한 행동” 기준으로 재정의하고 알림을 error로 한정, 나머지는 매일 아침 도착하는 대시보드로식봄 웹 탭
    아무도 맡으려 하지 않는 화면이 남아 있었다 — 곧 대체될 레거시 PHP 화면의 검색·퍼블리싱을 자원해 맡고, 프론트엔드 경계를 넘어 컨트롤러까지 직접 개선레거시 웹 탭
    운영을 멈추지 않고 관리 도구를 옮기기 — 기능 단위 독립 모듈로 분리해 레거시와 병행 운영관리자 웹 탭
    같은 라벨이 서비스마다 다르게 인쇄된다 — UMD 단일 배포로 기술 스택과 무관하게 버전을 하나로 고정인쇄 템플릿 탭
    인쇄물 오류는 배포 후 현장에서 발견된다 — 실물 프린터·스캐너 검증을 배포 전 절차로 고정인쇄 템플릿 탭

    이 프로젝트에서 반복적으로 다룬 축은 정합성(표시 금액이 어긋나면 곧바로 CS·클레임이 되는 영역), 레거시 병행 운영, 성능, 운영 가시성(로그 레벨과 알림 조건 설계), 그리고 팀 기준(리뷰에서 반복되던 규칙 지적을 커스텀 ESLint으로 이관)이었습니다.

    소비자 웹은 전체 쇼핑 플로우를 아우르는 대규모 프로덕션 커머스를 팀으로 공동 개발했습니다.

    전체 기술 스택

    레이어기술
    소비자 웹 (Next.js)Next.js, TypeScript, Tailwind CSS, GraphQL, Relay, Jotai
    소비자 웹 (레거시)PHP (CodeIgniter), MySQL, Redis, Elasticsearch
    관리자 웹 (React)React, TanStack Router, TypeScript, Tailwind CSS, Relay
    인쇄 라이브러리React, TypeScript, Vite (UMD)
    모니터링Datadog RUM / Logs
    실험·플래그GrowthBook
    CI/CDBitbucket Pipelines

    관련 링크