๐ ์ผ๋จ ์ค๋งํธ๋ฏธ๋ฌ์ ๋ฆฌ์ํธ์์ ํด๋น ํ์ด์ง์ ๋๋ฌํ๋ค๋ ์ ํธ๋ฅผ ์๋ฒ์ชฝ์๋ค๊ฐ ์ ์กํ๋ฉด ์๋ฒ๋จ์์ ์๋๋ก์ด๋์ ์ ํธ๋ฅผ ๋ณด๋ด๊ณ ์๋๋ก์ด๋ ํฌ์ค์ปค๋ฅํธ๋ฅผ ์ฌ์ฉํ์ฌ ํฌ์ค ๋ฐ์ดํฐ๊ฐ์ ๋ฐ์์ ์๋ฒ๋จ์ผ๋ก ๋ณด๋ด์ค๋ค. ํฌ์ค ๋ฐ์ดํฐ ๊ฐ์ด ๋์ฐฉํ๋ค๋ฉด ์๋ฒ์ชฝ์์ ๋ฆฌ์กํธ๋ก ์ ํธ๋ฅผ ๋ณด๋ด๊ณ ํฌ์ค ๋ฐ์ดํฐ๊ฐ์ ๋ณด๋ด์ค๋ค. ์ด๋ฐ์์ ํ๋ฆ์ ์ก์๋ค. ์ด๋, ์๋ฒ์ชฝ์์ ํด๋ผ์ด์ธํธ์ชฝ์ผ๋ก ์ ํธ๋ฅผ ์ค๋๋ ์น์์ผ์ ๊ณ ๋ คํ์๋ค.
โ ์ฆ, ๋ฆฌ์กํธ -> urlํธ์ถ(ํฌ์คํ์ด์ง ๋๋ฌ url) -> ์๋ฒ ์น์์ผ์ผ๋ก ๋ชจ๋ฐ์ผ์ ์ ํธ -> ์๋๋ก์ด๋ ํฌ์ค์ปค๋ฅํธ ๊ฐ ํธ์ถ -> urlํธ์ถ(ํฌ์ค๋ฐ์ดํฐ๊ฐ ์ ๋ฌ url) -> ์๋ฒ์์ ์ ๋ฌ๋ฐ์ ๊ฐ์ ์ ์ฅํ๊ณ ์น์์ผ์ผ๋ก ๋ฆฌ์กํธ์๋ค๊ฐ ํฌ์ค๋ฐ์ดํฐ๊ฐ ์ ๋ฌ -> ๋ฆฌ์กํธ์์ ์ต์ข ์ ์ผ๋ก ๋ฐ์ดํฐ๊ฐ์ ๋ฐ์์ ๊ฒฝ์ฐ์๋ง ํ๋ฉด์ ๋ฐ์ฐ๊ธฐ(๊ทธ์ ์๋ ๋ก๋ฉํ๋ฉด)
์ด๋, ๋ชจ๋ฐ์ผ์ ๋ฐฑ๊ทธ๋ผ์ด๋ or ํฌ๊ทธ๋ผ์ด๋ ํํ๋ก ๋์ํ๊ณ ์์ด์ผ ์ฑ์ด ์ ์ผ์ ธ์์ด๋ ํฌ์ค์ปค๋ฅํธ์ ์ํตํ ์ ์๋ค. ๋ค๋ง, ๋ค๋ฅธ ๊ธฐ๋ฅ ์๋ ์ฑ์ ๋ฐฑ๊ทธ๋ผ์ด๋ ํํ๋ก ๋ฐฐํฌ๊ฐ ๋ถ๊ฐ๋ฅํ๊ฒ์ผ๋ก ์๊ณ ์๋ค.
์ผ๋จ ํํ๋ ์ด๋ ๊ฒ ์ก์์ง๋ง ๊ตฌํ์ด ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์์ ํด์ผ ํ๋ ๋ฐฉ๋ฒ๊น์ง ๊ณ ๋ คํ์!
๐ MSA์ k8s๋ฅผ ๋์ ํ๋ ํ๊ฒฝ์์ ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด์ ์ค์น๋ react ํด๋ผ์ด์ธํธ์์ ์ฌ๋ฌ ํํ์ ์๋ฒ์ ํธ์ถ์ ํ ๋, ์ด๋ฅผ ์ด๋ค์์ผ๋ก ํ๋จํ ์ง ๊ณ ๋ฏผ์ด ๋์๋ค.
๐ ์ด ๊ณผ์ ์์ ํด๋ผ์ด์ธํธ๊ฐ ์ง์ ์ฌ๋ฌ ํํ์ ์๋ฒ์ ์ํตํ๋ค๊ณ ๊ฐ์ ํ๋ค๋ฉด gateway๋ฅผ kong์ผ๋ก ์ฌ์ฉํ์ฌ์ ๊ด๋ฆฌ ํด์ผ๋๋์ง ๊ณ ๋ คํด๋ณด์๋ค. spring cloud์ ๊ฒฝ์ฐ๋ java๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ๋์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ ์์ธํ ์ฌํญ์ [ ์คํ์์ค Gateway ๋น๊ต ] ์ ์ฐธ๊ณ ํ์!
๋ค๋ง, kong์ Nginx, Lua ๊ธฐ๋ฐ์ด๊ธฐ ๋๋ฌธ์ ๊ตฌํํ๋ ๊ณผ์ ์ ์๊ฐ์ด ์ค๋๊ฑธ๋ฆด ๊ฒ ๊ฐ๋ค. ์ฐ๋ฆฌ ์๋น์ค๋จ์ด ํฌ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ๊ณ ๋ คํ๊ธฐ๋ก ํ์๋ค.
๐ ๋ค์์ผ๋ก ์๊ฐํ๊ฒ์ ์๋ฒ๋จ์ ์ผ๋จ java๋ก ํต์ผํ๊ณ java ๋จ์์ python์ ๋ถ๋ฅด๋ ํํ์ด๋ค. ๊ทธ๋ ๋ค๋ฉด java์์ python์ ์ด๋ป๊ฒ ํธ์ถํ ๊ฒ์ธ๊ฐ?
๐ ์คํ๋ง ํด๋ผ์ฐ๋๋ฅผ netflix ๋ก ๋์ ํ๋ค๋ฉด ๋ชจ๋ ์๋ฒ๋ฅผ ์๋ฐ๋ก ํต์ผํ๋ฉฐ ์๋ฐ <-> ํ์ด์ฌ : WebClient ๋ก ์ํตํ ์ ์๋ค.
โ ์คํ๋ง ํด๋ผ์ฐ๋ ๊ฒ์ดํธ์จ์ด์์๋ ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ ๋์ ์ ์ง์ ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ํ์ด์ฌ์์ Fast API๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ๋ฌธ์ ๊ฐ ์๋ค! ํนํ, ๋์ปค์ค์์ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ผ๋ ๋์ปค์ค์ ์๋น์ค ๋ค์์ผ๋ก ์ฐพ์๊ฐ ์ ์๋ค. ๋ค๋ง ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ์ ๋ฌ๋ฆฌ ๋์ปค์ค์ ์๋น์ค ๋ค์์ผ๋ก ๋ผ์ฐํ ํ ๊ฒฝ์ฐ ํฌํธ๋ฒํธ๋ฅผ ์ ์ด์ค์ผ ํ๋ค.
๐ ์ฐ๋ฆฌ๋ ์ค๋งํธ๋ฏธ๋ฌ์์ ์ผ๊ตด์ธ์์ ํตํด ํ์๊ฐ์ ๋ฐ ๋ก๊ทธ์ธ์ ๊ตฌํํ๋ ค๊ณ ํ๋ค. ์ด๋ ์ผ๊ตด์ธ์ ์ฝ๋๋ ํ์ด์ฌ์ผ๋ก ์์ฑํ์ฌ ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด์ ๋ด์๋๊ณ ๋ฆฌ์กํธ ์ฝ๋๋ ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด์ ๋ด์๋๋ค. ๋ฐ๋ผ์ ์ผ๊ตด์ธ์๊น์ง ์๋ฐ ์๋ฒ๋จ์ผ๋ก ์ํตํ ํ์๊ฐ ์๋๋ฐ ์ด๋ ๊ทธ๋ ๋ค๋ฉด ๋ฆฌ์กํธ์ ํ์ด์ฌ์ ์ด๋ค์์ผ๋ก ์ํตํด์ผ ํ ๊น?
โ ์นด๋ฉ๋ผ ๋ชจ๋ ํ์ด์ฌ์ฝ๋์ ๋ฆฌ์กํธ ์ฌ์ด์์๋ WebSocket์ ํ์ฉํ ํต์ ์ ์ทจํ๊ธฐ๋ก ํ์๋ค. ์ ์ฒด์ ์ธ ํ์๊ฐ์ ๋ฐ ๋ก๊ทธ์ธ ์ํ์ค ๋ค์ด์ด๊ทธ๋จ์ ์๋์ ๊ฐ์ด ์์ฑํ์๋ค.
โ ์ฐธ๊ณ ๋ก ์ํต๋ฐฉ์์ ์น์์ผ๊ณผ ์นRTC์ค์ ๊ณ ๋ฏผํ๋๋ฐ ์น์์ผ์ ํ์ฉํ๊ธฐ๋ก ํ์๋ค. ์ด์ ๋ [ WebSocket ๊ณผ WebRTC ] ๊ฒ์๊ธ์ ํตํด ์ค๋ช ํด๋์๋ค.
์ผ๋จ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ๋์ ํ๋ค๊ณ ๊ฐ์ ํ๋ฉด NGINX Ingress Controller๋ฅผ ์ฌ์ฉํ ์์ ์ด๊ณ ๋ง์ฝ ๋์ ํ์ง ์๋๋ค๋ฉด Eureka๋ฅผ ๊ณ ๋ คํด๋ณด์
โ ์ต์ข ์ ์ผ๋ก ๋์ปค์ค์์ ์ฌ์ฉํ๊ธฐ๋ก ํ์๋ค. ๋์ปค์ค์์ ๋ณ๋๋ก ๋์ค์ปค๋ฒ๋ฆฌํ์์์ด ์๋น์ค๋ช ์ผ๋ก ์๋ฒ ์๋น์ค๋ฅผ ์ฐพ์ ์ ์๋ค. ๋ค๋ง, ํฌํธ๋ฒํธ๋ ๊ธฐ์ ํด์ค์ผ ํ๋ฏ๋ก ์ด์์์ ๋ก๋๋ฐธ๋ฐ์ฑ๊น์ง ๊ตฌ์ถํ๋ ค๋ฉด Eureka์ ๊ฐ์ ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ๋ฅผ ํจ๊ป ์ฐ๋๊ฒ๋ ๋์์ง ์๋ค.