MSA ํธ๋ ์ด๋ ์ผํฐ API Gateway ๋ฅผ NGINX๋ก ๋ฐฐํฌํ๊ธฐ ์ด ํธ๋ ์ด๋ ์์์์๋ NGINX API Gateway ๋ NGINX์ ๋ ๋ค๋ฅธ ๋งค์ฐ ์ธ๊ธฐ ์๋ ์ฌ์ฉ ์ฌ๋ก๋ก, ๊ตฌ์ฑ์ด ์ฝ๊ณ ๋ชจ๋ ์ํฐํ๋ผ์ด์ฆ๊ธ API Gateway์ ๋ชจ๋ ํ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. JWT ํ ํฐ์ ํ์ฉํ API ํด๋ผ์ด์ธํธ ์ธ์ฆ ๋ฐ ๊ถํ ์ค์ ํฌํจํฉ๋๋ค.API Management์ API Gateway์ ๋ํ ๋์ ์์ค์ ์ดํดAPI Gateway์ ๊ธฐ๋ฅJWT ํ ํฐ์ ์ฌ์ฉํ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ GitHub ์ํํ API ๊ด๋ฆฌ๋ฅผ ์ํ NGINX API Gateway ๋ง์คํฐํ๊ธฐ ์ค๋๋ ์ ๋์งํธ ํ๊ฒฝ์์ API๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ ๊ฐ๋ฐ์, DevOps ์์ง๋์ด ๋ฐ ์์คํ ๊ด๋ฆฌ์์๊ฒ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ด ํ๋ก์ธ์ค๋ฅผ ๋จ์ํํ ์ ์๋ ๊ฐ๋ ฅํ ๋๊ตฌ ์ค ํ๋๊ฐ NGINX์ ๋๋ค. ๋ค์ฉ์ฑ๊ณผ ์ฑ๋ฅ์ผ๋ก ์ ์๋ ค์ง NGINX๋ API Gateway ๋ก๋ ์๋ํ์ฌ API ๊ด๋ฆฌ๋ฅผ ์ํ ๊ฐ๋ ฅํ ์๋ฃจ์ ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ด ํธ๋ ์ด๋ ์์์์๋ NGINX๋ฅผ API Gateway๋ก ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ, ์ฃผ์ ๊ธฐ๋ฅ ๋ฐ ์ค์ ๊ตฌํ ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. API ๊ด๋ฆฌ ๋ฐ API Gateway ์ดํด API ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค๋ ํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ํ์์ ์ ๋๋ค. ์ด๋ฅผ ํตํด ์๋ก ๋ค๋ฅธ ์ํํธ์จ์ด ์์คํ ์ด ์๋ก ํต์ ํ ์ ์์ด ์ํํ ํตํฉ๊ณผ ๋ฐ์ดํฐ ๊ตํ์ด ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ฌ๋ ํนํ ์กฐ์ง ๋ด์์ API ์๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์ด๋ฌํ API๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ด๋ ค์ธ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ API ๊ด๋ฆฌ๊ฐ ์์๋ฉ๋๋ค.API ๊ด๋ฆฌ์๋ ์์ ํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ํ๊ฒฝ์์ API๋ฅผ ์ค๊ณ, ๊ฒ์, ๋ฌธ์ํ ๋ฐ ๋ถ์ํ๋ ํ๋ก์ธ์ค๊ฐ ํฌํจ๋ฉ๋๋ค. ์ฌ๊ธฐ์์ API ๊ฒ์ดํธ์จ์ด๋ ์ค๊ฐ์ ์ญํ ์ ํ์ฌ API ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์ ์ฑ ์ ์ํํ๋ฉฐ ๋ณด์์ ๋ณด์ฅํฉ๋๋ค. API Gateway ๋ ๋ฌด์์ ๋๊น? API Gateway ๋ ํด๋ผ์ด์ธํธ์ ๋ฐฑ์๋ ์๋น์ค ์ฌ์ด์ ์์นํ๋ ์๋ฒ์ ๋๋ค. ์ด๋ ๋ชจ๋ API(Application Programming Interface) ํธ์ถ์ ์๋ฝํ๊ณ ์ด๋ฅผ ์ดํํ๋ ๋ฐ ํ์ํ ๋ค์ํ ์๋น์ค๋ฅผ ์ง๊ณํ๊ณ ์ ์ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ ๋ฆฌ๋ฒ์ค ํ๋ก์ ์ญํ ์ ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ๋ฌ ํด๋ผ์ด์ธํธ์ ํธ๋ํฝ์ ๊ด๋ฆฌํ์ฌ ์์ฒญ์ ์ ์ ํ ๋ฐฑ์๋ ์๋น์ค๋ก ์ ๋ฌํฉ๋๋ค. API Gateway ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? API Gateway ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ์ ์ป์ ์ ์์ต๋๋ค.ํฅ์๋ ๋ณด์: API Gateway๋ ๋ณด์ ์ ์ฑ ์ ์ํํ์ฌ ์ธ์ฆ๋๊ณ ์น์ธ๋ ์์ฒญ๋ง ๋ฐฑ์๋ ์๋น์ค์ ๋๋ฌํ๋๋ก ๋ณด์ฅํ ์ ์์ต๋๋ค.ํธ๋ํฝ ๊ด๋ฆฌ: ๋ก๋ ๋ฐธ๋ฐ์ฑ, ์๋ ์ ํ ๋ฐ ๊ณผ๋ถํ ๋ฐฉ์ง๋ฅผ ์ํ ์์ฒญ ์ ํ์ ํตํด ํธ๋ํฝ์ ๊ด๋ฆฌํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.๋จ์ํ๋ API ๊ด๋ฆฌ: ์์ฒญ ๋ณํ ๋ฐ ์๋ต ์บ์ฑ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ํตํด API Gateway ๋ API ๊ด๋ฆฌ ๋ฐ ๋ชจ๋ํฐ๋ง์ ๋จ์ํํฉ๋๋ค.์ค์ ์ง์ค์ ์ ์ด: ๋ชจ๋ API ์์ฒญ์ ๋ํ ๋จ์ผ ์ง์ ์ ์ ์ ๊ณตํ๋ฏ๋ก API ํธ๋ํฝ์ ๋ ์ฝ๊ฒ ๊ด๋ฆฌํ๊ณ ๋ชจ๋ํฐ๋งํ ์ ์์ต๋๋ค. API Gateway ๋ก์์ NGINX์ ๊ธฐ๋ฅ ๊ณ ์ฑ๋ฅ ์น ์๋ฒ, ๋ฆฌ๋ฒ์ค ํ๋ก์ ์๋ฒ, ๋ก๋ ๋ฐธ๋ฐ์์ธ NGINX๋ ๋ค์ํ ๊ธฐ๋ฅ์ผ๋ก ์ธ๊ธฐ๋ฅผ ์ป์์ต๋๋ค. APIย Gateway ๋ก ๋ฐฐํฌ๋๋ฉด NGINX๋ API ๊ด๋ฆฌ๋ฅผ ์ํ ๊ฐ๋ ฅํ ์ ํ์ด ๋๋ ๋ช ๊ฐ์ง ํ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๊ณ ์ฑ๋ฅ ๋ฐ ํ์ฅ์ฑ NGINX๋ ์ต์ํ์ ๋ฆฌ์์ค ์ฌ์ฉ์ผ๋ก ๋์ ํธ๋ํฝ ๋ก๋๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฅ๋ ฅ์ผ๋ก ์ ์๋ ค์ ธ ์์ต๋๋ค. ์์ฒ ๊ฐ์ ๋์ ์ฐ๊ฒฐ์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ผ๋ฏ๋ก API ํธ๋ํฝ์ด ๋ง์ ์กฐ์ง์ ์ด์์ ์ธ ์ ํ์ ๋๋ค. ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ ๋ฎ์ ๋๊ธฐ ์๊ฐ๊ณผ ๋์ ์ฒ๋ฆฌ๋์ ๋ณด์ฅํ์ฌ ์ํํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค. ์์ฒญ ๋ฐ ์๋ต ๋ณํ API Gateway๋ก์ NGINX์ ์ฃผ์ ๊ธฐ๋ฅ ์ค ํ๋๋ ์์ฒญ๊ณผ ์๋ต์ ๋ณํํ๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ฌ๊ธฐ์๋ ํค๋ ์์ , URL ์ฌ์์ฑ, ์์ฒญ ๋ณธ๋ฌธ ๋ณ๊ฒฝ๊น์ง ํฌํจ๋ฉ๋๋ค. ์ด๋ฌํ ๋ณํ์ ํตํด ํด๋ผ์ด์ธํธ์ ๋ฐฑ์๋ ์๋น์ค๊ฐ ์๋ก ๋ค๋ฅธ ํ๋กํ ์ฝ์ด๋ ๋ฐ์ดํฐ ํ์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ์ํํ ํต์ ์ด ๊ฐ๋ฅํด์ง๋๋ค. ์๋ ์ ํ ๋ฐ ์กฐ์ NGINX๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ ์ ํ(Rate Limit) ๋ฐ ์กฐ์ ์ ์ฑ ์ ๊ตฌํํ์ฌ ํน์ ์๊ฐ ํ๋ ์ ๋ด์ ํด๋ผ์ด์ธํธ๊ฐ ๋ง๋ค ์ ์๋ ์์ฒญ ์๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋จ์ฉ์ ๋ฐฉ์งํ๊ณ ๊ณต์ ํ ์ฌ์ฉ์ ๋ณด์ฅํ๋ฉฐ ๊ณผ๋ํ ํธ๋ํฝ์ผ๋ก ์ธํด ๋ฐฑ์๋ ์๋น์ค๊ฐ ๊ณผ๋ถํ๋๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค. JWT ํ ํฐ์ ์ฌ์ฉํ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ ๋ณด์์ API ๊ด๋ฆฌ์ ์ค์ํ ์ธก๋ฉด์ด๋ฉฐ NGINX๋ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ๋ฅผ ์ํ ๊ฐ๋ ฅํ ์ต์ ์ ์ ๊ณตํฉ๋๋ค. ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ JWT(JSON Web Tokens)๋ฅผ ์ฌ์ฉํ์ฌ API์ ๋ํ ๋ณด์ ์ก์ธ์ค๋ฅผ ๋ณด์ฅํ๋ ๊ฒ์ ๋๋ค. JWT ํ ํฐ์ด๋ ๋ฌด์์ ๋๊น? JWT ํ ํฐ์ ๋ ๋น์ฌ์ ๊ฐ์ ์ ์ก๋ ํด๋ ์์ ๋ํ๋ด๋ URL ์์ ์ ์ปดํฉํธํ ์๋จ์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. JWT ํ ํฐ์ ์ธ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.Header: ํ ํฐ ์ ํ๊ณผ ์ฌ์ฉ๋ ํด์ฑ ์๊ณ ๋ฆฌ์ฆ์ด ํฌํจ๋ฉ๋๋ค.Payload: ํด๋ ์ ๋๋ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ํฌํจํฉ๋๋ค.Signature: ํ ํฐ์ด ๋ณ๊ฒฝ๋์ง ์์๋์ง ํ์ธํฉ๋๋ค. NGINX๋ก JWT ์ธ์ฆ ๊ตฌํ NGINX๋ก JWT ์ธ์ฆ์ ๊ตฌํํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.JWT ํ ํฐ ์์ฑ: ์์ ํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๋ฅผ ์ํ JWT ํ ํฐ์ ์์ฑํฉ๋๋ค. ์ด๋ฌํ ํ ํฐ์๋ ํ์ํ ํด๋ ์์ด ํฌํจ๋์ด์ผ ํ๋ฉฐ ๋น๋ฐ ํค๋ก ์๋ช ๋์ด์ผ ํฉ๋๋ค.NGINX ๊ตฌ์ฑ:– `ngx_http_auth_jwt_module` ๋ชจ๋์ ์ค์นํฉ๋๋ค.– ๋ค์ด์ค๋ ์์ฒญ์ ๋ํด JWT ํ ํฐ์ ์ ํจ์ฑ์ ๊ฒ์ฌํ๋๋ก NGINX๋ฅผ ์ค์ ํฉ๋๋ค.– ํ ํฐ์ ํด๋ ์์ ๊ธฐ๋ฐ์ผ๋ก ์ก์ธ์ค๋ฅผ ํ์ฉํ๊ฑฐ๋ ๊ฑฐ๋ถํ๋ ๋ฐ ํ์ํ ์ ์ฑ ์ ์ ์ํฉ๋๋ค.API ๋ณด์:– ์ ํจํ JWT ํ ํฐ์ด ํฌํจ๋ ์์ฒญ๋ง API์ ์ก์ธ์คํ ์ ์๋์ง ํ์ธํ์ธ์.– ๋ณด์ ๊ฐํ๋ฅผ ์ํด ํ ํฐ ๋ง๋ฃ ๋ฐ ๊ฐฑ์ ๋ฉ์ปค๋์ฆ์ ๊ตฌํํฉ๋๋ค. ์ค์ ์ฌ๋ก: Adobe์ NGINX API Gateway ์ฌ์ฉ API Gateway๋ก ์ฌ์ฉ๋๋ NGINX์ ์ฃผ๋ชฉํ ๋งํ ์๋ Adobe์ ๋๋ค. Adobe๋ NGINX๋ฅผ ์ฌ์ฉํ์ฌ SaaS ์๋น์ค์ฉ ๋ด๋ถ ๋ฐ ์ธ๋ถ API์ ๋ํ ์์ ํ๊ณ ํจ์จ์ ์ธ ์ก์ธ์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. Adobe๋ NGINX๋ฅผ ํ์ฉํ์ฌ API Gateway ํต์ฌ๊ธฐ๋ฅ ์๊ตฌ์ฌํญ์ ๋ง๋ ๊ณ ์ฑ๋ฅ, ํ์ฅ์ฑ ๋ฐ ๋ณด์์ ๋ณด์ฅํฉ๋๋ค. Adobe๊ฐ NGINX๋ฅผ ํตํด ์ป๋ ์ด์ ํฅ์๋ ๋ณด์: NGINX๋ ์๊ฒฉํ ๋ณด์ ์ ์ฑ ์ ์ํํ์ฌ Adobe์ API๋ฅผ ๋ฌด๋จ ์ก์ธ์ค๋ก๋ถํฐ ๋ณดํธํฉ๋๋ค.ํฅ์๋ ์ฑ๋ฅ: NGINX์ ๋์ ์ฑ๋ฅ๊ณผ ํ์ฅ์ฑ์ ํตํด Adobe๋ ์๋๋ ์์ ์ฑ์ ์ ํ์ํค์ง ์๊ณ ๋๋์ API ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.์ํํ ํตํฉ: NGINX์ ์์ฒญ ๋ฐ ์๋ต ๋ณํ ๊ธฐ๋ฅ์ ํตํด Adobe๋ ๋ค์ํ ์๋น์ค๋ฅผ ์ฝ๊ฒ ํตํฉํ ์ ์์ต๋๋ค. NGINX API Gateway ์์ํ๊ธฐ NGINX๋ฅผ API Gateway ๋ก ๋ฐฐํฌํ๋ ๊ฒ์ ์ด๋ ค์ ๋ณด์ผ ์ ์์ง๋ง ์ฌ๋ฐ๋ฅธ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์ํํ ํ๋ก์ธ์ค๊ฐ ๋ ์ ์์ต๋๋ค. ์์ํ๋ ๋ฐ ํ์ํ ๋ช ๊ฐ์ง ๋จ๊ณ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. 1๋จ๊ณ: NGINX ์ค์น ์๋ฒ์ NGINX๋ฅผ ์ค์นํ๋ ๊ฒ๋ถํฐ ์์ํ์ธ์. ๊ณต์ NGINX ์น์ฌ์ดํธ์์ ์ต์ ๋ฒ์ ์ ๋ค์ด๋ก๋ํ๊ฑฐ๋ ‘apt’ ๋๋ ‘yum’๊ณผ ๊ฐ์ ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ์ฌ ์ค์นํ ์ ์์ต๋๋ค. 2๋จ๊ณ: NGINX ๊ตฌ์ฑ ๋ค์์ผ๋ก, API Gateway ๋ก ์๋ํ๋๋ก NGINX๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. ์์ฒญ ๋ผ์ฐํ , ๋ก๋ ๋ฐธ๋ฐ์ฑ, ๋ณด์ ์ ์ฑ ์ ๋ํ ์ค์ ์ ํฌํจํ๋๋ก `nginx.conf` ํ์ผ์ ์ ๋ฐ์ดํธํ์ธ์. 3๋จ๊ณ: ๋ณด์ ์กฐ์น ๊ตฌํ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ ๋ฉ์ปค๋์ฆ์ ๊ตฌํํ์ฌ API Gateway ๊ฐ ์์ ํ์ง ํ์ธํ์ธ์. JWT ํ ํฐ์ ์ ํจ์ฑ์ ๊ฒ์ฌํ๋๋ก NGINX๋ฅผ ๊ตฌ์ฑํ๊ฑฐ๋ ํ์์ ๋ฐ๋ผ ๋ค๋ฅธ ์ธ์ฆ ๋ฐฉ๋ฒ์ ์ฌ์ฉํฉ๋๋ค. ๊ฒฐ๋ก NGINX๋ฅผ API Gateway ๋ก ๋ฐฐํฌํ๋ฉด ์์ ํ๊ณ ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ ํจ์จ์ ์ธ ๋ฐฉ์์ผ๋ก API๋ฅผ ๊ด๋ฆฌํ ์ ์๋ ๋ค์ํ ์ด์ ์ ์ ๊ณตํฉ๋๋ค. JWT ์ธ์ฆ์ ํตํ ํฅ์๋ ๋ณด์๋ถํฐ ํฅ์๋ ์ฑ๋ฅ ๋ฐ ์ํํ ํตํฉ์ ์ด๋ฅด๊ธฐ๊น์ง NGINX๋ ์ต์ API ๊ด๋ฆฌ๋ฅผ ์ํ ๊ฐ๋ ฅํ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค.๊ฐ๋ฐ์, DevOps ์์ง๋์ด ๋ฐ ์์คํ ๊ด๋ฆฌ์๋ ์ฃผ์ ๊ธฐ๋ฅ์ ์ดํดํ๊ณ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋ฉด NGINX๋ฅผ ํ์ฉํ์ฌ API ๊ด๋ฆฌ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํ๊ณ ๋ฐ์ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
๋๊ธ์ ๋ฌ๋ ค๋ฉด ๋ก๊ทธ์ธํด์ผ ํฉ๋๋ค.