๐Ÿ‘จ‍๐Ÿ‘ฉ‍๐Ÿ‘ง‍๐Ÿ‘ฆ Project/๐Ÿ“บ KIOSEK

๋‹จ๊ณ„๋ณ„๋กœ ์„ฑ์žฅํ•˜์ž!
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 ์ธ์Šคํ„ด์Šค๊ฐ€ ๋จผ์ € ํ•„์š”ํ–ˆ๋‹ค. ํ•ด๋‹น ์‹œ..
"ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” ์„ ํƒ์ด ์•„๋‹Œ ํ•„์ˆ˜๋‹ค" ์ด์ „ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ์—†์–ด์„œ ํฌ์ŠคํŠธ๋งจ์œผ๋กœ API ํ…Œ์ŠคํŠธํ•  ๋•Œ๋Š” ์ž˜ ๋˜๋‹ค๊ฐ€ ์˜ˆ๊ธฐ์น˜ ๋ชปํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๊ณค ํ–ˆ์—ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ„ฐ๋ง ํ•˜๊ฑฐ๋‚˜ ๋กœ์ง์„ ์ˆ˜์ •ํ•  ๊ฒฝ์šฐ์— ๋ฐœ์ƒํ•˜๋Š” ํœด๋จผ ์—๋Ÿฌ ๋˜๋Š” ์˜ˆ๊ธฐ์น˜ ๋ชปํ•œ ์—๋Ÿฌ๋ฅผ ์—ฌ๋Ÿฌ ์ผ€์ด์Šค๋กœ ์ž‘์„ฑํ•ด ๋†“์€ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋•๋ถ„์— ๋ฐฉ์–ดํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ƒ๊ฐ๋ณด๋‹ค ๋ฆฌํŒฉํ„ฐ๋ง์„ ํ•  ๋•Œ ์‹ค์ˆ˜๊ฐ€ ์ƒ๊ธฐ๋Š” ์ž์ฃผ ์ƒ๊ฒผ๋Š”๋ฐ, ์ฝ”๋“œ ์ˆ˜์ • ํ›„์— ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œ์ผœ ๋ณด๋Š” ์Šต๊ด€์„ ๋“ค์—ฌ๋†“์Œ์œผ๋กœ์จ ์–ด๋Š ๋ถ€๋ถ„์—์„œ ์žฅ์• ๊ฐ€ ๋‚ฌ๋Š”์ง€๋ฅผ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ธฐ์กด์— ์ž˜ ๋™์ž‘ํ•˜๋˜ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ๊ฐ‘์ž๊ธฐ ์‹คํŒจํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋‚ด๊ฐ€ ๋ฐฉ๊ธˆ ์ˆ˜์ •ํ•œ ๋ถ€๋ถ„์ด ์ž˜๋ชป๋๋‹ค๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•œ ๋ชจํ˜ธํ–ˆ๋˜ ์ƒ๊ฐ๋“ค์ด ์ •๋ฆฌ๋˜์—ˆ๊ณ , ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ..
DevPoong
'๐Ÿ‘จ‍๐Ÿ‘ฉ‍๐Ÿ‘ง‍๐Ÿ‘ฆ Project/๐Ÿ“บ KIOSEK' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก