App Engine ๋ฐฉํ™”๋ฒฝ ์ดํ•ด

๋ฐฉํ™”๋ฒฝ์€ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์˜ ํ—ˆ์šฉ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉํ™”๋ฒฝ์€ ์ˆ˜์‹  ํŠธ๋ž˜ํ”ฝ(์ธ๊ทธ๋ ˆ์Šค), ๋ฐœ์‹  ํŠธ๋ž˜ํ”ฝ(์ด๊ทธ๋ ˆ์Šค) ๋˜๋Š” ๋‘˜ ๋‹ค์— ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. App Engine์˜ ๊ฒฝ์šฐ App Engine ๋ฐฉํ™”๋ฒฝ์€ ์•ฑ ๋˜๋Š” ์„œ๋น„์Šค๋กœ ๋ผ์šฐํŒ…๋˜๋Š” ์ˆ˜์‹  ํŠธ๋ž˜ํ”ฝ์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

๊ฐœ์š”

App Engine ๋ฐฉํ™”๋ฒฝ์€ ๋‹ค์Œ์„ ํฌํ•จํ•œ ์•ฑ์— ๋Œ€ํ•œ ๋ชจ๋“  ์œ ํ˜•์˜ ์š”์ฒญ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • ์•ฑ์˜ appspot.com ์ฃผ์†Œ ๋˜๋Š” ์ปค์Šคํ…€ ๋„๋ฉ”์ธ์œผ๋กœ ๋ผ์šฐํŒ…๋˜๋Š” ์ผ๋ฐ˜ ์›น ํŠธ๋ž˜ํ”ฝ
  • Cloud Load Balancing์—์„œ ์ˆ˜์‹ ๋˜๋Š” ์š”์ฒญ
  • Compute Engine ๊ฐ€์ƒ ๋จธ์‹ (VM) ๋ฐ Cloud Tasks์™€ ๊ฐ™์€ ๋‚ด๋ถ€ ์†Œ์Šค์—์„œ ๋ฐœ์ƒํ•œ ํŠธ๋ž˜ํ”ฝ

์•ฑ์ด ๋‹ค๋ฅธ ๋„คํŠธ์›Œํ‚น ์„œ๋น„์Šค ๋˜๋Š” ์ œํ’ˆ์„ ์‚ฌ์šฉํ•˜๋„๋ก ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ App Engine ๋ฐฉํ™”๋ฒฝ๊ณผ ๋‹ค๋ฅธ ์ œํ’ˆ์˜ ๋ฐฉํ™”๋ฒฝ ๋˜๋Š” ๋ณด์•ˆ ์„ค์ •์—์„œ ์ˆ˜์‹ ๋˜๋Š” ํŠธ๋ž˜ํ”ฝ์„ ์ œ์–ดํ•  ๊ทœ์น™์„ ๋งŒ๋“ค์–ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” App Engine ๋ฐฉํ™”๋ฒฝ์˜ ์ผ๋ฐ˜์ ์ธ ๋™์ž‘๊ณผ ํŠน์ˆ˜ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

App Engine ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™

Google Cloud ์ฝ˜์†”, Google Cloud CLI ๋˜๋Š” Admin API๋กœ ์ง€์ •๋œ IP ๋ฒ”์œ„๋ฅผ ํ—ˆ์šฉํ•˜๊ฑฐ๋‚˜ ์ฐจ๋‹จํ•˜๋Š” ๊ทœ์น™์„ ์„ค์ •ํ•˜์—ฌ App Engine ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ๊ทœ์น™๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๋ชจ๋“  ์š”์ฒญ์ด ์•ฑ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ๊ทœ์น™๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ์š”์ฒญ์„ ๋ชจ๋‘ ์ฐจ๋‹จํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ(๊ธฐ๋ณธ์ ์œผ๋กœ ํ—ˆ์šฉ๋˜๋Š” ๋‚ด๋ถ€ ์„œ๋น„์Šค์˜ ์š”์ฒญ์€ ์ œ์™ธ) default ๊ทœ์น™์˜ ์ž‘์—…์„ deny๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

ํŠน์ •ํ•œ ๊ฒฝ์šฐ App Engine ๊ฐ€๋ณ€ํ˜• ํ™˜๊ฒฝ์—์„œ VPC(Virtual Private Cloud) ์ˆ˜์ค€์œผ๋กœ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ์ž๋™ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ VPC ๋ฐฉํ™”๋ฒฝ์ด App Engine ๋ฐฉํ™”๋ฒฝ๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์„ธ์š”.

์„œ๋น„์Šค์˜ ์ˆ˜์‹  ์š”์ฒญ ํ—ˆ์šฉ

๋‹ค์Œ ํ‘œ์—๋Š” ์ผ๋ฐ˜์ ์ธ ์„œ๋น„์Šค์— ๋Œ€ํ•œ IP ๋ฒ”์œ„์™€ App Engine ๋ฐฉํ™”๋ฒฝ ๋™์ž‘์ด ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜๋Š” IP ๋ฒ”์œ„๋Š” ์ˆ˜์‹  ์š”์ฒญ์ด App Engine ํ‘œ์ค€ ํ™˜๊ฒฝ ๋˜๋Š” ๊ฐ€๋ณ€ํ˜• ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋˜๋Š” ๋ฒ„์ „์œผ๋กœ ์ „๋‹ฌ๋˜๋Š”์ง€์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

์„œ๋น„์Šค App Engine ํ‘œ์ค€ ํ™˜๊ฒฝ์œผ๋กœ ์ „์†ก๋œ ์š”์ฒญ์˜ IP ๋ฒ”์œ„ App Engine ๊ฐ€๋ณ€ํ˜• ํ™˜๊ฒฝ์œผ๋กœ ์ „์†ก๋œ ์š”์ฒญ์˜ IP ๋ฒ”์œ„
App Engine ํฌ๋ก  0.1.0.1/32 ๋˜๋Š” 0.1.0.2/32, ๊ฑฐ๋ถ€๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ ๊ธฐ๋ณธ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™ ์šฐํšŒ 0.1.0.1/32 ๋˜๋Š” 0.1.0.2/32
์™ธ๋ถ€ IP ์ฃผ์†Œ๊ฐ€ ์žˆ๋Š” Compute Engine ์ธ์Šคํ„ด์Šค ์ธ์Šคํ„ด์Šค์˜ ์™ธ๋ถ€ IP ์ฃผ์†Œ ์ธ์Šคํ„ด์Šค์˜ ์™ธ๋ถ€ IP ์ฃผ์†Œ
์™ธ๋ถ€ IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” Compute Engine ์ธ์Šคํ„ด์Šค 0.0.0.0/32 0.0.0.0/32
์•„์›ƒ๋ฐ”์šด๋“œ ์—ฐ๊ฒฐ์— Cloud NAT๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์™ธ๋ถ€ IP ์ฃผ์†Œ๊ฐ€ ์—†๋Š” Compute Engine ์ธ์Šคํ„ด์Šค 0.0.0.0/32 0.0.0.0/32
Cloud Tasks์—์„œ App Engine HTTP ๋ฐ App Engine ์ž‘์—…์„ ์‚ฌ์šฉํ•˜๋Š” Cloud Scheduler ์ž‘์—…(App Engine ํƒœ์Šคํฌ ํ ํฌํ•จ) 0.1.0.2/32, ๊ฑฐ๋ถ€๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ ๊ธฐ๋ณธ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™ ์šฐํšŒ 0.1.0.2/32
Cloud Storage ๋˜๋Š” Blobstore 0.1.0.30/32 ํ•ด๋‹น ์—†์Œ
URL ๊ฐ€์ ธ์˜ค๊ธฐ 0.1.0.40/32 0.1.0.40/32
์›Œ๋ฐ ์š”์ฒญ 0.1.0.3/32, ๊ฑฐ๋ถ€๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ ๊ธฐ๋ณธ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™ ์šฐํšŒ ํ•ด๋‹น ์—†์Œ

์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋”ฐ๋ผ App Engine ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๊ตฌ์„ฑํ•  ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ถ”๊ฐ€ ์•ˆ๋‚ด๊ฐ€ ์ ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • App Engine ํ‘œ์ค€ ๋˜๋Š” ๊ฐ€๋ณ€ํ˜• ํ™˜๊ฒฝ์œผ๋กœ ์ „์†ก๋˜๋Š” ์ƒˆ๋กœ ์ƒ์„ฑ๋˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธ๋œ App Engine ํฌ๋ก  ์ž‘์—…์˜ ์š”์ฒญ์€ 0.1.0.2์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ด์ „ gcloud ๋ฒ„์ „(326.0.0 ์ด์ „)์—์„œ ์ƒ์„ฑ๋œ ํฌ๋ก  ์ž‘์—…์˜ ๊ฒฝ์šฐ 0.1.0.1์—์„œ ํฌ๋ก  ์š”์ฒญ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. App Engine Cron Service์˜ ์š”์ฒญ์„ ์‹๋ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํฌ๋ก  ์š”์ฒญ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
  • ์•ฑ์ด Cloud Load Balancing๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ฑฐ๋‚˜ VPC ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ, ์•„๋ž˜์˜ ๋‹ค๋ฅธ ์ œํ’ˆ ๋˜๋Š” ์„œ๋น„์Šค์™€ ์ƒํ˜ธ์ž‘์šฉ ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

App Engine ํ‘œ์ค€ ์˜ˆ์‹œ

ํ‘œ์ค€ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋˜๋Š” ์•ฑ์—๋Š” frontend_service ๋ฐ backend_service์˜ ๋‘ ๊ฐ€์ง€ ์„œ๋น„์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. frontend_service๋Š” Cloud Tasks๋ฅผ App Engine HTTP์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ backend_service์— ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. default ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์€ deny๋กœ ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ์—๋„ Cloud Tasks ์š”์ฒญ์„ ํ—ˆ์šฉํ•˜๋ฏ€๋กœ Cloud Tasks์— ๋Œ€ํ•œ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์•ฑ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•˜๊ณ  Cloud Tasks ์š”์ฒญ์„ ๋ช…์‹œ์ ์œผ๋กœ ์ฐจ๋‹จํ•˜๋ ค๋ฉด IP ๋ฒ”์œ„ 0.1.0.2/32์— ๋Œ€ํ•œ deny ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๋งŒ๋“œ์„ธ์š”.

App Engine ๊ฐ€๋ณ€ํ˜• ์˜ˆ์‹œ

๊ฐ€๋ณ€ํ˜• ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋˜๋Š” ์•ฑ์—๋Š” frontend_service ๋ฐ backend_service์˜ ๋‘ ๊ฐ€์ง€ ์„œ๋น„์Šค๊ฐ€ ์žˆ์œผ๋ฉฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๊ฑฐ๋ถ€ํ•˜๋„๋ก ๊ตฌ์„ฑ๋œ ๋ฐฉํ™”๋ฒฝ์ด ์žˆ์Šต๋‹ˆ๋‹ค. frontend_service๋Š” Cloud Tasks๋ฅผ App Engine HTTP์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ backend_service์— ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. default ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์€ Cloud Tasks ์š”์ฒญ์„ ๊ฑฐ๋ถ€ํ•˜๋ฏ€๋กœ 0.1.0.2/32์— ๋Œ€ํ•œ allow ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์ œํ’ˆ ๋˜๋Š” ์„œ๋น„์Šค์™€ ์ƒํ˜ธ์ž‘์šฉ

Cloud Load Balancing

Cloud Load Balancing ๋ฐ ์„œ๋ฒ„๋ฆฌ์Šค NEG๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ์‚ฌํ•ญ์— ์œ ์˜ํ•˜์„ธ์š”.

  • ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋Š” App Engine ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๊ฐ„์„ญํ•˜๊ฑฐ๋‚˜ ์ƒํ˜ธ์ž‘์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. App Engine ๊ทœ์น™์€ ์„œ๋ฒ„๋ฆฌ์Šค NEG๊ฐ€ ํŠธ๋ž˜ํ”ฝ์„ App Engine์œผ๋กœ ์ „์†กํ•  ๋•Œ๊นŒ์ง€ ํ‰๊ฐ€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์•ฑ์ด ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ(๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ VPC)์—์„œ ์ „์†ก๋˜๋Š” ์š”์ฒญ๋งŒ ์ˆ˜์‹ ํ•˜๋„๋ก ์ธ๊ทธ๋ ˆ์Šค ์ œ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ์˜ App Engine URL์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋˜๋Š” ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ, Cloud Armor ๋ณด์•ˆ ์ •์ฑ…, SSL ์ธ์ฆ์„œ, ๋น„๊ณต๊ฐœ ํ‚ค๋ฅผ ์šฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ธ๊ทธ๋ ˆ์Šค ์ œ์–ด๊ฐ€ internal-and-cloud-load-balancing ํŠธ๋ž˜ํ”ฝ์„ ์ˆ˜์‹ ํ•˜๋„๋ก ์„ค์ •๋œ ๊ฒฝ์šฐ ๊ธฐ๋ณธ App Engine ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์€ ๊ทธ๋Œ€๋กœ ๋‘๊ณ (allow) Google Cloud Armor ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฉํ™”๋ฒฝ(WAF) ๊ทœ์น™์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

VPC ๋ฐฉํ™”๋ฒฝ

App Engine ๋ฐฉํ™”๋ฒฝ์€ VPC ๊ธฐ๋ฐ˜ ๋ฐฉํ™”๋ฒฝ๊ณผ ๋ณ„๋„๋กœ ๊ตฌ์„ฑ ๋ฐ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. VPC ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์€ Compute Engine ๊ฐ€์ƒ ๋จธ์‹ ๊ณผ ๊ฐ™์ด VPC ๋„คํŠธ์›Œํฌ์—์„œ ์‹คํ–‰๋˜๋Š” ๋ฆฌ์†Œ์Šค์— ์ ์šฉ๋˜๋Š” ๋ฐ˜๋ฉด App Engine ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์€ ์•ฑ ๋˜๋Š” ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ˆ˜์‹  ์š”์ฒญ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์— ๊ตฌ์„ฑ๋œ VPC ๊ธฐ๋ฐ˜ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™(์˜ˆ: VPC ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™ ๋˜๋Š” ๊ณ„์ธต์  ๋ฐฉํ™”๋ฒฝ ์ •์ฑ…)์ด ์žˆ๋Š” ๊ฒฝ์šฐ VPC ์ˆ˜์ค€ ๋ฐฉํ™”๋ฒฝ๊ณผ App Engine ๋ฐฉํ™”๋ฒฝ ๋ชจ๋‘ App Engine ์•ฑ์ด ์š”์ฒญ์„ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ˆ˜์‹  ์š”์ฒญ์˜ IP ๋ฒ”์œ„๋ฅผ ํ—ˆ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

VPC ์ˆ˜์ค€์˜ ๋ฐฉํ™”๋ฒฝ์˜ ๊ฒฝ์šฐ ๊ณ„์ธต์  ๋ฐฉํ™”๋ฒฝ ์ •์ฑ…์€ VPC ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™๋ณด๋‹ค ๋จผ์ € ํ‰๊ฐ€๋˜๊ณ  VPC ๋ฐฉํ™”๋ฒฝ ํ‰๊ฐ€ ์ค‘์— ์ˆœ์„œ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. VPC ์ˆ˜์ค€ ๋ฐฉํ™”๋ฒฝ๊ณผ App Engine ๋ฐฉํ™”๋ฒฝ์—์„œ ๋ชจ๋‘ ํ—ˆ์šฉํ•˜๋Š” ์š”์ฒญ์€ App Engine ์•ฑ ๋˜๋Š” ์„œ๋น„์Šค์—์„œ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค. VPC ๋ฐฉํ™”๋ฒฝ์ด App Engine ๋ฐฉํ™”๋ฒฝ์—์„œ ํ—ˆ์šฉํ•˜๋Š” ๋™์ผํ•œ IP ๋ฒ”์œ„์˜ ์š”์ฒญ์„ ๊ฑฐ๋ถ€ํ•˜๋ฉด App Engine ์•ฑ์—๋Š” ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ณต์œ  VPC

App Engine ๊ฐ€๋ณ€ํ˜• ํ™˜๊ฒฝ์€ ์•ฑ์ด ๊ณต์œ  VPC๋ฅผ ํ†ตํ•ด VPC ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ตฌ์„ฑ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋ฐฉํ™”๋ฒฝ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

App Engine ๊ฐ€๋ณ€ํ˜• ์•ฑ์ด ๊ณต์œ  VPC๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ App Engine ๊ฐ€๋ณ€ํ˜• ํ™˜๊ฒฝ์€ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. VPC ๋„คํŠธ์›Œํฌ์—์„œ ์•ก์„ธ์Šค๋ฅผ ์ œ์–ดํ•˜๊ณ  ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ณต์œ  VPC ๋„คํŠธ์›Œํฌ์—์„œ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ํŠธ๋ž˜ํ”ฝ ์†Œ์Šค์˜ ์š”์ฒญ์„ ํ—ˆ์šฉํ•˜๋ ค๋ฉด VPC ๋ฐฉํ™”๋ฒฝ ๋ฐ App Engine ๋ฐฉํ™”๋ฒฝ์—์„œ ๋™์ผํ•œ IP ๋ฒ”์œ„๋ฅผ ํ—ˆ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. IP ๋ฒ”์œ„๋ฅผ ๋‘ ๊ณณ(VPC ๋ฐฉํ™”๋ฒฝ๊ณผ App Engine ๋ฐฉํ™”๋ฒฝ)์— ๋ชจ๋‘ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ํ•ด๋‹น IP ๋ฒ”์œ„์—์„œ App Engine ์•ฑ ๋˜๋Š” ์„œ๋น„์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

App Engine ๊ฐ€๋ณ€ํ˜• ํ™˜๊ฒฝ ์•ฑ์ด ๊ณต์œ  VPC๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ตฌ์„ฑ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ App Engine ๊ฐ€๋ณ€ํ˜• ํ™˜๊ฒฝ์€ ์•ฑ์ด ๋ถ„ํ•  ์ƒํƒœ ํ™•์ธ(๊ธฐ๋ณธ๊ฐ’) ๋˜๋Š” ๊ธฐ์กด ์ƒํƒœ ํ™•์ธ์„ ์‚ฌ์šฉํ•˜๋Š”์ง€์— ๋”ฐ๋ผ ์ตœ๋Œ€ ๋‘ ๊ฐœ์˜ ์ˆจ๊ฒจ์ง„ VPC ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ˆจ๊ฒจ์ง„ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์€ ๊ฐ€๋ณ€ํ˜• ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ํŠธ๋ž˜ํ”ฝ ๋ฐ ์ƒํƒœ ํ™•์ธ ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ๋„คํŠธ์›Œํฌ ์ด๋ฆ„: app.yaml์— ์ง€์ •๋œ ๋„คํŠธ์›Œํฌ ๋˜๋Š” ๊ตฌ์„ฑ๋œ ๋„คํŠธ์›Œํฌ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๊ธฐ๋ณธ ๋„คํŠธ์›Œํฌ์ž…๋‹ˆ๋‹ค.
  • ๋Œ€์ƒ ํƒœ๊ทธ: app.yaml ํŒŒ์ผ์— ์ง€์ •๋œ instance_tags์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋Œ€์ƒ ํƒœ๊ทธ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฉด App Engine ๊ฐ€๋ณ€ํ˜• ํ™˜๊ฒฝ์€ aef-INSTANCE_ID ํ˜•์‹์„ ๋”ฐ๋ฅด๋Š” ๊ณ ์œ ํ•œ ํƒœ๊ทธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ํƒœ๊ทธ๋Š” ํŠน์ • ๊ฐ€๋ณ€ํ˜• ๋ฒ„์ „์˜ ์ธ์Šคํ„ด์Šค์—๋งŒ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฉฐ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์€ ์ด ํƒœ๊ทธ๋ฅผ ํƒ€๊ฒŸํŒ…ํ•ฉ๋‹ˆ๋‹ค.
  • ํŠธ๋ž˜ํ”ฝ ๋ฐฉํ–ฅ: ์ธ๊ทธ๋ ˆ์Šค
  • ์ผ์น˜ ์‹œ ์ž‘์—…: ํ—ˆ์šฉ
  • ์†Œ์Šค IP ๋ฒ”์œ„: 35.191.0.0/16 ๋ฐ 130.211.0.0/22
  • ํ”„๋กœํ† ์ฝœ ๋ฐ ํฌํŠธ:
    • tcp: 8443(๊ธฐ์กด ์ƒํƒœ ํ™•์ธ์šฉ) ๋˜๋Š” 10402(๋ถ„ํ•  ์ƒํƒœ ํ™•์ธ์šฉ)
  • ์šฐ์„ ์ˆœ์œ„: 1000

์บ์‹œ๋œ ์ฝ˜ํ…์ธ ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๋ฐฉ์ง€

App Engine ๋ฐฉํ™”๋ฒฝ์€ ์›น ํ”„๋ก์‹œ, ๋ธŒ๋ผ์šฐ์ €์™€ ๊ฐ™์ด ์ฝ˜ํ…์ธ ๋ฅผ ์บ์‹œํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ๋’ค์— ์œ„์น˜ํ•ด ์žˆ์Šต๋‹ˆ๋‹ค. ์บ์‹œ๋œ ์ฝ˜ํ…์ธ ๋Š” ๋งŒ๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ํŠน์ • URL์—์„œ ๊ณต๊ฐœ์ ์œผ๋กœ ์ œ๊ณต๋˜๋ฉฐ, ์ƒˆ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๋งŒ๋“  ํ›„์—๋„ ์•ก์„ธ์Šค ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Cache-Control ๋ฐ Expires HTTP ์‘๋‹ต ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ˜ํ…์ธ ๊ฐ€ ์บ์‹œ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์บ์‹ฑ์„ ์ œ์–ดํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋น„๋กฏํ•ด ์ด๋Ÿฌํ•œ HTTP ํ—ค๋”์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์บ์‹ฑ ๋ฐฉ์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ ๋‹จ๊ณ„

๋ฐฉํ™”๋ฒฝ ๋งŒ๋“ค๊ธฐ์˜ ์•ˆ๋‚ด์— ๋”ฐ๋ผ App Engine ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.