๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด์๋ ๊ธฐ์ ์ ์ผ๋ก ๋ง์ ์ด๋ ค์์ด ์๋ฐ๋๋ค.
์๋์ ์ฌ์ง๋ง ๋ณด๋๋ผ๋ ํ๋์ ์๋น์ค๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํด์ ์์ผ์ ํ ๊ธฐ์ ๋ค์ด ๊ต์ฅํ ๋ง๋ค.
์ค๋์ ์ฌ๊ธฐ์ ๋์จ ๊ธฐ์ ๋ค์ ํน์ง๊ณผ ์ด๋ค ์ญํ ์ ์ํํ๋์ง์ ๋ํด์ ์์๋ณด๋ ค ํ๋ค.
CNCF๊ฐ ์ ์ํ ํ์ค MSA ๊ตฌ์ฑ ์์
CNCF๋ ์ง๋ Cloud Native Architecture ์์๋ ์ ๊น ์ธ๊ธํ Cloud Native Computing Foundation ๋จ์ฒด์ด๋ค.
CNCF ์์ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์ง์ํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ ๊ตฌ์ฑ ์์๋ค์ ๋ค์๊ณผ ๊ฐ์ด ๋๋๋ค.
- API Gateway ํจํด ๋ธ๋ก๊ทธ ์ค๋ช ๋ฐ๋ก๊ฐ๊ธฐ
- Service Mesh ๋ธ๋ก๊ทธ ์ค๋ช ๋ฐ๋ก๊ฐ๊ธฐ
- Container Runtime ๋ธ๋ก๊ทธ ์ค๋ช ๋ฐ๋ก๊ฐ๊ธฐ
- CI / CD ๋ธ๋ก๊ทธ ์ค๋ช ๋ฐ๋ก๊ฐ๊ธฐ
- Message Queuing ๋ธ๋ก๊ทธ ์ค๋ช ๋ฐ๋ก๊ฐ๊ธฐ
- RESTful API ๋ธ๋ก๊ทธ ์ค๋ช ๋ฐ๋ก๊ฐ๊ธฐ
API Gateway
API Gateway๋ RESTful ํ๊ฒ ์์ฑ๋ ๋ชจ๋ ์๋น์ค์ API๋ฅผ ์์ฝ๊ฒ ๊ด๋ฆฌํ์ฌ ์ธ์ฆ์ ํตํ ์์์ ํจ์จ์ ์ธ ๋ถ๋ฐฐ๋ฅผ ์ํํ๋ ๊ธฐ๋ฅ์ด๋ค.
MSA๋ ์๋น์ค๋ฅผ ์ฌ๋ฌ ๊ฐ์ ํ๋ก์ ํธ๋ฅผ ๋ถ๋ฆฌํ๋ค๊ณ ํ๋ค.
๊ทธ๋ผ ์ฌ์ฉ์ ์ฆ, ์น ๋ธ๋ผ์ฐ์ ์์ ์์ฒญ๋ ์ฌ์ฉ์์ ์ ๋ณด๋ ์ด๋ค ์๋น์ค๊ฐ ๋งก์์ผ ์ ์ ํ ๊น?
๋ต์ ๋น์ฐํ๊ฒ๋ ์ ์ ํ ์๋น์ค์ด๋ค.
๋ฌธ์ ๋ ํด๋น ์์ฒญ์ด ์ด๋ป๊ฒ ์ ์ ํ์ง ํ๋จ์ ํ ๊น?
๋ํ ๋ชจ๋ ์๋น์ค์ ์์ฒญ์๋ ๊ณตํต๋ ์ธ์ฆ ๊ณผ์ ์ ์ํํด์ผ ํ๋๋ฐ, ์ด๋์ ์ธ์ฆ์ ์ํํด์ผ ํ ๊น?
๋ฐ๋ก ์ธ์ฆ ์๋ฒ๋ฅผ ๋ฌ์ผํ๋?
๊ทธ๋ฆฌ๊ณ ๋ API์ ๋ชจ๋ ์์ฒญ์ ๋ํ ๋ก๊ทธ ํ์ผ์ ์์ฑํ๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น?
๊ฐ๊ฐ์ ์๋น์ค๋ง๋ค ๋ก๊น ์๋ฒ๋ฅผ ๋ฌ์ผ ํ๋?
์ฌ๊ธฐ์ ๋ฑ์ฅํ๋ ๊ฒ์ด ๋ฐ๋ก API Gateway ์ด๋ค.
๋ง์ฝ API Gateway๊ฐ ์กด์ฌํ์ง ์์๋ค๋ฉด ์์ ๊ฐ์ ๊ณตํต๋ ๊ณผ์ ๊ณผ ๋นํจ์จ์ ์ธ ์์ ์ ์ํํด์ผ ํ๋ค.
ํ์ง๋ง API Gateway๋ผ๋ ๊ฐ๋ ์ด ๋ฑ์ฅํ๋ค๋ฉด ์ด๋ฅผ ํ๋์ ํ๋ก์ ํธ์์ ๊ด๋ฆฌํ๊ฒ ํ ์ ์๋ค.
API Gateway ์ ๋์ ๋ฐฉ์
์ด๋ Spring Cloud Gateway ์ ํ๋ก์ฐ์ธ๋ฐ, ์๋ง ์ด ๊ทธ๋ฆผ์ผ๋ก ์ค๋ช ํ ์ ์์๋ฏ ํ๋ค.
API Gateway๋ ํ๋์ ๋ชจ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ํ๋์ ์๋ฒ๋ก ๋ค์ด์ ํด๋น ์๋ฒ์์ ์์ฒญ์ด ์ ์ ๋๊ฑฐ๋ ์กฐ์๋์ด ๊ฐ์ ๋ชฉ์ ์ ๋ง๋ ์๋น์ค๋ฅผ ์ฐพ์๊ฐ๋๋ก ๋์์ฃผ๋ ๋ฐฉ์์ด๋ค.
๋ํ ๊ฐ ์๋ฒ์์ ์ ์ ํ ๋ก์ง์ ์ํํ ๋ค ๋ฐ์ํ๋ ์๋ต ๋ฐ์ดํฐ๋ฅผ ๋ชจ์ ์ฌ์ฉ์์๊ฒ ๋ถ๋ฐฐํด์ฃผ๋ ์ญํ ์ ํ๋ค.
API Gateway์ ์ญํ
API Gateway์๋ ๋ํ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์ญํ ์ด ์กด์ฌํ๋ค.
- ํ๋ก์์ ์ญํ ๊ณผ ๋ก๋๋ฐธ๋ฐ์ฑ
- ์ธ์ฆ ์๋ฒ๋ก์์ ๊ธฐ๋ฅ
- ๋ก๊น ์๋ฒ๋ก์์ ๊ธฐ๋ฅ
์์ ๋์ ๊ณผ์ ์์ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ํ๋์ ์๋ฒ๋ก ์ ์ก๋๋ฏ๋ก ํด๋น ์๋ฒ์์๋ ์ธ์ฆ์ ์ํํ๊ธฐ๋ ํ๊ณ ๋ก๊น ์ ์ํํ๊ธฐ๋ ํ๋ค.
๋ํ ํด๋น ๊ตฌ์กฐ๋ ๋ฆฌ๋ฒ์ค ํ๋ก์์ ๋งค์ฐ ๋ฎ์์์ผ๋ฉฐ ์ค์ ๋ก๋ ๊ทธ ์ญํ ์ ์ํํ๋ค.
๊ทธ๋์ ๋ก๋๋ฐธ๋ฐ์ฑ๊ณผ ๋ผ์ฐํ ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
API Gateway์ ๊ณ ๋ ค์ฌํญ
API Gateway๋ ์์ ๊ฐ์ด ์ข์ ์ ๋ค๋ง ์๋ ๊ฒ์ด ์๋๋ค.
์ฌ๋ฌ ๋จ์ ๋ค๊ณผ ๊ณ ๋ คํด์ผํ ์ฌํญ๋ค์ด ์๋๋ฐ ํจ๊ป ์์๋ณด์.
- ๋ณ๋ชฉํ์
- ๋คํธ์ํฌ Latency
๋ณ๋ชฉ ํ์
๋ณ๋ชฉ ํ์์ด๋? ๋ณ๋ชฉ ํ์์ ์ ์ฒด ์์คํ ์ ์ฑ๋ฅ์ด๋ ์ฉ๋์ด ํ๋์ ๊ตฌ์ฑ ์์๋ก ์ธํด ์ ํ์ ๋ฐ๋ ํ์์ ๋งํ๋ค.
์์ ๊ตฌ์กฐ๋ฅผ ๋ณธ๋ค๋ฉด ๋ง์ฝ ์๋น์ค๊ฐ 100๊ฐ๊ฐ ์กด์ฌํ๋ค๊ณ ํด๋ณด์.
๊ทธ๋ผ API Gateway๋ ๊ฐ์ฅ ์๋จ์์ 100๊ฐ์ ์๋น์ค๊ฐ ์์ฒญ๋ ์ ์๋ ํธ๋ํฝ์ ๊ฐ๋นํด์ผ ํ๋ค.
๊ทธ๋ผ ์์ฐ์ค๋ฝ๊ฒ ๋ณ๋ชฉ ํ์์ด ๋ฐ์ํ ์ ์์ผ๋ฉด์, ์ ์ฒด์ ์ธ ์๋น์ค์ ํต์ ์ ๋ฌธ์ ๊ฐ๋ ์ ์๋ค.
๊ทธ๋์ API Gateway๋ ์ ์ ํ Scale-Out ์ ์ํํ์ง ์์ผ๋ฉด ๋ง์ ์ํ์ด ๋ฐ์ํ๋ค.
๋คํธ์ํฌ Latency
๋คํธ์ํฌ Latency๋? ํ๋์ ๋ฐ์ดํฐ ํจํท์ ํ ์ง์ ์์ ๋ค๋ฅธ ์ง์ ์ผ๋ก ๋ณด๋ด๋๋ฐ ์์๋๋ ์๊ฐ์ ํํํ ๊ฒ์ด๋ค.
๋น์ฐํ๊ฒ API Gateway ์ ๋คํธ์ํฌ๋ฅผ ํ ๋ฒ ๋ ํ๊ฒ ๋์ด ๋คํธ์ํฌ ์ง์ฐ ํ์์ด ๋ฐ์ํ ์ ์๋ค.
์ด๋ฐ ๋ฌธ์ ์ ๋ค์ ์ ์ ํ Telemetry ๋๊ตฌ๋ฅผ ํตํด์ ํ์ธํ๊ณ ์ด ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ํด์ ๋ง์ ๊ณ ๋ฏผ์ ํด์ผ ํ๋ค.
์ด๋ฅผ ์ง์ํ๋ ๋๊ตฌ ๋ฐ ๊ธฐ์
ํ์ฌ ๋ง์ Gateway ๊ธฐ์ ๋ค์ด ์กด์ฌํ๋ค.
์ด๋ CNCF ์ CNCF Cloud Native Interactive Landscape ์์ ๋ ์์ธํ ํ์ธํ ์ ์๋ค.
- Nginx
- Kong
- Apigee
- Spring Cloud Gateway
- Spring Cloud Zuul
- AWS API Gateway
๋๊ธ