Coder Social home page Coder Social logo

campool's Introduction

Campool

프로젝트 개요

가지고 있는 캠핑용품을 누구나 쉽게 공유할 수 있는 캠핑용품 공유경제 플랫폼 서비스입니다.

사용기술 및 환경

  • Java 8
  • Spring Framework
  • Spring Boot
  • MySQL
  • Redis
  • Jenkins
  • Docker
  • Naver Cloud

프로젝트 중점사항

  • ‘서비스가 지속적으로 성장한다.’라는 가정을 하고 많은 트래픽이 들어오는 경우를 고려하여 개발
  • Git-flow 기반 브랜치 관리
  • 코딩 컨벤션 및 commit, issue, PR 템플릿 적용
  • 객체 지향적 설계
  • 지속적인 리팩토링
  • CI/CD 구현
  • 클라우드에 서버 배포

프로젝트 기능 정의

사용자 화면

readme1 readme2 readme3

campool's People

Contributors

habist avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

kimtae saintyun

campool's Issues

[기능] 로그아웃 기능 개발

🧾 설명

  • 서비스 이용을 종료하기 위해 로그아웃 기능이 필요합니다.

📝 개발 항목

  • 세션 정보 삭제를 통한 로그아웃 기능

❗ 주의 사항

[기능] 확장에 용이한 세션 로그인 구조

🧾 설명

대용량 트래픽에 대응할 수 있는 확장이 용이한 구조를 생각하고
세션 기반 로그인 기능에서 발생할 수 있는 문제와 해결 방법을 고려하여 개발

📝 개발 항목

  • 확장에 용이한 세션 로그인 기능 개발

❗ 주의 사항

  • 서버를 확장할 시 발생할 수 있는 문제 고려

[기타] 템플릿 추가

🧾 설명

이슈와 풀 리퀘스트 요청 시 참고할 수 있는 템플릿을 추가합니다.

📝추가 항목

  • 이슈 템플릿
    1. 기능 개발 템플릿
    2. 버그 템플릿
  • 풀 리퀘스트 템플릿

[기타] CI 적용

🧾 설명

젠킨스를 활용해 프로젝트를 지속적 통합(CI)을 할 수 있는 기능이 필요합니다.

📝 개발 항목

  • Jenkins pipeline

[기능] 회원탈퇴 기능

🧾 설명

  • 서비스 이용을 완전히 중단하기 위해 회원탈퇴 기능이 필요합니다.

📝 개발 항목

  • DB에 저장된 회원정보 삭제를 통한 회원탈퇴 기능

❗ 주의 사항

[기능] 캠핑용품 대여/반납 기능

🧾 설명

제공자는 예약한 캠핑용품을 대여하고 이용자는 캠핑용품 사용 후 반납하는 기능이 필요합니다.

📝 개발 항목

  • 캠핑용품 대여완료 기능
  • 캠핑용품 반납완료 기능

[기능] 캠핑용품 타입 데이터 관리 기능

🧾 설명

관리자가 캠핑용품 타입 데이터를 등록, 수정, 삭제할 수 있는 기능이 필요합니다.

📝 개발 항목

  • 캠핑용품 타입 데이터 등록 기능
  • 캠핑용품 타입 데이터 수정 기능
  • 캠핑용품 타입 데이터 삭제 기능

❗ 주의 사항

  • 일반 사용자와 권한 분리 필요

[기타] Admin Domain 코드 Kotlin 변환

🧾 설명

Admin Domain 관련 Java 코드를 Kotlin으로 변환하는 작업입니다.

📝 개발 항목

  • AdminController, AdminService, AdminMapper Kotlin 코드로 변환

❗ 주의 사항

  • Admin과 관련있는 모듈 코드도 변환 검토

[기능] 자신의 회원정보 조회 기능

🧾 설명

자기 자신의 회원정보를 볼 수 있는 기능이 필요합니다.

📝 개발 항목

  • 자신의 회원정보 조회

❗ 주의 사항

  • 회원정보 기능 개발 시 누락된 요구사항을 추가 개발

[기능] 위치 기반 캠핑용품 조회 기능

🧾 설명

등록된 캠핑 용품을 자신의 위치를 기반으로 캠핑 용품을 조회하는 기능이 필요합니다.

📝 개발 항목

  • 자신의 위치를 기반으로 특정 범위만큼의 캠핑 용품을 조회

[기능] 예약 현황 상세보기 기능

🧾 설명

예약 현황 목록에서 상세보기 클릭 시 해당 현황의 상세 내용을 볼 수 있는 기능이 필요합니다.

📝 개발 항목

  • 예약 현황 상세보기 기능

❗ 주의 사항

  • 여러 테이블에서 정보를 조인하기 때문에 성능에 유의해서 개발

[기능] 요청 모델 클래스의 시간 필드 Formatting 기능

🧾 설명

다수의 요청 모델 클래스에서 공통적으로 나타나는 시간 포맷을 Default로 받아올 수 있도록 변경하는 기능이 필요합니다.

📝 개발 항목

  • 시간 필드 Formatting 기능

❗ 주의 사항

  • jackson objectmapper 알아보기

[기능] 로그인 기능

🧾 설명

저장된 회원 정보와 요청받은 데이터를 이용해 세션 기반 로그인 기능을 구현합니다.

📝 개발 항목

  • 세션을 이용한 로그인 기능

❗ 주의 사항

[기능] 관리자 로그인 기능

🧾 설명

관리자로 로그인 요청 시 일반 사용자와 구분하면서 로그인할 수 있는 기능이 필요합니다.

📝 개발 항목

  • 관리자 전용 로그인 기능

❗ 주의 사항

  • 일반 사용자와 분리해서 로그인할 수 있도록 구조 변경

[기능] 캠핑용품 타입 데이터 캐시 기능

🧾 설명

캠핑용품 타입 데이터에 대한 캐시 기능이 필요합니다.
캠핑용품 타입 데이터는 관리자에 의해 관리되는 데이터이고 자주 변경되지 않는 데이터라 DB 직접 요청을 최소화하고
캐시를 적용하여 성능 향상을 기대할 수 있습니다.

📝 개발 항목

  • 캠핑용품 타입 데이터 캐시 기능

[기타] Dockerfile 추가

🧾 설명

Docker 이미지로 빌드할 수 있도록 Dockerfile을 추가해야 합니다.

📝 개발 항목

  • Dockerfile 추가

❗ 주의 사항

  • Jenkins 스크립트 수정 필요

[기타] 캐시 저장소 변경

🧾 설명

로컬 메모리에 저장하고 있는 캐시 정보를 Redis에 저장하도록 하는 기능이 필요합니다.

📝 개발 항목

  • Redis 캐시 저장소 사용 기능

❗ 주의 사항

  • 현재 ehcache 사용중인 부분 제거

[기타] 적절한 로거 선택

🧾 설명

  • 로깅에 필요한 모듈 추가
  • spring default logger에 대해 알아보기
  • slf4j, log4j, logback 각 로거의 장단점 정리 후 적절한 로거 선택하기

[기능] 캠핑용품 타입 데이터 캐시 적용

🧾 설명

캠핑용품 타입 데이터에 대해 캐시 적용 기능이 필요합니다.

📝 개발 항목

  • 캠핑용품 타입 데이터 캐시 적용

❗ 주의 사항

  • 스프링에서 기본으로 제공해주는 EhCache기반의 저장소 사용하기

[기능] 캠핑용품 타입 목록 조회 기능

🧾 설명

캠핑용품 등록, 조회 시 사용되는 타입 타입 목록을 조회하는 기능이 필요합니다.

📝 개발 항목

  • 캠핑용품 타입 목록 조회 기능

❗ 주의 사항

  • 추후 테이블 조회가 아닌 캐싱을 사용하여 가져오도록 개선

[기능] 회원정보 수정 기능 개발

🧾 설명

  • 개인정보를 변경하기 위해 회원정보 수정 기능이 필요합니다.

📝 개발 항목

  • 기존 회원정보를 새로운 회원정보로 수정하는 기능

❗ 주의 사항

[기타] Rental Domain 코드 Kotlin 변환

🧾 설명

Rental Domain 관련 Java 코드를 Kotlin으로 변환하는 작업입니다.

📝 개발 항목

  • RentalController, RentalService, RentalMapper, RentalStatus Kotlin 코드로 변환

❗ 주의 사항

  • Rental과 관련있는 모듈 코드도 변환 검토

[기타] MySQL Replication 설계

🧾 설명

Campool 서비스의 데이터 Read 작업의 부하 분산과 DB 서버의 안전성 증가를 위해 MySQL Replication 구조를 만듭니다.

📝 개발 항목

  • Master/Slaves 구조를 바탕으로 MySQL Replication 설계
  • 실시간성, 정합성이 반드시 보장될 필요가 없는 데이터의 조회는 Slave 노드로 부하 분산시켜 탄력적인 서버 설계

❗ 주의 사항

  • 실시간성, 정합성이 반드시 보장되어야 하는 데이터 판별
  • Master/Slaves 구조로 변경 시 애플리케이션 코드 변경 여부 확인

[개선] Redis Config 수정

🧾 설명

현재 Redis Session의 AutoConfiguration을 적용한 상황에서 로그인 성능 테스트를 진행할 경우 애플리케이션 서버와 Redis Session 서버 간 통신 중 간헐적으로 WAS의 CPU 사용량이 100%가 되는 병목 현상 해결을 위해 Redis Config 수정이 필요합니다.

📝 개발 항목

  • Redis Config Operation 수정

[기능] 예약 및 결제 취소 기능

🧾 설명

예약중인 캠핑용품이 대여 전이면 예약 취소 및 결제 취소를 할 수 있는 기능이 필요합니다.

📝 개발 항목

  • 예약 취소 기능
  • 예약 취소에 맞는 결제 취소 기능 추가

❗ 주의 사항

  • iamport API 요청 필요

[기능] 캠핑용품 등록

🧾 설명

제공자가 캠핑용품을 등록할 수 있는 기능이 필요합니다.

📝 개발 항목

  • 캠핑용품 거래 위치와 항목을 설정하여 등록

[기타] API 문서 자동화

내용

API 문서 자동화 도구 별 특징 파악 및 선택 기준 마련

도구 목록

  • Swagger
  • Spring REST DOCS

[기타] User Domain 코드 Kotlin 변환

🧾 설명

Java로 작성되어 있는 코드를 Kotlin으로 변환하는 작업입니다.

📝 개발 항목

  • Java 코드 Kotlin으로 변환

❗ 주의 사항

  • Kotlin의 장점 적극적으로 활용

[기능] 등록된 캠핑용품 예약 기능

🧾 설명

등록되어 있는 캠핑용품을 선택하여 예약 신청을 할 수 있는 기능이 필요합니다.

📝 개발 항목

  • 캠핑용품 예약 기능

❗ 주의 사항

  • 예약 시 결제를 필수 사항으로 넣을지 고민

[기능] 회원가입 기능

🧾 설명

서비스 이용은 회원제로 운영되므로 회원가입을 위한 기능 개발이 필요합니다.

📝개발 항목

  • 회원가입 요청 시 유효성 검증
  • 검증된 데이터 DB에 저장

❗ 주의 사항

[기능] 예약 현황 조회 기능

🧾 설명

예약 현황을 조회할 수 있는 기능이 필요합니다.

📝 개발 항목

  • 캠핑용품 예약 현황 조회

❗ 주의 사항

[기타] 코드 및 쿼리 리팩토링

🧾 설명

기능 구현 과정에서 놓친 부분 보완 및 더 적절한 코드로 변경

📝 개발 항목

  • JOIN 쿼리 명확하게 변경
  • Mapper 인터페이스 메소드 명 일관성 있게 변경
  • Rental 서비스 status 필드 추가 고려
  • Transactional 애노테이션 필요한 부분에 추가

[기능] 관리자 회원가입 기능

🧾 설명

서비스를 전반적으로 관리할 수 있는 관리자를 위한 회원가입 기능이 필요합니다.

📝 개발 항목

  • 관리자 회원가입 기능

❗ 주의 사항

  • 사용자와 관리자 권한 구분
  • 권한 계층 분리 적용

[기능] CD 적용

🧾 설명

Jenkins 기반 CD 기능이 필요합니다.

📝 개발 항목

  • Jenkins CD

❗ 주의 사항

  • 네이버 클라우드 서버 구축 우선

[기타] DB 리팩토링

🧾 설명

Database 테이블 구조와 쿼리의 실행 계획을 분석해 리팩토링 진행이 필요합니다.

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.