โ Docker Continer๊ฐ ์ญ์ ๋์ด๋ Eureka์์ ๋ฐ๋ก ์์์ฐจ๋ฆฌ์ง ๋ชปํด ์ด๋ฏธ ์ข ๋ฃ๋ ์ปจํ ์ด๋๋ฅผ ํธ์ถํ๋ฏ๋ก ์๋ฌ๊ฐ ๋จ
๐ ์๊ฐ์ด ์ง๋๋ฉด ์๋์ผ๋ก ์์ฐ๋ ์ปจํ ์ด๋๊ฐ ์ญ์ ๋๋ค. ๋ง์ฝ ๊ธํ๋ค๋ฉด Eureka ์๋น์ค๋ฅผ ํ๋ฒ ๊ป๋ค ํค๋ฉด ๋๊ณ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ธ์คํด์ค๋ฅผ ๋๋๊ฑฐ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ ์ฐพ์๋ณด์!
โ Docker Container ๋ก ๊ฐ๊ฐ์ ์๋ฒ ์๋น์ค๋ฅผ ๋์ฐ๊ณ Jenkins๋ฅผ ํตํด ๊ฐ๊ฐ์ ํ์ดํ๋ผ์ธ์ผ๋ก ๊ตฌํํ๋ค. ์ด๋, ์ฌ๋ฌ๊ฐ์ ์ธ์คํด์ค์ ๊ฐ๊ฐ์ ์๋ฒ ์๋น์ค๋ฅผ ๋ฐ๋ก ๋ฐ์ด์ ๋ฐฐํฌ ๋ ๋ฆฝ์ฑ์ ์ด๋ฃฐ ์ ์๋ค.
์ด๋ฒ ํ๋ก์ ํธ์์๋ ์ธ์คํด์ค ๋น์ฉ ๋๋ฌธ์ ์ด๋ ๊ฒ๋ ๋ชปํ์ง๋ง (๋ง์ฝ ํ๋ค๋ฉด ๋ก๋๋ฐธ๋ฐ์ฑ๊น์ง ๊ตฌ์ถํ ์ ์์๋ค. ์ด๋ ๋์ปค ์ค์์ ๊ณ ๋ฏผํ์๊ณ ์ด๋ ์ด๋ฏธ ๋ชจ๋ ์๋น์ค๋ฅผ ๋์ปค ์ปจํ ์ด๋๋ก ๊ตฌ์ถํ์๊ธฐ์ ๊ฐ์ฅ ๊ฐํธํ ๋ฐฉ๋ฒ์ด๋ผ ํ๋จํ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ด์ ๊ด๋ จ๋ ๋ด์ฉ์ [ ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ (Docker Swarm, Kubernetes) ] ์ด ๊ฒ์๋ฌผ์ ํตํด ์์ ์๋ค.)
๋์ ๋ธ๋์น ๋ณ๋ก ๊ฐ๊ฐ์ ํ์ดํ๋ผ์ธ์ ๊ตฌํํ์ฌ ๋ฐฐํฌ ๋
๋ฆฝ์ฑ์ ์ต๋ํ ํ๋ณดํ์๋ค. ์ด๋๋ ๋คํธ์ํฌ๋ฅผ ๊ฐ์ด ๋๋ ๋ฑ ๊ณ ๋ คํด์ผ ํ๋ ์ ์ด ๋ง์๋ค.
์ดํ NGINX๋ฅผ ํตํด ๋ฆฌ๋ฒ์คํ๋ก์๋ฅผ ์์ฑํ๋ค. ์น ํ๋ก ํธ์๋๋ ๋๊ฐ์ด ๋์ด https๋ก ๋ณด์์ฑ์ ๋์๋ค. ์๋์๋ ํด๋น ๋ด์ฉ์ ์์ฑํด ๋์๋ค.
โ React ์์ setTimeout๊ณผ setInterval์ ์ด์ฉํ์ฌ ์ผ์ ์๊ฐ ๋์ (2~3๋ถ) ๋ช ์ด(1์ด) ๋จ์๋ก ์ ๋ณด๋ฅผ ์ฃผ๋ ํต์ ์ ๊ณ์ ๋ฐ๋ณตํ๊ธฐ๋ก ํ์๋ค. ์ด๋ฌ๋ฉด ์๊ฐ์ด ๋ฑ ๋ง์ถ์ด์ง์ง ์์๋ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ๊ฐ ๊ฐ๋ฅํ๋ค. 3๋ถ์ด ๋์ ์ ์ ์ ๊ฒฝ์ฐ ์ด๋ฏธ ์ฌ์ฉ์ ๊ฒฝํ์ด ๋จ์ด์ง๋ฏ๋ก ์ด ์ดํ๋ก๋ ์๊ฐ์ ์ํ๊ธฐ๋ก ํ์๋ค.
๐ ์ฐพ์๋ณด๋ ์ ๋ํฐ ์ฝ๋์ค์ ๋ฆฌ์กํธ์ ํต์ ํ ์ ์๋ ์ฝ๋๊ฐ ์๋ ๊ฒ ๊ฐ๋ค. ์ด๋ฅผ ํ์ฉํด์ ๋ฐ๋ก ๋ฆฌ์กํธ์ ํต์ ํ ์ ์๋๋ก ์์ ํ์
โ ์ธ์คํด์ค ๋น์ฉ ๋๋ฌธ์ ( ์๋ฒ ํ๊ฐ๋น 500MB์ธ๋ฐ 8๊ฐ์ ์๋ฒ๋ฅผ ๋๋ฏ๋ก ์ต์ 4๊ธฐ๊ฐ ์ด์์ด ํ์ํ๋ค + MYSQL, Redis ๋ฑ) ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ๊ณต๋ถ๋ง ํ๊ธฐ๋ก ํ๋ค. ์ผ๋จ ๊ฐ์ธ ์ธ์คํด์ค 2๊ฐ๋ฅผ ์ด์ด VPC Peering์ ํตํด ๋ ์ธ์คํด์ค๊ฐ ์ํตํ๋์ง๋ ํ ์คํธ ํด๋ณด์๋ค.
๐ ์์ธํ ์ฌํญ์
[ ๋ฆฌ๋ฒ์ค ํ๋ก์ (Reverse Proxy) ๊ณผ ๋ก๋ ๋ฐธ๋ฐ์ฑ(Load Balancing) ] ๋๋
[ ๋ก๋ ๋ฐธ๋ฐ์ฑ(Load balancing) ] ๊ณผ
[ ํฌ์๋ ํ๋ก์(forward proxy) ์ ๋ฆฌ๋ฒ์ค ํ๋ก์(Reverse Proxy) ] ๊ณผ
[ EC2 ๊ฐ์ ํต์ : VPC Peering / VPN / Ping ] ๊ฒ์๋ฌผ์์ ํ์ธํ๋ค.