OSIV ํŒŒํ—ค์น˜๊ธฐ - sse ๊ตฌํ˜„ ์ค‘ HikariPool-1 - Connection is not available ์—๋Ÿฌ

OSIV ํŒŒํ—ค์น˜๊ธฐ - sse ๊ตฌํ˜„ ์ค‘ HikariPool-1 - Connection is not available ์—๋Ÿฌ

sse๋ฅผ ์‚ฌ์šฉํ•œ ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ ์„œ๋น„์Šค ๊ตฌํ˜„ ํ›„ ์„œ๋ฒ„๊ฐ€ ์ž˜ ๋Œ์•„๊ฐ€๋‹ค ๋ช‡ ๋ฒˆ ์š”์ฒญ ์‹œ๋„ ๋์— ๋ป—๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜๋ฉด DB์™€์˜ ์ปค๋„ฅ์…˜์ด ๋Š์–ด์ง€์ง€์•Š์•„ ์ƒ๊ธด ์—๋Ÿฌ์˜€๋‹ค. ์ด ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐ ํ•˜๋ฉด์„œJPA์˜ OSIV์— ๋Œ€ํ•ด ๋‹ค์‹œ๊ธˆ ๊ณต๋ถ€ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. OSIV (open session in view) OSIV์˜ ๋™์ž‘ ์›๋ฆฌ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ์„œ๋ธ”๋ฆฟ ํ•„ํ„ฐ๋‚˜, ์Šคํ”„๋ง ์ธํ„ฐ์…‰ํ„ฐ์—์„œ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ๋‹จ ์ด ์‹œ์ ์—์„œ ํŠธ๋žœ์žญ์…˜์€ ์‹œ์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์„œ๋น„์Šค ๊ณ„์ธต์—์„œ @Transeactional๋กœ ํŠธ๋žœ์žญ์…˜์„ ์‹œ์ž‘ํ•  ๋•Œ 1๋ฒˆ์—์„œ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•ด๋‘” ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋ฅผ ์ฐพ์•„์™€์„œ ํŠธ๋žœ์žญ์…˜์„ ์‹œ์ž‘ํ•œ๋‹ค. ์„œ๋น„์Šค ๊ณ„์ธต์ด ๋๋‚˜๋ฉด ํŠธ๋žœ์žญ์…˜์„ ์ปค๋ฐ‹ํ•˜๊ณ  ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋ฅผ ํ”Œ๋Ÿฌ์‹œํ•œ๋‹ค. ์ด ์‹œ์ ์— ํŠธ๋žœ์žญ์…˜์€ ๋๋‚ด์ง€๋งŒ ..

  • textsms
[spring batch] ์Šคํ”„๋ง ๋ฐฐ์น˜์™€ ์Šค์ผ€์ค„๋Ÿฌ์˜ ์ฐจ์ด

[spring batch] ์Šคํ”„๋ง ๋ฐฐ์น˜์™€ ์Šค์ผ€์ค„๋Ÿฌ์˜ ์ฐจ์ด

์Šคํ”„๋ง ๋ฐฐ์น˜ ๋ž€? ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉ ์—†์ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์—…์„ ๋ฏธ๋ฆฌ ์ •ํ•ด์ง„ ์ˆœ์„œ์— ๋”ฐ๋ผ ์ค‘๋‹จ ์—†์ด ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. Spring Batch๋Š” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์‹œ์Šคํ…œ์˜ ์šด์˜์— ์žˆ์–ด ๋Œ€์šฉ๋Ÿ‰ ์ผ๊ด„์ฒ˜๋ฆฌ์˜ ํŽธ์˜๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋œ ๊ฐ€๋ณ๊ณ  ํฌ๊ด„์ ์ธ ๋ฐฐ์น˜ ํ”„๋ ˆ์ž„์›Œํฌ๋‹ค. Spring์˜ ํŠน์„ฑ์„ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์™”๊ธฐ ๋•Œ๋ฌธ์— DI, AOP, ์„œ๋น„์Šค ์ถ”์ƒํ™” ๋“ฑ Spring ํ”„๋ ˆ์ž„์›Œํฌ์˜ 3๋Œ€ ์š”์†Œ๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์Šคํ”„๋ง ๋ฐฐ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค ๋Œ€์šฉ๋Ÿ‰์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์žกํ•œ ์ž‘์—…์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ ํŠน์ •ํ•œ ์‹œ์ ์—์„œ ์Šค์ผ€์ฅด๋Ÿฌ๋ฅผ ํ†ตํ•ด ์ž๋™ํ™”๋œ ์ž‘์—…์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ์˜ ํฌ๋งท์„ ๋ณ€๊ฒฝ, ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋“ฑ์˜ ์ž‘์—…์„ ํŠธ๋žœ์žญ์…˜ ์•ˆ์—์„œ ์ฒ˜๋ฆฌ ํ›„ ๊ธฐ๋กํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ ์Šคํ”„๋ง ๋ฐฐ์น˜์˜ ๋งŒ์กฑ ์กฐ๊ฑด ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ : ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค..

  • textsms
[spring batch] ์Šคํ”„๋ง ๋ฐฐ์น˜ ์ดํ•ดํ•˜๊ณ  ์ ์šฉํ•˜๊ธฐ

[spring batch] ์Šคํ”„๋ง ๋ฐฐ์น˜ ์ดํ•ดํ•˜๊ณ  ์ ์šฉํ•˜๊ธฐ

๊ฐ์ข… ๊ณต์—ฐ์„ ์˜ˆ๋งคํ•˜๊ณ  ์•Œ๋ฆผ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ์žˆ์—ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์˜ˆ๋งคํ•œ ๊ณต์—ฐ์˜ ์‹œ์ž‘ ํ•˜๋ฃจ ์ „ ํšŒ์›๋“ค์—๊ฒŒ ์ผ๊ด„์ ์œผ๋กœ ์•Œ๋ฆผ์„ ๋ณด๋‚ด์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ๋‹ค. ์นด์นด์˜คํ†ก ์•Œ๋ฆผ์„ ๋ณด๋‚ด๋ ค ํ–ˆ์ง€๋งŒ ์‚ฌ์—…์ž ๋ฒˆํ˜ธ๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ํ•ด์„œ ์•„์‰ฌ์šด๋ฐ๋กœ sms ์ „์†ก์œผ๋กœ ๋Œ€์ฒดํ–ˆ๋‹ค. sms push ์•Œ๋ฆผ์€ naver cloud์—์„œ ์ œ๊ณตํ•˜๋Š” sens๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. coolsms๊ฐ€ ์ œ์ผ ๋ณดํŽธ์ ์œผ๋กœ ๋งŽ์ด ์“ฐ์ด๋Š” ๊ฒƒ ๊ฐ™๋˜๋ฐ ํ›จ์”ฌ ์ €๋ ดํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. (์ง€๊ธˆ์€ ์‚ฌ์—…์ž๋งŒ ๊ฐ€๋Šฅํ•˜๋„๋ก ๋„ค์ด๋ฒ„์—์„œ ๋ง‰์Œ.. ์ŠคํŽจ๋ฌธ์ œ) ์•„๋ฌดํŠผ ์œ„ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ์ด๊ฒƒ์ €๊ฒƒ ์ฐพ์•„๋ณด๋‹ค ์Šค์ผ€์ค„๋Ÿฌ์™€ ๋ฐฐ์น˜์— ๋Œ€ํ•ด ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ  ํ˜„์žฌ ์ง„ํ–‰์ค‘์ธ ํ”„๋กœ์ ํŠธ์— ์Šคํ”„๋ง ๋ฐฐ์น˜๋ฅผ ์ ์šฉ์‹œํ‚ค๊ธฐ๋กœ ํ–ˆ๋‹ค. ์Šคํ”„๋ง ๋ฐฐ์น˜๋Š” ์–ด๋–ค ์ž‘์—…์— ์“ฐ์ผ๊นŒ? ์˜ˆ์•ฝ ์‹œ๊ฐ„์— ๊ด‘๊ณณ์–ด ๋ฉ”์‹œ์ง€ ๋ฐœ์†ก, ๊ฒฐ์ œ ์ •์‚ฐ ์ž‘..

  • textsms
[Netty] ๋น„๋™๊ธฐ ์„œ๋ฒ„ Netty์™€ NoSQL MongoDB๋กœ ์ฑ„ํŒ… ์„œ๋น„์Šค ๊ตฌํ˜„

[Netty] ๋น„๋™๊ธฐ ์„œ๋ฒ„ Netty์™€ NoSQL MongoDB๋กœ ์ฑ„ํŒ… ์„œ๋น„์Šค ๊ตฌํ˜„

์ด์ „์— STOMP๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ฑ„ํŒ… ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•ด ๋ณด์•˜๋‹ค. ์ด๋ฒˆ์—๋Š” ๋น„๋™๊ธฐ ์„œ๋ฒ„์ธ Netty ์„œ๋ฒ„์™€ MongoDB๋กœ ๊ตฌํ˜„ํ•œ ์ฑ„ํŒ… ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด์•˜๋‹ค. ๊ทธ ์ „์— mySQL๊ณผ MongoDB์˜ ์ฐจ์ด์ ์„ ์งš๊ณ  ๋„˜์–ด๊ฐ€์ž mySQL์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(RDBMS)์ด๋‹ค. ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•ก์„ธ์Šค๋ฅผ ์œ„ํ•ด ๊ตฌ์กฐํ™”๋œ ์ฟผ๋ฆฌ ์–ธ์–ด(SQL)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•  ๋•Œ Join์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šคํ•œ๋‹ค. MongoDB๋Š” ๋ฐ์ดํ„ฐ๋ฅผ JSON๊ณผ ์œ ์‚ฌํ•œ ๋ฌธ์„œ๋กค ์ €์žฅํ•˜๋Š” NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋‹ค. ๋ฌธ์„œ๋Š” ๊ด€๋ จ ์ •๋ณด๋ฅผ ํ•จ๊ป˜ ์ €์žฅํ•˜๊ณ  ์•ก์„ธ์Šค๋ฅผ ์œ„ํ•ด MongoDB ์ฟผ๋ฆฌ ์–ธ์–ด(MQL)์„ ์‚ฌ์šฉ ํ•„๋“œ๋Š” ๋ฌธ์„œ๋งˆ๋‹ค ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ ๋ฌธ์„œ ๊ตฌ์กฐ๋ฅผ ์„ ์–ธํ•  ํ•„์š”๊ฐ€ ์—†์Œ SQL์€ ์–ธ์ œ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์ข‹์„๊นŒ? ๊ด€..

  • textsms
[STOMP] ์Šคํ”„๋ง + JWT + STOMP ๋กœ ์ฑ„ํŒ… ๊ธฐ๋Šฅ ๊ตฌํ˜„

[STOMP] ์Šคํ”„๋ง + JWT + STOMP ๋กœ ์ฑ„ํŒ… ๊ธฐ๋Šฅ ๊ตฌํ˜„

์›น ์†Œ์ผ“์€ ์˜ˆ์ „๋ถ€ํ„ฐ ์‚ฌ์šฉํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๋‹ค. ์ง์ „ ํ”„๋กœ์ ํŠธ์—์„œ ์‹ค์‹œ๊ฐ„ ์•Œ๋žŒ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ๋Š”๋ฐ ๊ทธ๋•Œ ์‚ฌ์šฉํ•˜๋ ค๋‹ค ์•Œ๋žŒ์—๋Š” SSE๊ฐ€ ๋” ์ ์ ˆํ•ด ๋ณด์˜€๊ณ  ์†Œ์ผ“์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๊ณ  ์ด๋ฒˆ์— ๊ฐœ์ธ์ ์œผ๋กœ ์ฑ„ํŒ… ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. ์›น ์†Œ์ผ“์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ ์ „ http ํ†ต์‹ ์˜ ํŠน์ง•๊ณผ ํ•œ๊ณ„์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž http ํ†ต์‹ ์˜ ํŠน์ง•๊ณผ ํ•œ๊ณ„ httpํ†ต์‹ ์€ HyperText Transfer Plotocol์˜ ์•ฝ์ž๋กœ์„œ ์˜ค๋Š˜๋‚  ๊ด‘๋ฒ”์œ„ํ•˜๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ†ต์‹  ๊ธฐ๋ฒ•์ด๋‹ค. http์˜ ํ†ต์‹  ๊ณผ์ •์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. client๊ฐ€ server์—๊ฒŒ ์ž์‹ ์ด ๋ฐ›๊ณ ์‹ถ์€ ์ •๋ณด๋ฅผ request์— ๋‹ด์•„ ์ „์†กํ•œ๋‹ค. server๋Š” client์˜ request์— ๋”ฐ๋ผ์„œ ์•Œ๋งž์€ response๋กœ ์‘๋‹ตํ•œ๋‹ค. client๋Š” server์—๊ฒŒ ๋ฐ›์€ response์˜ ๋ฐ์ด..

  • textsms
[Redis] API ์š”์ฒญ ๋งˆ๋‹ค ์กฐํšŒํ•˜๋Š” User ๋ฐ์ดํ„ฐ ๋ ˆ๋””์Šค๋กœ ์ตœ์ ํ™”

[Redis] API ์š”์ฒญ ๋งˆ๋‹ค ์กฐํšŒํ•˜๋Š” User ๋ฐ์ดํ„ฐ ๋ ˆ๋””์Šค๋กœ ์ตœ์ ํ™”

Cache๋ž€ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋ฆฌ ์ €์žฅํ•ด๋†“๊ณ  ๋‹ค์‹œ ์ด ๋ฐ์ดํ„ฐ๋ฅผ ํ•„์š”๋กœ ํ•  ๋•Œ๋งˆ๋‹ค ๋น ๋ฅด๊ฒŒ ์ฐธ์กฐํ•˜์—ฌ ์ฝ๊ธฐ ๊ธฐ๋Šฅ์„ ๊ฐœ์„ ํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ํ˜„์žฌ ์ง„ํ–‰ ์ค‘์ธ ํ”„๋กœ์ ํŠธ์—์„œ ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ์œ„ํ•ด ์บ์‹œ๋ฅผ ๋„์ž…ํ•˜์˜€๊ณ , Redis๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. ๊ฑฐ์˜ ๋ชจ๋“  API ์š”์ฒญ์—์„œ ํšŒ์›์„ ์กฐํšŒํ•˜๋Š” ์ฟผ๋ฆฌ๊ฐ€ ๋‚˜๊ฐ”๊ณ  ์ด๋ฅผ ์บ์‹ฑ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์œ„์™€ ๊ฐ™์ด ๊ตฌ์ƒํ•˜์˜€๋‹ค. ์ตœ์ดˆ ๋กœ๊ทธ์ธ ์‹œ redis์— ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๊ณ  ์ถ”ํ›„์— loadByUsername ํ˜ธ์ถœ๋  ๋•Œ redis ์—์„œ ๊ฐ’์„ ๋จผ์ € ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์˜€๋‹ค. Redis ์„ค์ • build.gradle implementation 'org.springframework.boot:spring-boot-starter-data-redis' RedisConfig @Configuration @Ena..

  • textsms