Coder Social home page Coder Social logo

auctionhub's Introduction

auctionHub

시작가 천원! 누구나 참여할 수 있는 경매 어플리케이션.


🚩 서버 구조도

image

🚩 사용기술 및 개발환경

  • Spring Boot 3.x
  • Java 17
  • MySQL
  • Mybatis
  • Gradle
  • Jenkins
  • naver cloud platform
  • Junit5

🚩 프로젝트 주요 관심사

  • 기술을 사용할 때 기술에 대한 차이를 비교하고 선택한 이유에 대해 기준을 정하도록 고민하였습니다.
  • 결함없는 안정적인 서비스를 위해 코드 커버리지는 80%를 유지하였습니다.
  • 클린코드를 위한 꾸준한 코드 리팩토링을 진행하였습니다.
  • 객체지향적 개념을 이해하고 이를 코드에 녹여내어 의미있는 설계를 지향하였습니다.
  • 단순한 기능 구현뿐 아니라 대용량 트래픽 상황까지 고려한 기능을 구현하였습니다.
  • 문서화, 테스트코드의 작성을 높은 우선순위를 두었고, CI/CD를 구현하여 쉽게 협업이 가능한 프로젝트로 만들었습니다.

🚩 기술적 issue 해결 과정


🚩 경매 입찰 과정 구조도

image

🚩 DB ERD 구조

image


🚩 WIKI

auctionhub's People

Contributors

f-lab-bot avatar jammini avatar jiyeonleeluda avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

jammini

auctionhub's Issues

created_by 컬럼 수정에 따른 이슈

설명

현재 created_by 컬럼이 테이블 생성 시 유저의 PK값인 id를 갖고 있다.
이를 유저의 id가 아닌 String형태의 user_id로 변경하고자 한다.

할일

세션을 통해서 user_id를 가져와 테이블 생성시 들어가도록 작성한다.

Jenkins CI Test

설명

Jenkins CI Test 이슈입니다.

할일

PR이 발생하면 Jenkinsfile에 작성된 Shell script가 정상 실행 되는지 체크

대용량 트래픽 처리를 위한 메시지큐 적용

설명

입찰 종료 시간이 되면 순간적으로 발생할 수 있는 트래픽을 처리하기 위해 별도의 메시지 큐를 사용한다.

부트는 톰캣 기반의 큐와 스레드 풀을 이용해 요청을 처리하지만 서버에 장애가 발생하면 손실될 가능성이 있다.

할일

메시지 큐는 RabbitMQ를 이용한다.

세션 불일치 문제 해결

설명

WAS 서버 추가시 발생할 세션 불일치 문제를 개선하고 한다.

할일

  1. 세션 스토리지 Redis로 관리

패키지 변경

설명

정리가 되지 않은 클래스를 묶고 패키지를 변경한다.

할 일

패키지 리팩토링

주문 도메인 개발

설명

주문 도메인을 개발한다.

할일

  1. repository 개발
  2. service 개발
  3. controller 개발
  4. 테스트 코드 작성

logback 설정

설명

  • @slf4j를 활용하여 logback으로 로그를 남긴다.

할일

  • logback.xml으로 로그 출력을 위한 파일을 설정.

JaCoCo 플러그인 적용

설명

  • JaCoCo 플러그인을 이용하여 코드 커버리지를 측정한다.

할일

  • JaCoCo 플러그인 적용 및 70% 미만시 실패하도록 설정.
  • JaCoCo badge README에 적용.

로그인/로그아웃 기능 구현

설명

  • 로그인 및 로그아웃 기능을 구현.
  • HttpSession 클래스를 이용해서 로그인 기능 구현.

할일

  1. repository 개발
  2. service 개발
  3. 기능 테스트

회원 도메인 DTO 분리

설명

회원 도메인에서 컨트롤러와 서비스 DTO를 분리한다.

할일

  1. DTO분리
  2. 처음나온 어노테이션 주석처리
  3. 코드 리팩토링

입찰금액 관리를 위한 Redis 캐싱 적용

설명

DB에 순간적으로 많은 읽기와 수정이 발생할 수 있는데 캐시를 두어 빠르게 사용자 요청을 처리하기 위해 캐싱으로 Redis를 사용한다.

할일

Redis를 이용한 캐싱 적용

젠킨스를 이용한 CD 적용

설명

네이버 클라우드 위에 젠킨스를 이용하여 CD를 구축한다.

할일

  1. 젠킨스를 이용해 CD 파이프라인을 구축한다.

Auditing을 이용한 공통컬럼 설정

설명

Auditing을 이용한 공통컬럼을 BaseEntity로 설정한다.

할일

  1. 각 도메인 BaseEntitiy 상속.
  2. 작성된 테스트 코드 정상 작동 확인.

실시간 입찰 기능을 위한 WebSocket과 Redis 통합 추가

설명

상품을 보는 사용자가 뷰에서 경매로 인해 증가된 입찰 가격이 실시간으로 표시 되어야 한다.

이전 입찰 가격을 보고 입찰을 하였는데 이미 높은 가격으로 요청이 된 경우가 있을 수 있다.

할일

WebSocket과 Redis를 이용한 실시간 입찰 정보 업데이트 기능 구현

로그인 체크 기능

설명

로그인 체크와 권한 내용을 인터셉터 통해 구현한다.

할일

로그인 체크 구현.
권한 체크 구현.

카테고리 도메인 개발

설명

카테고리 도메인을 개발한다.

할일

  1. repository 개발
  2. service 개발
  3. controller 개발
  4. 테스트 코드 작성

상품 도메인 개발

설명

상품 도메인을 개발한다.

할일

  1. repository 개발
  2. service 개발
  3. 기능 테스트

카테고리, 상품, 입찰 코드 리팩토링

설명

카테고리, 상품, 입찰 등 불필요한 코드를 리팩토링한다.

할일

  1. 불필요한 코드 제거
  2. http 파일 추가
  3. ResponseEntity Builder 패턴으로 변경
  4. API, 처음 나오는 annotation 등 빠진 주석처리

입찰 도메인 개발

설명

입찰 도메인을 개발한다.

할일

  1. repository 개발
  2. service 개발
  3. controller 개발
  4. 테스트 코드 작성

ERD 작성

설명

dbdiagram.io 사용

할일

ERD 검토 후 반영

회원 도메인 테스트코드 작성

설명

  • 회원 도메인 테스트 코드를 작성한다.
  • 테스트 커버리지는 70%를 넘기도록 한다.

할일

  • given - when - then 패턴을 이용해 작성.
  • jacoco를 통해 코드 커버리지가 측정되는지 확인.

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.