์ ์ฒด ๊ธ (35) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [Spring Boot] ์์ ์ฃผ๋ฌธ ๊ด๋ฆฌ ํ๋ซํผ ๊ฐ๋ฐ - Redis์ Scheduler๋ฅผ ํ์ฉํ ๋ฆฌ๋ทฐ ํ์ ๊ตฌํ ๐ ๋ชฉ์ฐจ SpringBoot๋ฅผ ๊ธฐ๋ฐ์ผ๋ก AIํ์ฉ ๋น์ฆ๋์ค ํ๋ก์ ํธ๋ก '์์ ์ฃผ๋ฌธ ๊ด๋ฆฌ ํ๋ซํผ'์ ๊ฐ๋ฐํ๊ฒ ๋์๋ค.์์์ ๊ณผ ๋ฆฌ๋ทฐ ๋๋ฉ์ธ์ ๋งก์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ฒ ๋์๋๋ฐ,๊ฐ๊ฒ ์กฐํ ์ ๋ฆฌ๋ทฐ์ ํ์ ๊ณผ ๊ฐ์๊ฐ ํจ๊ป ์กฐํ๋์ด์ผ ํ๋ ์๊ตฌ์ฌํญ์ด ์์๋ค. ์ฌ๋ฌ ๋ฒ์ ๊ณ ๋ฏผ์ ๊ฑฐ์ณ ๋ฆฌ๋ทฐ ํ์ ๊ณผ ๋ฆฌ๋ทฐ ๊ฐ์๋ฅผ N+1 ๋ฌธ์ ์์ด ์กฐํ ๊ฐ๋ฅํ๋๋ก ๊ตฌํํ์๋ค.์ด๋ค ๋ฌธ์ ์ ์ด ์์๋์ง์ ๊ทธ ํด๊ฒฐ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์. ๐ ํ๋ก์ ํธ ์๊ตฌ์ฌํญ ์ด ํ๋ก์ ํธ์ ํ์ ๊ธฐ๋ฅ ์๊ตฌ์ฌํญ ์ค ํ๋์ด๋ค. ๊ธฐ๋ฅ ์๊ตฌ์ฌํญ์ ์ดํด๋ณด๋ฉด, ๊ฐ๊ฒ ๋ชฉ๋ก์ ์กฐํ ์ ํ์ ์ ๋ ธ์ถํด์ผ ํ๋ค๊ณ ๋์ด์๋ค.์ฒ์์ ๊ธฐ๋ฅ๋ง ์๊ฐํ๊ณ ๊ตฌํ์ ํ๋ค ๋ณด๋ ๊ฐ๊ฒ๋ฅผ ์์ธ ์กฐํํ๊ฑฐ๋ ๊ฒ์ํด์ ๊ฐ๊ฒ ๋ชฉ๋ก์ ์กฐํํ ๋, ๋ฆฌ๋ทฐ ์์ ํ์ ์ ๊ทธ๋๊ทธ๋ ๊ณ์ฐํ์ฌ ๋ณด์ฌ์ฃผ๋๋ก ๋ก์ง์ .. [CI/CD] ์ค์๊ฐ ์ฑํ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก์ ํธ - GitHub Actions๋ฅผ ํตํ CI/CD ๊ตฌ์ถํ๊ธฐ - (2) ๐ ๋ชฉ์ฐจ ์ง๋ ํฌ์คํ ์์ CI/CD๊ฐ ๋ฌด์์ธ์ง์ ๋ํด ์์๋ณด์๋ค.[CI/CD] ์ค์๊ฐ ์ฑํ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก์ ํธ - GitHub Actions๋ฅผ ํตํ CI/CD ๊ตฌ์ถํ๊ธฐ - (1) ์ด๋ฒ ํฌ์คํ ์์๋ ํ๋ก์ ํธ ์ด๊ธฐ ์ธํ ๊ณผ ๋๋ถ์ด GitHub Actions๋ฅผ ํ์ฉํด ์ง์ CI/CD๋ฅผ ๊ตฌ์ถํด ๋ณด์. ๐ GitHub์์ ์ค์ ํ๊ธฐ ์ธํ ๋ฆฌ์ ์ด์์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ณ , ๊นํ๋ธ ๋ ํฌ์งํ ๋ฆฌ์ ์ฐ๊ฒฐํด ์ฃผ๊ฑฐ๋ ๊นํ๋ธ์์ ๋ฐ๋ก ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ์์ฑํด๋ ๋๋ค. ๊นํ๋ธ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ์์ฑํ๋ฉด ๋์ค๋ ํ์ด์ง์์ Actions ํญ์ ์ ํํ๊ฑฐ๋ creating new file์ ์ ํ ํ ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ์ค๋ค. Actions ํญ์ ์ ํํ๋ฉด ํ ํ๋ฆฟ์ ๊ฒ์ํ๊ณ ์ ํํ ์ ์๋ ํ์ด์ง๋ก ๋์ด๊ฐ๊ณ , creating n.. [CI/CD] ์ค์๊ฐ ์ฑํ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก์ ํธ - GitHub Actions๋ฅผ ํตํ CI/CD ๊ตฌ์ถํ๊ธฐ - (1) ๐ ๋ชฉ์ฐจ ๊ฐ์ธ์ ์ผ๋ก SpringBoot๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ์ค์๊ฐ ์ฑํ ์๋ฒ๋ฅผ ๊ตฌํํด๋ณด๋ ค๊ณ ํ๋ค.์ด์ปค๋จธ์ค ํ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ์๊ฐ ์ ์ง์ ๊ตฌํํด๋ณด์ง ๋ชปํ๋ ๋ถ๋ถ์ ์์ฃผ๋ก ์งํํ ์์ ์ด๋ค.์ด๋ฒ ํฌ์คํ ์์๋ CI/CD๊ฐ ๋ฌด์์ธ์ง์ ๋ํด ์์๋ณด๋๋ก ํ์. ๐ CI/CD๋? CI/CD๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ์ฌ ๋น ๋ฅด๊ณ ์์ ์ ์ธ ๋ฐฐํฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ Continuous Integration(์ง์์ ํตํฉ)๊ณผ Continuous Delivery/Deployment(์ง์์ ์ ๋ฌ/๋ฐฐํฌ)์ ์ฝ์์ด๋ค. ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ฅผ ์์ฑํ๋ ์๊ฐ๋ถํฐ ์ค์ ์ฌ์ฉ์์๊ฒ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ์๊ฐ๊น์ง์ ๋ชจ๋ ๊ณผ์ ์ ์๋ํํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ค. โ๏ธ CI(์ง์์ ํตํฉ)๊ฐ๋ฐ์๊ฐ ์์ฑํ ์ฝ๋๋ฅผ ์์ฃผ ๋ณํฉํ๊ณ , .. [Docker] Docker๋ก Tomcat ์คํํ๊ธฐ ๐ ๋ชฉ์ฐจ ์ง๋๋ฒ ํฌ์คํ ์์ Docker์ Docker๋ก MySQL์ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์๋ค.[Docker] Docker๋ก MySQL ์คํํ๊ธฐ [Docker] Docker๋ก MySQL ์คํํ๊ธฐ๐ ๋ชฉ์ฐจ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํด ๊ณต๋ถ๋ฅผ ํ๋ค๊ฐ MySQL ์ค์ ์ ์ด๊ฒ์ ๊ฒ ๋ณ๊ฒฝํด ๋ณด์๋ค.์ดํ, ๋ค๋ฅธ ํ๋ก์ ํธ๋ฅผ ์์ํ ๋ ์ค์ ์ ๋ค์ ๋ฐ๊ฟ์ผ ํด์ ๋ถํธํ๋ ๊ฒฝํ์ด ์๋ค.์ค์ ์ ๋ค์ ๋ณ๊ฒฝํด์ผzzudev.tistory.com ์ด๋ฒ ํฌ์คํ ์์๋ Docker๊ฐ ์ด๋ฏธ ์ค์น๋์ด ์๋ค๋ ๊ฐ์ ํ์,Docker๋ฅผ ์ด์ฉํ์ฌ ํฐ์บฃ(Tomcat)์ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์. ๐ ํฐ์บฃ(Tomcat) ๋ฒ์ ํ์ธ Docker๋ ์ด๋ฏธ ์ค์น๋์ด ์๋ค๋ ๊ฐ์ ํ์, ํฐ์บฃ(Tomcat) ์ปจํ ์ด๋๋ฅผ ์คํ.. [Docker] Docker๋ก MySQL ์คํํ๊ธฐ ๐ ๋ชฉ์ฐจ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํด ๊ณต๋ถ๋ฅผ ํ๋ค๊ฐ MySQL ์ค์ ์ ์ด๊ฒ์ ๊ฒ ๋ณ๊ฒฝํด ๋ณด์๋ค.์ดํ, ๋ค๋ฅธ ํ๋ก์ ํธ๋ฅผ ์์ํ ๋ ์ค์ ์ ๋ค์ ๋ฐ๊ฟ์ผ ํด์ ๋ถํธํ๋ ๊ฒฝํ์ด ์๋ค.์ค์ ์ ๋ค์ ๋ณ๊ฒฝํด์ผ ํ๋ ๋ฒ๊ฑฐ๋ก์ด ๊ณผ์ ์ ์์ ๊ณ ,๋ ๋ฆฝ์ ์ผ๋ก DB๋ฅผ ์ด์ํ๊ธฐ ์ํด MySQL์ ๋ก์ปฌ์ ์ค์นํ์ง ์๊ณ Docker๋ฅผ ์ด์ฉํ์ฌ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์. ๐ Docker๋? Docker๋, ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๊ทธ ์ข ์์ฑ์ ์ปจํ ์ด๋๋ผ๋ ํ์คํ๋ ๋จ์๋ก ๋ฌถ์ด ์ฝ๊ฒ ๋ฐฐํฌํ๊ณ ์คํํ ์ ์๊ฒ ํด์ฃผ๋ ์คํ ์์ค ํ๋ซํผ์ด๋ค. ์ปจํ ์ด๋์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์์คํ ๋๊ตฌ, ์ฝ๋, ๋ฐํ์ ๋ฑ ์ํํธ์จ์ด๋ฅผ ์คํํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ๊ฒ์ด.. [Redis] Redis Cache๋ฅผ ํ์ฉํด ๋ฐ์ดํฐ ์กฐํ ์๋ ๊ฐ์ ํ๊ธฐ - (2) ๐ ๋ชฉ์ฐจ ์ง๋๋ฒ ํฌ์คํ ์์ Redis์ ์ด๋ค ํน์ง ๋๋ฌธ์ ์ฑ๋ฅ์ด ๊ฐ์ ๋๋์ง ์์๋ณด์๋ค. [Redis] Redis Cache๋ฅผ ํ์ฉํด ๋ฐ์ดํฐ ์กฐํ ์๋ ๊ฐ์ ํ๊ธฐ - (1) [Redis] Redis Cache๋ฅผ ํ์ฉํด ๋ฐ์ดํฐ ์กฐํ ์๋ ๊ฐ์ ํ๊ธฐ - (1)๐ ๋ชฉ์ฐจ SpringBoot๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด์ปค๋จธ์ค ์๋น์ค๋ฅผ ๊ตฌํํ๋ ์ค,์ด์ปค๋จธ์ค์ ํน์ฑ์ ์กฐํํ๋ ์ผ์ด ๋ง์๋ฐ ์ฑ๋ฅ์ด ์ ๋์ค์ง ์๋๋ค๋ ๊ฒ์ ํ์ธํ๋ค.๋จผ์ , Redis์ ์ด๋ค ํน์ง ๋๋ฌธ์ ์ฑ๋ฅ์ดzzudev.tistory.com ์ด๋ฒ ํฌ์คํ ์์๋ Redis ๋ช ๋ น์ด๋ฅผ ์ง์ ์ ์ผ๋ก ์ฌ์ฉํ์ง ์๊ณ ,Spring Cache ์ด๋ ธํ ์ด์ ์ ์ ์ฉํ์ฌ ์กฐํ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์. ๐ Spring Cache ์ด๋ ธํ ์ด์ ์ด์ฉํ๊ธฐ Spr.. [Redis] Redis Cache๋ฅผ ํ์ฉํด ๋ฐ์ดํฐ ์กฐํ ์๋ ๊ฐ์ ํ๊ธฐ - (1) ๐ ๋ชฉ์ฐจ SpringBoot๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด์ปค๋จธ์ค ์๋น์ค๋ฅผ ๊ตฌํํ๋ ์ค,์ด์ปค๋จธ์ค์ ํน์ฑ์ ์กฐํํ๋ ์ผ์ด ๋ง์๋ฐ ์ฑ๋ฅ์ด ์ ๋์ค์ง ์๋๋ค๋ ๊ฒ์ ํ์ธํ๋ค.๋จผ์ , Redis์ ์ด๋ค ํน์ง ๋๋ฌธ์ ์ฑ๋ฅ์ด ๊ฐ์ ๋๋์ง ์์๋ณด์. ๐ Redis์ ์ฃผ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์๊ฐ๋ณต์ก๋ Redis๋ ๊ณ ์ฑ๋ฅ์ ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ ์ฅ์๋ก, ๋ค์ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ(๋ฌธ์์ด, ํด์, ๋ฆฌ์คํธ, ์ , ์ ๋ ฌ๋ ์ ๋ฑ)๋ฅผ ์ง์ํ๋ค. ๊ฐ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์ฐ๊ด๋ ๋ช ๋ น์ด๋ค์ ์๋ก ๋ค๋ฅธ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค. Redis์ ์ฃผ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋ช ๋ น์ด๋ค์ ์๊ฐ๋ณต์ก๋์ ๋ํด ์์๋ณด์. ๋ฌธ์์ด(String)GET key: O(1) - ์ฃผ์ด์ง.. [Spring Data JPA] Transaction ์ ํ๋ก ์ธํ DeadLock ๋ฐ์๊ณผ ํด๊ฒฐ ๐ ๋ชฉ์ฐจ SpringBoot๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด์ปค๋จธ์ค ์๋น์ค๋ฅผ ๊ตฌํํ๋ฉด์ ๋์์ฑ ์ด์๋ฅผ ํด๊ฒฐํ๋ค. [Spring & Spring Boot] - [Redis] Redisson์ ์ด์ฉํ ๋ถ์ฐ ๋ฝ ๊ตฌํ์ผ๋ก ๋์์ฑ ์ด์ ํด๊ฒฐ [Redis] Redisson์ ์ด์ฉํ ๋ถ์ฐ ๋ฝ ๊ตฌํ์ผ๋ก ๋์์ฑ ์ด์ ํด๊ฒฐ๐SpringBoot๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด์ปค๋จธ์ค ์๋น์ค๋ฅผ ๊ตฌํํ๋ฉด์ ๋์์ฑ ์ด์๊ฐ ๋ฐ์ํ๋ค.Redis์ Redisson๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํด ๋์์ฑ ์ด์๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์. zzudev.tistory.comํ์ง๋ง, ๋์์ฑ ์ด์๋ฅผ ํด๊ฒฐํ๋ ๊ณผ์ ์์ ๊ต์ฐฉ์ํ(DeadLock)๊ฐ ๋ฐ์ํ๋ค. ๋ฐ๋๋ฝ์ด ๋ฐ์ํ ์ด์ ๋ก๋ savaAll์ ์ฌ์ฉํด์ ๋ฒํฌ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ฑฐ๋ํธ๋์ญ.. ์ด์ 1 2 3 4 5 ๋ค์