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

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

Spring Boot ๋ฌด์ค‘๋‹จ ๋ฐฐํฌํ•˜๊ธฐ (AWS ec2 + Nginx + Github self -hosted runner) ๋“ค์–ด๊ฐ€๋ฉฐ ์‹ค๋ฌด์— ์ ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹Œ ๊ฐ„๋‹จํ•œ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฐํฌ ๋ฐฉ์‹์€ Github Action์„ ์ด์šฉํ•ด ๋ธŒ๋žœ์น˜๊ฐ€ ํ‘ธ์‹œ๋˜๋ฉด ๊ธฐ์กด ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•˜๊ณ  ์ƒˆ๋กœ์šด ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค์‹œ ๋„์šฐ๋Š” ๋ฐฉ์‹์ผ ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ๊ธฐ์กด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜๊ณ  ์ƒˆ๋กœ์šด ํ”„๋กœ๊ทธ๋žจ์„ ๋„์šฐ๋Š” ์‚ฌ์ด์— ์„œ๋น„์Šค๊ฐ€ ์ค‘๋‹จ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์ด๋Ÿฌํ•œ ์ค‘๋‹จ ์—†์ด ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ๋ฅผ ํ•˜๊ณ ์ž ํ•œ๋‹ค. ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด Blue/Green ๋ฐฐํฌ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•œ๋‹ค. Blue/Green ๋ฐฐํฌ ๋ฐฉ์‹์€ ์˜›๋‚  ๋ฒ„์ „์œผ๋กœ ์‹คํ–‰์ค‘์ธ WAS๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ํ•ด๋‹น WAS๋ฅผ ์ข…๋ฃŒ์‹œํ‚ค์ง€ ์•Š์€ ์ฑ„ ์ƒˆ๋กœ์šด ๋ฒ„์ „์˜ WAS๋ฅผ ๊ตฌ๋™์‹œํ‚จ๋‹ค. ์„ฑ๊ณต์ ์œผ๋กœ ๊ตฌ๋™๋˜์—ˆ๋‹ค๋ฉด Nginx๊ฐ€ ์ƒˆ๋กœ์šด ๋ฒ„์ „์˜ WAS๋ฅผ ๋ฐ”๋ผ๋ณด๊ฒŒ .. 2024. 3. 11.
QueryDSL์˜ transform์„ ์‚ฌ์šฉํ•ด ๋ฆฌ๋ทฐ ํ†ต๊ณ„ ์ •๋ณด ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์š”๊ตฌ์‚ฌํ•ญ ํ–ฅ์ˆ˜ ๋ฆฌ๋ทฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ, ํ–ฅ์ˆ˜ ๋ฆฌ๋ทฐ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜์œผ๋กœ ํ†ต๊ณ„๋ฅผ percentage๋กœ ๋‚ด์–ด ๋ฐ˜ํ™˜ํ•˜๋Š” ์š”๊ตฌ์‚ฌํ•ญ์ด ์žˆ์—ˆ๋‹ค. ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ํŠน์ • ํ–ฅ์ˆ˜์— ๋Œ€ํ•ด ์‚ฌ๋žŒ๋“ค์ด ๋ฆฌ๋ทฐํ•œ ๋ฌด๊ฒŒ๊ฐ ์ •๋„, ์ง€์†๋ ฅ, ๊ณ„์ ˆ, ํ™•์‚ฐ๋ ฅ ์ •๋„, ์‚ฌ์šฉ์ž์˜ ์„ฑ๋ณ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์˜ค๊ฐํ˜•์„ ๋‚˜ํƒ€๋‚ด์–ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ํŠน์ • ํ–ฅ์ˆ˜์— ๋Œ€ํ•œ ๋ฆฌ๋ทฐ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•ด ๊ฐ๊ฐ์˜ ๋ฆฌ๋ทฐ ์š”์†Œ๋งˆ๋‹ค ๋น„์œจ์„ ๊ณ„์‚ฐํ•ด ์กฐํšŒํ•˜๊ณ ์ž ํ•œ๋‹ค. ๋‹น์—ฐํ•œ ๋ง์ด์ง€๋งŒ ๊ฐ๊ฐ์˜ Percentage๋ฅผ ๋ชจ๋‘ ํ•ฉํ•˜๋ฉด 100์ด ๋˜์–ด์•ผ ํ•œ๋‹ค. ํ”„๋กœ์ ํŠธ์˜ ๋ฆฌ๋ทฐ ํ…Œ์ด๋ธ”๊ณผ ์œ ์ € ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ดํŽด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค. (์ผ๋ถ€ ํ•„์š”์—†๋Š” ๋ฐ์ดํ„ฐ๋Š” ์ƒ๋žตํ–ˆ๋‹ค.) ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ๋Š” ๋ฆฌ๋ทฐ ๋ฐ์ดํ„ฐ์™€ ๋ฆฌ๋ทฐ๋ฅผ ์ž‘์„ฑํ•œ ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•ด ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฆฌ๋ทฐ ์š”์†Œ๋งˆ๋‹ค percentage๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ด .. 2024. 1. 14.
2023 ์ธํ”„์ฝ˜ ํ›„๊ธฐ ์ดํ‰ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ ์ผํ•˜๋ฉด์„œ ์ฒ˜์Œ์œผ๋กœ ์ธํ”„์ฝ˜์— ๋‹ค๋…€์™”๋‹ค. ์ด๋ ‡๊ฒŒ ํฌ๊ณ  ํ™œ์„ฑํ™”๋œ ๊ฐœ๋ฐœ ์ปจํผ๋Ÿฐ์Šค๊ฐ€ ์ฒ˜์Œ์ด์„œ ๊ธฐ๋Œ€๋„ ๋งŽ์ด ํ–ˆ๊ณ , ๊ทธ ๊ธฐ๋Œ€๋ฅผ ์ถฉ์กฑํ• ๋งŒํผ ์ฆ๊ฑฐ์› ๋‹ค. ๊ฐ•์˜ ์ค‘๊ฐ„์ค‘๊ฐ„ 20๋ถ„๊ฐ„ ์‰ฌ๋Š” ์‹œ๊ฐ„์ด ์žˆ์—ˆ๋Š”๋ฐ ์ด ์‹œ๊ฐ„๋™์•ˆ ๊ตฟ์ฆˆ๋ฅผ ๋ฐ›์œผ๋Ÿฌ ์ค„์„œ๊ณ , ๊ฐ•์˜ ์‹œ๊ฐ„์ด ๋˜๋ฉด ๋‹ค์‹œ ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋Ÿฌ ๊ฐ”๋‹ค. ์ผ๋‹จ์€ ์‚ฌ์‹ฌ๊ฐ€๋“๋‹ด์•„ ๋™์šฑ๋‹˜, ์˜ํ•œ๋‹˜๊ณผ ํ† ๋น„๋‹˜ ์„ธ์…˜์„ ๋“ค์—ˆ๊ณ , ์˜จ๋ผ์ธ์œผ๋กœ๋„ ๋‚˜์˜ฌ ๊ฒƒ์„ ๊ฐ์•ˆํ•ด ์ฃผ์ œ๊ฐ€ ํฅ๋ฏธ๋กœ์›Œ๋ณด์ด๋Š” ์„ธ์…˜์„ ๋“ค์—ˆ๋‹ค.ใ…Žใ…Ž ๋งˆ์ง€๋ง‰์— ์ง„ํ–‰๋˜๋Š” ๋„คํŠธ์›Œํ‚น ํŒŒํ‹ฐ๋„ ๋‹ค๋…€์™”๋Š”๋ฐ.. ๊ธฐ์—… ๋ถ€์Šค๋Š” ์งˆ๋ฌธ์‘๋‹ต ํ˜•ํƒœ์˜€๊ณ , ๋„คํŠธ์›Œํ‚น ๋งค์นญ์œผ๋กœ ํ† ํฌํ•˜๋Š” ๊ฑฐ๋Š” ์„œ๋กœ ๋ช‡๋…„์ฐจ์ธ์ง€.. ํšŒ์‚ฌ ์ƒํ™œ์€ ์–ด๋–ค์ง€.. ๋“ฑ ์Šค๋ชฐํ† ํฌ์˜€๋‹ค. ์žฌ๋ฐŒ์—ˆ๋Š”๋ฐ ๋๊นŒ์ง€ ๋‚จ์ง€ ๋ชปํ•ด ์•„์‰ฌ์› ๋‹ค ใ…  ๋‹ค์Œ์œผ๋กœ๋Š” ๋‚˜์ค‘์— ๊ธฐ์–ตํ•ด๋‘๊ณ ์ž ๊ฐ ์„ธ์…˜์—์„œ ์–ป์€ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค! ๐Ÿ˜ƒ 12:.. 2023. 8. 16.
CentOS7์—์„œ MySQL 8 ๋ฒ„์ „ ์„ค์น˜ํ•˜๊ธฐ 1. yum์„ ์‚ฌ์šฉํ•ด install ํ•ด์ฃผ๊ธฐ $ yum install https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm $ yum install mysql-server 2. ์ž˜ ์„ค์น˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธ $ mysql --version 3. mysql์„ ์‹œ์ž‘ ๋ฐ ๋ถ€ํŒ…์‹œ ์ž๋™์œผ๋กœ ์‹คํ–‰๋˜๋„๋ก ์„ค์ • (์•ˆ๋œ๋‹ค๋ฉด sudo ๊ถŒํ•œ ์‚ฌ์šฉ) systemctl start mysqld systemctl enable mysqld 4. ์ดˆ๊ธฐ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ grep ์‚ฌ์šฉํ•ด ์–ป์€ ํ›„ mysql ์ ‘์† (grep ์ด ์•ˆ๋œ๋‹ค๋ฉด sudo ๊ถŒํ•œ ์‚ฌ์šฉ) $ grep 'temporary password' /var/log/mysqld.log $ mysql -u root -p 5. ๋น„๋ฐ€๋ฒˆ.. 2023. 4. 20.
2022 ํšŒ๊ณ  ํšŒ๊ณ ๋ก์ด๋ž€ ๊ฒƒ์„ ๋‹ค๋ฅธ์‚ฌ๋žŒ๊บผ ์—ผํƒ๋งŒ ํ•˜๋‹ค๊ฐ€ 2022๋…„์„ ๋ณด๋‚ด์ฃผ๋ฉด์„œ ์ฒ˜์Œ ์จ๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค. ์Šคํ„ฐ๋”” ๊ฐ™์ดํ•˜๋Š” ๋ถ„๋“ค์ด ์“ฐ์‹œ๊ธฐ๋„ ํ–ˆ๊ณ , ๊ฐœ๋ฐœ์ž๋“ค์ด ๋งจ๋‚  ์จ๋Œ€๋‹ˆ ๋‚˜๋„ ๊ฐœ๋ฐœ์ž๋‹ˆ๊นŒ ์จ๋ด์•ผํ•  ๊ฒƒ ๊ฐ™๊ณ , ๋Œ€ํ˜• ์ผ๊ธฐ๊ฐ™์•„์„œ ์žฌ๋ฐŒ์–ด๋ณด์ด๊ธฐ๋„ ํ•˜๊ณ , ์˜ฌํ•ด 2023 ๊ณ„ํš ์งœ๊ธฐ์— ๋งŽ์ด ๋„์›€๋  ๊ฒƒ ๊ฐ™์•„ ์‹œ์ž‘ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ๊ธ€์“ฐ๊ธฐ ๊ฐ•์˜ B-๋ฅผ ๋ฐ›์€ ์ž…์žฅ์œผ๋กœ์จ.. ^^ ๊ธ€์“ฐ๊ธฐ์—๋Š” ์†Œ์งˆ์ด ์—†์œผ๋‹ˆ ๊ฐ„๋‹จํ•˜๊ฒŒ ์›”๋ณ„๋กœ ๋ฌด์—‡์„ ํ–ˆ๋Š”์ง€ ์ ์–ด๋‘๊ณ ์ž ํ•œ๋‹ค. 1์›” - 2์›” 4๋…„๊ฐ„์˜ ๋นก์„ผ ์ „๊ณต ๊ฐ•์˜๋“ค์„ ๋งˆ์น˜๊ณ  ์กธ์—… ํ•˜๊ธฐ ์ง์ „์ด์˜€๋‹ค. ์‚ฌ์‹ค ๋ฏธ๋ฆฌ๋ฏธ๋ฆฌ ์–ด๋Š ๋ถ„์•ผ๋กœ ๊ฐˆ ์ง€ ์ •ํ•ด๋’€์–ด์•ผ ํ•˜๋Š”๋ฐ.. 4ํ•™๋…„ ์—ฌ๋ฆ„์— ์ธํ„ด์„ ๋จธ์‹ ๋Ÿฌ๋‹ ํšŒ์‚ฌ๋กœ ๊ฐ€์„œ ์‹œ๊ฐ„์„ ํ—ˆ๋น„ํ•˜๋ฉด์„œ 4ํ•™๋…„ 2ํ•™๊ธฐ๊ฐ€ ๋˜์–ด์„œ์•ผ ์ง„๋กœ๋ฅผ ์ •ํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚ด์‹ฌ ํœดํ•™ ํ•œ๋ฒˆ๋„ ์•ˆํ•ด๋ดค์œผ๋‹ˆ๊นŒ ์กธ์—…ํ•˜๊ณ  ํœดํ•™์ƒ์ฒ˜๋Ÿผ ์ง€๋‚ด๋ณด์ž~ ์ƒ๊ฐ์€.. 2023. 1. 5.
4์ฃผ์ฐจ: ์ œ์–ด๋ฌธ ์ œ์–ด๋ฌธ(control statement) - ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋ฌธ์žฅ์„ ๊ฑด๋„ˆ๋›ฐ๊ฑฐ๋‚˜ ๊ฐ™์€ ๋ฌธ์žฅ์„ ๋ฐ˜๋ณต ์ˆ˜ํ–‰ํ•ด์•ผํ•˜๋Š” ๋“ฑ์˜ ํ•„์š”์„ฑ์— ์˜ํ•ด ํ”„๋กœ๊ทธ๋žจ์˜ ํ๋ฆ„์„ ๋ฐ”๊พธ๋Š” ์—ญํ• ์„ ํ•˜๋Š” ๋ฌธ์žฅ - ์กฐ๊ฑด๋ฌธ๊ณผ ๋ฐ˜๋ณต๋ฌธ์ด ํ•ด๋‹น๋จ ์„ ํƒ๋ฌธ ์กฐ๊ฑด๋ฌธ ์กฐ๊ฑด์‹์˜ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์‹คํ–‰ํ•  ๋ฌธ์žฅ์ด ๋‹ฌ๋ผ์ ธ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ํ๋ฆ„์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Œ - if๋ฌธ if(์กฐ๊ฑด์‹) { // ์กฐ๊ฑด์‹์ด true์ผ ๋•Œ ์ˆ˜ํ–‰๋  ๋ฌธ์žฅ๋“ค } ์กฐ๊ฑด์‹์˜ ๊ฒฐ๊ณผ๋Š” ํ•ญ์ƒ bool ํƒ€์ž…์ด์–ด์•ผ ํ•จ ๋ธ”๋Ÿญ - ๊ด„ํ˜ธ {}๋กœ ์—ฌ๋Ÿฌ ๋ฌธ์žฅ์„ ํ•˜๋‚˜์˜ ๋‹จ์œ„๋กœ ๋ฌถ์€ ๊ฒƒ - ๋ฌธ์žฅ์ด ํ•œ ์ค„ ๋ฟ์ด๋ฉด ๊ด„ํ˜ธ ์ƒ๋žต ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๊ด„ํ˜ธ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ - if-else๋ฌธ if(์กฐ๊ฑด์‹) { // ์กฐ๊ฑด์‹์ด true์ผ ๋•Œ ์ˆ˜ํ–‰๋  ๋ฌธ์žฅ๋“ค } else { // ์กฐ๊ฑด์‹์ด false์ผ ๋•Œ ์ˆ˜ํ–‰๋  ๋ฌธ์žฅ๋“ค } if์™€ else ๋‘ .. 2022. 10. 1.