๐งธ ๋งก์ ์ญํ
- ์ ์ , ์ธ์ฆ/์ธ๊ฐ ๊ฐ๋ฐ
Spring Security + JWT๋ฅผ ์ด์ฉํ ํ์๊ฐ์
, ๋ก๊ทธ์ธ, ์ ๋ณด ์กฐํ ๋ฐ ์์ , ๋ก๊ทธ์์, ํ ํฐ ์ฌ๋ฐ๊ธ api ๊ฐ๋ฐ
๐ข ๋ชฉํ ๋ฌ์ฑ ์ ๋
-
์ค๊ณ๋ถํฐ ๊ฐ๋ฐ๊น์ง ๊ทธ ์๊ธฐ์ ํ๋ ๊ณ ๋ฏผ๋ค๊ณผ ๋ฌธ์ ํด๊ฒฐ ๊ณผ์ ์ ๊พธ์คํ๊ฒ ๋ธ๋ก๊ทธ์ ๊ธฐ๋กํ์ฌ ๋น์ทํ ๋ฌธ์ ๋ฐ์ ์์ ํ์ฉํ์.
-
๊ฐ๋ฐ ๊ธฐ๊ฐ ์ด์ ์๋ ๊ฐ๋ฐ์ ์์ํ๊ธฐ ์ํด ํ์ํ ๋ถ๋ถ์ ํ์ตํ๊ณ , ๊ธฐ์ด์ ์ธ ์ผ์ด์ค๋ฅผ ๊ฐ๋จํ ๋ง๋ค์ด๊ฐ๋ฉฐ ๊ฒฝํ์ ์๊ณ , ๊ฐ๋ฐ ๊ธฐ๊ฐ์๋ ์ผ์ด์ค๋ฅผ ๋ฐํ์ผ๋ก ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์งํํจ.
-
REST API๋ฅผ ์ค๊ณํ๊ณ ๊ตฌํํ๋ฉฐ ๋ฌด์์ ํ๋ก ํธ์ ์์กดํ๋ ๊ฒ์ด ์๋ Postman๊ณผ ๊ฐ์ ํด์ ํ์ฉํ์ฌ ํ์์ ๊ฒฐ์ ํ ์ปค์คํ
์๋ต์ ๋ฐ๊ณ , ์๋ชป๋ ์ฝ๋๋ ์์ ํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์๊ฒ ๋จ.
-
๋ฌ์ฑ๋ : 70%
- ๊ธฐ๋ฅ ๊ตฌํ ๋ฐ ๋ฐฐํฌ ์๋ฃ(ํ์๊ฐ์
, ๋ก๊ทธ์ธ, ์ ๋ณด ์กฐํ ๋ฑ)
- ์ฑ๋ฅ ํ
์คํธ ์งํ X
๐ถ ํ์ฅ์ฑ์ ๊ณ ๋ คํ ์ค๊ณ
- ์ธ์ฆ์ธ๊ฐ ์๋ฒ:
- ๋น๋ฒํ๊ฒ ์ผ์ด๋๋ ์ธ์ฆ์ธ๊ฐ ์์
์ ์๋๋ฅผ ๋์ด๊ธฐ ์ํด MySQL๊ณผ Redis ํจ๊ป ์ฌ์ฉ
-> ์ฌ์ฉ์ ์ ๋ณด๋ ์ค์ํ๊ณ ๋ฏผ๊ฐํ ์ ๋ณด์ด๊ธฐ ๋๋ฌธ์ ์ ์ค์ ๋ฐฉ์งํ๊ธฐ ์ํด ์์ ํ MySQL์ ๊ฑท์ด๋ผ ์๋ ์๋ค๊ณ ํ๋จ
โ๏ธ ๋ณ๊ฒฝ๋ ์ํคํ
์ฒ
- ๋ก๊ทธ์ธ ์๋ฒ ๋ณ๊ฒฝ ์ด์
- ์ด์ ์ํคํ
์ฒ
- ์์ ๋ฒ์์์์ MSA๋ ์ข์ง ์์ ๋ฐฉํฅ + ์๋ฒ๋ฅผ ๋๋ฌด ์๊ฐ ์ชผ๊ฐ๋ฉด ๋ฐฐํฌ ๋ฐ ์ฐ๋์ ๋ง์ ์ด๋ ค์์ ๊ฒช๊ฒ ๋ ๊ฐ๋ฅ์ฑ์ด ํฌ๊ธฐ ๋๋ฌธ์ ์ค์ด๊ธฐ ์ํด
- ์ฃผ์ด์ง ์๊ฐ ๋ด์ ์๋ฒ๊ฐ ์๋ํ๋ ๊ฒ์ ์ง์คํ๊ธฐ ์ํด ๋ง์ด ์ชผ๊ฐ์ ธ์๋ ๋ก์ง์ ๊ณผ๊ฐํ ํฉ์น๋ ๋ฐฉ์ ์ฌ์ฉ โ ํด๋น ์์ ์ดํ(์ฝ๋๋ฆฌ๋ทฐ ๋ด์ฉ ๋ฐ์) Auth Server์ User Server๋ฅผ ์ชผ๊ฐ์ง ์๊ณ ํ๋์ ์๋ฒ๋ก ์๊ฐํ๊ณ ํฉ์น๊ฒ ๋์์.
โ๋ฌธ์ ํด๊ฒฐ
- ์ค๋ช
์ด์ธ์ ๋ ๋ค์ํ ํธ๋ฌ๋ธ ์ํ
๋ค์ ํด๊ฒฐ ๊ณผ์ ์์ธ๋ ๋ธ๋ก๊ทธ ์ฐธ๊ณ
๐ฅ AccessToken payload์ ๋๋ค์ ์ ๋ณด ์ถ๊ฐ ์คํจ
- ๋ชฉํ : ํ ์๋ฒ์ ์์ฒญ ์ AccessToken payload์ ์ ์ ์ nickname ์ ๋ณด๋ฅผ ๋ด์ ์ ๋ฌ
- ์์ธ : ํ ์๋ฒ์์์ ์ ์ ํ์
์ ์ํด AccessToken์ payload์ ๋๋ค์ ์ ๋ณด๋ฅผ ๋ฃ์ด์ฃผ์ด์ผ ํ์ผ๋ ํด๋น ์ฝ๋์ ์์ ๋ง์ผ๋ก๋ ๋ฐ์์ด ์๋จ.
- ํด๊ฒฐ ๊ณผ์ :
๐ Subject์ ํฌํจ โ X
๐ Claim ์์ฑ ๋ฐ ๋๋ค์ ์ฝ์
โ X
๐ payload ํจ์ ์์ฑ ๋ฐ ๋๋ค์ ์ฝ์
โ X
๐ ํ ์ฌ๋์ ์ง๋ฌธ ๋ฐ ํด๊ฒฐ(Claim โ Claims) โ X
- ํด๊ฒฐ : ๋๋ค์ ์ ๋ณด๋ฅผ payload์ ๋ฃ๋ ๋ฐฉ๋ฒ ๋์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฌ์ฉ
โ ํ ํฐ payload์ user_id๋ฅผ ํตํด ๋๋ค์ ์ ๋ณด๋ฅผ ์์ฒญํ์ฌ ๋ฐ์์ค๋ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝ
- ์ป์ ๊ฒ : ์์ธ์ ํ์
ํ๊ธฐ ์ํด ์์ฑํ ์ฝ๋๋ค์ ์ ์ ์ ๋ณด ์ฐ๊ด ๊ด๊ณ๋ฅผ ์ดํผ๋ฉฐ ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ๋๋ค์ ์ ๋ณด๋ฅผ ๋ถ๋ฌ์ค๋ ค ์๋ํ ๊ฒ
๐ฅ ๋ณ๋ ๋ธ๋์น๋ฅผ ์ด์ฉํ Pull Request ์คํจ
https://velog.io/@dlgkdis801/ํ์ฌ-์ํฉ์ฐธ๊ณ -๋งํฌ
https://velog.io/@dlgkdis801/IntelliJ-Github-์ฐ๋-๋ค์
- ๋ฌธ์ : ํ ๋ ํฌ์งํฐ๋ฆฌ์ Pull Request ์๋ ์ โThere isnโt anything to compare.โ ์๋ฌ ๋ฐ์
- ํด๊ฒฐ ๋ฐฉ๋ฒ : ์ง์ ์๋ต ์ง๋ฌธ & ์์ธ ํ์
- ์๋ฌ๋ฌธ์ ์ดํด๋ณด๋ฉด, ์ฐ๊ฒฐํ๋ ค๋ ๋ธ๋์น๊ฐ ๊ฐ์ ์ปค๋ฐ ๊ธฐ๋ก์ ๊ฐ์ง๊ณ ์์ง ์์ ์ฐ๊ฒฐ์ ์คํจํ๋ค๊ณ ํ๋จํ ์ ์์.
- forkํ ๋ ํฌ์งํฐ๋ฆฌ ๋ด์ main ๋ธ๋์น์ AI-33 ๋ธ๋์น์ ์ปค๋ฐ ๊ธฐ๋ก์ด ์ผ์นํ์ง ์์ผ๋ฉฐ, ๊ทธ๋ก ์ธํด ํ ๋ ํฌ์งํฐ๋ฆฌ์ main์ pr์ ์ฌ๋ฆด ์ ์๋ ๊ฒ์ผ๋ก ํ์
.
- ์์ธ : forkํ ๋ ํฌ์งํฐ๋ฆฌ ๋ด์์ main๊ณผ ๋ณ๋์ ๋ธ๋์น์ธ โAI-33โ์ ์ปค๋ฐ ๊ธฐ๋ก์ ์ฐ๋ํ์ง ์๊ณ ๋ธ๋์น๋ฅผ ์์ฑํ์ฌ ์ฐ๊ฒฐ์ด ๋๊ธด ๊ฒ์ด ์์ธ.
- ํด๊ฒฐ : ํ๋ก์ ํธ ๋ฐฑ์
ํ, ์๋ก ์์ฑํ๋ ๋ธ๋์น๋ฅผ ์ญ์ & ๋ค์ ์์ฑ
- โNew Branch from main..โ์ ํตํ ์๋ก์ด ๋ธ๋์น ์์ฑ์ผ๋ก ์ปค๋ฐ ๊ธฐ๋ก์ ์ด์ด์ฃผ์ด์ผ ํจ.
๐ฅ AWS EC2 ๋ฐฐํฌ ์ค DB ์ฐ๋ ์คํจ๋ก ์ธํ ์๋ฌ
https://velog.io/@dlgkdis801/SpringBoot-ํ๋ก์ ํธ-AWS์-๋ฐฐํฌํ๊ธฐ
- ๋ฌธ์ : AWS์ EC2 ์๋ฒ์ ์ธ์ฆ์ธ๊ฐ์๋ฒ์ jarํ์ผ์ ์ฌ๋ ธ์ผ๋ฉฐ, ๋น๋๋ ๋์ง๋ง ๋ก๊ทธ์ ์๋ฌ๊ฐ ๋จ๋ ์ํ
- ์์ธ : DB์ JPA๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๋ ์๋ฌ๋ก ํ๋จํ๊ณ ํด๊ฒฐ์ฑ
์ ์ฐพ์๋ด.
- ํด๊ฒฐ๊ณผ์
- RDS๋ฅผ ์ด์ฉํด ํด๊ฒฐํด๋ณด๋ ค ํ์ผ๋, ๋ฐ๊ธ ๊ณผ์ ์์ ๋ฌธ์ ๊ฐ ์๊ฒจ ํด๋น EC2 ์๋ฒ์์ ๋ถ๋ฌ์ค์ง ๋ชปํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์
- EC2 ์๋ฒ ์ญ์ ํ๋์ ์ปดํจํฐ์ ๊ฐ๊ธฐ ๋๋ฌธ์ ์๋ฒ ๋ด์ ํ๊ฒฝ์ ๋ก์ปฌ๊ณผ ๋์ผํ๊ฒ ๋ง๋๋ ๊ฒ์ ์๋ํด๋ณผ ์ ์๊ฒ ๋ค๊ณ ํ๋จํจ.
-
EC2 ์๋ฒ ๋ด์ Apach2(http.d ํ์ฑ ์ํจ), MySQL(MariaDB)๋ฅผ ์ค์น
-
ํ๋ก์ ํธ์ aplication.yml์ EC2 ์๋ฒ ๋ด์ ์ค์ ์ ์ถ๊ฐ + build.gradle runtimeOnly ์ถ๊ฐ
- ์ฃผ์ : ์ฐ๋ถํฌ ์๋ฒ์๋ mariadb ๊ด๋ จ ์๋ฒ์ ํด๋ผ์ด์ธํธ๋ฅผ ์ค์นํ๊ธฐ ๋๋ฌธ์ driver class name์ด mariaDB ๊ด๋ จ์ด์ด์ผํจ!
- ์ฌ๋ฐฐํฌ
๐๏ธ ์ด๋ฒ ํ๋ก์ ํธ ํ๊ณ
ver.1
ver.2
- ๊ฐ๋ฐ
- ์ธ์ฆ์ธ๊ฐ ๊ณผ์ ์์ PHP์ Session ๋ฐฉ์ ์ฌ์ฉ โ Spring Framwork์ JWT ๋ฐฉ์ ๋์
- AccessToken payload์ ํ์ํ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ปค์คํ
ํ์ฌ ๋ฃ๋ ๊ณผ์ ์์์ ์ด๋ ค์
- ๋๋ค์ ์ ๋ณด๋ฅผ ๋ฃ๊ธฐ ์ํด ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ(Subject ํฌํจ, Claim& Claims ์ฝ์
, payload ํจ์ ์์ฑ ๋ฑ)์ผ๋ก ํด๊ฒฐ ์๋ โ ์คํจ
- ์ ์ id๊ฐ์ ํตํด ๋๋ค์ ์ ๋ณด๋ฅผ ์์ฒญํ๋ ๋ฐฉ๋ฒ ์ฌ์ฉ
- ์์ฌ์ด ์ : ํ ํฐ์ ๋๋ค์ ์ ๋ณด ํฌํจ โ ์ฌ์ฉ์์ ๋ํ ์์ฒญ ์ ์๋ ์ธก๋ฉด์์ ํฐ ์ด์ ์ด ์์์ ๊ฒ
- Spring ํ๋ ์์ํฌ์ ์ฒซ ๋์
+ ํ ํฐ ๋ฐฉ์์ ๋ํ ์ ๋ฐ์ ์ดํด ๋ถ์กฑ์ด ๊ทผ๋ณธ์ ์์ธ์ด์๋ค๊ณ ์๊ฐ.
- ์ฐ๋
- ๊นํ๋ธ์ ๊ฐ์ธ ๋ ํฌ์งํฐ๋ฆฌ๋ง ์ฌ์ฉ โ forkํ ๋ ํฌ์งํฐ๋ฆฌ ๋ด ๋ณ๋ ๋ธ๋์น ์์ฑ ๋ฐ PR & Approve ๋ฐ์ ํ ๋ ํฌ์งํฐ๋ฆฌ main์ Mergeํ๋ ๋ฐฉ์
- forkํ ๋ ํฌ์งํฐ๋ฆฌ์ main๊ณผ ๋ณ๋ ๋ธ๋์น์ ๋์ด์ง commit ๊ธฐ๋ก์ผ๋ก ์ธํด ์ฐ๋ ๋ถ๊ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํด ์ํ์ฐฉ์ค๋ฅผ ๊ฒช์.
- ํ๋ก์ ํธ ๋ฐฑ์
โ ๋ธ๋์น ์ฌ์ฑ์ฑ ๋ฐ ์ฐ๋์ผ๋ก ํด๊ฒฐ (IntelliJ๋ฅผ ํตํ ๊น ๋ธ๋์น ์์ฑ ์ โNew Branch from main..โ์ ์ด์ฉํด์ผ commit ๊ธฐ๋ก ์ฐ๋)
- ์์ฌ์ด ์ : ๊น์ ํ๋ก์ ํธ๋ฅผ ์ฐ๋ํ๋ ๊ณผ์ ์์ ๋ง์ ์๊ฐ ๋ญ๋น โ ๊นํ๋ธ๋ฅผ ์ข ๋ ๊ณต๋ถํ์๋ค๋ฉด ๊ฒช์ ์ํ์ฐฉ์ค๊ฐ ํจ์ฌ ์ ์์ ๊ฒ
- ๊นํ๋ธ ์ฌ์ฉ ๋ฏธ์ + ๋ฌด์์ ์ฐ๋๋ถํฐ ์๋ํ ๊ฒ์ด ์์ธ โ ํ์คํ์ง ์์ ๊ฒ์ ๋ฏธ๋ฆฌ ์ง๋ฌธํ์!
โ ์ด ์ธ์๋ ๋ฆฌ๋ทฐ์ ํผ๋๋ฐฑ ๊ณผ์ ์ ๊ฑฐ์น๋ฉฐ ๋ค์ํ ๊ณ ๋ฏผ์ ํ ์ ์์๊ณ , ์ด๋ ค์์ ๊ฒช๋ ๋ถ๋ถ์ ๋ํด ๋ง์ ๋์์ ๋ฐ์ ์ ์์์.
- ์๊ฐ ๋ถ๋ฐฐ์ ์คํจํ์ฌ ๊ณํ์ ๋ง์ด ๋ณ๊ฒฝํ๊ฒ ๋๋ฉด์ ๊ฐ๋ฐ ๋จ๊ณ์์ ๋์ด ๋๊ฒ ๋์์.
- ์์ผ๋ก์ ํ๋ก์ ํธ์์๋ ์๊ฐ ๋ถ๋ฐฐ์ ๊ณํ์ ์ค์์ฑ์ ์ผ๋ํ๋ฉฐ ํ
์คํธ์ ๊ฐ์ ๊น์ง ํ ์ ์๋๋ก ํ์!