본문으로 건너뛰기
온라인
kov0.46.1 · 1d135e2
활성

Karuselle

엄선한 중고 디자이너 패션을 위한 다국어 마켓플레이스: 성장하는 Laravel 코드베이스 위의 시맨틱 검색, 유연한 판매자 수수료, EU 세무 보고, 새로운 결제 수단.

Karuselle 홈페이지: 엄선한 디자이너 패션 리셀러로, 은색 핸드백의 전체 폭 사진, “Sell with us” 버튼, 브랜드·카테고리별 메뉴, 검색, 언어 전환 기능

과제

판매자가 많고 외부 판매 채널이 여럿인 다국어 패션 마켓플레이스가 노후한 코드베이스 위에서 계속 성장해야 했습니다. 더 똑똑한 검색, 공정하고 유연한 수수료, EU 세무 보고, 더 많은 결제 수단, 그리고 빠르고 안전하게 유지되는 스토어가 필요했습니다.

해결책

3년 동안 유일한 개발자로 일했습니다.

  • 프레임워크 업그레이드: 2주 만에 모든 패키지와 함께 Laravel 5.8 → 6 → 7 → 8 → 9 → 10 → 11, PHP 7.4 → 8.x로 업그레이드하고 새 서버로 이전.
  • 4개 언어 시맨틱 검색: 자체 호스팅 임베딩 서비스와 벡터 데이터베이스, 큐를 통한 증분 색인 동기화, 서킷 브레이커를 갖춘 일반 검색 폴백, 배포 없이 관리자 페이지에서 전환하는 스위치, 결정적인 색상·카테고리·소재 필터, 동의어와 진단 명령.
  • 카탈로그와 스토어프런트: 필터 개수가 표시되는 서랍형 실시간 AJAX 필터, EU 및 국가별 사이즈 체계로의 사이즈 변환, 할인 및 판매자 필터, SEO 친화적인 URL, 카드·헤더·푸터·메가 메뉴 전면 재디자인, 끌어서 놓기로 관리하는 홈페이지 배너와 슬라이더.
  • 가격 제안(Make an offer): 구매자가 가격을 제안하면 관리자가 게스트에게도 이메일로 역제안하며, 1인당 제한, 만료, 중복 클릭 방지를 지원합니다.
  • 결제: 장바구니, 결제, 이메일, VAT 인보이스 전반에 적용한 Buyer Protection 수수료; 쿠폰, 국가별 배송; 3D Secure를 지원하는 Stripe, Apple Pay와 Google Pay, PayPal REST, 금액 검증을 갖춘 Paysera.
  • 판매자와 정산: 자체 수수료와 인보이스가 있는 판매 채널, 한 주문 안에서 판매자별 별도 인보이스, 판매자 정산일, XML 형식의 EU DAC7 세무 보고서, 데이터베이스 잠금으로 발급하는 인보이스 번호, 그리고 단일 리졸버·채널별 요율·등록 기간 규칙·미리 보기·끌어서 정렬·변경 기록을 갖춘 Commission Rules 모듈.
  • 피드와 마케팅: Google Merchant, Facebook, CSV 형식의 파트너 마켓플레이스, Mailchimp 이커머스 동기화, consent mode v2.
  • SEO와 GEO: 상품, 이동 경로, FAQ 구조화 데이터, 실제로 존재하는 번역에만 적용하는 canonical과 hreflang, 패싯 페이지 noindex, AI 크롤러용 robots 규칙과 llms.txt, 매일 생성되는 사이트맵과 SEO 점검 명령.
  • 언어: 저장 시 번역과 주간 동기화 명령을 갖춘 LT, EN, PL, RU.
  • 관리와 운영: 워커 하트비트가 있는 큐·작업 패널, 백그라운드 내보내기, 입력한 텍스트를 지키는 세션 복구, 방치된 임시 상품 정리.
  • 보안: 보안 검토를 통해 접근 제어와 파일 접근의 허점을 막고, 계정별·IP별 로그인 제한을 추가하고, 비밀번호 변경 시 세션을 종료하고, 업로드 가능한 파일 형식을 제한했습니다.
  • 테스트: 0개에서 239개로 늘린 테스트 스위트와 프로덕션에서 실행되지 않도록 하는 안전장치.

결과

  • 상품 50개의 수수료 계산: 데이터베이스 쿼리 101개에서 2개로.
  • 제안 목록: 페이지당 쿼리 169 → 121; 제안 35개가 있는 상품: 92 → 64.
  • 상품 썸네일: 개당 136 KB → 20 KB(카테고리 페이지당 60개); 상품 하나의 이미지 2.5 MB → 0.5 MB.
  • 판매 내역의 판매자 수익에 실제로 청구된 금액이 표시됩니다. 과거 기록 대부분에 영향을 준 오류를 찾아 수정했습니다.
  • 시맨틱 검색은 프로덕션에서 약 9,000개 상품을 다룹니다.

스크린샷