[TIL] 2025/11/25
ยท
TIL
์š”์ฆ˜ ๋„ˆ๋ฌด ๋Šฆ๊ฒŒ ์ž๊ณ  ์ผ์ฐ ์ผ์–ด๋‚˜์„œ ํ”ผ๊ณคํ•ด ์ฃฝ๊ฒ ๋‹ค.์˜ค๋Š˜๋ถ€ํ„ฐ ๋ฐค์— ์ผ์ฐ ์ž๋Š” ์—ฐ์Šต์„ ํ•ด์•ผ๊ฒ ๋‹ค.. CS ๊ณต๋ถ€ํ•˜๋А๋ผ ์ฝ”ํ…Œ๋ฅผ 2~3์ผ ์‰ฌ์–ด๋ฒ„๋ ธ๋Š”๋ฐ ๋‚ด์ผ๋ถ€ํ„ฐ 1์ผ 1๋ฌธ์ œ ๊ผญ...ํ•˜์ž!!! โœ… ์˜ค๋Š˜ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉCircuit Breaker (Resilience4j ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)Exponential Backoff Retry ์ „๋žตapi ์š”์ฒญ-์‘๋‹ต์— ๋ฉฑ๋“ฑ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•DB HADB ShardingDLQ(Dead Letter Queue)Java primitive type, reference typeString new๋กœ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๊ณผ ๋ฆฌํ„ฐ๋Ÿด์˜ ์ฐจ์ด์  (JVM ๋™์ž‘๊ณผ ์—ฐ๊ด€์ง€์–ด์„œ)https://resilience4j.readme.io/docs/getting-startedhttps://techblog.woowahan.com/..
[TIL] 2025/11/20
ยท
TIL
๋‚ ์”จ๊ฐ€ ์ถ”์›Œ์ ธ์„œ ๋ชธ์ด ๋Š˜์–ด์ง€๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ์š”์ฆ˜ ๋…๊ฐ์ด ์œ ํ–‰์ด๋ผ๋˜๋ฐ ์•„ํ”„๋ฉด ๋‚˜๋งŒ ๊ฐœ๊ณ ์ƒ์ด๋‹ˆ ๋‹ค๋“ค ์˜ท ๋”ฐ์ˆฉ๊ฒŒ ์ž…๊ณ  ๋‹ค๋‹ˆ์„ธ์š”..์˜ค๋Š˜์€ ์ž๋ฐ”์˜ ์‹  ์ฑ…์„ 15์žฅ๊นŒ์ง€ ์ฝ์—ˆ๋Š”๋ฐ ๋งŽ์€ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์–ป์€ ๊ฒƒ ๊ฐ™๋‹ค. ์ด ์ฑ…์€ ๋‹จ์ˆœํžˆ ์ž๋ฐ”๋ฅผ ์ฒ˜์Œ ๋ฐฐ์šฐ๋Š” ์‚ฌ๋žŒ์„ ์œ„ํ•œ ์ž…๋ฌธ์„œ ๋ณด๋‹ค๋Š” ์ž๋ฐ”๋ฅผ ์–ด๋А์ •๋„ ์•Œ๊ณ  ์ •๋ง ์ œ๋Œ€๋กœ ์“ฐ๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ์—๊ฒŒ ์ ํ•ฉํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ์•„๋Š” ๋งŒํผ ๋ณด์ธ๋‹ค๊ณ  ์ฑ…๋งŒ ์ฝ๊ณ  ๋์ด ์•„๋‹ˆ๋ผ ์ด ๊ฐœ๋…์ด Spring, JPA ์ฒ˜๋Ÿผ ์–ด๋””๊นŒ์ง€ ํ™•์žฅ๋  ์ˆ˜ ์žˆ๋Š”๊ฐ€๋ฅผ ๊ณ ๋ฏผํ•˜๋ฉด์„œ ์ฝ์–ด์•ผ ์ œ๋Œ€๋กœ ์ด ์ฑ…์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.์‹ค์ œ๋กœ ์ฑ…์„ ์ฝ์œผ๋ฉด์„œ ๊ทธ๋™์•ˆ ๋‹น์—ฐํ•˜๊ฒŒ ์ƒ๊ฐํ–ˆ๋˜ ๋‚ด์šฉ์„ ๊นŠ๊ฒŒ ํŒŒ๊ณ ๋“œ๋Š” ๊ณผ์ •์ด ๋งŽ์•˜๋Š”๋ฐ ์ด ๋ถ€๋ถ„์ด ์ •๋ง ๋งŽ์€ ๋„์›€์ด ๋˜๊ณ  ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ž๋ฐ”๋Š” ์™œ ๋‹ค์ค‘ ์ƒ์†์ด ๋ถˆ๊ฐ€๋Šฅํ•œ์ง€, switch ๋ฌธ์€ ๊ฐ’ ๋น„๊ต๋ฅผ ํ•  ๋•Œ ๋‚ด๋ถ€์ ..
[TIL] 2025/11/17
ยท
TIL
๋‚˜๋Š” ๋ธ”๋กœ๊ทธ ๊ธ€์—์„œ ํ™”์‚ดํ‘œ๋ฅผ ์ž์ฃผ์“ฐ๋Š”๋ฐ ํ™”๋ฉด์—์„  ์•ˆ ๋ณด์—ฌ์„œ ์›์ธ์„ ์ฐพ์•„๋ดค๋”๋‹ˆ ์Šคํ‚จ์˜ ํฐํŠธ ๋ฌธ์ œ์˜€๋‹ค.hELLO ์Šคํ‚จ ์“ฐ์‹œ๋Š” ๋ถ„๋“ค์€ ์•„๋ž˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ๊ผญ ํ™”์‚ดํ‘œ๋ฅผ ์ฐพ์œผ์„ธ์š”... ↓↓↓ [Tistory] hELLO ์Šคํ‚จ ํ™”์‚ดํ‘œ๋กœ ํ‘œ์‹œํ•˜๊ธฐ๋ฐฐ๊ฒฝ์ด์ œ ๋ง‰ ๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ๋ฅผ ์‹œ์ž‘ํ•ด๋ณด๋ ค๊ณ  ์—ด์‹ฌํžˆ ๊ธ€์„ ์ž‘์„ฑํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ‰์†Œ์—๋„ ํ™”์‚ดํ‘œ๋ฅผ ํ…์ŠคํŠธ ๋Œ€์น˜๋กœ ๋‘๊ณ  ์ž์ฃผ ์‚ฌ์šฉํ•ด์™”๊ธฐ ๋•Œ๋ฌธ์— ๊ธ€์„ ์“ฐ๊ฑฐ๋‚˜ ์ •๋ฆฌํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•ด์™”์Šต๋‹ˆ๋‹ค.ํ•˜์ง€karmesin924.tistory.com ๐Ÿž ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…JPA์˜ save(), deleteById() ์ฒ˜๋Ÿผ JpaRepository๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋ณธ CRUD ๋ฉ”์„œ๋“œ๋Š” ์ด๋ฏธ SimpleJpaRepository ๊ตฌํ˜„์ฒด์˜ ํด๋ž˜์Šค ๋ ˆ๋ฒจ์— @Transactional์ด ๋ถ™์–ด์žˆ๋‹ค.๊ทธ๋ฆฌ๊ณ  ์“ฐ๊ธฐ ๋ฉ”์„œ๋“œ๋“ค์—..
[TIL] 2025/11/14
ยท
TIL
์š”์ฆ˜ ๋‚ ์”จ๊ฐ€ ๋ฐค์—๋Š” ์ถฅ์ง€๋งŒ ๋‚ฎ์— ๋Œ์•„๋‹ค๋‹ˆ๊ธฐ ๋”ฑ ์ข‹์€๊ฑฐ๊ฐ™๋‹ค. ๊ฒจ์šธ์ด ์•ˆ ์˜ค๊ณ  ์ง€๊ธˆ ์ด ๋‚ ์”จ๊ฐ€ ๊ณ„์† ์ง€์†๋˜์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.๋‹ค์Œ์ฃผ๋ถ€ํ„ฐ ์ทจ์—… ๋ชจ๊ฐ์ฝ” ์Šคํ„ฐ๋””๊ฐ€ ์‹œ์ž‘๋˜๋Š”๋ฐ 9to6๋กœ ๊ณ„์† ๊ณต๋ถ€ํ•˜๊ณ .. ์ทจ์ค€ํ•˜๊ณ  ๊ทธ๋Ÿด๊ฑฐ๊ฐ™๋‹ค. ๊ทธ๋ฆฌ๊ณ  4๊ฐœ์›” ๋™์•ˆ ๋ฉ˜ํ† ๋ง๋„ ์‹œ์ž‘ํ•œ๋‹ค. ๋‚˜์ค‘์— ๋ฉ˜ํ† ๋ง ํ•œ ๋‹ฌ์ •๋„ ์ง„ํ–‰์„ ํ•ด๋ณด๊ณ  ๋‚ด๊ฐ€ ์–ผ๋งŒํผ ์„ฑ์žฅํ–ˆ๋Š”์ง€, ๋ชฉํ‘œํ•˜๋Š” ์ˆ˜์ค€๊นŒ์ง€ ๋„๋‹ฌํ–ˆ๋Š”์ง€์— ๋Œ€ํ•ด ํšŒ๊ณ ๋„ ์ž‘์„ฑํ•ด์•ผ๊ฒ ๋‹ค. โœ… ์˜ค๋Š˜ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉWebSocket์ด๋ž€WebSocket์—์„œ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ†ต์‹ ํ•˜๋Š” ๋ฐฉ๋ฒ• (STOMP)Spring Boot WebSocket ๊ณต์‹ ๊ฐ€์ด๋“œ ์ฝ๊ธฐ: https://spring.io/guides/gs/messaging-stomp-websocket์ฃผ๋‹ˆ์–ด ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ์‹ค๋ฌด ์ง€์‹ ์ •๋…2์žฅ, 3์žฅ, 4์žฅ์ฒ˜๋ฆฌ๋Ÿ‰๊ณผ..
[TIL] 2025/11/11
ยท
TIL
์˜ค๋Š˜์ด ๋นผ๋นผ๋กœ ๋ฐ์ด๋ผ๋‹ˆ, ๋ฒŒ์จ ์—ฐ๋ง์ด ๋‹ค๊ฐ€์˜ค๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ฒด๊ฐํ–ˆ๋‹ค.๋งํ–ˆ๋‹ค..๐Ÿ˜ญ ์˜ฌํ•ด ๋‚ด๊ฐ€ ์ด๋ฃจ๊ณ  ์‹ถ์—ˆ๋˜ ๋ชฉํ‘œ๋ฅผ ์–ผ๋งˆ๋‚˜ ๋‹ฌ์„ฑํ–ˆ๋Š”์ง€ ๋– ์˜ฌ๋ ค๋ณด๋ฉด ๋„ˆ๋ฌด ๋…ธ๋‹ต์ด๋‹ค... ๋‚ ์ด ๊ฐˆ์ˆ˜๋ก ๋‚˜์ด๋งŒ ๋จน๋Š”๊ฑฐ๊ฐ™๋‹ค. ์˜ค๋Š˜์€ ์˜ˆ์ „๋ถ€ํ„ฐ ๊ด€์‹ฌ ์žˆ๋˜ ๋ฉ˜ํ† ๋ง ๊ณผ์ •์— ๋Œ€ํ•ด ์‚ฌ์ „ ๋ฏธํŒ…์„ ๊ฐ€์กŒ๋‹ค. ์ด ๊ณผ์ •์ด ์ •๋ง ๋‚˜์—๊ฒŒ ๋„์›€์ด ๋ ์ง€, ์œ ๋ฃŒ์ธ ๋งŒํผ ๊ฐ€์น˜๊ฐ€ ์žˆ์„์ง€ ๊ณ ๋ฏผ์ด ๋˜๋Š” ์‹œ์ ์—์„œ ์‹ค์ œ ๋ฉ˜ํ† ๋‹˜๊ณผ์˜ ๋ฏธํŒ…์ด ๊ฒฐ์ •์— ๋งŽ์ด ๋„์›€๋œ ๊ฒƒ ๊ฐ™๋‹ค.๋‹ค๋ฅธ ๋ถ€์บ ๋„ ๊ณ ๋ฏผ ์ค‘์ธ๋ฐ ์ „๊ณต์ž์ด๊ณ  ์ด๋ฏธ ์‹ค๋ฌด ๊ฒฝํ—˜์ด ์žˆ๋Š” ๋‚˜์—๊ฒŒ๋Š” ๋ฐฉํ–ฅ์„ฑ์ด ๋งž์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™๋‹ค..๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋ชฉ์ ์ด ๋ถ„๋ช…ํ•œ ๋งŒํผ ๋‹จ๊ธฐ๊ฐ„ ๋‚ด์— ๋ ˆ๋ฒจ์—…ํ•˜๊ธฐ ์œ„ํ•ด์„  ์–ด๋–ค ๊ฒƒ์€ ํฌ๊ธฐํ•˜๊ณ , ์–ด๋–ค ๊ฒƒ์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š”๊ฐ€๋ฅผ ์ค‘์ ์œผ๋กœ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค. ์š”์ƒˆ ๋ฉด์ ‘ ์ค€๋น„๋กœ ์ฝ”ํ…Œ ์ค€๋น„๋ฅผ ๊ฒŒ์„๋ฆฌํ–ˆ๋‹ค. ๋‹ค์‹œ 1์ผ 1๋ฌธ์ œ ํ’€๋˜ ๋ฃจํ‹ด์œผ๋กœ ..
[TIL] 2025/11/10
ยท
TIL
์š”์ฆ˜ ๋ฉด์ ‘์„ ๋ณด๋ฉด์„œ ํ•ญ์ƒ ๋ง‰ํ˜”๋˜ ๊ธฐ์ˆ  ์งˆ๋ฌธ์ด ์žˆ์—ˆ๋‹ค. ๋‚˜๋Š” ์ด์ „ ์‹ค๋ฌด์—์„œ Redis Queue๋ฅผ ์ด์šฉํ•œ ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ๋ฅผ ๊ฒฝํ—˜ํ–ˆ๋Š”๋ฐ, ํ•ญ์ƒ Kafka์™€ ์—ฐ๊ด€์ง€์–ด์„œ ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์€ ์—†์—ˆ์–ด์š”? ์ค‘๊ฐ„์— ๋ฐ์ดํ„ฐ๊ฐ€ ์†Œ์‹ค๋˜๋Š” ์œ„ํ—˜์„ฑ์€ ์—†์—ˆ๋‚˜์š”? ๋ผ๋Š” ์งˆ๋ฌธ์„ ๋งŽ์ด ๋ฐ›์•˜๋‹ค.Kafka๋ฅผ ์ด์šฉํ•œ ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„  ์ด๋ก ๋งŒ ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ๊ณ  ์žˆ์—ˆ๊ณ  ์ •ํ™•ํ•œ ๊ตฌ์กฐ์™€ ํ๋ฆ„์„ ๋ชจ๋ฅด๋Š” ํƒ“์— ๋Œ€๋‹ต์„ ๋ชปํ•˜๊ณ  ์–ผ์–ด๋ฒ„๋ฆฌ๊ฑฐ๋‚˜ ์•„๋Š” ์ฒ™(?)์„ ํ•˜๋‹ค๊ฐ€ ๋ฉด์ ‘๊ด€์˜ ๊ผฌ๋ฆฌ ์งˆ๋ฌธ ๊ณต๊ฒฉ์— ์‹์€๋•€์ด ๋‚œ ์ ์ด ์žˆ๋‹ค ๐Ÿ’ฆ ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ ๋ฉ”์‹œ์ง€ํ์— ๋Œ€ํ•œ ์ „๋ฐ˜์ ์ธ ๊ณผ์ •์„ ๋‹ค์‹œ ๊ณต๋ถ€ํ–ˆ๋‹ค.. ๋ฉ”์‹œ์ง€ํ๊ฐ€ ์™œ ํ•„์š”ํ•˜๊ณ , Redis/RabbitMQ/Kafka ๊ฐ๊ฐ์˜ ํŠน์ง•์„ ๋น„๊ตํ•˜๋ฉฐ ์™œ ๋น…ํ…Œํฌ ๊ธฐ์—…์—์„œ Kafka๋ฅผ ๋งŽ์ด ๋„์ž…ํ•˜๋Š”์ง€ ์ด์œ ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ฐพ์•„๋ดค๋‹ค. ํ•ญ์ƒ ๋‚ด๊ฐ€ ..