Code Monkey home page Code Monkey logo

online-market's Introduction

f-lab-springboot-project-template

online-market's People

Contributors

dnzp75 avatar f-lab-bot avatar

Watchers

 avatar

online-market's Issues

로그아웃 구현

목표

로그아웃 기능을 구현한다.

주요 작업 사항

  • 로그아웃 기능에 따른 각 레이어층 별 코드 작성
  • 테스트 코드 작성

로그인 구현

목표

로그인 기능을 구현한다.

주요 작업 사항

  • 로그인 기능에 따른 각 레이어층 별 코드 작성
  • 세션 설정
  • 테스트 코드 작성

구현 시 고려사항

  • 로그인 방식 결정하기
    • Cookie
    • Session
    • JWT (Access Token + Refresh Token)

카테고리 CRUD 구현

목표

  • 관리자,사용자에게 필요한 카테고리 CRUD 기능을 구현한다.

주요 작업 사항

  • 카테고리 CRUD 기능에 따른 레이어 별 코드 작성
  • 테스트 코드 작성

추후 고려사항

  • 사용자, 관리자 역할에 따른 분리 필요

전체 상품 목록 조회 - 성능테스트

목표

  • nGrinder를 통해 전체 상품 목록 조회 기능에 대한 성능 테스트를 진행한다.

주요 작업 사항

  • mysql workbench의 SQL 스크립트를 사용하여 대량 데이터 삽입
  • 대량의 데이터 삽입하여 성능테스트 환경 구축 및 실행하여 성능 측정

회원가입 구현

목표

회원가입 기능을 구현한다.

주요 작업 사항

  • 회원가입 기능 구현에 따른 각 레이층 별 코드 작성
  • 이메일 중복 검사 로직
  • 비밀번호 암호화 작성 로직
    • SHA256 알고리즘을 통해 구현
  • 테스트 코드 작성

전체 상품 목록 조회 - Redis를 통한 캐싱 적용

목표

  • 전체 상품 목록 조회 기능에 대해서 레디스를 통한 캐싱을 적용한다.

주요 작업 사항

  • Spring-Redis 연동 설정
  • RedisService 클래스 생성
  • 캐싱 키 설계
  • ProductService 내에서 캐싱 로직을 구현
  • Redis 테스트 코드 작성

추후 고려사항

  • 레디스를 해당 기능에서만 사용할 것이 아니기 때문에 RedisConfig, RedisService 클래스 파일의 또 다른 작성법 고려

로그인/로그아웃 리펙토링

개요

  • 코드 품질 개선, Redis,비밀번호 암호화 방식, 로그인 체크 여부의 기술에 대한 학습을 위해 리펙토링을 진행합니다.

주요 작업 내용

  • 암호화된 비밀번호 확인 메서드를 SHA256에서 Bcrypt 방식으로 변경
  • 각 계층별 코드 개선
  • 로그인 체크 여부 Interceptor 적용
  • 세션 정보를 Redis에 저장 방식 추가
  • 글로벌 예외 핸들러 추가
  • 로그인/로그아웃 단위 테스트 업데이트

전체 코드 리펙토링

개요

해당 이슈 전까지 진행해왔던 이슈들을 다시 살펴본 결과로 객체 지향 원칙을 준수하지 않았고, 잘못 작성되어 있는 부분들이 많아서 전체 코드 리펙토링을 진행합니다.

주요 작업 내용

  • 예외 처리 클래스 클래스 구조 변경
  • Entity와 DTO의 분리
  • 애매한 메서드명 직관적으로 수정
  • '주문하기 기능' 비즈니스 로직 개선

추후 고려사항

테스트 코드 리펙토링

개요

  • 기존에 작성해왔던 테스트 코드에 대해서 독립적으로 테스트되지 않았던 문제가 발생하여 테스트 코드 리펙토링을 진행합니다.

주요 작업 내용

  • 각 도메인 별 Controller 계층 Test 코드 개선 및 수정
  • 각 도메인 별 Service 계층 Test 코드 개선 및 수정

주문하기 구현

목표

  • 사용자가 상품을 '주문하기' 기능을 구현한다.

주요 작업 사항

  • 주문하기 기능에 따른 레이어 별 코드 작성
  • 예외 처리 클래스 추가
  • 테스트 코드 작성

추후 고려사항

  • 많은 사용자가 주문을 동시에 원하는 경우 어떻게 로직을 작성해야 할 지 알아보기

nGrinder 설치 및 실행

목표

  • 상품 조회 기능에 대한 성능테스트를 진행하기 위해 nGrinder를 설치하고 실행한다.

주요 작업 사항

  • nGrinder Controller, Agent 설치
  • nGrinder Controller, Agent 실행

고려사항

  • 나의 쇼핑몰 프로젝트 버전 : 자바 17
  • nGrinder 지원 버전 : 자바 11 , 자바 17 버전을 지원하지 않는다.
  • 해결법 : 프로젝트 복사본 파일 생성하여 자바 11버전으로 다운그레이드
      1. 쇼핑몰 프로젝트 파일 ( 자바 17버전 )
      1. ngrinder 성능테스트를 위한 쇼핑몰 프로젝트 파일 ( 자바 11버전 )
  • 추후에 2개의 서버를 분리된 환경에서 사용할 수 있도록 docker 사용법을 익힌다.

전체 상품 목록 조회 리펙토링

목표

  • #19
  • 결과로 평균 테스트 응답 시간이 1,500ms으로 좋지 못한 성능을 나타내고 있어 코드 리펙토링을 진행한다.

주요 작업 사항

  • 페이징 처리 적용
  • @Cacheable 사용한 레디스 적용

추후 고려사항

  • 학습을 위해 스프링 @Cacheable 방식이 아닌 외부 레디스를 사용하는 방식도 알아보기

프로젝트 초기 세팅

Spring Boot, Java 를 이용하여 프로젝트 초기 환경을 구축한다.

spring initializr 활용하여 프로젝트 구성

자바 버전 : java 17 / 스프링 부트 버전 : 3.2.0

추가한 의존성들

: Actuator, lombok, Spring devtools, Spring Web

상품 CRUD 구현

목표

  • 상품 도메인에 대한 CRUD를 구현한다.

주요 작업 사항

  • 상품 CRUD에 따른 각 레이어 별 코드 작성
  • 예외 처리 클래스 추가
  • 테스트 코드 작성

추후 고려사항

  • 상품 조회 시에 페이징 처리, 레디스 적용 가능성 알아보기

회원가입 기능 리펙토링

목표

기존의 작성했던 회원가입 기능에 대해서 리펙토링을 진행한다.

주요 변경 사항

  • 예외 처리 클래스 세분화
  • 회원가입 과정에서 이메일 중복 체크 확인하는 API 추가
  • @builder 패턴 도입
  • UserDTOUser로 클래스명 변경
  • UserService 로직 개선

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.