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

๊ฐœ๋ฐœ์ƒํ™œ/์ด๊ฒƒ์ €๊ฒƒ9

์ด๋ฏธ ์ƒ์„ฑ๋˜์–ด ์žˆ๋Š” ๋„์ปค ์ปจํ…Œ์ด๋„ˆ(mysql)์— ์ƒˆ database ์ถ”๊ฐ€ ๊ฐœ์š”์ด๋ฏธ ๊ณผ๊ฑฐ์— mysql8-container์ด๋ผ๋Š” ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ–ˆ๊ณ  ์œ ์ง€์ค‘sample1 database๋ฅผ ๊ฐ–๊ณ  ์žˆ์—ˆ์œผ๋‚˜, sample2 database๋ฅผ ์ถ”๊ฐ€ ํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค.ํ…Œ์ŠคํŠธ ์šฉ์ด๋ผ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ•˜๋‚˜ ๋” ๋„์šธ ํ•„์š”๋Š” ์—†๊ณ  ์„ค์ •๋„ ๋” ์ถ”๊ฐ€ํ•˜๊ธฐ ๊ท€์ฐฎ์•˜๋‹ค. -> ๊ธฐ ์„ค์น˜ ๋˜์–ด์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ, ์„ค์ • ๋˜์–ด์žˆ๋Š” ๊ณ„์ •์— database๋งŒ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ถŒํ•œ๋งŒ ์ถ”๊ฐ€ํ•ด์ฃผ๊ธฐ~~ ์ž‘์—… ์ˆœ์„œ1. Terminal ์•”๊ฑฐ๋‚˜ ์ ‘์†ํ•ด์„œ ์ปจํ…Œ์ด๋„ˆ ์ ‘์†docker exec -it {{mysql8-container}} bash 2. MySQL ์— ๋ฃจํŠธ ๊ณ„์ •์œผ๋กœ ์ ‘์† mysql -u root -padmin 3. ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ CREATE DATABASE {{sample2}}; 4. ๊ธฐ์กด ์œ ์ €์— ๊ถŒํ•œ ๋ถ€์—ฌ GRANT ALL PR.. 2024. 10. 26.
SSE ์ ์šฉ (3) - SSE ์ ์šฉ ์‹œ ์ด์Šˆ ์ฒ˜๋ฆฌ 1. Event Share ์ด์Šˆ ์ฒ˜๋ฆฌ (๋™์‹œ ์ ‘์† ๊ณ ๋ ค)์ด์Šˆ - ์—ฌ๋Ÿฌ๊ฐœ์˜ ํƒญ์„ ๋„์›Œ๋†จ์„ ๋•Œ Emitter Subscribe Response๋Š” ๋‹ค OK๊ณ  Event๊ฐ€ ์ œ๋Œ€๋กœ ์ƒ์„ฑ์—ˆ์ง€๋งŒ ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ƒ์„ฑ๋œ ํƒญ๋งŒ event data ์—…ํ…Œ์ดํŠธ๊ฐ€ ๋จ ์›์ธ - API์—์„œ ๋™์ผ ์ด๋ฒคํŠธ๊ฐ€ ์•„๋‹Œ ๋‹ค์Œ ์ƒ์„ฑ๋œ ๋™์ผ ํ‚ค์˜ ์ด๋ฒคํŠธ๋กœ ๋ฎ์–ด ์“ฐ๊ธฐ๊ฐ€ ๋˜์–ด์ ธ๋ฒ„๋ฆผ - = API์—์„œ concurrentHashMap์— emitter ๋‹ด๊ณ  ์žˆ๋Š”๋ฐ ๋™์ผ key๋กœ ์ƒˆ ๊ฒƒ์œผ๋กœ ์—Ž์–ด์ณ์ ธ์„œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• - emitter๋Š” ๊ณต์œ  ์•ˆ๋จ - ์ด๋ฒคํŠธ ๊ตฌ๋…์ด ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์—ฌ๋Ÿฌ๊ฐœ emitter๋ฅผ uuid ์ถ”๊ฐ€ ๋ฐ idPrefix์ ์šฉํ•ด์„œ Broadcast ์‹œ idPrefix ํ•˜์œ„ ๊ฒƒ๋“ค ๋ชจ๋‘ ์—…๋ฐ์ดํŠธ ๋˜๋„๋ก ๋ณ€๊ฒฝ 2. ์ธ์ฆ์ด์Šˆ - event subscribe์‹œ .. 2024. 8. 19.
SSE ์ ์šฉ (2) - ์ด์ค‘ํ™”๋ฅผ ์ ์šฉํ•ด๋ณด์ž ํ•„์š”์„ฑ- ์‹ ๊ทœ ๊ตฌ์ถ• ์Šคํ…Œ์ด์ง€ ๋Œ€๋ถ€๋ถ„ API 2๋Œ€ -> ์Šค์ผ€์ผ๋ง ์ด์Šˆ ๊ณ ๋ฏผ์ด ํ•„์š”- ํ˜„์žฌ ๊ฐ๊ฐ API์— Subscribe, broadcast๊ฐ€ ์žˆ์œผ๋ฉด ์ด๋ฒคํŠธ ๋ฐœ์ƒํ•œ ์ชฝ์— ์‘๋‹ต ๋ˆ„๋ฝ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Œ. ๊ตฌํ˜„ ๋ฐฉ๋ฒ•- MQ๋ฅผ ์ด์šฉ  - ๊ธฐ์กด์— ์‚ฌ์šฉ์ค‘์ธ ๋ฆฌ์†Œ์Šค  - Redis๋‚˜ Kafka๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋‚˜, ํ˜„์žฌ ์ƒํ™ฉ์—์„œ SSE๋•Œ๋ฌธ์— ์ธํ”„๋ผ ์ถ”๊ฐ€๋Š” ๋ถˆ๊ฐ€ํ•œ ์ƒํ™ฉ  - ๋‹ค์ค‘ ๋กœ๊ทธ์ธ ์ด๋ ‡๊ฒŒ ์‹ฌํ™”๊นŒ์ง€ ํ•„์š”ํ•˜์ง€ ์•Š์Œ (๋‹จ์ผ ๊ธฐ๊ธฐ ๋กœ๊ทธ์ธ ํ™˜๊ฒฝ)  - ๊ตฌํ˜„์„ ์ด๊ฒƒ์ €๊ฒƒ ๋ณด๋‹ˆ MQ๋กœ ์ถฉ๋ถ„ํ•˜๊ฒŒ ๋Œ€์‘ ๊ฐ€๋Šฅํ•  ๊ฒƒ ๊ฐ™์Œ- Subscribe๋Š” ์–ด๋Š ์„œ๋ฒ„์—์„œ ๋ฐœ์ƒํ•ด๋„ ์ƒ๊ด€์ด ์—†์Œ, ๋”ฐ๋ผ์„œ API๋กœ ์ง„ํ–‰, Broadcast๋Š” MQ๋กœ ์ ์šฉ- ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ ์ด๋ฒคํŠธ ID Prefix๋ฅผ ํ™•์ธํ•˜์—ฌ ๊ตฌ๋…์ค‘์ธ ๋ชจ๋“  ์„œ๋ฒ„์— ๋งคํ•‘๋˜๋Š” ๋ชจ๋“  ์ด๋ฒคํŠธ๋ฅผ ๋™์‹œ์— Br.. 2024. 8. 19.
H2 ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์„ค์น˜ ๋ฐ ์ดˆ๊ธฐ ์„ค์ • ๋ฐฉ๋ฒ• h2 ๋””๋น„ ์ฒ˜์Œ ์ ‘๊ทผํ•  ๋•Œ๋งŒ ํŒŒ์ผ๋ชจ๋“œ๋กœ ์ ‘์†ํ•˜๊ณ  ๋””๋น„ ์ƒ์„ฑ๋˜๋ฉด ๊ทธ ๋‹ค์Œ๋ถ€ํ„ฐ๋Š” ๋„คํŠธ์›Œํฌ ๋ชจ๋“œ๋กœ ์ ‘์† 1. ์„ค์น˜ ๋ฐ ์••์ถ• ํ•ด์ œ https://www.h2database.com/html/main.html 2. ์‰˜ ํŒŒ์ผ ์‹คํ–‰ cd Downloads/h2/bin ./h2.sh 3. ๊ถŒํ•œ์ด ์—†๋‹ค๋ฉด ๊ถŒํ•œ ์—…๋ฐ์ดํŠธ ํ›„ ์žฌ์‹คํ–‰ chmod 755 h2.sh ./h2.sh 4. ์‰˜ ํŒŒ์ผ ์‹คํ–‰ํ•˜๋ฉด ์ž๋™์œผ๋กœ ๋””๋น„ ๋œจ์ง€๋งŒ ์•ˆ๋œฌ๋‹ค๋ฉด localhost:8082๋กœ ์ง์ ‘ ๊ฐ€๋„๋ก 5. ์‹คํ–‰ ํ›„ ์ตœ์ดˆ ์ ‘์† ์‹œ JDBC URL์— `jdbc:h2:~/{dbName}` 6. ์œ ์ € ๋””๋ ‰ํ† ๋ฆฌ์— `~/{dbName}.mv.db` ํŒŒ์ผ ์ƒ์„ฑ ํ™•์ธ 7. ์ดํ›„ ๋ถ€ํ„ฐ๋Š” ์—ฐ๊ฒฐํ•ด์ œ ํ›„ `jdbc:h2:tcp://localhost/~/{dbName}` ์ด๋ ‡๊ฒŒ ์ ‘์† 2024. 4. 15.
SSE ์ ์šฉ (1) - SSE๋ฅผ ์ ์šฉํ•ด๋ณด์ž ๊ฐœ๋… ๋ฐฐ์น˜ ๋™์ž‘ ์™„๋ฃŒ ์‹œ์ ๋งˆ๋‹ค ํ™”๋ฉด์— update๋ฅผ ํ•ด์ค˜์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ตœ์‹  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ธฐ์œ„ํ•ด ์ ์ ˆํ•œ ๊ธฐ์ˆ  ๊ฒ€ํ† ์ค‘์— SSE ์ถ”์ฒœ์„ ๋ฐ›์•„ ๋ถ„์„ ํ›„ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ด€๋ จ ๋‚ด์šฉ์„ ์ •๋ฆฌ SSE๋ž€, Server Sent Event ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ์„œ๋ฒ„ ๊ฐ„ ๋‹จ๋ฐฉํ–ฅ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ์›น ๊ธฐ์ˆ  ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €)๋กœ ์‹ค์‹œ๊ฐ„ ์ด๋ฒคํŠธ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์„œ๋ฒ„๋กœ์˜ ์—ฐ๊ฒฐ์„ ์—ด์–ด๋‘๊ณ  ์„œ๋ฒ„์—์„œ ์ด๋ฒคํŠธ๋ฅผ ํ‘ธ์‰ฌํ•˜๋Š” ๋ฐฉ์‹ ์„œ๋ฒ„๋Š” ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ด๋ฒคํŠธ์— ํ•„์š”ํ•œ Data๋ฅผ ํฌํ•จํ•˜์—ฌ Client์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค. Client๋Š” ์ด๋ฒคํŠธ ์ˆ˜์‹  ํ›„ ํ•„์š”ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉ SSE ํŠน์ง• - ๋‹จ๋ฐฉํ–ฅ ํ†ต์‹  ์„œ๋ฒ„ -> ํด๋ผ์ด์–ธํŠธ๋กœ๋งŒ Data ์ „์†ก - ๊ธฐ๋ณธ HTTP ํ”„๋กœํ† ์ฝœ ์‚ฌ.. 2024. 4. 12.
ํ”„๋กœ์ ํŠธ Tree ๊ตฌ์กฐ ์ถ”๊ฐ€ mac์„ ์‚ฌ์šฉ์ค‘์ด๋ฉฐ, README.md ํŒŒ์ผ ์ž‘์„ฑ์ค‘์— ํ”„๋กœ์ ํŠธ ํŒจํ‚ค์ง€ ๊ตฌ์กฐ๋ฅผ ์ฒจ๋ถ€ํ•˜๊ณ  ์‹ถ์–ด์„œ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„ ์ •๋ฆฌ 1. brew install tree (brew๊ฐ€ ์„ค์น˜๊ฐ€ ๋˜์–ด์žˆ๋‹ค๋Š” ๊ฐ€์ •ํ•˜์—) 2. ์›ํ•˜๋Š” ํ”„๋กœ์ ํŠธ root๋กœ ๊ฐ€์„œ tree . ๋ช…๋ น์–ด ์น˜๋ฉด ๋ 3. ๋งˆํฌ๋‹ค์šด์— ๋ถ™์ด๊ณ  ์‹ถ๋‹ค๋ฉด ```์„ ์‚ฌ์šฉํ•ด์„œ ์ฝ”๋“œ๋ธ”๋Ÿญ์— ๋ถ™์—ฌ ๋„ฃ๋Š”๋‹ค. ``` . โ”œโ”€โ”€ Dockerfile โ”œโ”€โ”€ README.md โ”œโ”€โ”€ api.iml โ”œโ”€โ”€ docker-entrypoint.sh โ”œโ”€โ”€ pom.xml โ”œโ”€โ”€ src โ”‚ โ”œโ”€โ”€ main โ”‚ โ”‚ โ”œโ”€โ”€ java โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ com โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ test โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Application.java ...TBD ``` ๊ฒฐ๊ณผ 2023. 10. 15.
221209 @JsonProperty Oneline TIL Checkout์— ์“ฐ๋Š”๊ฑฐ ๊ฑ ๋‚˜๋„ ๋ณด๊ด€ํ•ด๋ณด๋ ค๊ณ  page ์ƒ์„ฑํ–ˆ๋‹ค ใ„ฑใ„ฑ Jackson์ด Java class์˜ Json ์†์„ฑ์„ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด์„  Java Bean ๋ช…๋ช… ๊ทœ์น™์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋Œ€๋ฌธ์ž ์‹œ์ž‘ ์นผ๋Ÿผ์„ ๋งคํ•‘ํ•ด์•ผํ•  ๊ฒฝ์šฐ @JsonProperty๋ฅผ ์‚ฌ์šฉํ•˜์ž ex) Response Mapping ..."IPProtocol": "ESP",... ... @JsonProperty private String ipProtocol; ... 2022. 12. 9.
OOM์˜ ์›์ธ๊ณผ ์•„์ฃผ ๊ฐ„๋‹จํ•˜๊ฒŒ OOM ๋ฐœ์ƒ ์‹œํ‚ค๊ธฐ outofmemory๊ฐ€ ๋‚˜๋Š” ์ด์œ  ์„ค์ •๋œ ๋ฉ”๋ชจ๋ฆฌ ๋Œ€๋น„ ์š”์ฒญ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜ํƒ€๋‚˜๋Š” JVM์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ ์„ค์ •์˜ ์˜ค๋ฅ˜๋‚˜ ์‚ฌ์šฉ๋Ÿ‰ ์ดˆ๊ณผ๋กœ ์ธํ•ด jdk 5 ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” jdk hotspot ๋ฒ„๊ทธ๋กœ ์ธํ•ด oom์ด ๋‚ฌ๋˜ ๊ฒฝ์šฐ๋„ ์žˆ์—ˆ์Œ oom ์˜ˆ์‹œ Application์˜ oom(์ˆœ๊ฐ„์ ) ๊ณผ๋„ํ•œ ๋ฐ์ดํ„ฐ ์กฐํšŒ(100๋งŒ๊ฑด 200๋งŒ๊ฑด์”ฉ ์กฐํšŒํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ ๋“ค๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ, ์—…๋กœ๋“œ ํŒŒ์ผ์„ ํ›„์ฒ˜๋ฆฌ ํ•˜๊ธฐ๋กœ ํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ์— ๋“ค๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ) ์ž˜๋ชป๋œ ๋ฐ์ดํ„ฐ ์กฐ์ž‘(string) ์žฅ์‹œ๊ฐ„์— ๊ฑธ์ณ์„œ ์„œ์„œํžˆ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์žฅ์‹๋˜๋Š” ๊ฒฝ์šฐ(memory leak) Cache(์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ) leak Pool(๋ฐฐํƒ€์ ์œผ๋กœ ์‚ฌ์šฉํ•  ๋•Œ) leak (oom ๊ฐ€๊ธฐ ์ด์ „์— ํ’€ ๋ถ€์กฑ์œผ๋กœ 2์ฐจ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ์Œ.. 2022. 4. 16.
ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ๋‘ ๊ฐœ์˜ MQ Connection ์ •๋ณด ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ MQ Broker๋Š” ๊ฐ™์ด ์‚ฌ์šฉ์ค‘์ธ๋ฐ, vHost๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค. ๊ฒ€์ƒ‰์„ ํ•ด๋ดค๋Š”๋ฐ amqp์—์„œ ์ผ๋‹จ ์ด๋Ÿฐ ์ผ€์ด์Šค ์ง€์›์„ ์•ˆํ•˜๋Š” ๊ฒƒ ๊ฐ™์•˜๊ณ , ์–ด์ผ€ ํ• ์ง€ ๊ณ ๋ฏผํ•˜๊ณ  ์ฐพ์•„๋ณด๋‹ค๊ฐ€ RabbitConfig ์„ค์ • ํŒŒ์ผ ๋งŒ๋“ค์–ด ๋†“์€ ๊ณณ์— ๊ธฐ์กด์—” ๊ตฌ๋ƒฅ rabbitTemplate Autowired ํ•œ๊ฑธ ์‚ฌ์šฉํ–ˆ์œผ๋‚˜, ์›ํ•˜๋Š” ๋‘ connectionFactory์™€ rabbitTemplate๋ฅผ ์ƒˆ๋กœ bean์„ ๊ฐ๊ฐ ๋งŒ๋“ค์–ด์„œ ๊ตฌํ˜„ํ•ด์คฌ๋‹ค. ์•ฝ๊ฐ„ ๋˜‘๋˜‘ํ•˜๊ฒŒ ํ•ด์ฃผ๋Š”๊ฑธ ๋ฉ์ฒญํ•˜๊ฒŒ ๋‹ค์‹œ ๋ฐ”๊ฟ”๋ฒ„๋ฆฐ ๋Š๋‚Œ์ด์ž๋งŒ ์ผ๋‹จ์€ ๊ตฌ๋ถ„์„ ํ•˜๋Š”๊ฒŒ ๋ชฉ์ ์ด์—ˆ์œผ๋‹ˆ.. ์„ค์ • ๋ถ€๋ถ„ @Configuration public class RabbitMqConfig { @Resource private Environment environment; public final static.. 2022. 3. 5.