[Spring Boot] Spring Boot 3๊ณผ Spring Boot 2 ๋น„๊ต
ยท
Backend/Spring Boot
์ด๋ฒˆ์— ํ”„๋กœ์ ํŠธ์— ์ƒˆ๋กœ ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๋ฉด์„œ, Spring Boot ๋ฒ„์ „์„ ์„ ํƒํ•ด์•ผ ๋๋‹ค. ์ž‘๋…„(23๋…„ ์ดˆ)๊นŒ์ง€๋งŒ ํ•ด๋„ ๊ต์œก์—์„œ ์šฐ๋ฆฌ ํŒ€ ๋ฟ๋งŒ์•„๋‹ˆ๋ผ, ๊ฑฐ์˜ ๋ชจ๋“  ์ฃผ๋ณ€ ํŒ€๋“ค์ด Spring 2.7 ๋ฒ„์ „์„ ์‚ฌ์šฉํ–ˆ์—ˆ๋‹ค. ์•„๋ฌด๋ž˜๋„ Spring Boot 3 (22๋…„ 11์›” ์ถœ์‹œ)์ด ๋‚˜์˜จ์ง€ ์–ผ๋งˆ ์•ˆ๋˜์–ด์„œ Deprecated ๋˜๋Š” ๊ฒƒ๋„ ๊ฝค ์žˆ์—ˆ๊ณ , ์ฐธ๊ณ  ์ž๋ฃŒ๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ์ ์–ด ๋‹ค๋“ค 2.7 ๋ฒ„์ „์„ ์„ ํƒํ–ˆ์—ˆ๋‹ค.         Spring Boot 2๊ฐ€ ๋‚ฎ์€ ๋ฒ„์ „๋ถ€ํ„ฐ ์ง€์›์ด ์ ์  ๋Š๊ธฐ๊ณ  ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ธฐ์กด์˜ ํ”„๋กœ์ ํŠธ๋ฅผ Spring Boot 3์œผ๋กœ ์ ์ฐจ ๋งˆ์ด๊ทธ๋ž˜์ด์…˜ ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๋“ค์—ˆ๋‹ค.   ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์— Spring Boot 3 ๋ฒ„์ „์„ ์“ฐ๊ฒŒ ๋˜์–ด์„œ, Spring Boot 3์—์„œ ์–ด๋–ป๊ฒŒ ๋‹ฌ๋ผ์กŒ๋Š”์ง€ ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค!     Java..
[Project/4th] 1. ์„œ๋ฒ„ ์„ค๊ณ„ํ•˜๊ธฐ
ยท
Project
์ตœ๊ทผ ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ์— ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ ํ•ฉ๋ฅ˜ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์•ฑ์„ ์•ฑ์Šคํ† ์–ด์— ์˜ฌ๋ ค ์‹ค์‚ฌ์šฉ์ž๊ฐ€ ์žˆ์„ ํ”„๋กœ์ ํŠธ์ด๋‹ค.์ด๋ฏธ React Native๋กœ ์„œ๋น„์Šค์˜ MVP ๊ฐœ๋ฐœ์ด ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์ธ๋ฐ, ๋‚˜๋Š” ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์˜ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ ๊ฐœ๋ฐœ์„ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.  ํ•ฉ๋ฅ˜ํ•˜๊ธฐ์— ์•ž์„œ ๋‚˜์ค‘์— ํ”„๋ก ํŠธ์—์„œ DB ์—ฐ๊ฒฐํ•˜๋Š” ๋ถ€๋ถ„์„ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ํ•ด์„œ, React์˜ ๊ธฐ์ดˆ ๋ฌธ๋ฒ•๊ณผ React Hook์— ๋Œ€ํ•ด ๊ณต๋ถ€๋ฅผ ํ•˜๊ธฐ๋„ ํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ €๋ฒˆ์ฃผ๋ถ€ํ„ฐ ๋ฐฑ์—”๋“œ ํŒ€์—์„œ ์„œ๋ฒ„ ์„ค๊ณ„ ๋‹จ๊ณ„๋ฅผ ์‹œ์ž‘ํ–ˆ๋‹ค.           ์ธํ”„๋ผ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์ด AWS, GCP์ด ์žˆ์—ˆ๋‹ค. GCP๊ฐ€ AWS๋ณด๋‹ค ๋น„์šฉ์ด ์‹ธ์ง€๋งŒ, ์ด์ „์— AWS๋กœ ์ธํ”„๋ผ๋ฅผ ๊ตฌ์„ฑํ–ˆ๋˜ ๊ฒฝํ—˜๋„ ์žˆ๊ณ , ์ต์ˆ™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— AWS๋ฅผ ์“ฐ๊ธฐ๋กœ ํ–ˆ๋‹ค.๋‹ค๋งŒ, AWS ์š”๊ธˆ์— ๋Œ€ํ•ด ๋” ์•Œ์•„๋ณผ ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ์ผ๋‹จ ๋กœ์ปฌ..
[Test] JMeter๋กœ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธํ•˜๊ธฐ
ยท
Backend/Test
์„œ๋ฒ„์˜ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๋Š” ์ž‘์—…์„ ํ•˜๋ฉด์„œ ์–ผ๋งˆ๋‚˜ ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ์ด ๊ฐœ์„ ๋˜์—ˆ๋Š”์ง€ ๊ถ๊ธˆํ•ด์กŒ๋‹ค.ํ…Œ์ŠคํŠธ ๊ณผ์ •์—์„œ ์„œ๋ฒ„์— ์—ฌ๋Ÿฌ ๋ช…์˜ ์œ ์ €๊ฐ€ ๋“ค์–ด์˜ค๋Š” ์ƒํ™ฉ์„ ์—ฐ์ถœํ•˜๊ณ , ์—ฌ๋Ÿฌ API์˜ ์„ฑ๋Šฅ์„ ํ•œ ๋ˆˆ์— ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.  ๋ชฉํ‘œ : 100๋ช…์ด ์œ ์ €๊ฐ€ ๋™์‹œ์— ๋“ค์–ด์˜ค๋Š” ์ƒํ™ฉ์„ ์—ฐ์ถœํ•˜๊ณ , API ์š”์ฒญ์— ๋ช‡ ์ดˆ๊ฐ€ ๊ฑธ๋ฆฌ๋Š”์ง€ ๋น„๊ตํ•˜๊ธฐ  nGrinder, K6, JMeter์˜ ๋„๊ตฌ๋“ค์ด ์žˆ์—ˆ๊ณ , ์—ฌ๋Ÿฌ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋„๊ตฌ๋“ค์— ๋Œ€ํ•ด ์กฐ์‚ฌํ–ˆ๋‹ค.๊ทธ๋ฆฌ๊ณ  ๋‚ด ์ƒํ™ฉ์— ๋งž๋Š” JMeter๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋„๊ตฌ๋“ค์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•˜๊ณ , JMeter๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ณผ์ •์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•˜๊ฒ ๋‹ค!     ๐Ÿ”Ž ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋„๊ตฌ๋“ค ์กฐ์‚ฌnGrinder์ดˆ๊ธฐ ์„ค์ •์ด ๋‹ค์†Œ ๋ณต์žกํ•˜๋‹ค.GUI๋ฅผ ์ œ๊ณตํ•œ๋‹ค. GUI๊ฐ€ ์ž˜๋˜์–ด ์žˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ..
[MySQL] access denied for user 'root'@'localhost' (using password: yes) - mysql ๋กœ๊ทธ์ธ ์˜ค๋ฅ˜ / MySQL Workbench์—์„œ ์—ฐ๊ฒฐ ์˜ค๋ฅ˜
ยท
DB/MySQL
์ด๋ฒˆ์— ๋งฅ๋ถ์„ ์ƒˆ๋กœ ์‚ฌ๊ฒŒ ๋˜๋ฉด์„œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์ƒˆ๋กœ ์ƒˆํŒ…ํ•˜๊ณ , ๊ธฐ์กด์— ์œˆ๋„์šฐ์—์„œ ๊ฐœ๋ฐœํ–ˆ๋˜ Spring Boot ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ–ˆ๋‹ค. ๊ทผ๋ฐ MySQL DB๊ฐ€ ์—ฐ๊ฒฐ์ด ์•ˆ๋˜๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ์ƒˆ๋กœ ์ƒˆํŒ…ํ•œ MySQL์˜ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ด ์•ˆ๋งž๋Š” ๋ฌธ์ œ๋กœ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ์˜€๋‹ค.     ์—๋Ÿฌaccess denied for user 'root'@'localhost' (using password: yes)          ํ•ด๊ฒฐ ๊ตฌ๊ธ€๋ง ํ•ด๋ณด๋‹ˆ ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ํ‹€๋ ธ์„ ๋•Œ ๋‚˜ํƒ€๋‚˜๋Š” ์˜ค๋ฅ˜๋ผ๊ณ  ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์žฌ์„ค์ •ํ•ด๋ณด์•˜๋‹ค. + ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ MySQL 8์—์„œ๋Š” ๋ณด์•ˆ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด 8์ž๋ฆฌ๋ถ€ํ„ฐ ๊ฐ€๋Šฅํ•˜๋‹ˆ 8์ž๋ฆฌ ์ด์ƒ์œผ๋กœ๋„ ๋ฐ”๊ฟ”๋ณด๊ธฐ!!!          ๋‹ค๋ฅธ ๋ฌธ์ œ๊ทธ๋Ÿฐ๋ฐ ๋‚˜๋Š” ์•„๋ฌด๋ฆฌ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์žฌ์„ค์ •ํ•˜๊ณ  ์—ฐ๊ฒฐํ•˜๋ ค๊ณ  ํ•ด๋„ ์—ฐ๊ฒฐ์ด ๋˜์ง€ ์•Š์•˜๋‹ค...
[Spring Boot] Redis๋กœ ๋žญํ‚น ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ
ยท
Backend/Spring Boot
์šด๋™ ๋ชจ์ž„ ํ”„๋กœ์ ํŠธ์—์„œ ํŒ€ ๋žญํ‚น์„ ๋งก์•„์„œ ๊ตฌํ˜„ํ–ˆ๋‹ค. ํŒ€ ๋žญํ‚น ๊ธฐ๋Šฅ์€ ์Šคํฌ์ธ  ์ข…๋ฅ˜๋งˆ๋‹ค ๊ฒฝ๊ธฐ, ์Šน, ๋ฌด, ํŒจ, ๋ ˆ์ดํŒ… ์ˆ˜๋กœ ์ •๋ ฌ๋œ ์ƒ์œ„ 10๊ฐœ์˜ ํŒ€์˜ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.      ์™œ Redis์ธ๊ฐ€?  ๋žญํ‚น ๊ธฐ๋Šฅ์€ ์„œ๋น„์Šค์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋กœ ์กฐํšŒ๊ฐ€ ๋นˆ๋ฒˆํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์œผ๋ฉด ๋А๋ ค์ง„๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ์ด์ „์—๋Š” Redis๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , Spring Data JPA๋กœ ์กฐ๊ฑด(์šด๋™ ์ข…๋ฅ˜, ๊ฒŒ์ž„ ํƒ€์ž…, ์ •๋ ฌ ์กฐ๊ฑด)์— ํ•ด๋‹นํ•˜๋Š” RDB(MySQL)๋ฅผ ์กฐํšŒํ•˜์—ฌ ํŒ€ ๋žญํ‚น ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์—ˆ๋‹ค. `getTop10BySportsAndGameTypeOrderByPointDesc(sports, gameType)`(SQL๋กœ ORDER BY๋ฅผ ์“ด ๊ฒƒ์ด๋‚˜ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค.)   ํ•˜์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ๋žญํ‚น ์กฐํšŒ์‹œ๋งˆ๋‹ค ORDER BY ..
[Redis] Spring Boot์— Redis ์—ฐ๋™ํ•˜๊ธฐ + RedisTemplate, RedisRepository
ยท
Backend/Spring Boot
Spring์—์„œ ์ง€์›ํ•˜๋Š” Spring Data Redis๋ฅผ ํ†ตํ•ด์„œ Redis์˜ DB์™€ ์—ฐ๋™ํ•  ์ˆ˜ ์žˆ๋‹ค. Spring Data Redis๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์„ค์ •๊ณผ Redis์˜ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ์†์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.  Redis๋ฅผ Window์— ์„ค์น˜ํ•˜๋Š” ๊ณผ์ •๊ณผ Redis ์ž๋ฃŒ๊ตฌ์กฐ์™€ ๋ช…๋ น์–ด๋Š” ๋‹ค๋ฅธ ๊ธ€์— ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ ํ•˜๋ฉด ๋œ๋‹ค.      Spring Data Redis๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด `Redis 2.6` ์ด์ƒ์˜ ๋ฒ„์ „์ด ํ•„์š”ํ•˜๋‹ค.๊ทธ๋ฆฌ๊ณ  ์ด ๊ธ€์€ `Spring Boot 3.2` ๋ฒ„์ „ + `Java 17`์„ ๊ธฐ์ค€์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ๋‹ค. + `Lombok` ์ถ”๊ฐ€     ์˜์กด์„ฑ ์ถ”๊ฐ€Spring Initiaizer๋กœ ์‹œ์ž‘ํ•œ๋‹ค๋ฉด `Spring Data Redis(Access+Driver)`๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.  Gradleimpleme..
giraffe_
๐ŸŒฑ ๋ฌด๋Ÿญ๋ฌด๋Ÿญ ์ž๋ผ๋‚˜๋Š” ๊ฐœ๋ฐœ ๊ธฐ๋ก