2023๋ 07์ 21์ผ ~ 2023๋ 07์ 27์ผ
FE : ๊น๋์, ์ด์ฉ์ฐ, ํ์ฑ๋ฏผ
BE : ํ์นํ, ์ด์ฑ์, ์ด์์, ์ตํ์ฑ, ์กฐ์ฑ๊ทผ
ํํ์ด์ง ์ฃผ์ : https://ohou-clone-fe.vercel.app/
์์ฐ ์์ : https://www.youtube.com/watch?v=gYafiEdicrk
ํ๋ก์ ํธ ๋ ธ์ : https://www.notion.so/4-ed1c11e6e80840f78947328d20542b42
ํ๋ก์ ํธ github : https://github.com/OHOU-cloneCoding
๊น๋์
๋ฌธ์ : ์ก์ธ์ค ํ ํฐ๊ณผ ๋ฆฌํ๋ ์ ํ ํฐ์ด ๊ฐ๊ฐ ๋ฐ๋ก ๋ง๋ฃ๋ฌ์ ๋ axios ์ธํฐ์ ํฐ๋ก ํธ๋ค๋งํ๋ ๊ณผ์ ์์ error.response์ ์ ๊ทผ์ด ์๋จ
ํด๊ฒฐ๋ฐฉ๋ฒ : ๋ฐฑ์๋์ ์ํตํ์ฌ ์๋ก์ด ์ก์ธ์ค ํ ํฐ์ success ์ body๋ก ๋ฐ์ ์ถ์ถํ ๋ค ๋ง๋ฃ๋ ํ ํฐ๊ณผ ๊ตํํด์ ์ ์ฅํ๋ค. ๊ทธ๋ฆฌ๊ณ error์ผ ๊ฒฝ์ฐ์๋ ๋ฆฌํ๋ ์ ํ ํฐ์ ๋ง๋ฃ๋ก ๊ฐ์ฃผํ์ฌ ๋ชจ๋ ํ ํฐ์ ์ง์ด ๋ค โ/loginโ์ผ๋ก ๋ฆฌ๋ค์ด๋ ํธ ์ํค๋ ๋ฐฉ๋ฒ ์ ํํ๋ค. ๊ทธ๋ฌ๋ ์ง๊ธ์ refresh token ์ค๋ฅ์ ๋ค๋ฅธ ์ข ๋ฅ์ ์ค๋ฅ๋ฅผ ๊ตฌ๋ถํ ์ ์๊ณ , refresh token์ ๋ก์ปฌ์คํ ๋ฆฌ์ง์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ๋ณด์์ ์ข์ง ์์ ๋ง์ ๊ฐ์ ์ด ํ์ํ๋ค๊ณ ์๊ฐํ๋ค.
์ด์ฉ์ฐ
๋ฌธ์ : ๋ก๊ทธ์ธ ํ ํ ํฐ์ด ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ์ ์ฅ๋์ง ์์.
ํด๊ฒฐ๋ฐฉ๋ฒ : login ํจ์์์ ๋ก๊ทธ์ธ์ด ์ฑ๊ณตํ ํ ํค๋๋ถ๋ถ์์ ๋ฐํ๋ ํ ํฐ์ ๋ณด๋ฅผ ์ถ์ถํ์ฌ ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ์ ์ฅํ๋ ๋ถ๋ถ์ ์ถ๊ฐํ๋ค.
ํ์ฑ๋ฏผ
๋ฌธ์ : ๊ฒ์๊ธ ์์ ํ์ด์ง์์ ์๋ณธ ๊ฒ์๊ธ ๋ถ๋ฌ์ค๊ธฐ
ํด๊ฒฐ๋ฐฉ๋ฒ : ์ด์ ์ฃผ์ฐจ์์๋ ์์ธํ์ด์ง์์ ์์ ํ์ด์ง๋ก ๊ฒ์๊ธ์ state๋ก ๋๊ฒจ์ค ๋ค์, ์์ ํ์ด์ง์์ useLocation์ ์ฌ์ฉํ๊ณ ์ด๋ฒ์๋ state ๋์ ๊ฒ์๊ธ ์์ด๋๋ฅผ ์ฟผ๋ฆฌ์คํธ๋ง์ผ๋ก ๋๊ธด ํ ์์ ํ์ด์ง์์ React Query๋ก ํด๋น ๊ฒ์๋ฌผ์ ๊ฐ์ ธ์๋ค.
๋ฌธ์ :
๊ฒ์๊ธฐ๋ฅ & ํํฐ๋ง & ์ ๋ ฌ์ ํ๊ธฐ ์ํ ๋์ ์ฟผ๋ฆฌ ์์ฑ
๋ค์ํ ๊ฒ์ ์กฐ๊ฑด์ด ์ฃผ์ด์ก์ ๋, ์ด๋ฅผ JQPL์์ ๋ค๋ฃจ๊ธฐ๊ฐ ๋งค์ฐ ํ๋ฆ.
ํด๊ฒฐ๋ฐฉ๋ฒ : Querydsl์ ์ฌ์ฉํ์ฌ ํด๊ฒฐ.
์ฅ์ - JPQL์ ์ด์ฉํ๊ฒ ๋๋ฉด, compile ์์ ์์ ์ค๋ฅ๋ฅผ ๋ชป์ก๊ณ , ํด๋น ๋ฉ์๋๊ฐ ํธ์ถ๋๋ ์์ ์์ RuntimeException์ด ๋ฐ์ํ๋ค. ํ์ง๋ง, Querydsl์ ์๋ฐ ์ธ์ด๋ก ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ compile์ค๋ฅ๋ฅผ ๋ฐ์ ์ํจ๋ค. - ์กฐ๊ฑด๋ฌธ์ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉํ ๋ฉ์๋๋ฅผ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. - Querydsl์ ๋ชจ๋ ์กฐ๊ฑด์ ๋ํ ๋ฉ์๋๋ฅผ ๋ง๋ค๊ณ ํด๋น ๋ฉ์๋๊ฐ null ์ด ์๋๋ฉด ์กฐ๊ฑด๋ฌธ์ด ์คํ๋๋ค.
๋ฌธ์ :
JWT Access Token์ ์ฌ์ฉํ๋๋ฐ ๋ณด์์ ์ธ ์ธก๋ฉด์์ ๋ฌธ์ ๊ฐ ์์.
ํด๊ฒฐ ๋ฐฉ๋ฒ : Refresh Token ์ ์ฉ.
์ฅ์ -Refresh Token์ ์ ์ฉํ๊ฒ ๋๋ฉด Access Token์ ์ ํจ ๊ธฐ๊ฐ์ ์งง๊ฒ ์ค์ ํ๊ณ , Refresh Token์ ์ ํจ๊ธฐ๊ฐ์ ๊ธธ๊ฒ ์ค์ ํ์ฌ ์ฌ์ฉ์๋ Access Token์ด ๋ง๋ฃ๋๋ฉด Refresh Token์ ํตํด ์๋ก์ด Access Token์ ๋ฐ๊ธ๋ฐ๋๋ค. ์ด๋ก ์ธํด Access Token์ด ํ์ทจ ๋๋๋ผ๋ ์งง์ Access Token์ ์ ํจ ๊ธฐ๊ฐ์ผ๋ก ๊ธ๋ฐฉ ๋ง๋ฃ ๋์ด์ ํ์ทจ์๋ ํด๋น ํ ํฐ์ ์ฌ์ฉํ ์ ์๋ค.
๋ฌธ์ :
์นํ์ด์ง ํฌ๋กค๋ง์ ํ๋ฉด์ ๋ฐ์ํ ๋ฌธ์
ํฌ๋กค๋ง์ ํ๋ ๋ฐฉ๋ฒ์๋ 2๊ฐ์ง ๋ฐฉ๋ฒ์ด ์กด์ฌ. ๋์ ํ์ด์ง๋ฅผ ํฌ๋กค๋ง ํ๋์ง, ์ ์ ํ์ด์ง๋ฅผ ํฌ๋กค๋งํ๋์ง์ ๋ฐ๋ผ ์ฌ์ฉ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ค๋ฅด๋ค.
์ฒ์์ ๋์ ์นํ์ด์ง ํฌ๋กค๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ Jsoup์ ์ฌ์ฉํ์ฌ ํฌ๋กค๋ง์ ์๋ํ์ผ๋, ์ฐ๋ฆฌ๊ฐ ์ํ๋ ์ ๋ณด๋ฅผ ์ฐพ์ ์ฌ ์ ์์์.
ํด๊ฒฐ๋ฐฉ๋ฒ : ๋์ ์นํ์ด์ง ํฌ๋กค๋ง๊ณผ ์ ์ ์นํ์ด์ง ํฌ๋กค๋ง์ ์ฐจ์ด๋ฅผ ์๊ฒ ๋์๊ณ , ์ ์ ์นํ์ด์ง๋ฅผ ์ฐพ์์ Jsoup์ ์๋ํจ
- Refresh token
- ๊ฒ์์ฐฝ
- ํ์ด์ง๋ค์ด์
- ํ์๊ฐ์ ์ ์ด๋ฉ์ผ ์ธ์ฆ
- ๋ฆฌ์กํธ ์ฟผ๋ฆฌ, swal ๋ฑ ๋ชจ๋ํ
- ์ํ ์ ๋ณด ํฌ๋กค๋ง : ์ค๋์ ์ง ์ํ ํฌ๋กค๋ง ์๋ > ๋์ ํ์ด์ง๋ก ํฌ๋กค๋ง์ด ์ด๋ ค์ ์ ์ ํ์ด์ง์ ๋น์ทํ ์ ๋ณด๋ฅผ ๊ฐ์ง ํ์ด์ง์์ ์ํ ํฌ๋กค๋ง
- ๊ฒ์ ๊ธฐ๋ฅ (Querydsl ์ฌ์ฉํ์ฌ ๋์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑ)
- refreshToken
- github action์ ์ฌ์ฉํ ์๋ ๋ฐฐํฌ ๊ธฐ๋ฅ ์ค์
- ํ์๊ฐ์ ์ ๋ฉ์ผ ์๋ฒ ์ธ์ฆ ๊ธฐ๋ฅ ๊ตฌ์ถ
- 2์ฐจ๊ธฐ๋ฅ : ์ฑ ๊ฐํผ, ๋ง์ดํ์ด์ง, ๋คํฌ๋ชจ๋
- ์ต์ ํ : ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง, ๋ ๋๋ง ์ฑ๋ฅ
- ๋ณด์ :Refresh token โ http only cookie
- ์คํ์ผ: ๋ฐ์ํ ์น (๋ชจ๋ฐ์ผ, ํ๋ธ๋ฆฟ)
- ์ค์๊ฐ ์ธ๊ธฐ ๊ฒ์์ด
- ์ฑ ๊ฐํผ ๊ธฐ๋ฅ
- ์ฑํ ๊ธฐ๋ฅ์ ์ด์ฉํ ๊ณ ๊ฐ์ผํฐ ๋ฌธ์
- ๊ณ ๊ฐ์ผํฐ ๋ฐ์ดํฐ ํฌ๋กค๋ง
- EC2 swap memory ์ค์
- ์์ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ
- View :ย
React,ยReact-Router-Dom,ยaxios,Styled-components,react-icons - State Management :ย
Redux,ยreact-query,ยRedux-toolkit - Build Tool :ย
Create React App - Other Tools :ย
yarn,ยGithub,ยnotion
SpringBoot,SpringData JPA,JDBC,Spring Security,JWT,Querydsl,Jsoup- CICD :ย
GithubActions,S3,Route 53,CodeDeploy,EC2,RDS - Other Tools :ย
Git,ยGithub,ยnotion