Consul์ ์๋ก ๋ค์ด Alexander Sigachev์ ๋ถ์ฐ ์์คํ ์์์ ์๋น์ค ๊ฒ์ ๋ณด๊ณ ์ ์ฌ๋ณธ์ ์ฝ์ด ๋ณด์๊ธฐ ๋ฐ๋๋๋ค.
Service Discovery๋ ์ต์ํ์ ๋น์ฉ์ผ๋ก ์๋ก์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ์กด ํ๊ฒฝ์ ์ฐ๊ฒฐํ ์ ์๋๋ก ๋ง๋ค์ด์ก์ต๋๋ค. ์๋น์ค ๊ฒ์์ ์ฌ์ฉํ๋ฉด ๋์ปค ์ปจํ ์ด๋๋ ๊ฐ์ ์๋น์ค๋ฅผ ์คํ ์ค์ธ ํ๊ฒฝ์์ ์ต๋ํ ๋ถ๋ฆฌํ ์ ์์ต๋๋ค.
๋ชจ๋๋ฅผ ํ์ํฉ๋๋ค! ์ ๋ Alexander Sigachev์ด๊ณ Inventos์์ ์ผํฉ๋๋ค. ์ค๋์ Service Discovery์ ๊ฐ์ ๊ฐ๋ ์ ์๊ฐํ๊ฒ ์ต๋๋ค. Consul์ ์๋ก ๋ค์ด Service Discovery๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
Service Discovery๋ ์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๊น? Service Discovery๋ ์ต์ํ์ ๋น์ฉ์ผ๋ก ์๋ก์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ์กด ํ๊ฒฝ์ ์ฐ๊ฒฐํ ์ ์๋๋ก ๋ง๋ค์ด์ก์ต๋๋ค. ์๋น์ค ๊ฒ์์ ์ฌ์ฉํ๋ฉด ๋์ปค ์ปจํ ์ด๋๋ ๊ฐ์ ์๋น์ค๋ฅผ ์คํ ์ค์ธ ํ๊ฒฝ์์ ์ต๋ํ ๋ถ๋ฆฌํ ์ ์์ต๋๋ค.
๊ทธ๊ฒ์ ์ด๋ป๊ฒ ์๊ฒผ๋์? ์น์ ์ ํ์ ์ธ ์์์ ์ด๋ ์ฌ์ฉ์์ ์์ฒญ์ ์๋ฝํ๋ ํ๋ฐํธ ์๋์ ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด๋ฅผ ๋ฐฑ์๋๋ก ๋ผ์ฐํ ํฉ๋๋ค. ์ด ์์์์ ์ด ๋ถํ ๋ถ์ฐ ์ฅ์น๋ ๋ ๋ฐฑ์๋์ ๊ท ํ์ ์กฐ์ ํฉ๋๋ค.
์ฌ๊ธฐ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ธ ๋ฒ์งธ ์ธ์คํด์ค๋ฅผ ์์ํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์๋๋ฉด Service Discovery์ ๋ฑ๋ก๋ฉ๋๋ค. ์๋น์ค ๊ฒ์์ ๋ก๋ ๋ฐธ๋ฐ์์ ์๋ฆฝ๋๋ค. ๋ก๋ ๋ฐธ๋ฐ์๋ ๊ตฌ์ฑ์ ์๋์ผ๋ก ๋ณ๊ฒฝํ๊ณ ์ ๋ฐฑ์๋๊ฐ ์๋๋ฉ๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ๋ฐฑ์๋๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ๋ฐ๋๋ก ์์ ์์ ์ ์ธํ ์ ์์ต๋๋ค.
Service Discovery๋ก ํธ๋ฆฌํ๊ฒ ์ํํ ์ ์๋ ๋ ๋ค๋ฅธ ์์ ์ ๋ฌด์์ ๋๊น? ์๋น์ค ๊ฒ์์ nginx ๊ตฌ์ฑ, ์ธ์ฆ์ ๋ฐ ํ์ฑ ๋ฐฑ์๋ ์๋ฒ ๋ชฉ๋ก์ ์ ์ฅํ ์ ์์ต๋๋ค.
Service Discovery๋ฅผ ์ฌ์ฉํ๋ฉด ์ค๋ฅ๋ฅผ ๊ฐ์งํ๊ณ ๊ฐ์งํ ์๋ ์์ต๋๋ค. ์ค๋ฅ๋ฅผ ๊ฐ์งํ๊ธฐ ์ํ ๊ฐ๋ฅํ ์ฒด๊ณ๋ ๋ฌด์์ ๋๊น?
- ์ฐ๋ฆฌ๊ฐ ๊ฐ๋ฐํ ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ Service Discovery์ ์์ง ์๋ ์ค์์ ์๋์ผ๋ก ์๋ฆฝ๋๋ค.
- ์๋น์ค ๊ฒ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ์ฉ์ฑ์ ํด๋งํฉ๋๋ค.
- ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ์ฉ์ฑ์ ํ์ธํ๊ณ ์๋น์ค ๊ฒ์์ ๋ชจ๋ ๊ฒ์ด ์ ์์ด๊ณ ์๋ํ ์ ์์์ ์๋ฆฌ๊ฑฐ๋ ๋ฐ๋๋ก ๋ชจ๋ ๊ฒ์ด ์ข์ง ์์ ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ธ์คํด์ค๋ฅผ ๋ฐธ๋ฐ์ฑ์์ ์ ์ธํด์ผ ํจ์ ์๋ฆฌ๋ ํ์ฌ ์คํฌ๋ฆฝํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํฉ๋๋ค.
๊ฐ ๊ตฌ์ฑํ๋ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ์ํํธ์จ์ด์ ๋ฐ๋ผ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐฉ๊ธ ์ ํ๋ก์ ํธ ๊ฐ๋ฐ์ ์์ํ ๋ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋น์ค ๊ฒ์์ ์๋ฆด ๋ ์ฒด๊ณ๋ฅผ ์ฝ๊ฒ ์ ๊ณตํ ์ ์์ต๋๋ค. ๋๋ Service Discovery๊ฐ ํ์ธํ๊ณ ์๋ ๊ฒ์ ์ฐ๊ฒฐํ ์๋ ์์ต๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ ์์๋ฐ์๊ฑฐ๋ ๋ค๋ฅธ ์ฌ๋์ด ๊ฐ๋ฐํ ๊ฒฝ์ฐ ํธ๋ค๋ฌ๋ฅผ ์์ฑํ ๋ ์ธ ๋ฒ์งธ ์ต์ ์ด ์ ํฉํ๋ฉฐ ์ด ๋ชจ๋ ๊ฒ์ด ์๋์ผ๋ก ์์ ์ ํฌํจ๋ฉ๋๋ค.
์ด๊ฒ์ ํ๋์ ์์ ๋๋ค. nginx ํํ์ ๋ก๋๋ฐธ๋ฐ์๊ฐ ์ฌ๋ถํ ๋ฉ๋๋ค. ์ด๋ Consul๊ณผ ํจ๊ป ์ ๊ณต๋๋ ์ ํ์ ์ ํธ๋ฆฌํฐ์ ๋๋ค. ์ด๊ฒ์ ์์ฌ ํ ํ๋ฆฟ์ ๋๋ค. ์ฐ๋ฆฌ๋ ๊ท์น์ ์ค๋ช ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ํ ํ๋ฆฟ(Golang ํ ํ๋ฆฟ ์์ง)์ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ๋งํฉ๋๋ค. ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฐ์ํ๋ค๋ ์๋ฆผ์ด ๋ค์ ์์ฑ๋๊ณ "reload" ๋ช ๋ น์ด Service Discovery๋ก ์ ์ก๋ฉ๋๋ค. ๊ฐ์ฅ ๊ฐ๋จํ ์๋ ์ด๋ฒคํธ์ ์ํด nginx๊ฐ ์ฌ๊ตฌ์ฑ๋๊ณ ๋ค์ ์์๋๋ ๊ฒฝ์ฐ์ ๋๋ค.
์์ฌ๋ ๋ฌด์์ ๋๊น?
-
์ฐ์ ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ(Service Discovery)์ ๋๋ค.
-
๊ฐ์ฉ์ฑ ํ์ธ ๋ฉ์ปค๋์ฆ(์ํ ํ์ธ)์ด ์์ต๋๋ค.
-
KV ์คํ ์ด๋ ์์ต๋๋ค.
-
๊ทธ๋ฆฌ๊ณ Multi Datacenter๋ฅผ ํ์ฉํ๋ ๋ฅ๋ ฅ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
์ด ๋ชจ๋ ๊ฒ์ด ๋ฌด์์ ์ฌ์ฉ๋ ์ ์์ต๋๊น? KV ์คํ ์ด์๋ ์์ ๊ตฌ์ฑ์ ์ ์ฅํ ์ ์์ต๋๋ค. Health Checking ์ง์ญ ์๋น์ค๋ฅผ ํ์ธํ๊ณ ์๋ ค๋๋ฆด ์ ์์ต๋๋ค. Multi Datacenter๋ฅผ ์ด์ฉํ์ฌ ์๋น์ค ๋งต์ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, Amazon์ ์ฌ๋ฌ ์์ญ์ ๋ณด์ ํ๊ณ ๊ฐ์ฅ ์ต์ ์ ๋ฐฉ์์ผ๋ก ํธ๋ํฝ์ ๋ผ์ฐํ ํ๋ฏ๋ก ๋ฐ์ดํฐ ์ผํฐ ๊ฐ์ ๋ถํ์ํ ์์ฒญ์ด ๋ฐ์ํ์ง ์์ผ๋ฉฐ ๋ก์ปฌ ํธ๋ํฝ๊ณผ ๋ณ๋๋ก ์๊ธ์ด ๋ถ๊ณผ๋๋ฏ๋ก ์ง์ฐ ์๊ฐ์ด ์ค์ด๋ญ๋๋ค.
Consul์์ ์ฌ์ฉ๋๋ ์ฉ์ด์ ๋ํด ์กฐ๊ธ ์์๋ณด๊ฒ ์ต๋๋ค.
- Consul์ Go๋ก ์์ฑ๋ ์๋น์ค์ ๋๋ค. Go ํ๋ก๊ทธ๋จ์ ์ฅ์ ์ค ํ๋๋ ๋ฐฉ๊ธ ๋ค์ด๋ก๋ํ 1๊ฐ์ ๋ฐ์ด๋๋ฆฌ ํ์ผ์ ๋๋ค. ์ด๋์์๋ ์คํ๋๋ฉฐ ์ข ์์ฑ์ด ์์ต๋๋ค.
- ๊ทธ๋ฐ ๋ค์ ํค๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ ๋ชจ๋๋ ์๋ฒ ๋ชจ๋์์ ์ด ์๋น์ค๋ฅผ ์์ํ ์ ์์ต๋๋ค.
- ๋ํ "๋ฐ์ดํฐ ์ผํฐ" ์์ฑ์ ์ฌ์ฉํ๋ฉด ์ด ์๋ฒ๊ฐ ์ํ ๋ฐ์ดํฐ ์ผํฐ์ ๋ํ ํ๋๊ทธ๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
- ํฉ์ โ ๋๋ชฉ ํ๋กํ ์ฝ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ๊ด์ฌ ์๋ ๋ถ์ด ๊ณ์๋ค๋ฉด ์์ฌ ์น์ฌ์ดํธ์์ ์ด์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฝ์ด๋ณด์ค ์ ์์ต๋๋ค. ์ด๋ ๋ฆฌ๋๋ฅผ ๊ฒฐ์ ํ๊ณ ์ด๋ค ๋์ด ์ ํจํ๊ณ ์ ๊ทผ ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋๋์ง ๊ฒฐ์ ํ ์ ์๋ ํ๋กํ ์ฝ์ ๋๋ค.
- ๊ฐ์ญ(Gossip)์ ๋ ธ๋ ๊ฐ ์ํธ ์์ฉ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ํ๋กํ ์ฝ์ ๋๋ค. ๊ฒ๋ค๊ฐ ์ด ์์คํ ์ ๋ถ์ฐ๋์ด ์์ต๋๋ค. ํ๋์ ๋ฐ์ดํฐ ์ผํฐ ๋ด์์ ๋ชจ๋ ๋ ธ๋๋ ์ด์ ๋ ธ๋์ ํต์ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด์ ๋ฐ๋ผ ํ์ฌ ์ํ์ ๋ํ ์ ๋ณด๊ฐ ์๋ก์๊ฒ ์ ์ก๋๋ค. ์ด๊ฒ์ ์ด์ ๊ฐ์ ํ๋ด์ด๋ผ๊ณ ๋งํ ์ ์์ต๋๋ค.
- LAN Gossip โ ๋์ผํ ๋ฐ์ดํฐ ์ผํฐ ๋ด์ ์ด์ ๊ฐ์ ๋ก์ปฌ ๋ฐ์ดํฐ ๊ตํ.
- WAN Gossip - ๋ ๋ฐ์ดํฐ ์ผํฐ ๊ฐ์ ์ ๋ณด๋ฅผ ๋๊ธฐํํด์ผ ํ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฒ๋ก ํ์๋ ๋ ธ๋ ๊ฐ์ ์ ๋ณด๊ฐ ํ๋ฆ ๋๋ค.
- RPC โ ์๋ฒ์ ํด๋ผ์ด์ธํธ๋ฅผ ํตํด ์์ฒญ์ ์คํํ ์ ์์ต๋๋ค.
RPC์ ๋ํ ์ค๋ช ์ ๋๋ค. Consul์ด ๊ฐ์ ๋จธ์ ์ด๋ ๋ฌผ๋ฆฌ์ ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ์คํ๋๊ณ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ํ์ง์์ ๊ทธ์๊ฒ ์ฐ๋ฝํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ก์ปฌ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ ๋ณด๋ฅผ ์์ฒญํ๊ณ ๋๊ธฐํ๋ฉ๋๋ค. ์ค์ ์ ๋ฐ๋ผ ๋ก์ปฌ ์บ์์์ ์ ๋ณด๋ฅผ ๊ฒ์ํ๊ฑฐ๋ ๋ฆฌ๋, ์๋ฒ ๋ง์คํฐ์ ๋๊ธฐํํ ์ ์์ต๋๋ค.
์ด ๋ ๊ฐ์ง ๊ณํ์๋ ์ฅ๋จ์ ์ด ์์ต๋๋ค. ๋ก์ปฌ ์บ์๋ก ์์ ํ๋ฉด ์๋๊ฐ ๋น ๋ฆ ๋๋ค. ์๋ฒ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ก ์์ ํ๋ ๊ฒฝ์ฐ ์๊ฐ์ด ๋ ๊ฑธ๋ฆฌ์ง๋ง ๋ ๊ด๋ จ์ฑ์ด ๋์ ์ ๋ณด๋ฅผ ์ป์ ์ ์์ต๋๋ค.
์ด๊ฒ์ ๊ทธ๋ํฝ์ผ๋ก ๋ฌ์ฌํ๋ฉด ์ด๊ฒ์ด ์ฌ์ดํธ์ ๊ทธ๋ฆผ์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ธ ๋ช ์ ๋ง์คํฐ๊ฐ ์คํ๋๊ณ ์์์ ์ ์ ์์ต๋๋ค. ํ๋๋ ๋ฆฌ๋๋ก์ ๋ณํ๋ก ํ์๋ฉ๋๋ค. ์ด ์์๋ UDP/TCP๋ฅผ ํตํด ๋ก์ปฌ๋ก ์๋ก ์ ๋ณด๋ฅผ ๊ตํํ๋ ์ธ ๊ฐ์ ํด๋ผ์ด์ธํธ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ ์ผํฐ ๊ฐ์ ์ ๋ณด๋ ์๋ฒ ๊ฐ์ ์ ์ก๋ฉ๋๋ค. ์ฌ๊ธฐ์ ํด๋ผ์ด์ธํธ๋ ๋ก์ปฌ๋ก ์๋ก ์ํธ ์์ฉํฉ๋๋ค.
Consul์ ์ด๋ค API๋ฅผ ์ ๊ณตํ๋์? ์ ๋ณด๋ฅผ ์ป๊ธฐ ์ํด Consul์๋ ๋ ๊ฐ์ง ์ ํ์ API๊ฐ ์์ต๋๋ค.
์ด๊ฒ์ด DNS API์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Consul์ ํฌํธ 8600์์ ์คํ๋ฉ๋๋ค. ์์ฒญ ํ๋ก์๋ฅผ ๊ตฌ์ฑํ๊ณ ๋ก์ปฌ DNS๋ฅผ ํตํด ๋ก์ปฌ ํ์ธ์ ํตํด ์ก์ธ์ค๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. ๋๋ฉ์ธ๋ณ๋ก ์ฟผ๋ฆฌํ๊ณ ์ด์ ๋ํ ์๋ต์ผ๋ก IP ์ฃผ์ ์ ๋ณด๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค.
HTTP API - ๋๋ ํฌํธ 8500์ ํน์ ์๋น์ค์ ๋ํ ์ ๋ณด๋ฅผ ๋ก์ปฌ๋ก ์์ฒญํ๊ณ JSON ์๋ต, ์๋ฒ์ IP, ํธ์คํธ, ๋ฑ๋ก๋ ํฌํธ๋ฅผ ์์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ถ๊ฐ ์ ๋ณด๋ ํ ํฐ์ ํตํด ์ ์ก๋ ์ ์์ต๋๋ค.
Consul์ ์คํํ๋ ค๋ฉด ๋ฌด์์ด ํ์ํฉ๋๊น?
์ฒซ ๋ฒ์งธ ์ต์ ์ธ ๊ฐ๋ฐ์ ๋ชจ๋์์๋ ์ด๊ฒ์ด ๊ฐ๋ฐ์ ๋ชจ๋๋ผ๋ ํ๋๊ทธ๋ฅผ ๋ํ๋ ๋๋ค. ์์ด์ ํธ๋ ์๋ฒ๋ก ์์๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์ฒด ๊ธฐ๋ฅ์ ํ๋์ ์์คํ ์์ ๋ ๋ฆฝ์ ์ผ๋ก ์ํํฉ๋๋ค. ํธ๋ฆฌํ๊ณ ๋น ๋ฅด๋ฉฐ ์ฒ์ ์์ํ ๋ ์ถ๊ฐ ์ค์ ์ด ๊ฑฐ์ ํ์ํ์ง ์์ต๋๋ค.
๋ ๋ฒ์งธ ๋ชจ๋๋ ํ๋ก๋์ ์ถ์์ ๋๋ค. ์ฌ๊ธฐ์ ์์์ด ์กฐ๊ธ ๋ณต์กํด์ง๋๋ค. ์์ฌ ๋ฒ์ ์ด ์๋ค๋ฉด ์ฒซ ๋ฒ์งธ ๋จธ์ ์ ๋ถํธ์คํธ๋ฉ์ผ๋ก ๊ฐ์ ธ์์ผ ํฉ๋๋ค. ์ฆ, ๋ฆฌ๋์ ์ฑ ์์ ๋งก๊ฒ ๋ ์ด ๋จธ์ ์ ๋๋ค. ์ด๋ฅผ ๋ฐ์์ํจ ๋ค์ ์๋ฒ์ ๋ ๋ฒ์งธ ์ธ์คํด์ค๋ฅผ ๋ฐ์์์ผ ๋ง์คํฐ๊ฐ ์๋ ์์น์ ๋ํ ์ ๋ณด๋ฅผ ์ ๋ฌํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ธ ๋ฒ์งธ๋ฅผ ํค์๋๋ค. ์ธ ๋์ ๋จธ์ ์ ๊ฐ๋ํ ํ ์คํ ์ค์ธ ๋ถํธ์คํธ๋ฉ์ ์ฒซ ๋ฒ์งธ ๋จธ์ ์์ ์ผ๋ฐ ๋ชจ๋๋ก ๋ค์ ์์ํฉ๋๋ค. ๋ฐ์ดํฐ๊ฐ ๋๊ธฐํ๋์์ผ๋ฉฐ ์ด๊ธฐ ํด๋ฌ์คํฐ๊ฐ ์ด๋ฏธ ์คํ ์ค์ ๋๋ค.
์๋ฒ ๋ชจ๋์์๋ XNUMX~XNUMX๊ฐ์ ์ธ์คํด์ค๋ฅผ ์คํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋ ์๋ฒ ์๊ฐ ์ฆ๊ฐํ๋ฉด ์๋ฒ ๊ฐ์ ์ ๋ณด ๋๊ธฐํ ์๊ฐ์ด ๋์ด๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฟผ๋ผ์ ๋ณด์ฅํ๋ ค๋ฉด ๋ ธ๋ ์๊ฐ ํ์์ฌ์ผ ํฉ๋๋ค.
๊ฑด๊ฐ๊ฒ์ง์ ์ด๋ป๊ฒ ์ ๊ณต๋๋์? Consul ๊ตฌ์ฑ ๋๋ ํฐ๋ฆฌ์ Json ํ์์ผ๋ก ํ์ธ ๊ท์น์ ์์ฑํฉ๋๋ค. ์ฒซ ๋ฒ์งธ ์ต์ ์ ์ด ์์์ google.com ๋๋ฉ์ธ์ ๊ฐ์ฉ์ฑ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ด ๊ฒ์ฌ๋ฅผ 30์ด ๊ฐ๊ฒฉ์ผ๋ก ์ํํด์ผ ํ๋ค๊ณ ๋งํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ผ๋ก ๋ ธ๋๊ฐ ์ธ๋ถ ๋คํธ์ํฌ์ ์ก์ธ์คํ ์ ์๋์ง ํ์ธํฉ๋๋ค.
๋ ๋ฒ์งธ ์ต์ ์ ์์ ์ ํ์ธํ๋ ๊ฒ์ ๋๋ค. ์ผ๋ฐ ์ปฌ์ ์ฌ์ฉํ์ฌ 10์ด ๊ฐ๊ฒฉ์ผ๋ก ์ง์ ๋ ํฌํธ์์ localhost๋ฅผ ํธ์ถํฉ๋๋ค.
์ด๋ฌํ ๊ฒ์ฌ๋ ์์ฝ๋์ด ์๋น์ค ๊ฒ์์ผ๋ก ์ ์ก๋ฉ๋๋ค. ๊ฐ์ฉ์ฑ์ ๋ฐ๋ผ ์ด๋ฌํ ๋ ธ๋๋ ์ ์ธ๋๊ฑฐ๋ ์ฌ์ฉ ๊ฐ๋ฅํ๊ณ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋ ์์คํ ๋ชฉ๋ก์ ๋ํ๋ฉ๋๋ค.
Consul์ ๋ํ ๋ณ๋์ ํ๋๊ทธ๋ก ์คํ๋์ด ์ปดํจํฐ์์ ์ฌ์ฉํ ์ ์๋ UI ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ ๋ณด๋ฅผ ๋ณผ ์ ์์ผ๋ฉฐ ์ผ๋ถ ๋ด์ฉ์ ๋ณ๊ฒฝํ ์๋ ์์ต๋๋ค.
์ด ์์์๋ "์๋น์ค" ํญ์ด ์ด๋ ค ์์ต๋๋ค. ์ธ ๊ฐ์ง ์๋น์ค๊ฐ ์คํ๋๊ณ ์๋ ๊ฒ์ผ๋ก ํ์๋๋ฉฐ ๊ทธ ์ค ํ๋๋ Consul์ ๋๋ค. ์ํ๋ ๊ฒ์ฌ ์์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ธฐ๊ณ๊ฐ ์์นํ ์ธ ๊ฐ์ ๋ฐ์ดํฐ ์ผํฐ๊ฐ ์์ต๋๋ค.
์ด๋ ๋ ธ๋ ํญ์ ์์ ๋๋ค. ๋ฐ์ดํฐ ์ผํฐ์ ๊ด๋ จ๋ ๋ณตํฉ ์ด๋ฆ์ด ์์์ ์ ์ ์์ต๋๋ค. ๋ํ ์คํ ์ค์ธ ์๋น์ค๋ ํ์๋ฉ๋๋ค. ์ฆ, ์ค์ ๋ ํ๊ทธ๊ฐ ์์์ ์ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ถ๊ฐ ํ๊ทธ๋ ๊ฐ๋ฐ์๊ฐ ์ถ๊ฐ ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์ผ๋ถ ์ ๋ณด๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
๋์คํฌ ์ํ ๋ฐ ํ๊ท ๋ถํ์ ๋ํ ์ ๋ณด๋ฅผ Consul์ ์ ์กํ ์๋ ์์ต๋๋ค.
์ง๋ฌธ
์ง๋ฌธ: Docker ์ปจํ ์ด๋๊ฐ ์๋๋ฐ Consul์์ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์?
๋ต๋ณ: Docker ์ปจํ ์ด๋์๋ ์ฌ๋ฌ ๊ฐ์ง ์ ๊ทผ ๋ฐฉ์์ด ์์ต๋๋ค. ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ ์ค ํ๋๋ ๋ฑ๋ก์ ๋ด๋นํ๋ ํ์ฌ ๋์ปค ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์์ ์ docker ์์ผ์ด ์ ๋ฌ๋ฉ๋๋ค. ๋ชจ๋ ์ปจํ ์ด๋ ๋ฑ๋ก ๋ฐ ๊ฒ์ ์ทจ์ ์ด๋ฒคํธ๋ Consul์ ๊ธฐ๋ก๋ฉ๋๋ค.
์ง๋ฌธ: ๊ทธ๋ฌ๋ฉด Consul ์์ฒด๊ฐ Docker ์ปจํ ์ด๋๋ฅผ ์์ํฉ๋๊น?
๋๋ต: ์๋์. ์ฐ๋ฆฌ๋ ๋์ปค ์ปจํ ์ด๋๋ฅผ ์คํํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ตฌ์ฑํ ๋ ์ฐ๋ฆฌ๋ ๊ทธ๋ฌํ ์์ผ์ ๋ฃ์ต๋๋ค. ์ด๋ ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง๊ณ ์๋ ์์น์ ํญ๋ชฉ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๋ก๋ํ ๋ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํ๋ ๋ฐฉ๋ฒ๊ณผ ๊ฑฐ์ ๋์ผํฉ๋๋ค.
์ง๋ฌธ: Service Discovery์ ์ฐ๊ฒฐํ๋ ค๋ Docker ์ปจํ ์ด๋ ๋ด๋ถ์๋ Consul์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ์ ์๋ ์ผ์ข ์ ๋ก์ง์ด ์์ด์ผ ํ๋ค๋ ๊ฒ์ด ๋ฐํ์ก์ต๋๋ค.
๋ต๋ณ: ๊ทธ๋ ์ง ์์ต๋๋ค. ์์๋๋ฉด ํ๊ฒฝ ๋ณ์๋ฅผ ํตํด ๋ณ์๋ฅผ ์ ๋ฌํฉ๋๋ค. ์๋น์ค ์ด๋ฆ, ์๋น์ค ํฌํธ๋ฅผ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ๋ฑ๋ก๋ถ๋ ์ด ์ ๋ณด๋ฅผ ๋ฃ๊ณ ์ด๋ฅผ Consul์ ์ ๋ ฅํฉ๋๋ค.
์ง๋ฌธ: UI์ ๊ดํด ๋ ๋ค๋ฅธ ์ง๋ฌธ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ํ๋ก๋์ ์๋ฒ์ UI๋ฅผ ๋ฐฐํฌํ์ต๋๋ค. ๋ณด์์ ์ด๋ป์ต๋๊น? ๋ฐ์ดํฐ๋ ์ด๋์ ์ ์ฅ๋๋์? ์ด๋ป๊ฒ๋ ๋ฐ์ดํฐ๋ฅผ ์ถ์ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๊น?
๋ต๋ณ: UI์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋น์ค ๊ฒ์์ ๋ฐ์ดํฐ๊ฐ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ค์ ์์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ง์ ์ค์ ํ์ต๋๋ค.
์ง๋ฌธ: ์ด ๋ด์ฉ์ ์ธํฐ๋ท์ ๊ฒ์ํ ์ ์๋์?
๋ต๋ณ: ๊ธฐ๋ณธ์ ์ผ๋ก Consul์ localhost์์ ์์๋ฉ๋๋ค. ์ธํฐ๋ท์ ๊ฒ์ํ๋ ค๋ฉด ์ผ์ข ์ ํ๋ก์๋ฅผ ์ค์นํด์ผ ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์์ฒด ์์ ๊ท์น์ ๋ํ ์ฑ ์์ด ์์ต๋๋ค.
์ง๋ฌธ: ๊ธฐ๋ณธ์ ์ผ๋ก ๊ณผ๊ฑฐ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํฉ๋๊น? ๊ฑด๊ฐ๊ฒ์ง์ ๋ํ ํต๊ณ๋ฅผ ๋ณด๋ ๊ฒ์ ํฅ๋ฏธ๋กญ์ต๋๋ค. ์๋ฒ๊ฐ ์์ฃผ ์คํจํ๋ ๊ฒฝ์ฐ ๋ฌธ์ ๋ฅผ ์ง๋จํ ์๋ ์์ต๋๋ค.
๋ต๋ณ: ๊ฑฐ๊ธฐ์ ์ํ ์ธ๋ถ์ ๋ณด๊ฐ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์ง๋ฌธ: ํ์ฌ ์ํ๋ ์ญํ๋งํผ ์ค์ํ์ง ์์ต๋๋ค.
๋ต๋ณ: ๋ถ์์ ์ํด โ ๊ทธ๋ ์ต๋๋ค.
์ง๋ฌธ: Consul docker์ Service Discovery๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ๋ ๋ซ์ต๋๊น?
๋ต๋ณ: ์ฌ์ฉ์ ๊ถ์ฅํ์ง ์์ต๋๋ค. ๋ณด๊ณ ์์ ๋ชฉ์ ์ ๊ทธ๋ฌํ ๊ฐ๋ ์ด ๋ฌด์์ธ์ง ์๊ฐํ๋ ๊ฒ์ ๋๋ค. ์ ์๊ฐ์๋ ์ญ์ฌ์ ์ผ๋ก ์ฒซ ๋ฒ์งธ ๋ฒ์ ์ด ๋์์ต๋๋ค. ์ด์ ์ด ๋ชจ๋ ๊ฒ์ ๋ด๋ถ์ ํฌํจํ๋ Kubernetes์ ๊ฐ์ ๋ ์์ ํ ์๋ฃจ์ ์ด ์ด๋ฏธ ์์ต๋๋ค. Kubernetes Service Discovery์ ์ผ๋ถ๋ก Etcd๋ณด๋ค ์ด๋ฑํฉ๋๋ค. ํ์ง๋ง ๋๋ ์์ฌ๋งํผ ์ต์ํ์ง ์์ต๋๋ค. ๊ทธ๋์ Consul์ ์๋ก ๋ค์ด Service Discovery๋ฅผ ๋ง๋ค์ด ๋ณด๊ธฐ๋ก ํ์ต๋๋ค.
์ง๋ฌธ: ๋ฆฌ๋ ์๋ฒ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์์ ์ ์ฒด์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์์ ์๋๋ฅผ ๋ฆ์ถ์ง ์์ต๋๊น? ๊ทธ๋ฆฌ๊ณ ์ด ์ง๋์๊ฐ ๊ฑฐ์ง๋ง์ ํ๊ณ ์๋ค๋ฉด ์์ฌ๋ ์ด๋ป๊ฒ ์๋ก์ด ์ง๋์๋ฅผ ๊ฒฐ์ ํฉ๋๊น?
๋ต๋ณ: ์ ์ฒด ํ๋กํ ์ฝ์ด ์ค๋ช ๋์ด ์์ต๋๋ค. ๊ด์ฌ์ด ์์ผ์๋ฉด ์ฝ์ด๋ณด์ค ์ ์์ต๋๋ค.
์ง๋ฌธ: Consul์ ์ฐ๋ฆฌ๋ฅผ ์ํ ์์ ํ ์๋ฒ ์ญํ ์ ํ๋ฉฐ ๋ชจ๋ ์์ฒญ์ด ์ด๋ฅผ ํตํด ์ ๋ฌ๋ฉ๋๊น?
๋ต๋ณ: ๋ณธ๊ฒฉ์ ์ธ ์๋ฒ ์ญํ ์ ํ๋ ๊ฒ์ด ์๋๋ผ ํน์ ์์ญ์ ๋์ ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก service.consul๋ก ๋๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ ผ๋ฆฌ์ ์ผ๋ก ์งํํฉ๋๋ค. ์ฐ๋ฆฌ๋ ํ๋ก๋์ ์์ ๋๋ฉ์ธ ์ด๋ฆ์ ์ฌ์ฉํ์ง ์๊ณ DNS๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํ๋ ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ผ๋ก ์๋ฒ ์บ์ฑ ๋ค์ ์จ๊ฒจ์ ธ ์๋ ๋ด๋ถ ์ธํ๋ผ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ง๋ฌธ: ์ฆ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ก์ธ์คํ๋ ค๋ฉด ์ด๋ค ๊ฒฝ์ฐ์๋ Consul์ ๋์ด์ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋จผ์ ์ฐพ์์ผ ํฉ๋๋ค. ๊ทธ๋ ์ฃ ?
๋๋ต: ๊ทธ๋ ์ต๋๋ค. DNS๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํ๋ ๊ฒฝ์ฐ DNS ์ด๋ฆ์ ์ฌ์ฉํ ๋ Consul์ด ์๋ ๊ฒ๊ณผ ๋์ผํ๊ฒ ์๋ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ต์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ชจ๋ ์์ฒญ์์ ๋๋ฉ์ธ ์ด๋ฆ์ ๊ฐ์ ธ์ค์ง ์์ต๋๋ค. ์ฐ๊ฒฐ์ ์ค์นํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์๋ํ๊ณ ๊ฐ๊น์ด ์์ผ ๋ด์ ์ค์ ๋ก ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฐ๊ฒฐ์ด ๋์ด์ง๋ฉด ๊ทธ๋ ์ต๋๋ค. ๊ธฐ์ง๊ฐ ์ด๋์ ์๋์ง ๋ค์ ๋ฌป๊ณ ๊ทธ๊ณณ์ผ๋ก ์ด๋ํฉ๋๋ค.
PS ๊ฑด๊ฐ๊ฒ์ง ๊ด๋ จ. Consul์ Kubernetes์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฝ๋ ์ํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋น์ค์ ์์กด ๊ฐ๋ฅ์ฑ ์ํ๋ฅผ ํ์ธํ๊ธฐ ์ํด ๋์ผํ ์์คํ ์ ์ฌ์ฉํฉ๋๋ค.
200 OK for healthy
503 Service Unavailable for unhealthy
์ถ์ฒ :
์ถ์ฒ : habr.com