[MSA] - 2. API Gateway๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

๋ฐ˜์‘ํ˜•

์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ ๊ธ€์€ MSA์— ๋Œ€ํ•œ ๊ธ€์„ ์ด์–ด์„œ API Gateway์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

์ง€๋‚œ MSA ๊ธ€์—์„œ๋Š” MSA๋ฅผ ์™œ ์จ์•ผํ•˜๋Š”์ง€, ์–ด๋–จ ๋•Œ ํ•„์š”ํ•˜๊ณ , ๋ฌด์Šจ ์žฅ๋‹จ์ ์ด ์žˆ๋Š”์ง€๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•ด๋ณด๋Š” ์•„์ฃผ ์‰ฌ์šด ์ด์•ผ๊ธฐ๋ฅผ ๋‹ค๋ค„๋ดค์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค MSA์˜ ๊นŠ์ด๋Š” ๊ทธ๊ฒƒ๋ณด๋‹ค ๊นŠ๊ธฐ ๋•Œ๋ฌธ์— ์ œ๋Œ€๋กœ ์ด์•ผ๊ธฐ๋ฅผ ํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด, ๋งŽ์€ ์ด์•ผ๊ธฐ๊ฐ€ ๋  ๊ฒƒ ๊ฐ™์•„ ์งง๊ฒŒ ํ•„์š”ํ•œ ๋ถ€๋ถ„์„ ์„ค๋ช…๋“œ๋ฆฐ ๊ฒƒ์ด๊ตฌ์š”. ํƒ€ ๊ธ€์—์„œ ์ข€ ๋” ์‹ฌ์ธต์ ์œผ๋กœ ๋‹ค๋ค„๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค.

Spring Cloud๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ„๋‹จํžˆ API๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์•Œ์•˜๊ณ , ์ด์™€ ๋น„์Šทํ•˜๊ฒŒ Python์˜ Django, Flask ๋“ฑ ํƒ€ ์–ธ์–ด, ํƒ€ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ๋„ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฐ์ด ์žกํ˜”์„ ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. 

์˜ค๋Š˜์€ ์ด๋“ค API๋ฅผ ๊ทธ๋ฃนํ™” ์‹œ์ผœ์ฃผ๋Š” API Gateway์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

API Gateway

API Gateway? ์–ด๋””์„œ ๋งŽ์ด ๋“ค์–ด๋ณธ ๋ง์ด๋‹ค. ์•„๋งˆ AWS์—์„œ Serverless Stack์„ ๋‹ค๋ค„๋ณด์‹  ๋ถ„๋“ค์ด๋ผ๋ฉด, Lambda์™€ API Gateway๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๋ฉด์„œ ๊ฒฝํ—˜ํ•ด๋ณด์‹  ๋ถ„๋“ค์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋„ค, ๋งž์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ํ•ด๋‹น ์†”๋ฃจ์…˜์—์„œ ์ œ๊ณตํ•˜๋Š” API Gateway์™€ ๋™์ผํ•œ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ MSA์˜ API Gateway ์ž…๋‹ˆ๋‹ค.

AWS, GCP ๋“ฑ์˜ ํด๋ผ์šฐ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ REST API๋ฅผ ๋งŒ๋“ค๊ณ  ์šด์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ๋Œ€ํ‘œ์ ์ธ 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. IaaS (EC2, VM Instance ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Tomcat, JBoss ๋“ฑ์˜ WAS ๋ฐฐํฌ๋ฅผ ํ†ตํ•œ ์šด์˜.
  2. PaaS (ElasticBeansTalk ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ war ํ˜น์€ jar ํŒŒ์ผ์˜ ๋ฐฐํฌ๋ฅผ ํ†ตํ•œ ์šด์˜.
  3. FaaS (Lambda, Functions ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ ๋ฐฐํฌ๋ฅผ ํ†ตํ•œ ์šด์˜.

์ด ์ค‘์—์„œ API Gateway๋ฅผ ํ•„ํžˆ ์‚ฌ์šฉํ•˜์—ฌ REST API์˜ URI๋ฅผ ์žก์•„์ค˜์•ผ ํ•˜๋Š” ๊ฒƒ์€ 3๋ฒˆ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. IaaS๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋‚˜, ์›น ์„œ๋ฒ„์—์„œ ์ œ๊ณตํ•˜๋Š” URI๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๊ณ , PaaS ์—ญ์‹œ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ FaaS๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ๋‹ด๊ฒจ์ ธ ์žˆ๋Š” ์ฝ”๋“œ๋งŒ ๋“ค์–ด์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•จ์ˆ˜์˜ ์ด๋ฆ„๊ณผ ๋กœ์ง๋งŒ ๋‹ด๊ฒจ์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ์ฝ”๋“œ๊ฐ€ ์–ด๋Š URI๋ฅผ ํƒ€์•ผํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์ „ํ˜€ ๋‹ด๊ฒจ์ ธ ์žˆ์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด์— ๋Œ€ํ•œ URI ์ฃผ์†Œ๋ฅผ ๋งค๊ฒจ์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. API Gateway๋Š” ์ด๋Ÿฐ URI๋ฅผ ํ•˜๋‚˜๋กœ ํ†ตํ•ฉํ•˜๋Š” ์—ญํ• ์„ ๋งก๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด MSA์—์„œ๋Š” ์ด๊ฑธ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ ๊นŒ์š”? MSA๋Š” ํฐ ์„œ๋น„์Šค๋ฅผ ์ž˜๊ฒŒ ์ชผ๊ฐœ์–ด ๊ฐ๊ฐ์˜ ์—ญํ• ์„ ๋ถ„๋ฆฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์ด๋ ‡๊ฒŒ ํ•˜๊ฒŒ ๋˜๋ฉด URI ์ฃผ์†Œ๊ฐ€ ์ „๋ถ€ ๋‹ฌ๋ผ์ง€๊ฒŒ ๋˜๊ณ , ์ด ๋ง์€ ํฌํŠธ ์ฃผ์†Œ ๋“ฑ์„ ํฌํ•จํ•œ ๋ชจ๋“  ์ฃผ์†Œ๊ฐ€ ๋‹ฌ๋ผ์ง€๊ฒŒ ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ˆ˜๋งŽ์€ API ํ˜ธ์ถœ์˜ ๊ธฐ๋ก ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•˜์ง€ ์•Š์Œ.
  • ๋‚ด๋ถ€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง, ์ธํ”„๋ผ ๋“ฑ ์ฃผ์†Œ๊ฐ€ ์„ ๋ช…ํ•˜๊ฒŒ ๋…ธ์ถœ๋˜์–ด ๋ณด์•ˆ์— ์ทจ์•ฝ.
  • ๊ฐ ์„œ๋น„์Šค ๋งˆ๋‹ค ์ธ์ฆ ๋“ฑ์˜ ๊ณตํ†ต ๋กœ์ง์„ ์ค‘๋ณต ๊ตฌํ˜„ ํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ์  ์กด์žฌ.

ํŠนํžˆ ์„ธ ๋ฒˆ์งธ์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ œ์ ์€ ์„œ๋น„์Šค ์šด์˜์— ์žˆ์–ด ๊ฐ€์žฅ ํฐ ํ—›์ ์„ ๋‚จ๊ธฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์— ์žˆ์–ด์„œ ๋ถˆํŽธํ•œ ์ ๋ณด๋‹ค๋Š” ๋” ํฌ๋ฆฌํ‹ฐ์ปฌํ•œ ๋ฌธ์ œ์ผ ํ…Œ๋‹ˆ๊น์š”. 

์ข€ ๋” ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜์˜ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด์„œ ์„ค๋ช…์„ ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ง€๋‚œ Spring Cloud ์‹ค์Šต์„ ๊ทธ๋Œ€๋กœ ์ธ์šฉํ•ด์„œ Note API๋ฅผ ์ž‘์„ฑํ–ˆ์„ ๋•Œ, ์šฐ๋ฆฌ๋Š” ์ด๋ ‡๊ฒŒ ์œ„์™€ ๊ฐ™์ด ํฌํŠธ ์ฃผ์†Œ๋ฅผ ๋‹ค๋ฅด๊ฒŒ ๋งค๊ฒจ์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๊ฐ™์€ ํ™˜๊ฒฝ์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ™์€ IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ์ฃ . ๊ทธ๋Ÿฐ๋ฐ, ์‹ค์ œ ์‹ค๋ฌด์—์„œ๋Š” ์ด๋ฅผ ๊ฐ™์€ ์„œ๋ฒ„์—์„œ ์šด์˜ํ•œ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„, ์ปจํ…Œ์ด๋„ˆํ™” ์‹œ์ผœ์„œ Docker ๋“ฑ์œผ๋กœ ์šด์˜ํ•˜๊ฒŒ ๋˜๋ฉด IP ์ฃผ์†Œ๊ฐ€ ๋‹ฌ๋ผ์ง€๊ฒŒ ๋˜๊ณ , ๊ฒฝ์šฐ์— ๋”ฐ๋ผ์„œ๋Š” ์ง„์งœ ๋‹ค๋ฅธ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆผ์ฒ˜๋Ÿผ API Gateway๋Š” API ์„œ๋ฒ„ ์•ž๋‹จ์—์„œ ๋ชจ๋“  ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋‹จ์ผํ™” ํ•ด์ฃผ๋Š” ๋˜ ๋‹ค๋ฅธ ์„œ๋ฒ„์˜ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋„๋ฉ”์ธ์ธ neonkid.xyz๋ฅผ ์˜ˆ๋กœ ๋“ค์–ด์„œ ํ‘œํ˜„์„ ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ œ๊ฐ€ ์ €๋Ÿฐ API๋ฅผ ๋งŒ๋“ค๊ณ  API Gateway๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋‹จ์ผํ™” ํ•œ๋‹ค๋ฉด ์ €๋ ‡๊ฒŒ๋„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด์ฃ .

์•„๋งˆ ๊ธฐ์กด ์ธํ”„๋ผ๋ฅผ ์šด์˜ํ•˜์‹œ๋˜ ๋ถ„๋“ค์ด์‹œ๋ผ๋ฉด, ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ(Reverse Proxy) ๊ธฐ์ˆ ์„ ์—ฐ์ƒํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๊ณผ ๊ฑฐ์˜ ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•˜๋Š” ์กด์žฌ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— API Gateway๋Š” ์ธ์ฆ ์„œ๋น„์Šค๋ฅผ ์ถ”๊ฐ€๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์–ด, ์š”์ฒญ, ์‘๋‹ต์— ๋”ฐ๋ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด๋ถ€์— ์žˆ๋Š” ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋กœ ๋ผ์šฐํŒ…ํ•˜๋Š” ์—ญํ• ๋„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

์ด ์™ธ์—๋„ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

 

 

API Gateway์˜ ์ฃผ์š” ๊ธฐ๋Šฅ

 

1. ์ธ์ฆ/์ธ๊ฐ€ ์„œ๋น„์Šค

์ธ์ฆ/์ธ๊ฐ€ ์„œ๋น„์Šค๋Š” ์„œ๋น„์Šค ํ˜ธ์ถœ์— ์žˆ์–ด์„œ ๋งค์šฐ ์ค‘์š”ํ•œ ์—ญํ•  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž์™€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๋Š” ์›น ์„œ๋น„์Šค๋“ค์ด ๋Œ€๋ถ€๋ถ„์ธ๋ฐ, ๊ทธ๋“ค์˜ ํ˜ธ์ถœ์ด ์ž์œ ๋กญ๋‹ค๋ฉด ๋ฌธ์ œ๊ฐ€ ์žˆ๊ฒ ์ฃ . 

๊ทธ๋Ÿฐ๋ฐ, ์„œ๋น„์Šค๊ฐ€ ๋ถ„๋ฆฌ๋œ๋‹ค๋ฉด, ์ด๋Ÿฌํ•œ ๋ณด์•ˆ ์ฒ˜๋ฆฌ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์ค˜์•ผ ํ• ๊นŒ์š”? ๊ธฐ์กด ๋ชจ๋†€๋ฆฌํ‹ฑ ์•„ํ‚คํ…์ฒ˜์—์„œ๋Š” ๊ณ ๋ฏผํ•  ํ•„์š”๋„ ์—†์ด ์ด๋Ÿฌํ•œ ๋ณด์•ˆ์ฒ˜๋ฆฌ๋ฅผ ๋””ํŽœ๋˜์‹œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ฒ˜๋ฆฌํ–ˆ๊ฒ ์ฃ . ํ•˜์ง€๋งŒ ์„œ๋น„์Šค๊ฐ€ ๊ฐ๊ฐ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๋‹ค๋ฉด? ๊ทธ๋“ค ๋””ํŽœ๋˜์‹œ๋ฅผ ๊ฐ API๋งˆ๋‹ค ๋งŒ๋“ค์–ด์ค€๋‹ค๋ฉด ์†Œ์Šค๊ฐ€ ์ค‘๋ณต๋˜๊ณ , ๊ทธ๊ฒŒ ์‹ฌํ•ด์ง€๋ฉด ์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ์ •๋ง ํž˜๋“ค์–ด์ง‘๋‹ˆ๋‹ค. 

Spring์œผ๋กœ ์˜ˆ๋ฅผ ๋“ค์ž๋ฉด, ๊ฐ ์„œ๋น„์Šค์— Spring Security ๋””ํŽœ๋˜์‹œ ๋„ฃ๊ณ , ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฑฐ๋ž‘ ๊ฐ™์ฃ ...

API Gateway์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์ธ์ฆ, SSL ๋“ฑ์˜ ์„œ๋น„์Šค๋ฅผ ์˜คํ”„๋กœ๋“œํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ๋ถˆํŽธํ•จ์„ ํ•ด์†Œ์‹œ์ผœ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

2. ๋ผ์šฐํŒ…๊ณผ ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ

๋Œ€์šฉ๋Ÿ‰ ์ฒ˜๋ฆฌ ์„œ๋น„์Šค์— ์žˆ์–ด ๊ฐ€์žฅ ํ•„์ˆ˜์ธ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์€ ์ด์ œ๋Š” ๊ฑฐ์˜ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์— ํ•„์ˆ˜๊ฐ€ ๋˜์–ด๋ฒ„๋ ธ์ฃ . ๋‹ค๋งŒ ์žฅ์ ์ด ์žˆ๋‹ค๋ฉด, ๋ชจ๋†€๋ฆฌํ‹ฑ ์•„ํ‚คํ…์ฒ˜์—์„œ๋Š” ๋ชจ๋“  ์„œ๋น„์Šค๋“ค์— ๋Œ€ํ•ด ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ํ•ด์คฌ๋‹ค๋ฉด, ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์—์„œ๋Š” ์‹ค์ œ๋กœ ์š”์ฒญ์ด ๋งŽ์€ ์„œ๋น„์Šค์— ๋Œ€ํ•ด์„œ๋งŒ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๊ฑฐ๋‚˜ ์Šค์ผ€์ผ ์—…-์•„์›ƒ์˜ ์ž์œ ๋„๊ฐ€ ์ฆ๊ฐ€ํ–ˆ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๊ฒ ๋„ค์š”.

๋˜ํ•œ API ์„œ๋ฒ„๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•˜๊ฑฐ๋‚˜ ํ…Œ์ŠคํŠธ ์ค‘์— ๋‹ค๋ฅธ URI๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ผ์šฐํŒ… ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด์ค๋‹ˆ๋‹ค.

 

3. ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ (Service Discovery)

MSA์— ์žˆ์–ด ๊ฐ€์žฅ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์„œ๋น„์Šค๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๋Š” ์ƒํ™ฉ์—์„œ ๊ฐ ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์„œ๋น„์Šค๋งˆ๋‹ค ๊ณ ์œ ์ ์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” IP์™€ ํฌํŠธ ์ฃผ์†Œ๋ฅผ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. API ๊ฐฏ์ˆ˜๊ฐ€ ๊ทธ๋ฆฌ ๋งŽ์ง€ ์•Š๋‹ค๋ฉด ํฐ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๊ฒ ์ง€๋งŒ API ๊ฐฏ์ˆ˜๊ฐ€ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ๋งŽ๊ณ , ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ํ†ตํ•ด์„œ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค๊ฐ€ ์›€์ง์ด๊ณ  ์žˆ๋‹ค๋ฉด, ์‰ฝ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ๋Š” ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์„œ๋น„์Šค์˜ IP, ํฌํŠธ ์ฃผ์†Œ๋ฅผ ์ฐพ์•„์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ด ๊ธฐ๋Šฅ์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ณณ์ด ๋ฐ”๋กœ ํด๋ผ์šฐ๋“œ์ธ๋ฐ, ํด๋ผ์šฐ๋“œ์˜ ๊ฒฝ์šฐ๋Š” ์Šค์ผ€์ผ ์—…-๋‹ค์šด์ด ์ž์ฃผ ๋ฐœ์ƒํ•˜๊ณ , ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ, ์†Œ๋ฉธ์— ๋”ฐ๋ผ IP, ํฌํŠธ ์ฃผ์†Œ๊ฐ€ ๋‹ฌ๋ผ์งˆ ๋ฟ๋”๋Ÿฌ ๋˜ ๊ณ ์ •๋œ ๊ฐ’์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์›ํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ด๋“ค ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด์ฃผ๋Š” ๊ฒƒ์€ ๊ทธ์•ผ ๋ง๋กœ ํ•„์ˆ˜๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์ฃ .

 

๋งˆ์น˜๋ฉฐ...

์—ฌ๊ธฐ๊นŒ์ง€, API Gateway์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ค„๋ดค์Šต๋‹ˆ๋‹ค. ์ž์„ธํžˆ ํ›‘์–ด๋ณด๋ฉด, ๊ธฐ์กด ์ธํ”„๋ผ ํ™˜๊ฒฝ์—์„œ ํŽธํ•˜๊ฒŒ ์“ฐ๋˜ ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์ด ๋ณด์ผ ๊ฒƒ์ด๊ณ , ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์„ ํ•ด๋ณด์‹  ๋ถ„๋“ค์ด๋ผ๋ฉด, ํ•œ ๋ฒˆ ์ฏค ๊ฒฝํ—˜ํ•ด ๋ณธ ๊ณ ๋ฏผ๋“ค์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. 

์ด ๊ธ€์„ ์“ฐ๋ฉด์„œ ์ฐธ๊ณ ํ•œ ๊ธ€์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์— ์žˆ๋Š” ๋‚ด์šฉ ์ค‘์—๋Š” SOA ํ”„๋กœ์ ํŠธ์˜ ์‹คํŒจ ์‚ฌ๋ก€ ํฐ ๊นŒ๋‹ญ์ด ์ ํ˜€์žˆ๋Š”๋ฐ์š”. ๊ทธ ์ค‘์— ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ ESB ๋‚ด๋ถ€ ๋กœ์ง ์ฒ˜๋ฆฌ์— ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์˜€์Šต๋‹ˆ๋‹ค. ๊ณผ๊ฑฐ์—๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋Œ€๋ถ€๋ถ„์˜ ์š”์ฒญ/์‘๋‹ต์„ XML๋กœ ์ฒ˜๋ฆฌํ–ˆ๋Š”๋ฐ, XML์„ ํ•œ ๋ฒˆ ํŒŒ์‹ฑํ•ด๋ณด๊ฑฐ๋‚˜ ์จ๋ณด์‹  ๋ถ„๋“ค์ด๋ผ๋ฉด ๋Š๋ผ์‹œ๊ฒ ์ง€๋งŒ ๊ต‰์žฅํžˆ ํŒŒ์‹ฑ๋„ ์–ด๋ ต๊ณ , ์ฒ˜๋ฆฌ ์†๋„ ๋˜ํ•œ ๋ฌด์ง„์žฅ ๋Š๋ฆฝ๋‹ˆ๋‹ค..

์ง€๊ธˆ์€ JSON, GraphQL์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ , ์ € ๋˜ํ•œ ๊ทธ๊ฒƒ์„ ๋งŽ์ด ์ง€ํ–ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ๊ฐˆ์ˆ˜๋ก ๋Œ€์šฉ๋Ÿ‰ ์ฒ˜๋ฆฌ ์„œ๋น„์Šค์˜ ์ˆ˜์š”๋Š” ๊ณ„์† ๋Š˜์–ด๋‚  ๊ฒƒ์ด๊ณ , ์ด๋Ÿฌํ•œ ์˜ค๋ฒ„ํ—ค๋“œ ๊ฐ์†Œ, ํšจ์œจ์ ์ธ ์•„ํ‚คํ…์ฒ˜์˜ ์„ค๊ณ„๋Š” ํฐ ๊ณผ์ œ ๊ฑฐ๋ฆฌ๋กœ ๋‚จ๊ฒŒ ๋ ์ง€๋„ ๋ชจ๋ฅด๊ฒ ๋„ค์š”.

๋‹ค์Œ ํฌ์ŠคํŠธ์—์„œ๋Š” Spring Cloud๋ฅผ ์ด์šฉํ•˜์—ฌ ์ด ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ ์–ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

Ref: MSA ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๊ธฐ - Velopert ๋‹˜ ํฌ์ŠคํŠธ

๋ฐ˜์‘ํ˜•
TAGS.

Tistory Comments