๐Ÿ‘จ‍๐Ÿ‘ฉ‍๐Ÿ‘ง‍๐Ÿ‘ฆ Project

๋‹จ๊ณ„๋ณ„๋กœ ์„ฑ์žฅํ•˜์ž!
1. ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ณ„๊ธฐ ํ˜„์žฌ ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€์—์„œ ์˜ˆ์•ฝ ๋‚ด์—ญ์„ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌํ•˜์—ฌ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค. limit๋Š” 20์œผ๋กœ ํ•œ ํŽ˜์ด์ง€๋‹น 20๊ฐœ์˜ ์˜ˆ์•ฝ ์ปจํ…์ธ ๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ๋‹ค. ์ „์ฒด ์˜ˆ์•ฝ ๋ฐ์ดํ„ฐ๋Š” 354,200๊ฐœ์ธ ์ƒํ™ฉ์ด๊ณ  ํ•ด๋‹น API์˜ ์„ฑ๋Šฅ์ด ํ‰๊ท ์ ์œผ๋กœ 1.74์ดˆ์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ๊ณ  ์ตœ๋Œ€ 1.99์ดˆ๊นŒ์ง€ ๊ฑธ๋ฆผ์œผ๋กœ์จ ์„ฑ๋Šฅ์ด ์ข‹์ง€ ๋ชปํ–ˆ๋‹ค. ํ•ด๋‹น ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ์ƒ‰ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ๋ฏธ๋ฆฌ ๋งํ•˜์ž๋ฉด, ํ‰๊ท  56.2%์˜ ์„ฑ๋Šฅํ–ฅ์ƒ์„ ๋ง›๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค! 2. ๋ฐ˜๋ณต๋˜๋Š” Count Query๋ฅผ ๊ฐœ์„ ํ•ด๋ณด์ž! ํ•ด๋‹น ๋ถ€๋ถ„์—์„œ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์œผ๋กœ ๊ฐ€์žฅ ๋ˆˆ์— ๋ˆ๊ฒƒ์€ ๋งค๋ฒˆ ๋ฐ˜๋ณต๋˜๋Š” ์ „์ฒด ๋ฐ์ดํ„ฐ์˜ ์ˆ˜๋ฅผ ์ธก์ •ํ•˜๋Š” Count Query์˜€๋‹ค. "๊ตณ์ด Count Query๊ฐ€ ํŽ˜์ด์ง€๋งˆ๋‹ค ๋งค๋ฒˆ ๋ฐ˜๋ณต๋  ํ•„์š”๊ฐ€ ์žˆ์„๊นŒ?" ..
1. ํ† ํฐ ์žฌ๋ฐœ๊ธ‰์— ์ €์žฅ๊ณต๊ฐ„์ด ํ•„์š”ํ•œ ์ด์œ  ํ˜„์žฌ JWT ์ธ์ฆ๋ฐฉ์‹์„ ์ ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ํ•ด๋‹น ๋ฐฉ์‹์˜ ํ”Œ๋กœ์šฐ๋Š” ๋Œ€๋žต ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ๋กœ๊ทธ์ธ์‹œ Access Token๊ณผ Refresh Token์ด ๋ฐœ๊ธ‰๋œ๋‹ค. ๊ถŒํ•œ์ด ํ•„์š”ํ•œ API์˜ ๊ฒฝ์šฐ header์— Access Token์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์š”์ฒญํ•œ๋‹ค. Access Token์ด ๋งŒ๋ฃŒ๋œ ๊ฒฝ์šฐ์—๋Š” Refresh Token์„ ํ†ตํ•ด Access Token๊ณผ Refresh Token ๋ชจ๋‘ ์žฌ๋ฐœ๊ธ‰ ๋ฐ›๋Š”๋‹ค. ์ด๋Ÿฌํ•œ ์ ˆ์ฐจ ๊ณผ์ •์—์„œ ํ† ํฐ์„ ์ €์žฅํ•  ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค. ํ˜„์žฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” RDBMS์ธ MariaDB๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ์™€ Redis๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ ๊ธฐ๋Šฅ, ์„ฑ๋Šฅ์  ์ฐจ์ด๋ฅผ ๋น„๊ตํ•ด๋ณด์•˜๋‹ค. ์•„๋ž˜๋Š” ์ตœ์ข… ๋น„๊ต ๊ฒฐ๊ณผ์ด๋‹ค. Redis์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ๊ณ  ์‹ถ์œผ๋ฉด ์ด์ „์— ์ž‘์„ฑํ•œ ํฌ์ŠคํŒ…์„ ์ฐธ๊ณ ํ•˜์ž! 2023..
1. ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ณ„๊ธฐ ํ˜„์žฌ ํ”„๋กœ์ ํŠธ๋Š” ์˜ˆ์•ฝ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์‹œ๊ฐ„์„ ๋งŽ์ด ๋‹ค๋ฃจ๊ณ  ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ, DATETIME ํƒ€์ž…์˜ ์ปฌ๋Ÿผ์„ ๋ฒ”์œ„ ๋น„๊ต ๋˜๋Š” ๋™๋“ฑ ๋น„๊ตํ•˜์—ฌ ์กฐํšŒํ•˜๋Š” ์ฟผ๋ฆฌ๊ฐ€ ๋งŽ์ด ์กด์žฌํ•˜์˜€๋‹ค. ํ•ด๋‹น ์ปฌ๋Ÿผ์— ๋Œ€ํ•ด ์ธ๋ฑ์Šค๋ฅผ ์ง€์ •ํ•˜์—ฌ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ์„๊ฒƒ ๊ฐ™์•„ Real MySQL 8.0์˜ ๋„์›€์„ ๋ฐ›์•„ ์‹œ๋„ํ•ด๋ณด์•˜๊ณ  ๊ธฐ๊ฐ„๋ณ„ ์˜ˆ์•ฝ ๋‚ด์—ญ ์กฐํšŒ ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด 1374% ํ–ฅ์ƒ์„ ๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค. 2. ๋ฌธ์ œ์˜ ์ฟผ๋ฆฌ ๋ฌธ์ œ์˜ ์•„๋ž˜ ์ฟผ๋ฆฌ๋Š” ๊ธฐ๊ฐ„๋ณ„๋กœ ์˜ˆ์•ฝ ๋‚ด์—ญ์„ ์กฐํšŒํ•˜๋Š” ์ฟผ๋ฆฌ์ด๋‹ค. where์ ˆ์—์„œ DATETIME ํƒ€์ž…์˜ ์˜ˆ์•ฝ ์‹œ์ž‘๋‚ ์งœ์‹œ๊ฐ„์— ํ•ด๋‹นํ•˜๋Š” start_at ์ปฌ๋Ÿผ์— ๋Œ€ํ•ด BETWEEN ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•œ๋‹ค. ๋‚˜๋Š” start_at ์ปฌ๋Ÿผ์— ๋Œ€ํ•ด Index๋ฅผ ์ ์šฉํ•ด๋ณด๊ณ ์ž ํ–ˆ๋‹ค. select reservatio0_.project_table_..
1. ๋ฐฐํฌ ์ž๋™ํ™”๋ฅผ ๊ตฌ์ถ•ํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐ ํ˜„์žฌ ๊ต๋‚ด ์„œ๋ฒ„์‹ค์— ์šด์˜์„œ๋ฒ„๊ฐ€ ๊ตฌ์ถ•๋˜์–ด ์žˆ๊ณ , ๊ต๋‚ด๋ง ์ •์ฑ…์— ๋”ฐ๋ผ ์™ธ๋ถ€ ์•ก์„ธ์Šค ํฌํŠธ๋Š” 80, 443 2๊ฐœ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ด๋ฏธ 80, 443์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ต๋‚ด๋ง์— ์ ‘์†ํ•ด ์žˆ์„ ๋•Œ๋งŒ 22๋ฒˆ ํฌํŠธ๋กœ ssh ์ ‘์†์„ ํ†ตํ•ด ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์šด์˜์„œ๋ฒ„์— ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ด๋ ‡๋“ฏ ๊ต๋‚ด๋ง์— ์ ‘์†ํ•ด์•ผ๋งŒ ํ•œ๋‹ค๋Š” ๋ฌธ์ œ๋„ ์žˆ์—ˆ์ง€๋งŒ, ๊ฒฐ๊ตญ์—๋Š” ์ˆ˜๋™์œผ๋กœ ๋ฐฐํฌํ•˜๋‹ค ๋ณด๋‹ˆ ๋ช…๋ น์–ด๋ฅผ ์ž˜๋ชป ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์—ˆ๊ณ  ๋ฐฐํฌํ•  ๋•Œ๋งˆ๋‹ค ๋ฐ˜๋ณต๋˜๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๋‹ค ๋ณด๋‹ˆ ๋ฐฐํฌ ์ž๋™ํ™”๊ฐ€ ์ •๋ง ์ ˆ์‹คํ–ˆ๋‹ค. 2. ๋ฐฐํฌ ์ž๋™ํ™” ํ”Œ๋กœ์šฐ ์šฐ์„  Jenkins๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐฐํฌ ์ž๋™ํ™”๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ ์ž ํ•œ๋‹ค. PR์ด Master ๋ธŒ๋žœ์น˜๋กœ Merge๋˜๋ฉด Github WebHook์ด Trigger ๋œ๋‹ค...
1. ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค๋กœ ์ด์ „ํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐ ํ˜„์žฌ ๊ต๋‚ด ์„œ๋ฒ„์‹ค์— KIOSEK ์„œ๋น„์Šค๊ฐ€ On-Premise ํ™˜๊ฒฝ์œผ๋กœ ๋ฐฐํฌ๋˜์—ˆ์žˆ๊ณ , ์ด์ „์—๋Š” ํ”„๋ก ํŠธ ๊ฐœ๋ฐœ์ž์™€์˜ ์ง€์†์ ์ธ ํ˜‘์—…์„ ์œ„ํ•œ ๊ฐœ๋ฐœ ์„œ๋ฒ„๋Š” ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๋‚ด ๋…ธํŠธ๋ถ์—์„œ ํ‹€์–ด์„œ ํฌํŠธํฌ์›Œ๋”ฉ ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•˜์˜€๋‹ค. ํ•ด๋‹น ๋ฐฉ์‹์€ ๋„ˆ๋ฌด๋‚˜๋„ ๋น„ํšจ์œจ์ ์ด์—ˆ์ง€๋งŒ, ๊ฐ€์šฉํ•  ๋ฌผ๋ฆฌ ์„œ๋ฒ„๊ฐ€ ์—†์—ˆ๊ณ  ์‚ฌ์‹ค ํ™˜๊ฒฝ์„ ํ•˜๋‚˜ ๋” ๊ตฌ์ถ•ํ•œ๋‹ค๋Š”๊ฒŒ ๊ท€์ฐฎ์€ ์ ๋„ ์žˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ•œ๊ณ„๋ฅผ ๋Š๊ผˆ๊ณ , ์ด๋ฒˆ ๊ธฐํšŒ์— ๊ฐœ๋ฐœ ์„œ๋ฒ„๋ฅผ AWS ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์— ๊ตฌ์ถ•ํ•ด์„œ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž์—๊ฒŒ IAM ๊ณ„์ •์„ ํ• ๋‹นํ•˜๊ณ  ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์„œ๋ฒ„๋ฅผ ๊ป๋‹ค ์ผค ์ˆ˜ ์žˆ๊ฒŒ ํ•  ์ƒ๊ฐ์œผ๋กœ ๊ตฌ์ถ•ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. 2. ์‚ฌ์šฉํ•  AWS ์ž์› ์ •ํ•˜๊ธฐ 1. ํ‚ค์˜ค์Šคํฌ ๋ฐฑ์—”๋“œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ NGINX ์›น์„œ๋ฒ„๋ฅผ ์šด์˜ ํ•  EC2 ์ธ์Šคํ„ด์Šค๊ฐ€ ๋จผ์ € ํ•„์š”ํ–ˆ๋‹ค. ํ•ด๋‹น ์‹œ..
1. ๋ฌธ์ œ์ƒํ™ฉ Repository๋‹จ์—์„œ Command์™€ Query๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ์ฑ…์ž„์„ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ ์ฝ”๋“œ ์‘์ง‘๋„์™€ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ด๊ณ ์ž ํ•˜์˜€๋‹ค. ์ด์— ์ฒ˜์Œ ์‹œ๋„ํ–ˆ๋˜ ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. Create, Update, Delete๋ฅผ ๋‹ด๋‹นํ•  CommandableRepo Interface์™€ Read๋ฅผ ๋‹ด๋‹นํ•  QueryableRepo Interface๋กœ ๋‚˜๋ˆ„์—ˆ๋‹ค. ๊ตฌํ˜„์ฒด๋Š” CommandRepo, QueryRepo๋กœ ๊ตฌํ˜„ํ•œ๋‹ค. ํ•˜์ง€๋งŒ, ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋‹ค. ์–ด๋– ํ•œ ์—”ํ‹ฐํ‹ฐ๋ฅผ saveํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•  ๋•Œ, ์ค‘๋ณต์กฐํšŒ๋‚˜ ๋‹ค๋ฅธ ์กฐํšŒ ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ์ฃผ๋กœ ๋ฐœ์ƒํ–ˆ๋‹ค. ์ด๋Ÿด๋•Œ, Repository๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” Service ๊ณ„์ธต์—์„œ ์˜์กด์„ฑ์ด ๋„ˆ๋ฌด๋‚˜ ๋งŽ์•„์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. 2. ๋ฌธ์ œํ•ด๊ฒฐ ๊ณผ์ • 1 - interf..
DevPoong
'๐Ÿ‘จ‍๐Ÿ‘ฉ‍๐Ÿ‘ง‍๐Ÿ‘ฆ Project' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก