๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€

(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์„ ์‚ฌ์šฉํ•ด์„œ ๋ฒŒํฌ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ํŠธ๋žœ์žญ..