review-study-app
๐โโ๏ธ ์๊ฐ
- ์ฃผ๊ฐ ํ๊ณ ์คํฐ๋์ฉ ์ฃผ๊ฐ ํ๊ณ ์ด์๋ฅผ ๋งค์ฃผ ์๋์ผ๋ก ์์ฑ ๋ฐ ๊ด๋ฆฌํ์ฌ ์์์
๋๋น 3๋ฐฐ(1์ธ๋น 30์ด -> 10์ด) ํจ์จ์ ์ ๊ณตํ๋ ์คํ๋ง ์ค์ผ์ค๋ฌ ์๋ฒ
# ์์์
- 1์ธ๋น ์์
์๊ฐ : 30์ด
Github ๋ ํฌ ์ด๊ธฐ: 1์ด
์ด์ ๋ชฉ๋ก์์ ๋ด Issue ํด๋ฆญํ๊ธฐ: 1์ด
Close ํ๊ธฐ: 1์ด
๋ค์ ์ฃผ์ฐจ ๊ณ์ฐํ๊ธฐ: 3์ด
๋ค์ ์ฃผ์ฐจ Label ์์ฑํ๊ธฐ: 3์ด
์ด์ ๋ด์ฉ ๊ธฐ์ฌํ๊ณ ์ฃผ์ฐจ Label ์ถ๊ฐ ๋ฐ ์์ฑ : 21์ด
# ์๋ํ
- ์ด ์ํ ์๊ฐ : ํ๊ท 10์ด
๐์ฃผ์ ๊ธฐ๋ฅ
1. โฐ ์ค์ผ์ค๋ฌ ๊ธฐ๋ฅ
- Spring์ @Scheduled ์ ๋ํ
์ด์
๊ณผ GitHub API๋ฅผ ํ์ฉํ์ฌ ์ฃผ๊ธฐ์ ์ธ ์์
์ ์๋์ผ๋ก ์ํํ๋ค.
- ์๋ฅผ ๋ค์ด, GitHub ๋ฆฌํฌ์งํ ๋ฆฌ์ Issue๋ฅผ ์์ฑํ๊ฑฐ๋ Close ํ๋ ์์
์ ์ฌ์ฉ๋๋ค.
2. ๐ ์๋ฆผ ๊ธฐ๋ฅ
- Discord Webhook API๋ฅผ ํ์ฉํ์ฌ ๋ก๊น
๋๋ ๋ฐฐ์น ์์
์ ์ฑ๊ณต/์คํจ ์ฌ๋ถ ๋ฑ์ Discord ์ฑ๋์ ์๋ฆผ์ ์ ์กํ๋ค.
- ์๋ฅผ ๋ค์ด, ๋ก๊น
๋๋ ๋ฐฐ์น ์์
์ ์ฑ๊ณต/์คํจ ์ฌ๋ถ์ ์๋ฆฌ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
- Google Sheets API๋ฅผ ํ์ฉํ์ฌ GitHub API ํต์ ๋ฐ ์์
๋ณ ์ํ ์๊ฐ ๋ฑ์ Google ์คํ๋ ๋์ํธ์ ์ ์ฅํ๋ค.
- AOP์ Interceptor ํ์ฉํ์ฌ ๋ก๊น
๊ธฐ๋ฅ ๊ตฌํ
๐๏ธ ๊ธฐ๊ฐ
๐ ๏ธ ๊ธฐ์
- Java, Spring Boot, Gihtub API, Google API, Discord API
๐ ์ฃผ์ ์ฑ๊ณผ ๋๋ ๋ฌธ์ ํด๊ฒฐ/๊ฐ์ ์ฌ๋ก
1. ๋น๋๊ธฐ ์ ์ฑ๊ธ ์ค๋ ๋๋ก ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๋ถ๊ฐ ๊ธฐ๋ฅ ๋ก์ง ์ต์ ํ(์ฅ์ ์ ํ ๋ฌธ์ ํด๊ฒฐ, ๋์์ฑ ๋ฌธ์ ํด๊ฒฐ ๋ฐ ์ฑ๋ฅ ์ต์ ํ)(๋ฌธ์ ํด๊ฒฐ ๊ณผ์ ๋งํฌ)
2. ๋ฐ์ดํฐ ์ ์ก ๋ฐฉ์ ๋ณ๊ฒฝ(ํ
์คํธ ๊ธฐ๋ฐ ๋ฐฉ์ -> ํ์ผ ์ฒจ๋ถ ๋ฐฉ์)์ผ๋ก ์ต๋ ๊ธ์์ ์ด๊ณผ ๋ฌธ์ ํด๊ฒฐ (๋ฌธ์ ํด๊ฒฐ ๊ณผ์ ๋งํฌ)
3. ๋ฐ์ดํฐ ์ ์ก ์ฃผ๊ธฐ ๋ณ๊ฒฝ(์ ์ฅ์๋ง๋ค -> ๋ฐฐ์น)์ผ๋ก ๋์ค์ฝ๋ ์๋ฆผ ๊ธฐ๋ฅ ๊ฐ์ (๋ฌธ์ ํด๊ฒฐ ๊ณผ์ ๋งํฌ)
4. ๊ธฐํ ๊ฐ์ ์ ๋ค (์ด 3๊ฐ)
(1) SRP ์์น์ ํ์ฉํ์ฌ ์ํ ์ฐธ์กฐ ๋ฌธ์ ํด๊ฒฐ(๋ฌธ์ ํด๊ฒฐ ๊ณผ์ ๋งํฌ)
- SRP์ ๊ธฐ๋ฐํ์ฌ Config ํด๋์ค ๋ถ๋ฆฌ์ Bean ๋ถ๋ฆฌ๋ก ์ํ ์ฐธ์กฐ ์ด์ ํด๊ฒฐ
(2) ๊ตฌ๊ธ ์ํธ ๊ฐ์ฒด์ Bean์ผ๋ก ๋ฑ๋กํ์ฌ ์กฐ๊ธฐ ๋ฌธ์ ๋ฐธ๊ฒฌ ๋ฐ ํด๊ฒฐ๋ก ์ ํ๋ฆฌ์ผ์ด์
์์ ์ฑ ํฅ์๊ณผ ๋ฉ๋ชจ๋ฆฌ์ ๋ฆฌ์์ค ๋ญ๋น ๊ฐ์ (๊ด๋ จ ๋งํฌ)
- ํฉํ ๋ฆฌ ํจํด๊ณผ Bean ๋ฑ๋ก์ผ๋ก Google Sheets ๊ฐ์ฒด ์์ฑ๊ณผ ์ฌ์ฉ ๋์ปคํ๋ง์ํด์ผ๋ก์จ ์ ํ๋ฆฌ์ผ์ด์
์ ์์ ์ฑ ํฅ์์์ผฐ๊ณ , Google Sheets ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ ๋ฉ๋ชจ๋ฆฌ์ ๋ฆฌ์์ค ๋ญ๋น ๊ฐ์ ์ํด
(3) AOP ํ์ฉํ์ฌ ์ฌ์๋ ๋ฉ์ปค๋์ฆ์ ์ ์ง๋ณด์์ฑ ํฅ์
1) RetryableExecutionContextAspect : ์ด๋ค ํด๋์ค์ ์ด๋ค ๋ฉ์๋๊ฐ ์ฌ์๋ ๋๋์ง ํ์
ํ๊ธฐ ์ํด์, @Retryable ์ ๋
ธํ
์ด์
์ด ์ ์ฉ๋ ๋ฉ์๋ ํธ์ถ ์ , ํด๋์ค๋ช
๊ณผ ๋ฉ์๋๋ช
์ RetryContext์ ์ ์ฅํ๋ AOP ํด๋์ค
2) GoogleSheetsTransactionAspect : Google Sheets ์์ ๋ฐ์ดํฐ ์ฐ๋์ ํธ๋์ญ์
๊ด๋ฆฌ๋ฅผ ๋ด๋นํ๋ AOP ํด๋์ค
๐ ์ฃผ์ ํด๋์ค ๊ตฌ์กฐ (ํฌ๊ฒ ๋ณด๊ธฐ)