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

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

[ ํŒ€ KPT ํšŒ๊ณ  ] ํ”Œ๋Ÿฌ์Šค ํ”„๋กœ์ ํŠธ ํ”Œ๋Ÿฌ์Šค ํ”„๋กœ์ ํŠธ Keep: ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ ์œ ์ง€ํ–ˆ์œผ๋ฉด ํ•˜๋Š” ๋ถ€๋ถ„๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ๊ฐ์ž ๋งก์€ ์ผ์„ ๋๊นŒ์ง€ ์ฑ…์ž„๊ฐ ์žˆ๊ฒŒ ์ˆ˜ํ–‰ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๊ฐ€ ์›ํ™œํ•˜๊ฒŒ ์ง„ํ–‰๋˜์—ˆ๋‹ค.CI/CD ํ™œ์šฉ์ž๋™ํ™”๋œ ๋ฐฐํฌ ์‹œ์Šคํ…œ์„ ํ™œ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ์˜ ๋ฐฐํฌ ๊ณผ์ •์ด ์›ํ™œํ–ˆ๋‹ค.๋‹ค์Œ ํ”„๋กœ์ ํŠธ์—์„œ๋„ ์ง€์†์ ์œผ๋กœ ํ™œ์šฉํ•˜๊ณ  ๊ฐœ์„ ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.์—๋Ÿฌ ์ฒ˜๋ฆฌ์ „์—ญ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋•๋ถ„์— ์—๋Ÿฌ ํ™•์ธ์ด ์‰ฌ์› ๊ณ , ๋””๋ฒ„๊น… ์‹œ๊ฐ„์ด ๋‹จ์ถ•๋˜์—ˆ๋‹ค.์ฒด๊ณ„์ ์ธ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ ์•ˆ์ •์„ฑ์ด ํ–ฅ์ƒ๋˜์—ˆ๋‹ค.์›ํ™œํ•œ ์˜์‚ฌ์†Œํ†ตํŒ€์› ๊ฐ„ ์˜๊ฒฌ์„ ์ž˜ ๋“ฃ๊ณ  ์กด์ค‘ํ•˜๋Š” ๋ถ„์œ„๊ธฐ๊ฐ€ ํ˜•์„ฑ๋˜์–ด ํ˜‘์—…์ด ์ˆ˜์›”ํ–ˆ๋‹ค.๋‹ค์Œ ํ”„๋กœ์ ํŠธ์—์„œ๋„ ์ ๊ทน์ ์ธ ์˜๊ฒฌ ๊ตํ™˜์„ ์œ ์ง€ํ•˜๊ณ  ์‹ถ๋‹ค. Problem: ๊ฐœ์„ ์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ถ€์กฑ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ํ•˜์ง€ ์•Š์•„ ๊ฐ ํŒ€์›์˜ ์ง„ํ–‰ ์ƒํ™ฉ์„ ๋ช…ํ™•ํžˆ ํŒŒ์•…ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.์ฝ”๋“œ ํ’ˆ์งˆ ํ–ฅ์ƒ์„ ์œ„ํ•ด ์ •๊ธฐ์ .. 2025. 2. 10.
[ TIL ] ์ตœ์ข… ํ”„๋กœ์ ํŠธ_Day 1 ์˜ค๋Š˜ ์ง„ํ–‰ํ•œ ๋‚ด์šฉ๋“ค ๐Ÿง ์ตœ์ข… ํ”„๋กœ์ ํŠธ ๋ฐœ์ œ ๋“ฃ๊ธฐ๊ธฐ๋ก์ด ์งฑ์งฑ ์ค‘์š”ํ•˜๋‹ค!!!ํ™”๋ฉด ์บก์ฒ˜์™€ ์˜์ƒ ์ดฌ์˜์ด ํ•„์ˆ˜์ ์ด๋‹ค.๊ธฐ๋Šฅ์„ ํ•˜๋‚˜ ๊ตฌํ˜„ํ•  ๋•Œ๋งˆ๋‹ค ํ˜น์€ ๋ง‰ํ˜”์„ ๋•Œ ๊ณ ๋ฏผ ์‚ฌํ•ญ์„ ์ž˜ ๊ธฐ๋กํ•ด ๋‘์ž!5๋ถ„ ๊ธฐ๋ก ๋ณด๋“œ ์ค‘์š”ํ•˜๋‹ค.๋ฏธ๋ž˜๋ฅผ ์œ„ํ•ด ๋ฌด์กฐ๊ฑด ๊ธฐ๋กํ•ด๋†”์•ผ ํ•œ๋‹ค!๋„๋ฉ”์ธ ์ •ํ•˜๊ธฐ์ฒซ ๋ฒˆ์งธ ํ›„๋ณด: ๊ณ ๊ฐ์„ผํ„ฐ ๊ด€๋ จ๋‘ ๋ฒˆ์งธ ํ›„๋ณด: ์ทจ์—… ์‚ฌ์ดํŠธ ๊ด€๋ จ(์ฑ„ํƒ)S.A ์ž‘์„ฑํ•˜๊ธฐ์™€์ด์–ดํ”„๋ ˆ์ž„ERD ๋‹ค์ด์–ด๊ทธ๋žจAPI ๋ช…์„ธ์„œ๊ธฐ์ˆ  ๋ช…์„ธ์„œ์Šค์ผˆ๋ ˆํ†ค ์ฝ”๋“œ ์ž‘์„ฑํ•˜๊ธฐ๊ฐ€์žฅ ๋ฐ–์— ์žˆ๋Š” ํŒจํ‚ค์ง€: common, domaindomain ์•ˆ์— ๋“ค์–ด๊ฐ„ ํŒจํ‚ค์ง€: auth, keyword, data, bookmark, user, history๊ธฐ๋ณธ Entity๋งŒ ์ž‘์„ฑํ•œ ์ƒํƒœ์ด๋‹ค!์ˆ™์ œ: ๋กœ๊ทธ๋ฅผ ์–ด๋””์— ๋‚จ๊ฒจ์•ผ ํ• ๊นŒ?์ˆ™์ œ: ๋‚ด๊ฐ€ ๋‹ด๋‹นํ•œ ๊ธฐ๋Šฅ์—์„œ ExceptionHandler์—์„œ ์ฒ˜๋ฆฌํ•  ์˜ˆ.. 2025. 2. 10.
[ TIL ] ํ”Œ๋Ÿฌ์Šค ํ”„๋กœ์ ํŠธ_Day 6 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง ํ”„๋กœ์ ํŠธ์— ์บ์‹œ ์ ์šฉํ•˜๋ฃจ์ข…์ผ ๊ณต๋ถ€ํ–ˆ๋˜ ์บ์‹œ๋ฅผ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ–ˆ๋‹ค. ๊ฒ€์ƒ‰์–ด๋ฅผ ํ†ตํ•ด ์ƒํ’ˆ๋“ค์„ ์กฐํšŒํ•  ๋•Œ์™€ ์ธ๊ธฐ ๊ฒ€์ƒ‰์–ด ์กฐํšŒํ•  ๋•Œ ์บ์‹œ๋ฅผ ์ ์šฉํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฒ€์ƒ‰์–ด๋ฅผ ํ†ตํ•ด ์ƒํ’ˆ๋“ค์„ ์กฐํšŒํ•  ๋•Œ ์‚ฌ์šฉํ•œ ๊ฒ€์ƒ‰์–ด๋ฅผ DB์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ count ์ˆ˜๋ฅผ ์ฆ๊ฐ€์‹œ์ผœ์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— DB์™€ Cache ๊ฐ„์˜ ์„ฑ๋Šฅ ์ฐจ์ด๊ฐ€ ํฌ๊ฒŒ ๋‚˜์ง€ ์•Š์•˜๋‹ค.์ธ๊ธฐ ๊ฒ€์ƒ‰์–ด๋Š” ์กฐ๊ธˆ ๋‹ฌ๋ž๋‹ค. ConcurrentHaspMap์„ ์ด์šฉํ•ด์„œ ์บ์‹œ์— ๊ฒ€์ƒ‰์–ด๋ฅผ ๋ชจ๋‘ ์ €์žฅํ•˜๊ณ  ๋งŽ์ด ์ €์žฅ๋œ ์ˆœ์„œ๋Œ€๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ๋˜์–ด ์กฐํšŒ๋˜๊ฒŒ๋” ๋กœ์ง์„ ๊ตฌํ˜„ํ–ˆ๋”๋‹ˆ DB์—์„œ ์ง์ ‘ ์ธ๊ธฐ ๊ฒ€์ƒ‰์–ด๋ฅผ ์กฐํšŒํ•˜๋Š” ๊ฒƒ๊ณผ Cache์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์— ์†๋„ ์ฐจ์ด๊ฐ€ ์กด์žฌํ–ˆ๋‹ค.ํ”„๋กœ์ ํŠธ์— Redis ์ ์šฉ๊ทธ๋‹ค์Œ์€ ์บ์‹œ๋ฅผ ์ ์šฉํ–ˆ๋˜ ๋ถ€๋ถ„์„ Redis๋กœ ๋ณ€๊ฒฝํ•ด ์ฃผ๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ–ˆ๋‹ค.์ƒ๊ฐ๋ณด๋‹ค R.. 2025. 2. 5.
[ TIL ] ํ”Œ๋Ÿฌ์Šค ํ”„๋กœ์ ํŠธ_Day 5 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง ์บ์‹œ ๊ณต๋ถ€ํ”„๋กœ์ ํŠธ์— ์บ์‹œ๋ฅผ ์–ด๋–ป๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ?์Šคํƒ ๋‹ค๋“œ๋ฐ˜ Redis ์„ธ์…˜ ๋“ฃ๊ธฐ ์˜ค๋Š˜ ํ•˜๋ฃจ ์ •๋ฆฌ โœ๏ธ  ๋‚ด์ผ ๊ณ„ํš โฐ 2025. 2. 5.
[ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ] SQLSyntaxErrorException - @SQLDelete ์‚ฌ์šฉ ์‹œ ํ…Œ์ด๋ธ” ์ปฌ๋Ÿผ๋ช… ๋ถˆ์ผ์น˜ ๋ฌธ์ œ Soft Delete๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด Hibernate์˜ @Where ๋ฐ @SQLDelete ์–ด๋…ธํ…Œ์ด์…˜์„ ์ ์šฉํ–ˆ์„ ๋•Œ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ SQLSyntaxErrorException์ด ๋ฐœ์ƒํ–ˆ๋‹ค.๋ฌธ์ œ ์ƒํ™ฉSQLSyntaxErrorException: Unknown column 'member_id' in 'where clause'์ฝ”๋“œ ์ž‘์„ฑ ๊ณผ์ •@Where(clause = "is_deleted = false")@SQLDelete(sql = "UPDATE member SET is_deleted = true WHERE member_id = ?")@Where๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ is_deleted๊ฐ€ false์ธ ๋ฐ์ดํ„ฐ๋งŒ ์กฐํšŒํ•˜๋„๋ก ์„ค์ •ํ–ˆ๋‹ค.@SQLDelete๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์‚ญ์ œ ์š”์ฒญ ์‹œ Soft Delete๋˜๋„๋ก SQL ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค.. 2025. 2. 4.
[ KPT ํšŒ๊ณ  ] ํ”Œ๋Ÿฌ์Šค ์ฃผ์ฐจ ๊ฐœ์ธ ๊ณผ์ œ ํ”Œ๋Ÿฌ์Šค ์ฃผ์ฐจ ๊ฐœ์ธ ๊ณผ์ œ Keep : ์ด๋ฒˆ ๊ณผ์ œ์—์„œ ์œ ์ง€ํ–ˆ์œผ๋ฉด ํ•˜๋Š” ๋ถ€๋ถ„๋ฌธ์ œ ํ•ด๊ฒฐ ๊ณผ์ •์—์„œ์˜ ์‚ฌ๊ณ ๋ ฅ ๊ฐ•ํ™”๊ฐ ๋‹จ๊ณ„๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ๋งˆ๋‹ค '์™œ ์ด๊ฑธ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๊ฐ€?'๋ฅผ ๊ณ ๋ฏผํ•˜๋ฉฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค.๊ฐœ๋… ์ดํ•ด์™€ ํ™œ์šฉ์ƒˆ๋กœ์šด ๊ฐœ๋…์„ ๋‹จ์ˆœํžˆ ์ ์šฉํ•˜๋Š”๋ฐ ๊ทธ์น˜์ง€ ์•Š๊ณ , ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๊ณ  ํ™œ์šฉํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ๋‹ค.๋ณต์Šต์„ ํ†ตํ•œ ๊ฐœ๋… ์ •๋ฆฌ์ด๋ฏธ ์•Œ๊ณ  ์žˆ๋Š” ๋‚ด์šฉ์ด๋ผ๊ณ  ํ•ด๋„ ํ•œ๋ฒˆ ๋” ๋ณต์Šตํ•˜๋ฉด์„œ ์ •๋ฆฌํ•˜๊ณ  ๋„˜์–ด๊ฐ€๋Š” ์Šต๊ด€์„ ๊ฐ€์ง€๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ–ˆ๋‹ค. Problem : ๊ฐœ์„ ์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„์‹œ๊ฐ„ ๊ด€๋ฆฌ์˜ ์–ด๋ ค์›€์ฃผ์–ด์ง„ ์‹œ๊ฐ„ ์•ˆ์— ๊ณ„ํšํ–ˆ๋˜ ์ž‘์—…์„ ๋ชจ๋‘ ๋๋‚ด์ง€ ๋ชปํ–ˆ๋‹ค.๋ถˆ์™„์ „ํ•œ ์ง€์‹ ํ™•์ธ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ, ์‹ค์ œ๋กœ ๋ช…ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ ๋‚ด์šฉ๋“ค์ด ์กด์žฌํ–ˆ๋‹ค.์ƒˆ๋กœ์šด ๊ฐœ๋… ์ ์šฉ์˜ ์–ด๋ ค์›€์ƒˆ๋กœ์šด ๊ฐœ๋…์„ ์ตํžˆ๋Š” ๋ฐ๋Š” ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฌ์ง€ ์•Š์ง€๋งŒ, ์ ์šฉ์—์„œ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ์†Œ์š”๋˜์—ˆ.. 2025. 1. 27.