diff --git a/README.md b/README.md index 0fa3eed..ce87820 100644 --- a/README.md +++ b/README.md @@ -6,36 +6,28 @@ ## ๐Ÿš€ ๊ธฐ์ˆ  ์Šคํƒ - JAVA 17, SpringBoot 3, MyBatis 3.5, MySQL 8, Redis 7.0, Flyway 9.5.1, RestDocs, Docker -## โœจ ํ”„๋กœ์ ํŠธํ•˜๋ฉด์„œ ์ค‘์š”์‹œ ํ–ˆ๋˜ ํฌ์ธํŠธ -### 1. ๋‹ค์–‘ํ•˜๊ณ  ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ๋ณด๋‹ค `๋ฌธ์ œ`์— ์ง‘์ค‘ํ•ด์„œ ์˜ค๋ฒ„์—”์ง€๋‹ˆ์–ด๋ง ํ•˜์ง€ ์•Š๊ธฐ -- `ํŠธ๋žœ์žญ์…˜์ด ํ•„์š”ํ•œ ์—”ํ‹ฐํ‹ฐ ๊ตฌ์กฐ`์„ `์˜์†์„ฑ์ด ํ•„์š” ์—†๋Š” ํ•„๋“œ`๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  `์ƒˆ๋กœ์šด ํด๋ž˜์Šค`๋ฅผ ๋งŒ๋“ค์–ด์„œ `ํŠธ๋žœ์žญ์…˜ ํ•„์š” ์—†๋Š” ์—”ํ‹ฐํ‹ฐ ๊ตฌ์กฐ`๋กœ ๋ณ€๊ฒฝ([#81](https://github.com/f-lab-edu/hee-commerce/pull/81)) -- ๋‹ค์ค‘ ์„œ๋ฒ„ ํ™˜๊ฒฝ์—์„œ ์žฌ๊ณ  ์ฐจ๊ฐ๊ณผ ๊ด€๋ จ๋œ `๋™์‹œ์„ฑ ์ด์Šˆ ๋ฌธ์ œ`๋ฅผ `๋ถ„์‚ฐ๋ฝ`์ด ์•„๋‹Œ `๋”œ ์ƒํ’ˆ๊ณผ ์žฌ๊ณ  ๋ถ„๋ฆฌํ˜• ์ €์žฅ ๊ตฌ์กฐ`์™€ `์žฌ๊ณ  ์‚ฌํ›„ ๊ฒ€์ฆ ๋‹จ๊ณ„ ๋„์ž…`์œผ๋กœ ํ•ด๊ฒฐ([wiki](https://github.com/f-lab-edu/hee-commerce/wiki/%EC%A3%BC%EB%AC%B8-%EC%B2%98%EB%A6%AC%EB%A1%9C-%EC%9D%B8%ED%95%9C-%EC%9E%AC%EA%B3%A0-%EC%B0%A8%EA%B0%90%EC%97%90%EC%84%9C-%EB%B0%9C%EC%83%9D%ED%95%98%EB%8A%94-%EB%8F%99%EC%8B%9C%EC%84%B1-%EC%9D%B4%EC%8A%88-%EB%AC%B8%EC%A0%9C%EB%A5%BC-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%95%B4%EA%B2%B0%ED%95%A0%EA%B9%8C%3F)) - -### 2. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ +## โœจ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐ ๊ฐœ์„  ์‚ฌ๋ก€ +### 1. Redis ์ €์žฅ ๊ตฌ์กฐ ๋ณ€๊ฒฝ(๋”œ ์ƒํ’ˆ๊ณผ ์žฌ๊ณ  ํ†ตํ•ฉํ˜• -> ๋ถ„๋ฆฌํ˜•), DECR ๋ช…๋ น์–ด์™€ ์‚ฌํ›„ ๊ฒ€์ฆ ๋กœ์ง์œผ๋กœ ์žฌ๊ณ  ์ฐจ๊ฐ์— ๋Œ€ํ•œ ๋™์‹œ์„ฑ ๋ฌธ์ œ ํ•ด๊ฒฐ (๊ด€๋ ค ์ƒ์„ธ ๋‚ด์šฉ ๋งํฌ) +### 2. ์˜์†์„ฑ์ด ๋ถˆํ•„์š”ํ•œ ํ•„๋“œ ์ œ๊ฑฐ๋กœ ์žฌ๊ณ ์— ๋”ฐ๋ผ ์ƒํ’ˆ์˜ ์ƒํƒœ ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ๋™์‹œ์„ฑ ์ด์Šˆ ํ•ด๊ฒฐ ๋ฐ TX ํ•„์š”์—†๋Š” ๋กœ์ง์œผ๋กœ ๊ฐœ์„  (๊ด€๋ จ ์ƒ์„ธ ๋‚ด์šฉ ๋งํฌ) +### 3. ๋น„์ •๊ทœํ™”, ์ปฌ๋Ÿผ๋ช… ๋ณ€๊ฒฝ ๋ฐ Null ํ—ˆ์šฉ์œผ๋กœ ๋กœ์ง ๋ฐ ํ…Œ์ด๋ธ” ๊ตฌ์กฐ ๋‹จ์ˆœํ™” (Tx ๋˜๋Š” Join ํ•„์š” O -> X) (๊ด€๋ จ ์ƒ์„ธ ๋‚ด์šฉ ๋งํฌ) +### 4. ๊ธฐํƒ€ ํฌ์ธํŠธ +#### (1) ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ - RestDocs๋ฅผ ์ด์šฉํ•˜์—ฌ API ๊ฐœ๋ฐœ ์‹œ TDD ์›์น™ ์ ์šฉ ([์ดˆ๊ธฐ ์ฃผ๋ฌธ ์™„๋ฃŒ API](https://github.com/f-lab-edu/hee-commerce/pull/40), [์ฃผ๋ฌธ ์‚ฌ์ „ ์ €์žฅ API](https://github.com/f-lab-edu/hee-commerce/pull/98/commits/01af70dcaabeeaef363f0a3bf37d0759e36456cc), [์ฃผ๋ฌธ ์Šน์ธ API](https://github.com/f-lab-edu/hee-commerce/commit/66c0e341fe797054d3b8455d4f6e803133ef3cec), [๋”œ ์ƒํ’ ๋ชฉ๋ก ์กฐํšŒ API](https://github.com/f-lab-edu/hee-commerce/pull/38), [๋”œ ์ƒํ’ˆ ์ƒ์„ธ๋ณด๊ธฐ API](https://github.com/f-lab-edu/hee-commerce/pull/50)) - `ํ…Œ์ŠคํŠธ ์ฝ”๋“œ`๋กœ `๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์˜ ๋ฌธ์„œํ™”`๋ฅผ ์œ„ํ•ด `์„œ๋น„์Šค ํด๋ž˜์Šค`๊ฐ€ ์•„๋‹Œ `๋„๋ฉ”์ธ ๋ชจ๋ธ`์—๊ฒŒ `๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ฑ…์ž„` ๋ณ€๊ฒฝ([#167](https://github.com/f-lab-edu/hee-commerce/pull/167)) - `๊ฐ€๋…์„ฑ`๊ณผ `์œ ์ง€๋ณด์ˆ˜์„ฑ`์„ ๊ณ ๋ คํ•ด์„œ `fixture` ๊ณผ `ํ•จ์ˆ˜` ํ™œ์šฉํ•ด์„œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง([#146](https://github.com/f-lab-edu/hee-commerce/pull/146)) -### 3. ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๊ณ ๋ คํ•œ ์ฝ”๋“œ +#### (2) ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๊ณ ๋ คํ•œ ์ฝ”๋“œ - `์œ ์ง€๋ณด์ˆ˜์„ฑ`์„ ๊ณ ๋ คํ•ด์„œ ์žฌ๊ณ  ์ฆ๊ฐ€/๊ฐ์†Œ ๋ฐ ์žฌ๊ณ  ํžˆ์Šคํ† ๋ฆฌ ์ €์žฅ ๋กœ์ง์„ `์‘์ง‘๋ ฅ` ์žˆ๊ฒŒ ๋ฌถ์–ด์„œ ๊ด€๋ฆฌ([#158](https://github.com/f-lab-edu/hee-commerce/pull/158)) - `์œ ์ง€๋ณด์ˆ˜์„ฑ`์„ ๊ณ ๋ คํ•ด์„œ RedisUtils ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์„œ Redis์˜ key๋ฅผ ํ•œ ๊ณณ์—์„œ `์‘์ง‘๋ ฅ`์žˆ๊ฒŒ ๊ด€๋ฆฌ ([#153](https://github.com/f-lab-edu/hee-commerce/pull/153)) - `์œ ์—ฐํ•œ ์ฝ”๋“œ`๋ฅผ ์œ„ํ•ด `์˜์กด์„ฑ ์ฃผ์ž…`์„ ํ™œ์šฉํ•˜์—ฌ ์ธ์ฆ ๋กœ์ง ๊ตฌํ˜„([#171](https://github.com/f-lab-edu/hee-commerce/pull/171)) - int ๋Œ€์‹  Integer ์‚ฌ์šฉํ•˜์—ฌ `๋™์ ์ฟผ๋ฆฌ`๋ฅผ ๋‹จ์ˆœํ•œ `์ •์  ์ฟผ๋ฆฌ`๋กœ ๋ณ€๊ฒฝ([#133](https://github.com/f-lab-edu/hee-commerce/pull/133), [#144](https://github.com/f-lab-edu/hee-commerce/pull/144)) -### 4. ๊ณ ๊ฐ€์šฉ์„ฑ์„ ๊ณ ๋ คํ•œ ์‹œ์Šคํ…œ ์„ค๊ณ„ (์ง„ํ–‰ ์ค‘) +#### (3) ๊ณ ๊ฐ€์šฉ์„ฑ์„ ๊ณ ๋ คํ•œ ์‹œ์Šคํ…œ ์„ค๊ณ„ (์ง„ํ–‰ ์ค‘) - [์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ตฌ์กฐ](https://app.diagrams.net/#G1uWe-LuEP5ayfhteyHAtZFGyv2nvTm1-m#%7B%22pageId%22%3A%2261v5buV0yLBeLvqyWT7O%22%7D) - -### 5. ๋น„๋™๊ธฐ๋กœ ์ง„ํ–‰๋˜๋Š” ๋ฆฌ๋ทฐ ์ƒํ™ฉ์— ๋Œ€ํ•ด ํšจ์œจ์ ์ธ ์†Œํ†ต์„ ์œ„ํ•ด Github์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ(์ด์Šˆ, ์ฃผ์„, ์ฝ”๋ฉ˜ํŠธ, PR)์„ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์„œํ™” +#### (4) ๋น„๋™๊ธฐ๋กœ ์ง„ํ–‰๋˜๋Š” ๋ฆฌ๋ทฐ ์ƒํ™ฉ์— ๋Œ€ํ•ด ํšจ์œจ์ ์ธ ์†Œํ†ต์„ ์œ„ํ•ด Github์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ(์ด์Šˆ, ์ฃผ์„, ์ฝ”๋ฉ˜ํŠธ, PR)์„ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์„œํ™” - PR์— ์ด ์ž‘์—…์ด ๋ฌด์—‡์ธ์ง€, ์™œ ๊ทธ๋ ‡๊ฒŒ ํ–ˆ๋Š”์ง€ ๋“ฑ ๋งฅ๋ฝ์„ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค. (์˜ˆ์‹œ : [#72](https://github.com/f-lab-edu/hee-commerce/pull/72)) -## ๐Ÿค” ํ”„๋กœ์ ํŠธํ•˜๋ฉด์„œ ํ–ˆ๋˜ ๊ณ ๋ฏผ ํฌ์ธํŠธ -### 1. ๋ถ€๋ถ„ ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ๊ฐ€ ๋œ ๊ฒฝ์šฐ, ์‹ค์ œ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ ์ฃผ๋ฌธ ์ˆ˜๋Ÿ‰๊ณผ ์‹ค์ œ ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ ์ˆ˜๋Ÿ‰์ด ๋‹ฌ๋ผ์ง„๋‹ค. ๋ชจ๋‘ DB์— ์ €์žฅ๋˜์–ด ์žˆ์–ด์•ผ ํ•˜๋Š”๋ฐ, ์–ด๋–ป๊ฒŒ ์ €์žฅํ• ๊นŒ? ([wiki](https://github.com/f-lab-edu/hee-commerce/wiki/%EB%B6%80%EB%B6%84-%EC%A3%BC%EB%AC%B8-%EC%B2%98%EB%A6%AC%EC%99%80-%EA%B4%80%EB%A0%A8%EB%90%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%A0%80%EC%9E%A5)) - -### 2. ์žฌ๊ณ ๋ฅผ Redis์—์„œ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ์ง€๋งŒ, Redis์— ์žฅ์• ๊ฐ€ ๋‚  ๊ฒฝ์šฐ ๋“ฑ์„ ๋Œ€๋น„ํ•˜์—ฌ ๋ฐฑ์—…์šฉ์œผ๋กœ MySQL์—๋„ ์ €์žฅํ•ด์•ผ ํ•œ๋‹ค. ์–ด๋–ป๊ฒŒ ์ €์žฅํ• ๊นŒ? ([wiki](https://github.com/f-lab-edu/hee-commerce/wiki/%EC%9E%AC%EA%B3%A0%EB%A5%BC-Redis%EC%97%90%EC%84%9C-%EA%B4%80%EB%A6%AC%ED%95%98%EA%B3%A0-%EC%9E%88%EC%A7%80%EB%A7%8C,-Redis%EC%97%90-%EC%9E%A5%EC%95%A0%EA%B0%80-%EB%82%A0-%EA%B2%BD%EC%9A%B0-%EB%93%B1%EC%9D%84-%EB%8C%80%EB%B9%84%ED%95%98%EC%97%AC-%EB%B0%B1%EC%97%85%EC%9A%A9%EC%9C%BC%EB%A1%9C-MySQL%EC%97%90%EB%8F%84-%EC%A0%80%EC%9E%A5%ED%95%B4%EC%95%BC-%ED%95%9C%EB%8B%A4.-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%A0%80%EC%9E%A5%ED%95%A0%EA%B9%8C%3F)) - -### 3. ํ•„ํ„ฐ, ์ธํ„ฐ์…‰ํ„ฐ, AOP ์ค‘ ์–ด๋–ค ๊ฒƒ์œผ๋กœ ๋กœ๊ทธ์ธ ์ฒดํฌ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ๊ฒƒ์ธ๊ฐ€? ([wiki](https://github.com/f-lab-edu/hee-commerce/wiki/%ED%95%84%ED%84%B0,-%EC%9D%B8%ED%84%B0%EC%85%89%ED%84%B0,-AOP-%EC%A4%91-%EC%96%B4%EB%96%A4-%EA%B2%83%EC%9C%BC%EB%A1%9C-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EC%B2%B4%ED%81%AC-%EA%B8%B0%EB%8A%A5%EC%9D%84-%EA%B5%AC%ED%98%84%ED%95%A0-%EA%B2%83%EC%9D%B8%EA%B0%80%3F)) - ## ๐ŸŽˆ DB ์Šคํ‚ค๋งˆ - [DB ์Šคํ‚ค๋งˆ](https://dbdiagram.io/d/64ca132402bd1c4a5e1a4066) ![แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-08-29 แ„‹แ…ฉแ„’แ…ฎ 4 22 12](https://github.com/f-lab-edu/hee-commerce/assets/60481383/7d37cb63-9709-4c70-b7ac-f3740c53ae7e)