๊ฐ๋ฐ์ํ/์ด๊ฒ์ ๊ฒ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. ์ด์ 1 ๋ค์