๐ 2024.04.15 85์ผ์ฐจ
๐ 2024. 04. 16 86์ผ์ฐจ
์? ๋ค๋ฅธ์ชฝ์์ ์ฑํ ์ ํ๋์ง ๋ชจ๋ฅด๋๊น ๊ณ์ ์ฐ์ด๋ณด๋๊ฑฐ๋ค.
๊ทธ๋ผ ์ฑํ ์ ํ๋์ง ์๋ ค์ฃผ๋ฉด ๋ ๊น?
const sse = new EventSource("/sse/connent");
sse.addEventListener('chat_messageAdded', e => {
Chat__loadMore();
}
)
SSE : Server-Sent-Event์ ์ฝ์๋ก, ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ์ค์๊ฐ ์ด๋ฒคํธ๋ฅผ ์ ๋ฌํ๋ ์น ๊ธฐ์ .
OSIV๋ ์คํ๋ง ํ๋ ์์ํฌ์์ ์ฌ์ฉํ๋ ์ธ์ ๊ด๋ฆฌ ์ ๋ต ์ค ํ๋๋ก ์คํ๋ง ๋ถํธ์์๋ ๊ธฐ๋ณธ ๊ฐ์ด True๋ก ์ค์ ๋์ด ์๋ค.
์ ํ๋ฆฌ์ผ์ด์
์์ HTTP ์์ฒญ๋ง๋ค ์๋ก์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ(Connection)์ด ์์ฑ๋๋๋ฐ, ์ด์ ๋ฐ๋ผ ๋ง์ ์์ DB ์ปค๋ฅ์
์ด ๋ฐ์ํ์ฌ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ ์ ์๋ค.
ํ์ง๋ง OSIV ์ต์
์ True๋ก ์ค์ ํ์ฌ ์ฌ์ฉํ๋ฉด, ํธ๋์ญ์
์์์ฒ๋ผ ์ต์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปค๋ฅ์
์์ ์์ ๋ถํฐ API ์๋ต์ด ๋๋ ๋ ๊น์ง ์์์ฑ ์ปจํ
์คํธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปค๋ฅ์
์ ์ ์งํ๋ค.
OSIV๋ฅผ ๋๋ฉด ํธ๋์ญ์ ์ ์ข ๋ฃํ ๋ ์์์ฑ ์ปจํ ์คํธ๋ฅผ ๋ซ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปค๋ฅ์ ๋ ๋ฐํํ๋ค.
์ง์ฐ ๋ก๋ฉ์ ์์์ฑ ์ปจํ
์คํธ๊ฐ ์ด์ ์์ด์ผ ํ๋๋ฐ, ์์์ฑ ์ปจํ
์คํธ๊ฐ ๋ซํ๊ธฐ ๋๋ฌธ์ย ๋ชจ๋ ์ง์ฐ๋ก๋ฉ์ ํธ๋์ญ์
์์์ ์ฒ๋ฆฌํด์ผ ํ๋ค.
์ง์ฐ๋ก๋ฉ์ ์ฌ์ฉํ๋ ์ํ์์ OSIV๋ฅผ ๋๊ณ ์คํํ๋ฉด LazyInitializationException ์ด ๋ฐ์ํ๋ค.
์ด ๊ฒฝ์ฐย ์ง์ฐ ๋ก๋ฉ ์ฝ๋๋ฅผ ํธ๋์ญ์ ์์์ ์ฒ๋ฆฌํ๊ณ ๋ฐํํ๊ฑฐ๋, fetch join์ ์ฌ์ฉํด ํด๊ฒฐํด์ผ ํ๋ค.
OSIV๊ฐ true๋ฉด ์ง์ฐ ๋ก๋ฉ์ ์ฌ์ฉํ๋๊ฒ ํธ๋ฆฌํ๊ณ , false๋ฉด ์ปค๋ฅ์ ๋ฌธ์ ๊ฐ ํด๊ฒฐ ๋์ง๋ง ์ง์ฐ ๋ก๋ฉ์ ์ฌ์ฉํ๋๋ฐ ์ถ๊ฐ ์์ ์ด ํ์ํ๋ค.
๊ทธ๋ผ ์ธ์ OSIV๋ฅผ ์ฌ์ฉํด์ผ ํ ๊น?
์์ฒญ์ด ๋ง์ง ์์ ๊ฐ๋จํ ์๋น์ค๋ ์ปค๋ฅ์ ์ ๋ง์ด ์ฌ์ฉํ์ง ์์ ๊ณณ์์๋ true
๊ณ ๊ฐ ์๋น์ค ์ค์๊ฐ API๋ false (ex: ์ฑํ ๊ธฐ๋ฅ)
์คํ๋ง ๋ฐฐ์น๋ ์ํฐํ๋ผ์ด์ฆ ์์คํ ์ ๊ฐ๋ ฅํ ๋ฐฐ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ์ ์๋๋ก ์ค๊ณ๋ ๋ฐฐ์น ํ๋ ์์ํฌ์ด๋ค.

์คํ๋ง ๋ฐฐ์น๋ ๋ก๊น /์ถ์ , ํธ๋์ญ์ ๊ด๋ฆฌ, ์์ ์ฒ๋ฆฌ ํต๊ณ, ์์ ์ฌ์์, ๊ฑด๋๋ฐ๊ธฐ, ๋ฆฌ์์ค ๊ด๋ฆฌ ๋ฑ ๋์ฉ๋ ๋ ์ฝ๋ ์ฒ๋ฆฌ์ ํ์์ ์ธ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
๋ํ ์ต์ ํ ๋ฐ ํํฐ์ ๋ ๊ธฐ์ ์ ํตํด ๋์ฉ๋ ๋ฐ ๊ณ ์ฑ๋ฅ ์ผ๊ด ์์ ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๊ณ ๊ธ ๊ธฐ์ ์๋น์ค ๋ฐ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
๋จ์ํ๊ณ ๋ณต์กํ ๋์ฉ๋ ์ผ๊ด ์์ ์ ํ์ฅ์ฑ์ด ๋ฐ์ด๋ ๋ฐฉ์์ผ๋ก ํ๋ ์์ํฌ๋ฅผ ํ์ฉํ์ฌ ์๋นํ ์์ ์ ๋ณด๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค.
ํ๋ก๊ทธ๋จ => ๊ธฐ์ค
์ํธ์์ฉ์ด ํ์ํ๊ฐ
-> ์ => ์ผ๋ฐ ์น ์ฑ
-> ์๋์ => ๋ฐฐ์น(์ผ๊ด์ฒ๋ฆฌ) ์ฑ
ํ์๊ฐ์
์ฃผ์ ํ ๋ฒ์ฉ ์ ์ฒด ํ์๋ค์๊ฒ ๊ด๊ณ ๋ฉ์ผ์ ๋ฐ์ก (๋ฐฐ์น)
ํ์๊ฐ์ ํ ๊ฐ์ ์ธ์ฌ๋ฅผ ๋ฉ์ผ๋ก ๋ฐ์ก (์ผ๋ฐ)
Batch (๋จ์๊ฐ ํฐ, ์คํ์๊ฐ์ด ์กฐ๊ธ ๋ ๊ฑธ๋ฆฌ๋)
GET /member/join -> ํ์๊ฐ์
ํ
GET /member/sendWebZineToAllMember < ์๊ฐ์ด ๋ ์ค๋๊ฑธ๋ฆผ
batch ์ฌ์ฉ
GET /batch/member/sendWebZineToAllMember