์‹คํŒจํ•œ ์š”์ฒญ ์žฌ์‹œ๋„

์ด ํŽ˜์ด์ง€์—์„œ๋Š” Identity and Access Management(IAM) API์— ๋Œ€ํ•œ ์‹คํŒจํ•œ ์š”์ฒญ์„ ์žฌ์‹œ๋„ํ•˜๊ธฐ ์œ„ํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์•ˆ์ „ํ•˜๊ฒŒ ์žฌ์‹œ๋„ํ•  ์ˆ˜ ์žˆ๋Š” ์š”์ฒญ์˜ ๊ฒฝ์šฐ ์ง€ํ„ฐ๊ฐ€ ๋„์ž…๋œ ์ž˜๋ฆฐ ์ง€์ˆ˜ ๋ฐฑ์˜คํ”„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ž˜๋ฆฐ ์ง€์ˆ˜ ๋ฐฑ์˜คํ”„ ๊ฐœ์š”

IAM API์— ๋Œ€ํ•œ ๊ฐ ์š”์ฒญ์€ ์„ฑ๊ณตํ•˜๊ฑฐ๋‚˜ ์‹คํŒจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๊ธฐ ์—†์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์žฌ์‹œ๋„๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์งง์€ ๊ธฐ๊ฐ„ ๋‚ด์— ๋งŽ์€ ์ˆ˜์˜ ์žฌ์‹œ๋„๊ฐ€ IAM์— ์ „์†ก๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Google Cloud ํ”„๋กœ์ ํŠธ์—์„œ ๋ชจ๋“  IAM ๋ฆฌ์†Œ์Šค์— ์ ์šฉ๋˜๋Š” ํ• ๋‹น๋Ÿ‰ ๋ฐ ์ œํ•œ์„ ์ดˆ๊ณผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ๋„คํŠธ์›Œํฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ํ‘œ์ค€ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ์ „๋žต์ธ ์žก์Œ์ด ๋„์ž…๋œ ์ž˜๋ฆฐ ์ง€์ˆ˜ ๋ฐฑ์˜คํ”„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์—์„œ ํด๋ผ์ด์–ธํŠธ๋Š” ์žฌ์‹œ๋„ ์‚ฌ์ด์˜ ์ง€์—ฐ ์‹œ๊ฐ„์„ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ๋Š˜๋ฆฌ๋ฉด์„œ ์‹คํŒจํ•œ ์š”์ฒญ์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ์žฌ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์žฌ์‹œ๋„ ์‚ฌ์ด์— ์žก์Œ์ด๋ผ๊ณ  ํ•˜๋Š” ์ž„์˜์˜ ์งง์€ ์ง€์—ฐ ์‹œ๊ฐ„์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ž„์˜์˜ ์ง€์—ฐ์€ Thundering Herd ๋ฌธ์ œ๋ผ๊ณ ๋„ ํ•˜๋Š” ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ์˜ ๋™๊ธฐํ™”๋œ ์žฌ์‹œ๋„ ์›จ์ด๋ธŒ๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์ง€์ˆ˜ ๋ฐฑ์˜คํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋‹ค์Œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ง€ํ„ฐ๊ฐ€ ํฌํ•จ๋œ ์ž˜๋ฆฐ ์ง€์ˆ˜ ๋ฐฑ์˜คํ”„๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

  1. IAM์— ์š”์ฒญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  2. ์š”์ฒญ์ด ์‹คํŒจํ•˜๋ฉด 1์ดˆ + random-fraction๋ฅผ ๋Œ€๊ธฐํ•œ ํ›„ ์š”์ฒญ์„ ์žฌ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
  3. ์š”์ฒญ์ด ์‹คํŒจํ•˜๋ฉด 2์ดˆ + random-fraction๋ฅผ ๋Œ€๊ธฐํ•œ ํ›„ ์š”์ฒญ์„ ์žฌ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
  4. ์š”์ฒญ์ด ์‹คํŒจํ•˜๋ฉด 4์ดˆ + random-fraction๋ฅผ ๋Œ€๊ธฐํ•œ ํ›„ ์š”์ฒญ์„ ์žฌ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
  5. ์ด ํŒจํ„ด์„ ๊ณ„์† ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ์žฌ์‹œ๋„ํ•  ๋•Œ๋งˆ๋‹ค 2n + random-fraction์ดˆ ๋™์•ˆ ๋Œ€๊ธฐํ•ฉ๋‹ˆ๋‹ค(์ตœ๋Œ€ maximum-backoff์‹œ๊ฐ„).
  6. deadline์ดˆ๊ฐ€ ์ง€๋‚˜๋ฉด ์š”์ฒญ ์žฌ์‹œ๋„๋ฅผ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ๋•Œ ๋‹ค์Œ ๊ฐ’์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์žฌ์‹œ๋„๋ฅผ ํ•˜๊ธฐ ์ „ ๋Œ€๊ธฐ ์‹œ๊ฐ„์€ min((2n + random-fraction), maximum-backoff)์ด๋ฉฐ, n์€ 0์—์„œ ์‹œ์ž‘ํ•˜๊ณ  ์žฌ์‹œ๋„ํ•  ๋•Œ๋งˆ๋‹ค 1์”ฉ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • random-fraction์„ 1๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž„์˜์˜ ์†Œ์ˆ˜ ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์žฌ์‹œ๋„ํ•  ๋•Œ๋งˆ๋‹ค ๋‹ค๋ฅธ ๊ฐ’์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ด ์ž„์˜์˜ ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋™๊ธฐํ™”๋˜๊ณ  ๋™์‹œ์— ๋‹ค์ˆ˜์˜ ์žฌ์‹œ๋„๋ฅผ ์ „์†กํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • maximum-backoff๋ฅผ ์žฌ์‹œ๋„ ์‚ฌ์ด์˜ ์ตœ๋Œ€ ๋Œ€๊ธฐ ์‹œ๊ฐ„(์ดˆ)์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๊ฐ’์€ 32์ดˆ ๋˜๋Š” 64์ดˆ(25 ๋˜๋Š” 26)์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๊ฐ’์„ ์„ ํƒํ•˜์„ธ์š”.
  • deadline์„ ์žฌ์‹œ๋„ ์ „์†ก์„ ์œ ์ง€ํ•  ์ตœ๋Œ€ ์‹œ๊ฐ„(์ดˆ)์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋งž๋Š” ๊ฐ’์„ ์„ ํƒํ•˜์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด ์‹œ๊ฐ„์— ํฌ๊ฒŒ ๋ฏผ๊ฐํ•˜์ง€ ์•Š์€ ์ง€์†์  ํ†ตํ•ฉ/์ง€์†์  ๋ฐฐํฌ(CI/CD) ํŒŒ์ดํ”„๋ผ์ธ์˜ ๊ฒฝ์šฐ deadline์„ 300์ดˆ(5๋ถ„)๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์žฌ์‹œ๋„ํ•  ์˜ค๋ฅ˜ ์œ ํ˜•

์˜ค๋ฅ˜ ์ฝ”๋“œ 500, 502, 503, 504๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” IAM API์— ๋Œ€ํ•œ ๋ชจ๋“  ์š”์ฒญ์— ์ด ์žฌ์‹œ๋„ ์ „๋žต์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์„ ํƒ์ ์œผ๋กœ ์˜ค๋ฅ˜ ์ฝ”๋“œ 404๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” IAM API์— ๋Œ€ํ•œ ์š”์ฒญ์— ์ด ์žฌ์‹œ๋„ ์ „๋žต์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. IAM ์ฝ๊ธฐ๋Š” eventual consistency๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“  ์งํ›„์— ๋ฆฌ์†Œ์Šค๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋กœ ์ธํ•ด 404 ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์˜ค๋ฅ˜ ์ฝ”๋“œ 409 ๋ฐ ์ƒํƒœ ABORTED๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” IAM API์— ๋Œ€ํ•œ ๋ชจ๋“  ์š”์ฒญ์— ์ด ์žฌ์‹œ๋„ ์ „๋žต์˜ ์ˆ˜์ •๋œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์œ ํ˜•์˜ ์˜ค๋ฅ˜๋Š” ๋™์‹œ์„ฑ ๋ฌธ์ œ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋ฏธ ๋ฎ์–ด์“ด ํ—ˆ์šฉ ์ •์ฑ…์„ ์—…๋ฐ์ดํŠธํ•˜๋ ค๊ณ  ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์œ ํ˜•์˜ ์˜ค๋ฅ˜์—์„œ๋Š” ์ง€ํ„ฐ๊ฐ€ ๋„์ž…๋œ ์ž˜๋ฆฐ ์ง€์ˆ˜ ๋ฐฑ์˜คํ”„๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•ญ์ƒ ์š”์ฒญ์˜ ์ „์ฒด read-modify-write ์‹œ๋ฆฌ์ฆˆ๋ฅผ ์žฌ์‹œ๋„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์“ฐ๊ธฐ ์ž‘์—…๋งŒ ์žฌ์‹œ๋„ํ•˜๋ฉด ์š”์ฒญ์ด ๊ณ„์† ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

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