2. Demo ๋งํฌ
5.1 ERD
5.2 Rest API ๋ช ์ธ
8. ํ๊ณ
9. ๊ทธ์ธ
trackDay๋ ์ด๋ฃจ๊ณ ์ ํ๋ ๋ชฉํ๋ฅผ ๊ด๋ฆฌํ๊ณ , ๋งค์ผ์ ํ๋์ ๊ธฐ๋กํ๋ ์ฌ์ดํธ ์
๋๋ค. ๋ค์ํ ๊ด์ ์์์ ๋ฆฌํฌํธ๋ฅผ ์ ๊ณตํ์ฌ ์ ์ ๋ค์๊ฒ ๋๊ธฐ๋ฅผ ๋ถ์ฌํ๊ณ , ์ง์์ ์ผ๋ก ๋์ ํ ์ ์๋๋ก ํฉ๋๋ค. ์ ์ ๋ค๊ฐ์ ์ปค๋ฎค๋ํฐ ๊ธฐ๋ฅ์ ํตํด ์๋ก์ ๋ชฉํ์ ํ๋์ ๊ณต์ ํ ์ ์์ต๋๋ค.
์ด ์ธ ๋ค์ํ ๊ธฐ๋ฅ๋ค์ ์ถ๊ฐํ์ฌ ๋ชฉํ๋ฅผ ์ด๋ฃจ๋๋ฐ ๋์์ด ๋๊ณ ์ ํฉ๋๋ค.
ํด๋น ํ๋ก์ ํธ๋ ์งํ ๋์ค ์ค๋จ๋์์ต๋๋ค.
Github Organizations0
- ์๋น์ค ์ข ๋ฃ(22.11.11 00:07)
Backend | Frontend |
์ด๋์ Github JAVA |
๊น์ ์ง Github REACT |
- ๊ฐ๋ฐ์ธ์ด: JAVA(jdk-11.0.10), JavaScript
- ๊ฐ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ: React
- ๋ฐฐํฌ :
- AWS EC2 : IaaS. Amazon์ผ๋ก ๋ถํฐ ๋ฌผ๋ฆฌ์ ์๋ฒ, ๋คํธ์ํฌ, ๊ฐ์ํ๋ฅผ ์ง์๋ฐ์.
- AWS RDS : AWS ํด๋ผ์ฐ๋์์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ ์ฝ๊ฒ ์ค์น, ์ด์ ๋ฐ ํ์ฅํ ์ ์๋ ์น ์๋น์ค
- DBMS :
- mysql(8.0.24) : ์คํ ์์ค์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ
- ํต์ :
- Axios: ์๋ฒ ํต์ ์ ์ํด ์ฌ์ฉ
- ์คํ์ผ :
- material-UI : UI ํต์ผ์ฑ์ ์ํด ์ฌ์ฉ
- emotion : mui ์ปค์คํ ์ ์ํด ์ฌ์ฉ
- ํ๋ ์์ํฌ :
- spring boot(ver 2.5.2)) : ์๋ฐ ๊ธฐ๋ฐ์ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค์ ์๋ ํ๋ ์ ์ํฌ
- spring security : Spring ๊ธฐ๋ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด์(์ธ์ฆ๊ณผ ๊ถํ, ์ธ๊ฐ ๋ฑ)์ ๋ด๋นํ๋ ์คํ๋ง ํ์ ํ๋ ์์ํฌ
- mybatis : ๊ฐ๋ฐ์๊ฐ ์ง์ ํ SQL, ์ ์ฅํ๋ก์์ ๊ทธ๋ฆฌ๊ณ ๋ช๊ฐ์ง ๊ณ ๊ธ ๋งคํ์ ์ง์ํ๋ ํผ์์คํด์ค ํ๋ ์์ํฌ
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ(ํจํค์ง) :
- dayjs : Date ํ์ ์ฒ๋ฆฌ๋ฅผ ์ํด ์ฌ์ฉ
- dotenv : React ๋ด๋ถ ํ๊ฒฝ๋ณ์๋ฅผ ์ํด ์ฌ์ฉ
- randomcolor : ๋ชฉํ์ถ๊ฐ์ ๋ผ๋ฒจ ์์ ๋๋ค๊ฐ ์์ฑ์ ์ํด ์ฌ์ฉ
- react-colorful : ๋ชฉํ์ถ๊ฐ์ ๋ผ๋ฒจ ์์ ์ ํ์ ์ํ ์ปฌ๋ฌ picker
- react-datepicker : ๋ชฉํ/ํ๋ ์กฐํ์ ๊ธฐ๊ฐ์ ํ์ ์ํด ์ฌ์ฉ
- react-google-login : ๊ตฌ๊ธ์์ด๋๋ก ๋ก๊ทธ์ธ ์ฐ๋์ ์ํด ์ฌ์ฉ
- react-icons : ์์ด์ฝ์ ์ํด ์ฌ์ฉ
- redux : ์ํ๊ด๋ฆฌ๋ฅผ ์ํด ์ฌ์ฉ
- redux-saga : ์ํ๊ด๋ฆฌ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ์ํด ์ฌ์ฉ
- react-toastify : ์๋ฆผ์ฐฝ์ ์ํด ์ฌ์ฉ
https://www.erdcloud.com/p/pMhndMEj8ag42BjaR
- JWT ํ ํฐ ๋ฐฉ์์ผ๋ก ํ ํฐ์ ๋ฐ๊ธ๋ฐ๊ณ LocalStorage์ ์ ์ฅํ์ฌ ์ฌ์ฉํ๋ค.
- ์๋ฌธ ์๋ฌธ์, ์ซ์, ํน์๊ธฐํธ๋ฅผ ์ด์ฉํ์ฌ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ํ ์ ์๋ค.
- ๋๋ค์์ ์ ๋ ฅํ ์ ์์ผ๋ฉฐ, ์ปค๋ฎค๋ํฐ๋ฅผ ์ด์ฉํ๋ ๋ชจ๋ ๊ณณ์ ๋๋ค์๋ง ๋ ธ์ถ๋๋ค.
- ๋ชฉํ๋ฅผ ์นด๋๋ก ๋ง๋ค์ด ๊ด๋ฆฌํ๋ค.
- ์ํ๋ ์กฐ๊ฑด์ ๋ง๊ฒ ๋ชฉํ์นด๋๋ฅผ ํํฐ๋ง ๊ฑธ ์ ์๋ค.
- ๋ชฉํ์นด๋์๋ ์งํ๊ธฐ๊ฐ/๊ณต๊ฐ์ฌ๋ถ/์ ๋ชฉ/๋ด์ฉ/๋ชฉํ์ ํ(์ฃผ๊ธฐ์ฑ/๊ธฐํ์ฑ)/์งํ๋ฅ /๋ถ๋ชจ๋ชฉํ/ํ๊ทธ์ปฌ๋ฌ๋ฅผ ์ค์ ํ ์ ์๋ค.
- ํ๋์ ํ์๋ผ์ธํ์์ผ๋ก ๊ธฐ๋ก,์ ์ฅํ๋ค.
- ์ํ๋ ์กฐ๊ฑด์ ๋ง๊ฒ ํ๋ ํ์๋ผ์ธ์ ํํฐ๋ง ๊ฑธ ์ ์๋ค.
- ํ๋์๋ ์๊ฐ/๊ณต๊ฐ์ฌ๋ถ/์ ๋ชฉ/๋ด์ฉ/๋ชฐ์ ๋/๊ด๋ จ๋ชฉํ๋ฅผ ๊ธฐ๋กํ๋ค.
-
๋ก๊ทธ์ธ ๋ฐ ํ์๊ฐ์ ๋ฑ์์ ํจ์ค์๋ RSA์ํธํ ํ์ฌ ์ ๋ฌ(22.01.17)
- ์ํฉ : ๋ก๊ทธ์ธ ๋ฐ ํ์๊ฐ์ ์ ํจ์ค์๋๋ฅผ RSA๋ก ์ํธํํ์ฌ ์ ๋ฌ, RSA์ํธํ๋ฅผ ์ํ JS ์์คํ์ผ์ ์ฌ์ฉํ์ง ๋ชปํ๋ ์ํฉ
- ์์ธ : javascript ์์คํ์ผ์ React์์ import ํ์ฌ ์ฌ์ฉํ๋๋ฐ ์ด๋ ค์
- ํด๊ฒฐ๋ฐฉ์ : ๋ฆฌ์กํธ ์ ์ฉ JSEncrypt ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ(npm ๋ชจ๋)
-
๋ฆฌ๋์ค ์ ์ฉ ์ดํ ์๋ก๊ณ ์นจ ์ accessToken/refreshToken ๋ ์๊ฐ(22.03.03)
- ์ํฉ : ๋ฆฌ๋์ค๋ฅผ ์ ์ฉํ์ฌ accessToken/refreshToken์ ์ํ๊ฐ์ผ๋ก ์ ์ฅํ๊ณ , ์๋ก๊ณ ์นจ์ ํ ํฐ ์ ๋ณด ๋ ์๊ฐ
- ์์ธ : ํ ํฐ์ ๋ณด๋ฅผ state ์ฒ๋ผ ์ํ๊ฐ์ผ๋ก ์ฌ์ฉํ ๊ฒ
- ํด๊ฒฐ๋ฐฉ์ : ํ ํฐ์ ๋ณด๋ค์ saga์์ API ํต์ ์ดํ localstorage.setItem ๋ช ๋ น์ด๋ก ๋ก์ปฌ์คํ ๋ฆฌ์ง์ ๋ณ๋๋ก ์ ์ฅ
-
์ฑ๋ฅ ๊ฐ์ (22.03.28)
- ์ํฉ : ๋ชฉํ์กฐํ ํ์ด์ง ๋๋๋ง์ ์ง๋์น๊ฒ ๋ง์ API ์์ฒญ
- ์์ธ : ๋ชฉํ์นด๋ ํ๋ํ๋ ๋ง๋ค modifyModal ์ฝ๋ ๋ด๋ถ์ API ์์ฒญ์ด ๊ฐ๋ ๊ฒ
- ํด๊ฒฐ๋ฐฉ์ : ๋ชฉํ์นด๋ ๊ฐ์๋ณ๋ก ๋ค ์์ฒญ์ด ๊ฐ๋ ๊ฒ์ ์์ ๋ชจ๋ฌ์ฐฝ์ด open ๋์์ ๋๋ง ์์ฒญ๊ฐ๋๋ก ์ฒ๋ฆฌ
-
์๋ฒ๋ค์ด์ด์(21.12.25)
- ์ํฉ :
- deploy.sh ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ์ฌ ๋ฐฐํฌ๋ฅผ ์งํ์ค์ ํ์ผ์ ๊ถํ์ ๊ฑด๋๋ ธ๊ณ , ์คํฌ๋ฆฝํธ ์คํ์, ํน์ ๋ช ๋ น์ด๋ค์ด ๊ถํ ๋ฌธ์ ๋ก ์คํ๋์ง ์๋ ๋ฌธ์ ๋ฐ์
- ์์ธ : deploy.sh์ ์ฃผ์ด์ง ๊ถํ์ด ์ถฉ๋ถํ์ง ์์ ๋ฌธ์ ๋ก ํ์ ๋จ.
- ํด๊ฒฐ๋ฐฉ์ ; script ์คํ์ ๊ถํ์ ํญ์ ๋ฐ๊พธ๋ ๋ช ๋ น์ด๋ฅผ ์ถ๊ฐํจ. ์์ธํ ๋ด์ฉ์ ์ด ๋งํฌ ์ฐธ์กฐ.
- ์ํฉ :
-
accessToken ์์ ์์ ํด๋ ์๋ฒ๊ฐ ๋ก๊ทธ์ธํ๋ ์ ์ ๋ฅผ ์ธ์ํ๋ ๋ฌธ์
- ์ํฉ :
- ํ์ฌ ํ๋ก์ ํธ๋ access refresh token ์ ๊ธฐ๋ฐ์ผ๋ก ์ธ์ฆ์ ํจ. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ accessToken์ ์์ ์์ ํ๊ณ , ๊ถํ์ด ํ์ํ API ํธ์ถ์
- result : ๋ก๊ทธ์ธํ๋ ์ ์ ๋ฅผ ์ธ์ํ๊ณ , API๊ฐ ์ ์์ ์ผ๋ก ์ํ๋จ.
- expected result : ํ ํฐ ํด์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ 401 ์๋ฌ๋ฅผ ๋ฐํํด์ผํจ.
- ์์ธ ๋ถ์ :
- ๋ก๊ทธ์ธ ํ๋ ์ ์ ๋ฅผ ์ธ์ํ๋ค๋ ์ ์์ ํ์ฌ session์ด ๋์ํ๊ณ ์์์ ์ ์ถํจ.(๊ฐ๋ฐ์ ๋๊ตฌ๋ก๋ ํ์ธ.)
- ์ด์ ์ ๋ถ๋ช ๋๋ ๊ธฐ๋ฅ์ด ์ด๋ ์๊ฐ๋ถํฐ ์๋๊ธฐ ์์ํจ. ๋ณด์ ์ค์ ์์ ๋ญ๊ฐ ์กฐ์น๋ฅผ ์ทจํ๊ฒ์ผ๋ก ํ๋จํ๊ณ , ๊ด๋ จ๋ ํ์ผ์ ์ค์ ๋ค์ ํ์ธํด๋ด. ํ์ธ ๊ฒฐ๊ณผ ๊ด๋ จ ์ค์ ๋ถ๋ถ์ด ์ฃผ์์ณ์ ธ์๋ ๊ฒ์ ํ์ธํจ.
- ํด๋น ์ฝ๋๋ SecurityConfig.java 63๋ฒ์งธ ์ค์์ ํ์ธ ๊ฐ๋ฅ.
- ํด๊ฒฐ ๋ฐฉ์ : ํด๋น ์ฃผ์์ ํด์ ํจ. ์ด์ ํด๊ฒฐ
- ํ์ฌ ํ๋ก์ ํธ๋ access refresh token ์ ๊ธฐ๋ฐ์ผ๋ก ์ธ์ฆ์ ํจ. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ accessToken์ ์์ ์์ ํ๊ณ , ๊ถํ์ด ํ์ํ API ํธ์ถ์
- ์ํฉ :
- ์ค์ ํ๋ก์ ํธ๋ฅผ ํตํด ๋ชจํธํ๋ ๊ฐ๋
์ ์ ๋ฆฌํ ์ ์์๋ค.
- ํผ์ ๊ณต๋ถํ๋ React๋ฅผ ์๋น์ค์ ์์ฉํด ๋ณธ ๊ฒ์ด ์ข์๋ค.
- ํจ๊ป ํ๋ก์ ํธ๋ฅผ ์งํํ ๋ถ๊ป ์ ๋ง ๋ง์ ๊ฑธ ๋ฐฐ์ ๋ค. ๋์๋ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
- ์น๊ฐ๋ฐ์๋ ์ ์์ ํ์ด ์๋ช ์ด๋ค. ํ์ง๋ง ๊ทธ๋ ๊ฒ ์งํํ์ง ๋ชปํ๋ค.
- ๋ค์ํ ๊ธฐ์ ์ ์ ์ฉํด๋ณด์ง ์์๋ค.
- ๋๋ฒ๊น ์ ๊ตฌ๊ธ๋ง์๋ง ์์กดํ๊ณ , ๋ฉด๋ฐํ ๊ฒํ ํ์ง ์์๋ค.
- ๋ฆฌํฉํ ๋ง์ด๋, ๊ธฐ๋ฅ์์ ์ ํ๋ฉด์, ์ํฅ๋๋ฅผ ๊น์ด ์๊ฐํ์ง ์๊ณ ์์ ํ์ฌ ์ค๊ฐ์ ๋ฐฐํฌ ์ฃผ๊ธฐ๋ฅผ ๋๋ ์ด ํ์๋ค.
- Javascript Deep Dive
- ์์ด๋์ด๋ฅผ ์ ์ ์ ํํ๊ฒ ๊ตฌํํ๋ ์ฐ์ต
- ํ ์คํธ ์ฝ๋ ์์ฑ
- ํ์คํ์ ์ํ ํธ๋๋ฐ์ด ๋ฏ์ด๋ณด๊ธฐ
- ํ๋ก์ ํธ๋ฅผ ์ฒ์๋ถํฐ ๋๊น์ง ๋คํด๋ณธ๊ฒ์ด ๋ฟ๋ฏํ๋ค.
- ๊ธฐํ, ์ค๊ณ, ๊ตฌํ, ๋ฐฐํฌ, ํ์ , ํ์๋ชจ์ง, ํ๋ณด, ๋์์ธ...
- ํ๋ก์ ํธ๋ฅผ ๋๋ฌด ์ค๋, ๊ธธ๊ฒ ๋์๋ค.
- ์ค๋ฌด์ ์ง์ฐฉํ ๋๋จธ์ง ์ด๋ก ์ ์ํํ ํ์๋ค.
- ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ์ง ์์๋ค.
- ORM์ ์ด์ฉํด๋ณด์ง ๋ชปํ๋ค.
- ์ฒซ ํ๋ก์ ํธ์๋๋ฐ ์๋น์ค ๊ตฌํ์ ์ง์ฐฉํ๋ค.
- ๋น ๋ฅธ ์๊ฐ๋ด์ ๋ค์ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํด๋ณผ์์๋ ํ๋ก์ ํธ๋ฅผ ํด๋ณธ๋ค.
- ๊ธฐํ์ ์๊ฒ ํ๋ค.(1๋ฌ๋ด์ ์์ ํ ์ ์๋)
- ์ค๋ฌด ์ ์, ์ด๋ก ๋จผ์ ๋น ์ญํ๊ฒ ํด๋๋ค.
- ์ฝ๋๋ฅผ ์ง๋ ๊ฒ๋ณด๋ค, ๋ค๋ฅธ ์ฌ๋ ์ฝ๋๋ฅผ ๋ ๋ง์ด ๋ณด๊ณ , ํด์ํด๋ณธ๋ค.
- ๋ค์ ํ๋ก์ ํธ ๊ธฐํ๊ฐ ์๋ค๋ฉด
- TDD ๊ธฐ๋ฐ์ ํ ์คํธ ์ฝ๋ ์์ฑ,
- ๊ธฐ์ ๋ธ๋ก๊ทธ์ ์ฃผ๊ธฐ์ ํ๋ก์ ํธ ์งํ ์ถ๊ฐ
- ORM ๋๊ตฌ๋ฅผ ์ด์ฉํด ์ฟผ๋ฆฌ ํ์คํ ๋ฐ ์์ฐ์ฑ ์ฆ๋.
ํผ๋๋ฐฑ ์ ๋ฆฌ Notion
- ์์ฒด ํผ๋๋ฐฑ
- 1์ฐจ ์ ์ ํผ๋๋ฐฑ (์ง์ธ) 21/11/15 ~ 21/11/22
- 2์ฐจ ์ ์ ํผ๋๋ฐฑ (๊ฐ์ข ์ปค๋ฎค๋ํฐ) 21/11/27 ~ 21/11/30
- ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ตฌ์ฑํ์ฌ ํ ์คํธ ํ ์ ์์.
- ์๋ ๋งํฌ ์ฐธ์กฐ. https://bejewled-second-8a2.notion.site/20220501-ed1597ae51434ad2a89da163eebae88d
- document ํด๋ ์ฐธ๊ณ .
- notion
- ํ๋ก์ ํธ๋ฅผ ์ ๋ฐ์ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ. ํ์๋ก ์์ฑ.
- excel
- API ๋ช ์ธ์๋ฅผ ๊ณต์ ํ๊ธฐ ์ํด ์ฌ์ฉ.
- postman
- ์ํค์ ์ค๊ณ์ ๋ํ ๊ฐ๋จํ ํ์ด์ง๊ฐ ์์.
- ์ด์์ ์ฒ๋ฆฌ ๊ณผ์ ์ issue ํญ์์ ํ์ธ ๊ฐ๋ฅ.