Giter VIP home page Giter VIP logo

open-market-server's Introduction

Open Market Project

  • Commerce 가 제공하는 기능들을 직접 구현함으로써 Commerce 도메인을 이해하자
  • 대규모 트래픽에도 견고한 어플리케이션을 구현하자

기능

고객

  • 상품조회, 구매
  • 장바구니
  • 회원정보 수정, 회원 탈퇴

판매자

  • 상품 등록,수정,삭제

관리자

  • 회원관리
  • 광고비에 따른 상품노출

자주보여주는 데이터 캐싱

  • 메인화에 보여주는 데이터
  • 핫딜 상품 데이터

이벤트

  • 선착순 이벤트
  • 핫딜

CI/CD

기술적인 문제 해결 과정

회원 데이터에 대한 접근 분리 (회원/관리자)

  • 회원 정보를 같은 컨트롤러에서 처리 시 회원이 엔드포인트에 접근하는 경우 발생
  • 복잡해지는 인가 로직 -> 컨트롤러 분리
  • 회원은 회원 id(PK)값으로 접근하는 것이 아닌 Session 에서 현재 사용자를 불러와 접근
  • Adapter 패턴을 이용하여 Account 객체를 스프링 시큐리티가 알고있는 UserDetails로 구현
  • User(UserDetails 구현체)를 통해 DB에서 Account를 불러오는 과정을 생략 할 수있음 -> DB에 대한 부하를 줄일 수 있었다
  • 관련 포스팅 : @AuthenticationPrincipal - 현재 사용자 조회하기

개인정보 보호

  • 비밀번호와 같이 중요한 개인정보가 Response Message 에 포함되어 주고받는 문제
  • TODO

UML Diagram

USECASE (Prototype)

  • 고객
    • 고객은 상품조회 및 상품구매를 위해 회원가입, 회원수정, 회원탈퇴를 할 수 있다.
    • 고객은 어떤 상품을 구매할지 보기 위해 (랭킹, 가격, 등록) 등의 옵션으로 상품목록를 카테고리별로 볼 수 있다.
    • 고객은 카테고리별로 브랜드 비교를 위해 브랜드 목록을 볼 수 있다.
      • 신발 카테고리 : 나이키, 반스, 아디다스
    • 고객은 원하는 특정 물건을 구매하기 위해 검색을 통해 물건을 판매하는 판매자의 목록을 불러올 수 있다.
    • 고객은 최종 구매 전 상품비교 등을 목적으로 장바구니를 통해 원하는 상품을 구매 전에 확인 할 수 있다.
  • 판매자
    • 판매자는 상품 판매를 위해 물건을 등록, 수정, 삭제 할 수 있다.
    • 판매자는 상품 판매를 촉구하기 위해 물건에 대한 광고 및 이벤트를 진행 할 수 있다.
  • 관리자
    • 관리자는 회원관리를 위해 고객/판매자의 상태를 관리 할 수있다.
      • BAN, NORMAL

open-market-server's People

Contributors

jjeda avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

open-market-server's Issues

README 작성

Trade-off에 대한 내용들 정리해서 README에 담기

주문 도메인 개발

  • 주문 엔티티 개발
  • 주문 레포지토리 개발
  • 주문 서비스 개발
  • 주문 컨트롤러 개발
  • 테스트코드 작성

Account management API

  1. Simple Account CRUD
  2. Spring Security : authentication / authorization
  3. Spring session : JVM -> Redis

결제정보 관련

  • 단순히 결제 상태( 결제 전, 결제 완료, 환불 처리 등)를 가지고 있을 것인지
  • 결제 종류 (모바일, 계좌이체, 카드 등)
  • 결제 종류에 따른 정보들 처리 (모바일이면 휴대폰 번호, 계좌이체면 계좌 정보 등)

결제시스템에 대해 공부..

study junit5

  • 테스트 코드에 주석처리하는 방법
  • ...

study @JsonIgnore

  • Getter에만 적용하는 방법 공부하기
  • 메시지 마스킹 처리하는 방법 공부하기

아이템 <-> 카테고리 로직처리

   public Item saveItem(ItemDto itemDto) {
        Item item = itemDto.toEntity();
        List<ItemCategory> itemCategories = item.getItemCategories();
//TODO 
        for (ItemCategory itemCategory : itemCategories) {
            itemCategory.setItem(item);
            Category category = itemCategory.getCategory();
            category.getItemCategories().add(itemCategory);
        }

        return itemRepository.save(item);
    }

MySQL Database

  • MySQL 적용하기
  • 스키마 포함 소스에 같이 올리기

Spring security 적용

authentication & authorization

  • Spring security oauth2 적용
  • grantType : password
  • tokenStore : redis
  • 권한에 따라 CRUD 로직 추가

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.