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

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ199

[ TIL ] ์ตœ์ข… ํ”„๋กœ์ ํŠธ_Day 10 ์˜ค๋Š˜ ์ง„ํ–‰ํ•œ ๋‚ด์šฉ๋“ค ๐Ÿง Elasticsearch ์„ค์น˜ ๋ฐ ์„ค์ •ํ•˜๊ธฐ์œ ํŠœ๋ธŒ ์˜์ƒ์„ ๋ณด๋ฉด์„œ Elasticsearch์™€ Kibana์˜ ์„ค์น˜ ๋ฐ ์„ค์ •์„ ์™„๋ฃŒํ–ˆ๋‹ค. ์˜์ƒ์„ ๋ณด๋ฉด์„œ ๋”ฐ๋กœ ๋ฉ”๋ชจ๋ฅผ ํ•ด๋‘๊ธด ํ–ˆ๋Š”๋ฐ ์ค‘๊ฐ„์ค‘๊ฐ„ ๋น ๋œจ๋ฆฐ ๋‚ด์šฉ๋“ค์ด ์žˆ์–ด์„œ ๋‚˜์ค‘์— ์ •๋ฆฌํ•ด์„œ ๋ธ”๋กœ๊ทธ์— ์˜ฌ๋ ค์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.Elasticsearch ์ ์šฉ ํ›„ ์„ฑ๋Šฅ ๊ฐœ์„ ํ•˜๊ธฐ๊ฒ€์ƒ‰์–ด๋Š” LIKE ๋ฌธ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— QueryDSL์—์„œ ๊ฐœ์„ ํ•  ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•˜์ง€ ์•Š์•˜๋‹ค.. FullText๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์—†์—ˆ๊ณ , ๋‹ค๋ฅธ ์„ฑ๋Šฅ๋“ค๋„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ElasticSearch ๋„์ž…์„ ์ƒ๊ฐํ–ˆ๋‹ค. ํŒ€์›๋ถ„์ด ๋จผ์ € Elasticsearch๋ฅผ ๊ฒฝํ—˜ํ•˜๊ณ  ๊ณ„์…”์„œ ์ค‘๊ฐ„ ๋ถ€๋ถ„๋ถ€ํ„ฐ ๋„์›€์„ ๋ฐ›์•˜๊ณ , ๊ฒจ์šฐ๊ฒจ์šฐ ์„ค์ •์„ ๋งˆ๋ฌด๋ฆฌํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.์ฒ˜์Œ ๋ณด๋Š” ํ˜•์‹์˜ JSON์„ ๋ณด๊ณ  ๋‹นํ™ฉํ–ˆ์ง€๋งŒ ํŒ€์›๋ถ„์ด.. 2025. 2. 19.
[ TIL ] ์ตœ์ข… ํ”„๋กœ์ ํŠธ_Day 9 ์˜ค๋Š˜ ์ง„ํ–‰ํ•œ ๋‚ด์šฉ๋“ค ๐Ÿง ์ตœ๊ทผ ๊ฒ€์ƒ‰ ๊ธฐ๋ก ์กฐํšŒ ์„ฑ๋Šฅ ๊ฐœ์„ ์˜ค๋Š˜์€ ์ตœ๊ทผ ๊ฒ€์ƒ‰ ๊ธฐ๋ก ์กฐํšŒ์— ์ธ๋ฑ์Šค๋„ ์ ์šฉํ•ด ๋ณด๊ณ  ๋ ˆ๋””์Šค๋„ ์ ์šฉํ•ด ๋ณด๋ฉฐ ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ํ™•์ธํ•ด ๋ดค๋‹ค.๋จผ์ € ๋ณตํ•ฉ ์ธ๋ฑ์Šค๋ฅผ ์ ์šฉํ•ด์„œ (userId, createdAt DESC)๋กœ ์„ค์ •ํ•ด ์ฃผ์—ˆ๊ณ , ์„ฑ๋Šฅ์ด ๊ฐœ์„ ๋˜๋Š”์ง€ ํ™•์ธํ•ด ๋ณด์•˜๋‹ค. ๋ณตํ•ฉ ์ธ๋ฑ์Šค๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•œ ์ด์œ ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ userId๋ฅผ ํ†ตํ•ด ์ฐพ์•„์˜ค๊ณ  ์ตœ๊ทผ ์ €์žฅ ๊ธฐ์ค€์œผ๋กœ ์ƒ์œ„ 10๊ฐœ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ์— createdAt DESC๋ฅผ ํ•จ๊ป˜ ์„ค์ •ํ•˜๋ฉด ์ •๋ ฌ ํ•„์š” ์—†์ด ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.์„ฑ๋Šฅ์„ ํ™•์ธํ•œ ๊ฒฐ๊ณผ type์ด ALL์—์„œ ref๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๊ณ , Using where; Using filesort์—์„œ Using index๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค. ์‹ค์ œ ์‹คํ–‰ ์‹œ๊ฐ„๋„ ์•ฝ 23% ๊ฐ์†Œํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค.ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ.. 2025. 2. 19.
[ TIL ] ์ตœ์ข… ํ”„๋กœ์ ํŠธ_Day 8 ์˜ค๋Š˜ ์ง„ํ–‰ํ•œ ๋‚ด์šฉ๋“ค ๐Ÿง ์ „์ฒด ํŽ˜์ด์ง€ ์กฐํšŒ ์„ฑ๋Šฅ ๊ฐœ์„ ํ•˜๊ธฐ๋‹จ์ผ ์ธ๋ฑ์Šค์™€ ๋ณตํ•ฉ ์ธ๋ฑ์Šค๋ฅผ ์ ์šฉํ•˜๋ฉฐ ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ํ–ˆ๋‹ค. ์ฒ˜์Œ ์ธ๋ฑ์Šค๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฑฐ๋ผ์„œ ๋งŽ์ด ํ—ค๋งธ๋‹ค.์ธ๋ฑ์Šค๋ฅผ ๋ฌด์กฐ๊ฑด ํ•œ๋‹ค๊ณ  ์ข‹์•„์ง€๋Š” ๊ฒƒ๋„ ์•„๋‹ˆ์—ˆ๊ณ , ํ•„์š”ํ•œ ๊ณณ์— ์ ์ ˆํ•˜๊ฒŒ ์ ์šฉํ•ด์•ผ ํ–ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ๊ฐ€์žฅ ๋งŽ์ด ์ฐพ์•„๋ณผ ๊ฒƒ ๊ฐ™์€ ์ž๊ฒฉ ์š”๊ฑด์— ๋‹จ์ผ ์ธ๋ฑ์Šค๋ฅผ ์ ์šฉํ•˜๊ณ , ๋ณตํ•ฉ ์ธ๋ฑ์Šค๋กœ (์ง€์—ญ, ๊ณ ์šฉ ํ˜•ํƒœ, ํ•™๋ ฅ)์„ ์ ์šฉํ–ˆ๋‹ค. ๋ณตํ•ฉ ์ธ๋ฑ์Šค๋„ ๊ฐ€์žฅ ๋งŽ์ด ์„ ํƒ๋˜๋Š” ์ปฌ๋Ÿผ, ๊ฐ€์žฅ ์„ ํƒ๋„๊ฐ€ ๋†’์€ ์ปฌ๋Ÿผ์ด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋˜์–ด ์™ผ์ชฝ์— ์œ„์น˜ํ•˜๊ณ  ๊ทธ ๋’ค๋กœ๋„ ์ˆœ์„œ๋Œ€๋กœ ์ƒ๊ฐํ•ด์„œ ์ ์šฉํ•ด์•ผ ์ตœ๋Œ€ํ•œ ์ธ๋ฑ์Šค๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. EXPLAIN๊ณผ EXPLAIN ANALYZE๋ฅผ ํ™œ์šฉํ•ด์„œ ์„ฑ๋Šฅ์„ ํ™•์ธํ–ˆ๊ณ , JMeter๋ฅผ ํ†ตํ•ด ์„ฑ๋Šฅ์„ ํ•œ๋ฒˆ ๋” ํ…Œ์ŠคํŠธํ•ด ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ธ๋ฑ์Šค ์ ์šฉ ํ›„ ์บ์‹œ์— ๋Œ€ํ•ด์„œ๋„ ๊ณ .. 2025. 2. 18.
[ TIL ] ์ตœ์ข… ํ”„๋กœ์ ํŠธ_Day 5 ์˜ค๋Š˜ ์ง„ํ–‰ํ•œ ๋‚ด์šฉ๋“ค ๐Ÿง findById( ) ๋ฉ”์„œ๋“œ ๊ฐ ๋„๋ฉ”์ธ ๋ณ„๋กœ ๋‚˜๋ˆ ์„œ Service ํด๋ž˜์Šค ์ƒ์„ฑ์ค‘๋ณต๋˜๋Š” ๋ฉ”์„œ๋“œ์ธ findById ๋ฉ”์„œ๋“œ๋ฅผ ๋„๋ฉ”์ธ ๋ณ„๋กœ ๋‚˜๋ˆ ์„œ ํด๋ž˜์Šค์— ๋”ฐ๋กœ ์ €์žฅํ•œ ํ›„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง์„ ์ง„ํ–‰ํ–ˆ๋‹ค.๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ์˜ ๋ฉ”์„œ๋“œ, API์— ์ฃผ์„ ์ถ”๊ฐ€๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋ดค์„ ๋•Œ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฃผ์„์œผ๋กœ ์„ค๋ช…์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค.V2 ๋ฒ„์ „ ๊ณ„ํš ์ƒ๊ฐ์ „์ฒด ํŽ˜์ด์ง€ ์กฐํšŒ - ์ธ๋ฑ์Šค ์ ์šฉ, ์บ์‹œ ์ ์šฉ, ๋ฐฐ์น˜ ์‚ฌ์ด์ฆˆ ์ ์šฉ, keyset ํŽ˜์ด์ง€๋„ค์ด์…˜, cursor ํŽ˜์ด์ง€๋„ค์ด์…˜ ๋“ฑ๋“ฑ ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•๋“ค์„ ์ฐพ์•„๋ณด๋ฉด์„œ ์ง€๊ธˆ ์ฝ”๋“œ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„ฑ๋Šฅ ๊ฐœ์„  ๋ฐฉ๋ฒ•๋“ค์„ ๊ณ ๋ฏผํ–ˆ๋‹ค.์ตœ๊ทผ ๊ฒ€์ƒ‰ ์กฐํšŒ - ์ธ๋ฑ์Šค ์ ์šฉ, ์บ์‹œ(Redis) ์ ์šฉ ๋“ฑ๋“ฑ ์„ฑ๋Šฅ ๊ฐœ์„  ๋ฐฉ๋ฒ•์„ ๊ณ ๋ฏผํ–ˆ๋‹ค.์ธ๋ฑ์Šค ๊ณต๋ถ€์ธ๋ฑ์Šค๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๋Š”.. 2025. 2. 15.
[ TIL ] ์ตœ์ข… ํ”„๋กœ์ ํŠธ_Day 4 ์˜ค๋Š˜ ์ง„ํ–‰ํ•œ ๋‚ด์šฉ๋“ค ๐Ÿง ํŽ˜์ด์ง€ ์กฐํšŒ ํ•„ํ„ฐ๋ง ๋กœ์ง ์™„๋ฒฝํ•˜๊ฒŒ ๊ตฌํ˜„QueryDSL์„ ํ™œ์šฉํ•˜์—ฌ ์˜ต์…˜๋“ค์„ ํ•„ํ„ฐ๋งํ•ด์„œ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ๋ฐ˜ํ™˜๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋กœ์ง์„ ์™„์„ฑํ–ˆ๋‹ค.์„œ๋ธŒ ์ฟผ๋ฆฌ๋ฅผ ์ด์šฉํ•ด์„œ Dto๋กœ ๋ฐ˜ํ™˜๋ฐ›๋Š” ๊ฑด ํž˜๋“ค ๊ฒƒ ๊ฐ™์•„์„œ ๋กœ์ง์„ ๋‚˜๋ˆ ์„œ dataId๋ฅผ ๋ฐ˜ํ™˜๋ฐ›๊ณ  keyword๋ฅผ ๋”ฐ๋กœ ๋ฐ˜ํ™˜๋ฐ›์•„์„œ List ํ˜•ํƒœ๋กœ Dto์™€ ํ•ฉ์ณ์งˆ ์ˆ˜ ์žˆ๊ฒŒ ๋กœ์ง์„ ๊ตฌํ˜„ํ–ˆ๋‹ค.์ „๋ถ€ ๊ตฌํ˜„ํ•œ ํ›„ Postman์„ ํ†ตํ•ด ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ดค๋Š”๋ฐ ์–ด๋–ค ํ•„ํ„ฐ๋ง์„ ๋„ฃ์–ด๋„ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜์ง€ ์•Š๊ณ  ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜์™”๋‹ค.. @ModelAttribute๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ž…๋ ฅ์„ ๋ฐ›๊ฒŒ๋” ์„ค์ •ํ–ˆ๋Š”๋ฐ ์ด ์–ด๋…ธํ…Œ์ด์…˜์„ ํ™œ์šฉํ•˜๋ ค๋ฉด Dto์— @Setter ์–ด๋…ธํ…Œ์ด์…˜์ด ๋ถ™์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค........ ๊ทธ๋Ÿฐ ์ค„๋„ ๋ชจ๋ฅด๊ณ  ๋‚ด๊ฐ€ ์ง  ์ฝ”๋“œ๋ž‘ Postman์—์„œ ์ž…๋ ฅ์„ ์ž˜๋ชปํ•œ ์ค„ .. 2025. 2. 13.
[ TIL ] ์ตœ์ข… ํ”„๋กœ์ ํŠธ_Day 2 ์˜ค๋Š˜ ์ง„ํ–‰ํ•œ ๋‚ด์šฉ๋“ค ๐Ÿง ํŒ€ ์ปจ๋ฒค์…˜ ์ •ํ•˜๊ธฐํŒ€์˜ ์ฝ”๋“œ ์ปจ๋ฒค์…˜์„ ์„ธ์„ธํ•˜๊ฒŒ ์ •ํ–ˆ๋‹ค.์ค‘๊ฐ„์— ์˜๊ฒฌ ์ถฉ๋Œ์ด ์ผ์–ด๋‚˜๋Š” ์ผ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•„์š”ํ•œ ๋‚ด์šฉ๋“ค์„ ๋ชจ๋‘ ์ •ํ–ˆ๋‹ค.ํŽ˜์ด์ง€ ์กฐํšŒ ๊ธฐ๋Šฅ(๊ฒ€์ƒ‰ ํฌํ•จ) ๊ฐœ๋ฐœ ์‹œ์ž‘์‚ฌ์‹ค ์‹œ์ž‘์€ ์ตœ๊ทผ ๊ฒ€์ƒ‰ ๊ธฐ๋ก ์กฐํšŒ์˜€๋‹ค. ํ•˜์ง€๋งŒ ํŽ˜์ด์ง€ ์กฐํšŒ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๊ฒ€์ƒ‰์–ด๋“ค์„ History์— ์ €์žฅํ•ด์•ผ ์ตœ๊ทผ ๊ธฐ๋ก ์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด์—ˆ๋‹ค.๊ทธ๋ž˜์„œ History์— ๋Œ€ํ•œ ๊ฐœ๋ฐœ์„ ๋ฉˆ์ถ”๊ณ  ํŽ˜์ด์ง€ ์กฐํšŒ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.ํ•„ํ„ฐ๋ง์„ ํ•ด์•ผํ•  ์กฐ๊ฑด๋“ค์ด ๋งค์šฐ ๋งŽ์•„์„œ ํ—ท๊ฐˆ๋ฆฌ์ง€ ์•Š๊ฒŒ ๋จผ์ € ์ •๋ฆฌํ•œ ํ›„ ํ•˜๋‚˜์”ฉ ์ฐจ๋ก€๋Œ€๋กœ ํ•ด๊ฒฐํ–ˆ๋‹ค.์•„์ง ์ž๊ฒฉ ์š”๊ฑด ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ๋Š” ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•ด์„œ ์ด์–ด์„œ ๊ฐœ๋ฐœํ•  ์˜ˆ์ •์ด๋‹ค.ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๊ณ ๋ฏผํ–ˆ๋˜ ์‚ฌํ•ญ๋“คQueryDSL์—์„œ between๊ณผ geo, leo ์ค‘ ์–ด๋–ค ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„๊นŒ?์ฑ„์šฉ ๊ธฐ๊ฐ„.. 2025. 2. 11.