Java + Spring Boot + AWS S3๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ๊ธฐ๋ฅ์ ๊ตฌํํ ํ ์ด ํ๋ก์ ํธ
Spring Security + JWT Boilerplate๋ฅผ ํ์ฉ Spring Rest Docs๋ฅผ ํ์ฉํ ํ ์คํธ ์ฝ๋ ๊ฐ๋ฐ(AsciiDoctor)
- Java
- Spring Boot 3.1.8
- Gradle 8.5
- MySQL
- Spring Data JPA
- Spring Security
- JWT
- AWS S3
- Redis
- Docker + Github actions CI/CD
- Spring Rest Docs
https://dbdiagram.io/d/ToyProject-65bc90f1ac844320ae493fa3
https://documenter.getpostman.com/view/24415208/2sA2rFRKMi#ee46b019-b7e1-4344-bbed-1bff32f630b7
ํ ์คํธ ์ฑ๊ณต ํ ๋น๋ ๋ฐ ์คํ์ ์๋์ผ๋ก ์์ฑ๋ API ๋ช ์ธ
https://hub.docker.com/repositories/hanyoonsoo
- Spring Security + JWT๋ฅผ ํ์ฉํ stateless ๋ฐฉ์ ์ฌ์ฉ, Redis๋ฅผ ํตํ RefreshToken ๊ตฌํ
- ์ด๋ฉ์ผ ์ธ์ฆ์ ํตํ ์ฌ์ฉ์ ์ธ์ฆ ๊ธฐ๋ฅ
- ์ธ์ฆ๋ ์ฌ์ฉ์์ ๋ฐ๋ฅธ ์ฃผ๋ฌธ ๊ถํ ํ์ธ
- Spring Rest Docs๋ฅผ ํ์ฉํ ํ ์คํธ ์ฝ๋ ๊ฐ๋ฐ
- ํ ์คํธ ์ฑ๊ณต์ ๊ด๋ จ API ๋ฌธ์๊ฐ ์๋์ผ๋ก ์์ฑ๋ ํผ ๊ตฌํ
- AWS S3 ํ์ฉ ํ๋กํ ์ด๋ฏธ์ง CRUD
- VirtualBox ํ์ฉ Docker + Github actions CI/CD
- ์์ดํ ๋ฑ๋ก ๋ฐ ์์ดํ ์ฃผ๋ฌธ ๊ธฐ๋ฅ
์ค๋ฅ ๋ฐ๊ฒฌ์ ์์ธ ์ฐพ๊ธฐ ์ด๋ ค์
Spring Security๋ฅผ ๋น๋กฏํ ๋ค์ํ ์ค๋ฅ๋ค์์ ๋ฐ์ํ๋ ๋ฌธ์ ์ ์์ผ์ ์ฐพ๋ ๊ฒ์ด ์ด๋ ค์. ๋ฐ๋ผ์, Spring Rest Docs๋ฅผ ํ์ฉํ ํ ์คํธ ์ฝ๋ ์์ฑ ๋ฐ ์ค๋ฅ ๋ฐ์์ ์ ์ ํ ์์ธ์ฒ๋ฆฌ๋ฅผ ํ๋ ์์ธ์ฒ๋ฆฌ ํธ๋ค๋ฌ ์ฌ์ฉ.Spring Security ์ค๋ฅ์ ์๋ฌด๋ฐ ๊ฐ๋ ๋ฐํํ์ง ์์
Spring Security Filter๋ ์ผ๋ฐ Filter๋ก DispatchServlet์ ์ ๋์ํ์ฌ Controller๊น์ง ์ ๋ฌ๋์ง ์์. ๋ฐ๋ผ์, Spring Security ํํฐ ๋ฐ ๊ฒ์ฆ ๋จ๊ณ์์ ์๋ฌ ๋ฐ์์ response์ ๊ด๋ จ ์ ๋ณด๋ฅผ ๋ด์์ผ๋ก ํด๊ฒฐ.๊ฐ์ฒด์งํฅ๊ณผ ์ฑ๋ฅ ๋ฌธ์ ์ ๊ดํ ํธ๋ ์ด๋ ์คํ
์ฑ๋ฅ์ ๊ณ ๋ คํ์ง ์๊ณ ๊ฐ์ฒด์งํฅ์ ์ผ๋ก๋ง ์ค๊ณํ ๊ฒฝ์ฐ ์ญ์ ๋ฐ ์ ๋ฐ์ดํธ ์ ๋ฆฌ์คํธ์ ๋ฐ๋ณต๋ฌธ์ผ๋ก ์๊ฐ ๋ญ๋น๊ฐ ๋ฐ์๊ฐ๋ฅ. ๋ฐ๋ฉด์ ์ฑ๋ฅ์ ์ด์ ์ ๋์ด ์ค๊ณ๋ฅผ ์งํํ ๊ฒฝ์ฐ ํ๋ฒ์ ์ฟผ๋ฆฌ๋ง ๋๊ฐ์ง๋ง ๊ฐ์ฒด์งํฅ์ ์ค๊ณ๊ฐ ์๋. ํ๋ก์ ํธ ํน์ฑ์ ๋ฆฌ์คํธ์ ํฐ ๊ฐ์ด ์๊ธฐ ๋๋ฌธ์ CRD์ ๊ฒฝ์ฐ๋ ๊ฐ์ฒด์งํฅ์ ์ค๊ณ๋ฅผ ํ์๊ณ Update์ ๊ฒฝ์ฐ์๋ง ์ฟผ๋ฆฌ๊ฐ ํ๋ฒ๋ง ๋๊ฐ๋๋ก ์ค๊ณ.๊ฐ์๋จธ์ ์ ์ธ๋ถ์์ ์ ์ํ๋ ๊ฒ์ด ์ด๋ ค์. CI/CD ๋ถ๊ฐ.
๊ณต์ ๊ธฐ ํ๊ฒฝ ๋ด๋ถ์ ์๋ ์ปดํจํฐ ํ๊ฒฝ ๋ด๋ถ์ ์๊ธฐ ๋๋ฌธ์ ์ ๊ทผํ๋ ๊ฒ์ด ์ด๋ ค์. ๋ฐ๋ผ์, ๊ฐ์๋จธ์ ์ ๋คํธ์ํฌ ํ๊ฒฝ์ ์ด๋ํฐ์ ๋ธ๋ฆฟ์ง๋ก ์ค์ ํ์ฌ ์ผ๋ฐ ๋ฐ์คํฌํ์ฒ๋ผ ํธ์คํธ๋ก ์ธ์. ๊ทธ ํ, ๊ณต์ ๊ธฐ์ VPN ํ๊ฒฝ ๊ตฌ์ถ ํ ssh๋ก ์ ์ ๊ฐ๋ฅ. ๋ํ, ๊ฐ์๋จธ์ ๋ด๋ถ์ ํฌํธ์ ์ ์ํ๋ ค๋ฉด ๊ฐ์๋จธ์ ์ ์ ์ํ ์ ์๋ ์ธ๋ถ IP๊ฐ ํ์ํจ. Ngrok ๊ตฌ์ฑ์ ํตํ์ฌ ๋ฌธ์ ํด๊ฒฐ.EC2๊ฐ ์๋ VirtualBox ์ฌ์ฉ์ผ๋ก ์ธํ ๋คํธ์ํฌ ์ค๋ฅ
EC2์๋ ๋ฌ๋ฆฌ VirtualBox๋ ์ง์ ๋คํธ์ํฌ ๊ตฌ์ฑ์ ํด์ค์ผ ํจ. ๋ฐฉํ๋ฒฝ์ ์๋์ํค์ง ์์ผ๋ฉด openssh-server๋ฅผ ์ ์ฉํ 22 ํฌํธ ์ด์ธ์๋ ์ ๋ถ ๋งํ์์. ๋ฐ๋ผ์, ufw๋ฅผ ํ์ฑํํ๊ณ ์ ์ ํ ํฌํธ๋ฅผ ์ด์ด์ค์ผ๋ก ๋ฌธ์ ํด๊ฒฐ.๊ธฐ๋ณธ ์ธํ
https://hdbstn3055.tistory.com/17
Spring Security ์ค๋ช
๋ฐ ๊ตฌํ
https://hdbstn3055.tistory.com/25
ํ
์คํธ ์ฝ๋ ๋ฐ ์์ธ์ฒ๋ฆฌ ์ฝ๋ ์์ฑ
https://hdbstn3055.tistory.com/31
์ด๋ฉ์ผ ์ธ์ฆ
https://hdbstn3055.tistory.com/32
์ฃผ๋ฌธ ์๋น์ค ๊ตฌํ
https://hdbstn3055.tistory.com/33
Docker + Github Actions CI/CD
https://hdbstn3055.tistory.com/35
AWS S3 ์ด๋ฏธ์ง ์
๋ก๋/์์ /์ญ์
https://hdbstn3055.tistory.com/36
Mock ๊ฐ์ฒด ์ฌ์ฉ S3 ํ
์คํธ ์ฝ๋ ์์ฑ
https://hdbstn3055.tistory.com/37