๋ฐํ-๊ตฌ๋
ํจํด์ ์ต์ ๋ฒ ํจํด๊ณผ ๋น์ทํ์ง๋ง ์กฐ๊ธ ๋ค๋ฅธ ์ ์ด ํน์ง์ธ ๋์์ธํจํด์ด๋ค.
์ต์ ๋ฒ ํจํด์ด ํ ๊ฐ์ฒด์ ์ํ๊ฐ ๋ฐ๋ ๋ ๊ทธ ๊ฐ์ฒด์ ์์กดํ๋ ๋ค๋ฅธ ๊ฐ์ฒด๋ค์๊ฒ ์๋ฆผ์ด ๊ฐ๊ณ ์๋์ผ๋ก ์ ๋ณด๊ฐ ๊ฐฑ์ ๋๋ 1:N์ ๊ฐํ ๊ด๊ณ๋ฅผ ๊ฐ์ก๋ค๋ฉด, Pub-subํจํด์ ์ด๋ณด๋ค๋ ๋์จํ ๊ด๊ณ๋ฅผ ๊ฐ์ง๋ ๋์์ธ ํจํด์ด๋ค.
์ด ๋์์ธ ํจํด์ ๋น๋๊ธฐ ๋ฉ์ธ์ง ํจ๋ฌ๋ค์์ผ๋ก ,๋ฐํ์์ธ Publisher๊ฐ ์๊ณ , ์ด๋ฒคํธ์ ๋ํด์ ๊ตฌ๋ ์ค์ธ Subscriber๊ฐ ์์ผ๋ฉฐ ๊ทธ ๋ ์ฌ์ด์๋ Message Broker๊ฐ ์กด์ฌํ๋ค.
Message Broker๋ Publisher๊ฐ ๋ฐํํ๋ ์ด๋ฒคํธ์ ๋ํด์ ๊ด๋ฆฌํ๊ณ , ๋ง์ฝ ์ด๋ฒคํธ๋ฅผ ํธ์ถํ๊ฒ ๋๋ค๋ฉด Message Broker๋ฅผ ํตํด ์ ํด์ง ๋ฒ์ฃผ์ ๋ฐ๋ผ ๊ตฌ๋ ์ ์ ์ฒญํ ์์ ์์๊ฒ ์ ๋ฌ์ ํ๋ ์ญํ ์ด๋ค. ์ด ๊ณผ์ ์์ ๋ฉ์์ง ํ๊ฐ ๋ธ๋ก์ปค์ ์ญํ ์ ์ํํ๋ฉฐ, ๊ตฌ๋ ๊ณผ ๋ฐํ ์ดํ์ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํด์ค๋ค.
์ต์ ๋ฒ ํจํด๊ณผ์ ์ฐจ์ด์
๋ฐ๋ผ์ ๋ฐํ์๊ฐ ์ด๋ ํ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๊ฑฐ๋ ๊ตฌ๋ ์๊ฐ ์ด๋ค ์ด๋ฒคํธ์ ๋ํด์ ๊ตฌ๋ ํ ๋ค์ ์ผ์ ๋ชจ๋ ๋ฉ์์ง ๋ธ๋ก์ปค๊ฐ ์ผ์ํ์ฌ ๋์ ธ์ ธ ์๋ ๊ตฌ๋ ๊ณผ ๋ฐํ์ ๋ณด๊ณ ์์์ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ต์ ๋ฒ ํจํด๊ณผ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ผ๋ก ๋ฐํ์์ ๊ตฌ๋ ์๊ฐ ์๋ก๋ฅผ ๋ชฐ๋ผ๋ ์ํต์ด ๊ฐ๋ฅํ๋ค๋ ์ ์ด๊ธฐ๋ ํ๋ค.
์ด ์ธ์๋ ์ฐจ์ด์ ์
- ์ต์ ๋ฒ ํจํด๋ณด๋ค ๋ ๋ฎ์ ๊ฒฐํฉ๋
- ์ต์ ๋ฒ ํจํด์ ๋๊ธฐ์ ์ผ๋ก ๋์ํ์ง๋ง ๋ฐํ๊ตฌ๋ ํจํด์ ๋น๋๊ธฐ์ ์ผ๋ก ๋์
- ์ต์ ๋ฒ ํจํด ๋จ์ผ ๋๋ฉ์ธ์์ ๋์ํ๋ฉฐ ๋ฐํ๊ตฌ๋ ํฌ๋ก์ค ๋๋ฉ์ธ ์ํฉ์์๋ ๋์์ด ๊ฐ๋ฅ
- ์ต์ ๋ฒ ํจํด๋ณด๋ค ์ฝ๋ ๊ด๋ฆฌ, ์ฌ์ฌ์ฉ์ฑ, ์์ ์ฑ์ด ๋์ ๋ฑ์ด ์๋ค.
๋ฉ์์ง ํ
์ด๋ฌํ ๋ฉ์์ง ๋ธ๋ก์ปค์ ์๋ ๋ฉ์์ง ํ์ ๊ฒฝ์ฐ ๋ฉ์์ง ์งํฅ ๋ฏธ๋ค์จ์ด (MOM : Message Oriented Middleware, ๋น๋๊ธฐ ๋ฉ์์ง๋ฅผ ์ฌ์ฉํ๋ ์์ฉ ํ๋ก๊ทธ๋จ ๊ฐ ๋ฐ์ดํฐ ์ก์์ )๋ก ๊ตฌํํ ์์คํ ์ผ๋ก, ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ๋ฐฐ์น ์์ ์ด๋ ์ฑํ ์๋น์ค, ๋น๋๊ธฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฑ์ ์ด์ฉ๋๋ค.
๋ฉ์์ง ํ์ ํน์ง
- ๋น๋๊ธฐ(Asynchronous) : ํ์ ๋ฃ์ด์ ๋์ค์ ์ฒ๋ฆฌ ๊ฐ๋ฅ
- ๋น๋์กฐ(Decoupling) : ์ฑ๊ณผ ๋ถ๋ฆฌ ๊ฐ๋ฅ
- ํ๋ ฅ์ฑ(Resilience) : ์ผ๋ถ ์คํจ๊ฐ ์ ์ฒด์ ์ํฅ์ ๋ผ์น์ง ์์
- ๊ณผ์(Redunadancy) : ์คํจํ ๊ฒฝ์ฐ ์ฌ์คํ ๊ฐ๋ฅ
- ๋ณด์ฆ(Guarantees) : ์์ ์ฒ๋ฆฌ ํ์ธ ๊ฐ๋ฅ
- ํ์ฅ์ฑ(Scalable) : ๋ค์ ํ๋ก์ธ์ค๋ค์ด ํ์ ๋ฉ์์ง ๋ณด๋ด๊ธฐ ๊ฐ๋ฅ
ํ์ง๋ง ์ด๋ฌํ ๋ฉ์์ง ํ์ ๋จ์ ์ผ๋ก๋ ํ์ด๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ตญ ๋ค์ ์๋ ๋ฉ์์ง์ ๊ฒฝ์ฐ ๊ตฌ๋ ์์๊ฒ ๊ฐ๊ธฐ ๊น์ง ๊ณผ๋ํ ํธ๋ํฝ์ ๋ฐ๋ผ ์ง์ฐ์ด ๋ง์ด ๋ฐ์ํ ์๋ ์๋ค๋ ์ ์ด ์๋ค.