Skip to content

Latest commit

Β 

History

History
200 lines (157 loc) Β· 10.7 KB

README.md

File metadata and controls

200 lines (157 loc) Β· 10.7 KB

πŸ‘€νŒ€μ› μ†Œκ°œ

Backend Lead Backend Backend Backend
졜혜미 μ΄μœ μƒ 백인ꢌ μ•ˆμˆ˜μ§€
졜혜미 μ΄μœ μƒ 백인ꢌ μ•ˆμˆ˜μ§€
πŸ’‘νšŒμ›κ°€μž…, νƒˆν‡΄
πŸ’‘μ΄λ©”μΌ 인증
πŸ’‘μƒμ„Έ νŽ˜μ΄μ§€ 쑰회
πŸ’‘μ‚¬μš©μž 리뷰 쑰회
πŸ’‘μ‚¬μš©μž 정보 μˆ˜μ •
πŸ’‘spring security
πŸ’‘ν”„λ‘œμ νŠΈ 배포
πŸ’‘μž₯λ°”κ΅¬λ‹ˆ, 결제
πŸ’‘μ‚¬μš©μž μ˜ˆμ•½μ‘°νšŒ
πŸ’‘λ‘œκ·ΈμΈ(OAuth2)
πŸ’‘Querydsl
πŸ’‘λ©”μΈνŽ˜μ΄μ§€ 쑰회
πŸ’‘μ˜€ν”ˆapi ν™œμš©
πŸ’‘λ¦¬λ·° crud κΈ°λŠ₯
πŸ’‘μ’‹μ•„μš” 등둝, μ·¨μ†Œ
πŸ’‘μœ„μ‹œ 리슀트

πŸ“ŒκΈ°μˆ μŠ€νƒ & κ΅¬ν˜„ν™˜κ²½

  • Java : Java
  • FrameWork : Spring Boot Spring Security Spring Data JPA Spring Web
  • Build : Gradle
  • VCS : Git GitHub
  • Database : GCP Cloud SQL
  • DBMS : MySQL
  • λ°°ν¬ν™˜κ²½ : GCP VM
  • μ»¨λ²€μ…˜ : Code Convention
  • 브랜치 μ „λž΅ : GitFlow

πŸ“Œν”„λ‘œμ νŠΈ λ‚΄μš©

πŸ“Œμ‹€ν–‰ν™˜κ²½ μ„€μ • 방법

  • .env νŒŒμΌμ„ λ§Œλ“€μ–΄μ„œ μ΅œμƒλ‹¨ 디렉토리에 μœ„μΉ˜ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€.
  • env νŒŒμΌμ€ μ•„λž˜μ˜ ν˜•μ‹μœΌλ‘œ λ§Œλ“€μ–΄μ•Ό ν•©λ‹ˆλ‹€.
JWT_SECRET_KEY1=key1key1key1key1key1key1key1key1key1key1key1key1key1key1key1key1key1key1
JWT_SECRET_KEY2=key2key2key2key2key2key2key2key2key2key2key2key2key2key2key2key2key2key2
JWT_SECRET_KEY3=key3key3key3key3key3key3key3key3key3key3key3key3key3key3key3key3key3key3
TEST_ID=id
TEST_ID_PASSWORD=password
TEST_ID_EMAIL=email
  • docker μ‹€ν–‰ ν›„ docker-compose.yml을 μ‹€ν–‰ν•΄ λ°μ΄ν„°λ² μ΄μŠ€ ν™˜κ²½μ„ λ§Œλ“€μ–΄μ•Ό ν•©λ‹ˆλ‹€.

πŸ“ŒνŒ¨ν‚€μ§€ ꡬ쑰

 com.example.yanolja  
 β”œβ”€β”€ domain  
 β”‚   β”œβ”€β”€ user  
 β”‚   β”œβ”€β”€ accommodation  
 β”‚   β”œβ”€β”€ review  
 β”‚   β”œβ”€β”€ reservation  
 β”‚   β”œβ”€β”€ accommodationLikes  
 β”‚   β”œβ”€β”€ basket  
 β”‚   β”œβ”€β”€ wishlist  
 β”‚   ...  
 └── global  
      β”œβ”€β”€ springsecurity  
      β”œβ”€β”€ entity  
      β”œβ”€β”€ config  
      β”œβ”€β”€ exception  
      β”œβ”€β”€ jwt  
      └── util  

⭐ERD

⭐FlowChart

flow chart

⭐Project Architecture

image


πŸ“—μ„ΈλΆ€κΈ°λŠ₯ κ΅¬ν˜„

1. νšŒμ›μΈμ¦

  • νšŒμ›κ°€μž…
    • 이메일 인증 / 이메일 쀑볡확인 / 정보 μœ νš¨μ„±κ²€μ‚¬ / νƒˆν‡΄ 계정 볡ꡬ
  • νšŒμ›νƒˆν‡΄
  • 둜그인 / λ‘œκ·Έμ•„μ›ƒ
  • μ†Œμ…œ 둜그인(넀이버, ꡬ글)

2. μ’‹μ•„μš”, 리뷰

  • μ’‹μ•„μš” 등둝, μ·¨μ†Œ
  • 리뷰 CRUD
  • 리뷰 μƒμ„Έμ‘°νšŒ

3. λ©”μΈνŽ˜μ΄μ§€

  • μˆ™μ†Œ 쑰회
    • 전체 / κ°œλ³„ μˆ™μ†Œ 쑰회
  • μˆ™μ†Œ 검색
  • 둜그인 μ „, ν›„ UI 변동
  • μˆ™λ°•μ—…μ²΄ μΉ΄ν…Œκ³ λ¦¬λ³„ 필터링

4. λ§ˆμ΄νŽ˜μ΄μ§€

  • μ˜ˆμ•½ λ‚΄μ—­
    • μ˜ˆμ•½ μ·¨μ†Œ
    • λ‚΄ μ˜ˆμ•½ 쑰회
  • λ‚΄ 리뷰
    • λ‚΄ 리뷰 μ‘°
  • λ‚΄ 정보 관리
    • κ°œμΈμ •λ³΄(λ‹‰λ„€μž„, μ „ν™”λ²ˆν˜Έ, λΉ„λ°€λ²ˆν˜Έ) λ³€κ²½

5. μƒμ„ΈνŽ˜μ΄μ§€

  • μˆ™μ†Œ 상세 쑰회/ λ°© 상세 쑰회
  • 인원, λ‚ μ§œλ‘œ μ˜ˆμ•½ κ°€λŠ₯ μˆ™μ†Œ 필터링(ν’ˆμ ˆ μ—¬λΆ€ ν‘œμ‹œ)
  • μˆ™μ†Œ μ˜΅μ…˜(인원, 체λ₯˜ λ‚ μ§œ) 선택
  • μƒν’ˆ μ˜ˆμ•½ or μž₯λ°”κ΅¬λ‹ˆμ— μΆ”κ°€

6. μž₯λ°”κ΅¬λ‹ˆ

  • λ‹΄κΈ° / 보기
    • μ˜ˆμ•½ κ°€λŠ₯, μ˜ˆμ•½ λΆˆκ°€λŠ₯ μˆ™μ†Œ 쑰회 / μ‚­μ œ
  • μ£Όλ¬Έν•˜κΈ°
  • κ²°μ œν•˜κΈ°
  • μ£Όλ¬Έ κ²°κ³Ό 확인

7. μœ„μ‹œλ¦¬μŠ€νŠΈ

  • μ‚¬μš©μžκ°€ μ’‹μ•„μš” λ“±λ‘ν•œ μˆ™μ†Œ 쑰회
  • μ’‹μ•„μš” 등둝, μ·¨μ†Œ

πŸ› οΈλ¦¬νŒ©ν† λ§

  • 전체적인 μ½”λ“œ λ¦¬νŒ©ν† λ§(μ½”λ“œλ¦¬λ·° 반영)
  • OAuth2 μΆ”κ°€(ꡬ글, 넀이버)
  • λ©”μΈνŽ˜μ΄μ§€ 업체 μ‘°νšŒμ‹œ QueryDSL 적용
  • κΈ°μ‘΄ 주석 Javadoc으둜 ꡐ체

😊개인 μ—­λŸ‰ 회고

졜혜미
짧은 κΈ°κ°„ λ™μ•ˆ λΉ λ₯΄κ²Œ κ°œλ°œν•˜λ €λ‹€ λ³΄λ‹ˆ 마음이 μ‘°κΈ‰ν–ˆλ˜ 것 κ°™μŠ΅λ‹ˆλ‹€.
κ·ΈλŸ¬λ‹€ λ³΄λ‹ˆ μž‘λ™ν•˜λŠ” μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 데 κΈ‰κΈ‰ν•΄μ„œ λ¦¬νŒ©ν† λ§μ„ 진행할 λ•Œ 맀우 νž˜λ“€μ—ˆμŠ΅λ‹ˆλ‹€.
이 κ²½ν—˜μœΌλ‘œ ν”„λ‘œμ νŠΈ 섀계λ₯Ό μ² μ €ν•˜κ²Œ ν•΄μ•Όν•œλ‹€λŠ” 것을 κΉ¨λ‹«κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 쒋은 νŒ€μ›λ“€κ³Ό ν•¨κ»˜ν•΄μ„œ μ‹€λ ₯이 많이 λŠ˜μ—ˆμ–΄μš”!😊
μ΄μœ μƒ

❗ 짧은 κΈ°κ°„λ™μ•ˆ λΉ λ₯΄κ²Œ κΈ°λŠ₯κ΅¬ν˜„μ„ μœ„μ£Όλ‘œ κ°œλ°œμ„ ν•˜λ €κ³  ν•˜λ‹€λ³΄λ‹ˆ λ‹€μ‹œ λŒμ•„μ™€μ„œ μ½”λ“œλ₯Ό λ³΄μ•˜μ„λ•Œ 둜직이 λ³΅μž‘ν•˜κ³  쒋지 μ•Šμ€ μ½”λ“œλ“€μ΄ 많이 λ³΄μ˜€λ˜κ±° κ°™μŠ΅λ‹ˆλ‹€. λ‹€μŒμ— λΉ„μ§€λ‹ˆμŠ€ λ‘œμ§μ„ κ΅¬ν˜„ν• λ•Œ μžˆμ–΄μ„œ μ’€ 더 생각을 ν•˜κ³  쒋은 섀계λ₯Ό λ°”νƒ•μœΌλ‘œ μ½”λ“œλ₯Ό 짜면 더 쒋을거 κ°™μŠ΅λ‹ˆλ‹€. μ΄λ²ˆκ²½ν—˜μ„ λ°”νƒ•μœΌλ‘œ μ½”λ“œμž‘μ„±μ— μžˆμ–΄μ„œ 더 생각을 ν•΄ λ³Ό 수 μžˆμ„κ±° κ°™μŠ΅λ‹ˆλ‹€. 쒋은 κ²½ν—˜μ΄μ—ˆμŠ΅λ‹ˆλ‹€.

❗ 도컀 μœ„μ—μ„œ μž‘μ—…μ„ ν•˜κ³ , 도컀이미지λ₯Ό 톡해 배포λ₯Ό ν•΄λ³΄μ•˜λŠ”λ° 이 κ²½ν—˜μ΄ 맀우 μ’‹μ•˜μŠ΅λ‹ˆλ‹€. λ„μ»€μ΄λ―Έμ§€λ‘œ 배포λ₯Ό ν–ˆκΈ°λ•Œλ¬Έμ— λ°°ν¬ν™˜κ²½μ— ꡬ애받지 μ•Šκ³  ν•„μš”ν•œ ν”„λ‘œκ·Έλž¨λ“€ μ„€μΉ˜ 없이 μ–Έμ œ μ–΄λ””μ„œλ“  λ˜‘κ°™μ€ λ°°ν¬ν™˜κ²½μ„ μœ μ§€ν•  수 μžˆλ‹€λŠ” 점이 맀우 νŽΈλ¦¬ν–ˆμŠ΅λ‹ˆλ‹€.
이 과정은 κΈ°μ‘΄ jar둜 λ°°ν¬ν•˜λ˜κ²ƒλ³΄λ‹€ 훨씬 κ°„νŽΈν–ˆλ˜κ±° κ°™κ³  μœ μš©ν•œ κΈ°μˆ μ΄μ—ˆμŠ΅λ‹ˆλ‹€.
Docker에 λŒ€ν•΄ μ’€ 더 곡뢀해보고 더 λ‹€μ–‘ν•œ κΈ°μˆ λ“€μ„ 써보고 싢은 계기가 λ˜μ—ˆλ˜κ±° κ°™μŠ΅λ‹ˆλ‹€.

❗ querydslκ³Ό oauthλ₯Ό μΆ”κ°€μ μœΌλ‘œ μ μš©ν•΄ λ³Ό 수 μžˆμ–΄μ„œ μ’‹μ•˜κ³  이 κΈ°μˆ λ“€μ„ μ‚¬μš©ν•΄λ³Ό 수 μžˆμ–΄μ„œ μ’‹μ•˜λ˜ 것 κ°™μŠ΅λ‹ˆλ‹€ redisλ₯Ό μ‚¬μš©ν•΄ μΊμ‹œdbλ₯Ό ν™œμš©ν•˜λŠ” 것도 ν•΄ λ³Ό μ˜ˆμ •μž…λ‹ˆλ‹€.

❗ 처음 μ¨λ³΄λŠ” μƒˆλ‘œμš΄ κΈ°μˆ λ“€μ„ μ μš©ν•˜λ©΄μ„œ μ—¬λŸ¬κ°€μ§€ 문제점이 μžˆμ—ˆμ§€λ§Œ νŒ€μ›λ“€κ³Ό 같이 μ˜λ…Όν•˜κ³  같이 κ°œλ°œν•˜λ©΄μ„œ 문제λ₯Ό ν•΄κ²°ν–ˆμ—ˆλ˜κ²ƒ κ°™μŠ΅λ‹ˆλ‹€. 덕뢄에 μ‹€λ ₯이 많이 λŠ˜μ–΄μ„œ μ’‹μ•˜μŠ΅λ‹ˆλ‹€.

백인ꢌ
κ΄€λ ¨ κ°œλ°œμ§€μ‹ λΆ€μ‘± 및 μˆ™λ ¨λ„ λΆ€μ‘±μœΌλ‘œ κ°œλ°œμ†λ„λ„ 느리고 μ½”λ“œμ˜ 완성도도 λΆ€μ‘±ν–ˆλ‹€κ³  λŠκ»΄μ§‘λ‹ˆλ‹€.
κ·Έλž˜μ„œ ν”„λ‘œμ νŠΈμ§„ν–‰ 페이슀λ₯Ό μ˜¬λ¦¬λŠ”λ° ν”ŒλŸ¬μŠ€λ˜μ§€ λͺ»ν•˜κ³ , μ μ ˆν•œ νš¨μœ¨μ„ λ§Œλ“œλŠ” μ†Œν†΅λ„ λͺ»ν–ˆλ˜ 것 κ°™μŠ΅λ‹ˆλ‹€.
λ‹€λ₯Έ νŒ€μ›λ“€μ„ λŠ₯λ™μ μœΌλ‘œ 도와주지 λͺ»ν•˜κ³  κ·Έμ € 많이 배우기만 ν–ˆλ˜ 것 κ°™μ•„μ„œ 개인적으둜 μ•„μ‰½μŠ΅λ‹ˆλ‹€.
쒋은 μ½”λ“œλ¦¬λ·°μ™€ κ³ λ―Όν•΄μ£Όμ‹  νŒ€μ›λ“€ κ°μ‚¬ν•©λ‹ˆλ‹€!
μ•ˆμˆ˜μ§€
❗ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ κ΅¬ν˜„ν•˜λŠ”λ° 아직 μ‹œκ°„μ΄ 많이 μ†Œμš”λ˜λŠ” 뢀뢄이 κ°€μž₯ μ–΄λ €μ› μœΌλ©° λ§Žμ€ μ—°μŠ΅μ΄ ν•„μš”ν•˜λ‹€λŠ” 쑰언을 λ°›μ•˜μŠ΅λ‹ˆλ‹€.
그리고 μ „λ°˜μ μΈ ν”„λ‘œμ νŠΈ ꡬ쑰λ₯Ό μ΄ν•΄ν•˜λŠ”λ° 어렀움이 λ§Žμ•˜μœΌλ©° 이 점은 νŒ€μ›λ“€κ³Όμ˜ μ†Œν†΅μ„ 톡해 μ–΄λŠμ •λ„ νŒŒμ•…ν•˜λŠ” λ°μ—λŠ” μ„±κ³΅ν•˜μ˜€μœΌλ‚˜ 슀슀둜 ν˜Όμžμ„œ κ΅¬ν˜„ν•˜λŠ” λ°μ—λŠ” λ…Έλ ₯이 ν•„μš”ν•  것 κ°™λ‹€λŠ” 생각이 λ“€μ—ˆμŠ΅λ‹ˆλ‹€.

❗ νŒ€ ν”„λ‘œμ νŠΈμ— λ§Žμ€ 뢀뢄을 κΈ°μ—¬ν•˜μ§€λŠ” λͺ»ν–ˆμ§€λ§Œ, μ›Ή λ°±μ—”λ“œ 개발의 ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•΄ 지식과 κ²½ν—˜λ“€μ„ μŒ“μ„ 수 μžˆμ—ˆλ˜ μ•„μ£Ό 쒋은 κΈ°νšŒμ˜€λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.
λ‹€λ₯Έ νŒ€μ›λ“€μ˜ μ½”λ“œλ₯Ό λΆ„μ„ν•˜κ³  리뷰λ₯Ό ν•˜λŠ” μ—°μŠ΅μ΄ 많이 ν•„μš”ν•  것 κ°™μŠ΅λ‹ˆλ‹€. 사싀 μ‹œκ°„μ΄ λΆ€μ‘±ν•΄ λ°”λ‘œ νŒ€μ›λ“€μ˜ PR을 Approveν–ˆμ—ˆλŠ”λ° μ°¨ν›„ λ‹€λ₯Έ ν”„λ‘œμ νŠΈλ₯Ό 진행할 λ•Œμ—” 꼼꼼히 리뷰λ₯Ό ν•  μƒκ°μž…λ‹ˆλ‹€.

πŸŽ€μ‹œμ—° μ˜μƒ

main

login

detail

reservation

basket

wishlist

reservationdetail

myreview

mypage