Coder Social home page Coder Social logo

fream's Introduction

👟 Fream

한정판 거래 플랫폼 Kream 을 클론코딩한 프로젝트입니다.

자세한 내용은 아래 위키에서 확인할 수 있습니다.

💻 Tech Stacks

  • Java 11
  • Spring Boot 2.5.3
  • MySQL 8
  • Mybatis
  • Spock framework
  • Nginx
  • Jenkins
  • Docker

fream's People

Contributors

cocahack avatar f-lab-joseph avatar hyundeokpark avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

cocahack saintyun

fream's Issues

상품 검색 쿼리 개선

Description

  • 현재 상품 검색의 페이징은 limit 와 offset 을 사용하고 있다. 이를 다른 방식으로 바꿔 성능을 개선한다.
  • 상품 검색의 join도 FROM 절에 서브 쿼리를 사용하고 있다. 이것도 다른 방식으로 바꿔서 성능을 개선한다.

상품의 입찰 조회 기능

Description

상품을 구매하거나 판매할 때, 최저 판매 입찰가와 최고 구매 입찰가로만 거래가 가능하다.

유저입찰 타입에 따라 최저 판매 입찰가 또는 최고 구매 입찰가를 조회할 수 있는 기능이 있어야 한다.

이를 입찰 조회 기능 (GET /auction/asks' 와 GET /auction/bids) 를 통해 사용할 수 있도록 구현한다.

v1 로컬 데모 환경 구성

TODO list

  • 컨테이너 환경 구성
    • 이미지 빌드
    • docker-compose 배포 Docker CLI 만 사용하여 배포
  • 앱 실행
    • seed data 추가
    • Postman collection 제공

[v2] 로컬 환경 구성

목표

MSA 구성에 필요한 Microservice Chassis 프레임워크와 서비스를 붙여 로컬 환경에서 구동해볼 수 있도록 만든다.

Description

  • 상품 서비스 (비즈니스 로직 제외)
  • Tracing
  • Log aggregation
  • Externalized configuration
  • Service discovery

상품 검색 기능

요구 조건

  • 입력된 키워드를 브랜드 및 상품 이름과 비교한다.
  • 브랜드와 상품 이름 각각의 유사도를 먼저 확인하고, 둘의 정렬 기준을 마련해야한다.
  • 키워드는 한국어 또는 영어이다

Option

  • 줄임말, 별명 등으로 검색
    • 예시
      • Supreme x The North Face 콜라보 제품: 슈노
      • Offwhite: 옾화

유저 기능 구현

구현할 기능 목록

  • 기본 기능
    • 회원 가입
    • 이메일 or 비밀번호 찾기
    • 비밀번호 변경
    • 회원
  • 회원 부가 정보
    • 주소록
      • 기본 배송지 설정
      • 배송지 별칭 설정
    • 정산 계좌 관리

회원가입API 스팩변경

상황

  1. 회원가입 시 주소를 입력받지 않음
  2. 로그인 시 실패
  3. 회원가입 시 주소를 받도록 스팩변경
  4. 도메인 @NotNull 어노테이션 검증 시 예외처리가 정상적으로 되지 않는 경우 발견

개선 계획

  • 기존 User 도메인으로 그대로 받았던 것을 joinDto로 전용 Dto로 변경,
  • 회원가입 시 주소록을 같이 입력 받아 추후 프로세스에도 영향 가지 않도록 변경
  • 예외처리 관련 리펙토링 및 개선

통합 테스트에도 프로필에 따라 test container 로드

Description

이전에 올렸던 #29 PR 에서 프로필에 따라
test container를 사용할지 여부를 결정하게 만들었는데, 통합 테스트에는 미처 적용하지 못했었다.

통합 테스트에도 같은 방법이 적용되도록 수정해야 한다.

정산계좌 관리

계정당 금액을 정산받을 계좌를 설정한다.
주소와 달리 계정당 1개의 계좌만 설정가능하다.

주소록 설정 기능

-각 계정의 물품을 배송/반송 받을 주소를 설정,
-계정당 '주소록'으로 관리하여 여러개의 주소를 기입할수있다.
-주소록의 주소를 별칭으로 관리가능 (ex: 집, 회사...)
-주소록의 주소들 중 한개를 기본배송지로 설정가능

회원 로그인 구현

회원의 로그인 방식 구현

세션,토큰 등 구체적인 방향을 정하고 개발해야한다.

fream 시나리오

fream 애플리케이션 테스트 시나리오

크게 2가지 분류로 나누어 생각해 작성했습니다.

  • 회원가입,로그인,로그아웃 등 인증/인가 관련된 시나리오
  • 핵심적인 구매/판매 비지니스 기능에 관련된 시나리오

혹시 더 추가할게 있으면 코멘트 남겨주세요!

    1. 회원가입
    1. 로그인
    • 물건검색
      • 구매입찰
        • 낙찰
        • 구매 입찰시 최저 판매가 미만 금액 입력
      • 입찰취소(구매)
      • 입찰수정(구매)
      • 판매등록
        • 낙찰
        • 판매 등록시 최고 구매희망가 초과 금액 입력
      • 입찰취소(판매)
      • 입찰수정(판매)
    1. 로그아웃

@cocahack @f-lab-joseph

Spring-Session-JDBC 의존성 추가

상황

  • Spring-Session-JDBC 의존성 삭제 확인

제가 Bcrypt 라이브러리를 추가하면서.. 모르고 Spring-Session-JDBC 의존성을 삭제한체로 머지했네요...

검색 필터링 기능

  • 검색 결과를 걸러주는 필터 기능.
    • 필터 종류
      • 카테고리
      • 브랜드
      • 사이즈

1차 프로젝트 운영 방안

논의할 사항

배포

  • 애플리케이션의 빌드 결과물은 무엇인가?
  • 웹 서버, 애플리케이션, 그리고 데이터베이스는 어디에 어떻게 배포할 것인가?
  • 다중화를 할 것인가?
  • 무중단 배포를 할 것인가?
  • CD는 어떻게 할 것인가?
    • 배포 실패 시 롤백은 어떻게 할 것인가?
      • 애플리케이션, 데이터베이스 스키마 롤백 전략

운영

  • 로그
    • 어떤 내용을 기록할 것인가? (Log level)
    • 어디에 저장할 것인가?
    • 기록된 로그를 어떻게 조회할 것인가?
  • 장애
    • 감지한 장애는 어떻게 통지를 받을 것인가?

TODO list

  • CI/CD 환경 구성
    • Jenkins 구성
    • 로컬 이미지 레지스트리 구성
    • CI/CD 스크립트 작성
      • Github Actions CI 를 Jenkins 로 이전
      • main 브랜치 CI/CD 파이프라인 작성
    • 무중단 배포

물품 거래 기능 구현

구현할 기능 목록

  • 물품 판매/구매
    • 판매 / 구매 입찰 등록
    • 물품 구매
    • 내가 등록한 입찰 내역 조회

물품 관련 기능 구현

구현할 기능 목록

  • 목록 조회
    • 일부 데이터 포함한 물품 목록 조회
    • 검색 기능
    • 검색 필터 기능
  • 물품 상세
    • 물품 정보 상세 조회
    • 사이즈별 체결된 거래 목록 조회
    • 사이즈별 입찰 중인 판매, 구매 목록 조회

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.