2025๋…„ 12์›” 11์ผยท6๋ถ„ ์ฝ๊ธฐ

๋ฌด์ค‘๋‹จ(์ œ๋กœ ๋‹ค์šดํƒ€์ž„) ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ: ์•ˆ์ „ํ•˜๊ฒŒ ์œ ์ง€๋˜๋Š” ์ถ”๊ฐ€์  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

์ถ”๊ฐ€์  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜, ์•ˆ์ „ํ•œ ๋ฐฑํ•„, ๋‹จ๊ณ„์  ๋กค์•„์›ƒ์œผ๋กœ ์˜ค๋ž˜๋œ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ฌด์ค‘๋‹จ(์ œ๋กœ ๋‹ค์šดํƒ€์ž„) ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.

๋ฌด์ค‘๋‹จ(์ œ๋กœ ๋‹ค์šดํƒ€์ž„) ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ: ์•ˆ์ „ํ•˜๊ฒŒ ์œ ์ง€๋˜๋Š” ์ถ”๊ฐ€์  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ์—์„œ ๋ฌด์ค‘๋‹จ(์ œ๋กœ ๋‹ค์šดํƒ€์ž„)์ด ์‹ค์ œ๋กœ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ

๋ฌด์ค‘๋‹จ ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ์€ ์•„๋ฌด ๊ฒƒ๋„ ๋ฐ”๊พธ์ง€ ์•Š๋Š”๋‹ค๋Š” ๋œป์ด ์•„๋‹™๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋“ค์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์•ฑ์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋™์•ˆ ์‹คํŒจ๋‚˜ ์ž‘์—… ์ค‘๋‹จ ์—†์ด ๊ณ„์† ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

๋‹ค์šดํƒ€์ž„์€ ์‹œ์Šคํ…œ์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ๋ชจ๋“  ์ˆœ๊ฐ„์ž…๋‹ˆ๋‹ค. 500 ์—๋Ÿฌ, API ํƒ€์ž„์•„์›ƒ, ๋นˆ ํ™”๋ฉด์ด๋‚˜ ์ž˜๋ชป๋œ ๊ฐ’์ด ํ‘œ์‹œ๋˜๋Š” ํ™”๋ฉด, ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—… ์‹คํŒจ, ๋˜๋Š” ๊ธด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ์ž ๊ธˆ์œผ๋กœ ์ธํ•ด ์ฝ๊ธฐ๋Š” ๋˜์ง€๋งŒ ์“ฐ๊ธฐ๋ฅผ ๋ง‰๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋“ฑ์ด ๋ชจ๋‘ ์—ฌ๊ธฐ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

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

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

์ง„์งœ ๋ชฉํ‘œ๋Š” "ํ•˜๋‚˜์˜ ํฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๋นจ๋ฆฌ ๋๋‚ด๊ธฐ"๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋‹ค๋ฅธ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ์ƒํ™ฉ์—์„œ๋„ ๊ฐ ๋‹จ๊ณ„๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ์ž‘์€ ๋‹จ๊ณ„๋“ค์˜ ์—ฐ์†์ž…๋‹ˆ๋‹ค.

์‹ค์šฉ์ ์ธ ์ •์˜: ์ƒˆ๋กœ์šด ์ฝ”๋“œ์™€ ์ƒˆ๋กœ์šด ์Šคํ‚ค๋งˆ๋ฅผ ์–ด๋–ค ์ˆœ์„œ๋กœ๋“  ๋ฐฐํฌํ•ด๋„ ์‹œ์Šคํ…œ์ด ๊ณ„์† ๋™์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ์‚ฌ๊ณ ๋ฐฉ์‹์€ ์ „ํ˜•์ ์ธ ํ•จ์ •์„ ํ”ผํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ปฌ๋Ÿผ์ด ์ƒ๊ธฐ๊ธฐ ์ „์— ์ƒˆ ์•ฑ์„ ๋ฐฐํฌํ•˜๊ฑฐ๋‚˜ ์˜ค๋ž˜๋œ ์ฝ”๋“œ๊ฐ€ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒˆ ์ปฌ๋Ÿผ์„ ์ถ”๊ฐ€ํ•˜๋Š” ์‹ค์ˆ˜ ๋“ฑ์ž…๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ์„ ๋จผ์ € ์ถ”๊ฐ€์ (additive)์œผ๋กœ ๊ณ„ํšํ•˜๊ณ , ๋‹จ๊ณ„๋ฅผ ๋‚˜๋ˆ  ๋กค์•„์›ƒํ•˜๋ฉฐ, ์•„๋ฌด ๊ฒƒ๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ™•์‹ ํ•  ๋•Œ๋งŒ ์˜› ๊ฒฝ๋กœ๋ฅผ ์ œ๊ฑฐํ•˜์„ธ์š”.

๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ๊นจ์ง€ ์•Š๋Š” ์ถ”๊ฐ€์  ๋ณ€๊ฒฝ์œผ๋กœ ์‹œ์ž‘ํ•˜๊ธฐ

๋ฌด์ค‘๋‹จ ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ์œผ๋กœ ๊ฐ€๋Š” ๊ฐ€์žฅ ์•ˆ์ „ํ•œ ๋ฐฉ๋ฒ•์€ ๊ต์ฒด(replace)๊ฐ€ ์•„๋‹ˆ๋ผ ์ถ”๊ฐ€(add)์ž…๋‹ˆ๋‹ค. ์ƒˆ ์ปฌ๋Ÿผ์ด๋‚˜ ์ƒˆ ํ…Œ์ด๋ธ”์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ๊ธฐ์กด ์ฝ”๋“œ๊ฐ€ ์ด์ „ ํ˜•ํƒœ๋ฅผ ๊ณ„์† ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฑฐ์˜ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋ฆ„ ๋ณ€๊ฒฝ(renames)๊ณผ ์‚ญ์ œ(deletions)๋Š” ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„ ๋ณ€๊ฒฝ์€ ์‚ฌ์‹ค์ƒ "์ƒˆ๋กœ ์ถ”๊ฐ€ + ์˜›๊ฒƒ ์ œ๊ฑฐ"์ž…๋‹ˆ๋‹ค. ์ด ์ค‘ ์˜›๊ฒƒ์„ ์ œ๊ฑฐํ•˜๋Š” ๋‹จ๊ณ„๊ฐ€ ์˜ค๋ž˜๋œ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ถฉ๋Œ์‹œํ‚ค๋Š” ์ง€์ ์ž…๋‹ˆ๋‹ค. ์ด๋ฆ„์„ ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค๋ฉด ๋‘ ๋‹จ๊ณ„๋กœ ์ฒ˜๋ฆฌํ•˜์„ธ์š”: ๋จผ์ € ์ƒˆ ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , ์˜› ํ•„๋“œ๋Š” ์ž ์‹œ ์œ ์ง€ํ•œ ๋’ค ์•„๋ฌด๋„ ์˜์กดํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ํ™•์ธ๋˜๋ฉด ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

์ปฌ๋Ÿผ์„ ์ถ”๊ฐ€ํ•  ๋•Œ๋Š” nullable๋กœ ์‹œ์ž‘ํ•˜์„ธ์š”. nullable ์ปฌ๋Ÿผ์€ ์˜› ์ฝ”๋“œ๊ฐ€ ์ƒˆ ์ปฌ๋Ÿผ์„ ๋ชจ๋ฅธ ์ฑ„๋กœ ํ–‰์„ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ๊ถ๊ทน์ ์œผ๋กœ NOT NULL์„ ์›ํ•œ๋‹ค๋ฉด ๋จผ์ € nullable๋กœ ์ถ”๊ฐ€ํ•˜๊ณ  ๋ฐฑํ•„์„ ํ•œ ๋’ค ๋‚˜์ค‘์— NOT NULL์„ ์ ์šฉํ•˜์„ธ์š”. ๊ธฐ๋ณธ๊ฐ’(defaults)์ด ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” ๊ธฐ๋ณธ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๋Š” ์ž‘์—…์ด ๋งŽ์€ ํ–‰์„ ๊ฑด๋“œ๋ ค์„œ ๋ณ€๊ฒฝ์ด ๋А๋ ค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค๋Š” "์•ˆ์ „ํ•˜์ง€๋งŒ ๋น„์šฉ์ด ์žˆ๋Š”" ์ถ”๊ฐ€ ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค. ์ฝ๊ธฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•˜์ง€๋งŒ ์ธ๋ฑ์Šค ์ƒ์„ฑ๊ณผ ์œ ์ง€๊ฐ€ ์“ฐ๊ธฐ๋ฅผ ๋А๋ฆฌ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์ฟผ๋ฆฌ๊ฐ€ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ• ์ง€ ํ™•์‹คํ•  ๋•Œ ์ถ”๊ฐ€ํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋ฐ”์  ๋•Œ๋Š” ํ•œ๊ฐ€ํ•œ ์‹œ๊ฐ„์— ๋กค์•„์›ƒ์„ ๊ณ ๋ คํ•˜์„ธ์š”.

์ถ”๊ฐ€์  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ๊ทœ์น™:

  • ์ƒˆ ํ…Œ์ด๋ธ”์ด๋‚˜ ์ปฌ๋Ÿผ์„ ๋จผ์ € ์ถ”๊ฐ€ํ•˜๊ณ , ๊ธฐ์กด ๊ฒƒ์€ ๊ทธ๋Œ€๋กœ ๋‘ก๋‹ˆ๋‹ค.
  • ์ƒˆ ํ•„๋“œ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ฑ„์›Œ์งˆ ๋•Œ๊นŒ์ง€ ์„ ํƒ์ (nullable)์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—…๋ฐ์ดํŠธ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ์กด ์ฟผ๋ฆฌ์™€ ํŽ˜์ด๋กœ๋“œ๊ฐ€ ์ž‘๋™ํ•˜๋„๋ก ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ์ œ์•ฝ์กฐ๊ฑด(NOT NULL, unique, foreign keys)์€ ๋ฐฑํ•„ ํ›„์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋ž˜๋œ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ๋‹จ๊ณ„๋ณ„๋กœ ๋กค์•„์›ƒํ•˜๊ธฐ

๋ฌด์ค‘๋‹จ ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ์„ ๋‹จ์ผ ๋ฐฐํฌ๊ฐ€ ์•„๋‹ˆ๋ผ ๋กค์•„์›ƒ์œผ๋กœ ์ทจ๊ธ‰ํ•˜์„ธ์š”. ๋ชฉํ‘œ๋Š” ์˜ค๋ž˜๋œ ๋ฒ„์ „๊ณผ ์ƒˆ ๋ฒ„์ „์˜ ์•ฑ์ด ์‚ฌ์ด๋“œ๋ฐ”์ด์‚ฌ์ด๋“œ๋กœ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ ์ง„์ ์œผ๋กœ ์ƒˆ ํ˜•ํƒœ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‹ค์šฉ์  ์ˆœ์„œ:

  1. ํ˜ธํ™˜๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ƒˆ ์Šคํ‚ค๋งˆ๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”. ์ƒˆ ์ปฌ๋Ÿผ์ด๋‚˜ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๊ณ  ๋„์„ ํ—ˆ์šฉํ•˜๋ฉฐ, ์˜ค๋ž˜๋œ ์ฝ”๋“œ๊ฐ€ ์ฑ„์šฐ์ง€ ๋ชปํ•˜๋Š” ์—„๊ฒฉํ•œ ์ œ์•ฝ์„ ํ”ผํ•˜์„ธ์š”. ์ธ๋ฑ์Šค๊ฐ€ ํ•„์š”ํ•˜๋ฉด ์“ฐ๊ธฐ๋ฅผ ์ฐจ๋‹จํ•˜์ง€ ์•Š๋Š” ๋ฐฉ์‹์œผ๋กœ ์ถ”๊ฐ€ํ•˜์„ธ์š”.
  2. ๋‘ ๊ฐ€์ง€ โ€˜์–ธ์–ดโ€™ ๋ชจ๋‘๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐฑ์—”๋“œ ์ฝ”๋“œ๋ฅผ ๋ฐฐํฌํ•˜์„ธ์š”. API๊ฐ€ ์˜› ์š”์ฒญ๊ณผ ์ƒˆ ์š”์ฒญ์„ ๋ชจ๋‘ ์ˆ˜์šฉํ•˜๋„๋ก ์—…๋ฐ์ดํŠธํ•˜์„ธ์š”. ์ƒˆ ํ•„๋“œ๋ฅผ ์“ฐ๋˜ ์˜› ํ•„๋“œ๋„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์œ ์ง€ํ•˜๋Š” โ€˜๋“€์–ผ ๋ผ์ดํŠธ(dual write)โ€™ ๋‹จ๊ณ„๊ฐ€ ํ˜ผํ•ฉ๋œ ํด๋ผ์ด์–ธํŠธ ๋ฒ„์ „์—์„œ ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.
  3. ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ์†Œ๊ทœ๋ชจ ๋ฐฐ์น˜๋กœ ๋ฐฑํ•„ํ•˜์„ธ์š”. ์˜ค๋ž˜๋œ ํ–‰๋“ค์— ๋Œ€ํ•ด ์ƒˆ ์ปฌ๋Ÿผ์„ ์ ์ง„์ ์œผ๋กœ ์ฑ„์šฐ์„ธ์š”. ๋ฐฐ์น˜ ํฌ๊ธฐ๋ฅผ ์ œํ•œํ•˜๊ณ  ํ•„์š”ํ•˜๋ฉด ์ง€์—ฐ์„ ๋‘๋ฉฐ ์ง„ํ–‰ ์ƒํ™ฉ์„ ์ถ”์ ํ•ด ๋ถ€ํ•˜๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด ์ผ์‹œ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์„ธ์š”.
  4. ์ปค๋ฒ„๋ฆฌ์ง€๊ฐ€ ์ถฉ๋ถ„ํ•  ๋•Œ๋งŒ ์ฝ๊ธฐ๋ฅผ ์ „ํ™˜ํ•˜์„ธ์š”. ๋Œ€๋ถ€๋ถ„์˜ ํ–‰์ด ๋ฐฑํ•„๋˜๊ณ  ํ™•์‹ ์ด ์„œ๋ฉด ๋ฐฑ์—”๋“œ๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ƒˆ ํ•„๋“œ๋ฅผ ์ฝ๋„๋ก ๋ฐ”๊พธ์„ธ์š”. ๋‹น๋ถ„๊ฐ„์€ ์˜› ํ•„๋“œ๋กœ ๋˜๋Œ์•„๊ฐ€๋Š” ํด๋ฐฑ์„ ์œ ์ง€ํ•˜์„ธ์š”.
  5. ์˜› ํ•„๋“œ๋Š” ๋งˆ์ง€๋ง‰์— ์ œ๊ฑฐํ•˜์„ธ์š”. ์˜ค๋ž˜๋œ ๋ชจ๋ฐ”์ผ ๋นŒ๋“œ๊ฐ€ ๋Œ€๋ถ€๋ถ„ ์‚ฌ๋ผ์ง€๊ณ , ๋กœ๊ทธ์— ์˜› ํ•„๋“œ ์ฝ๊ธฐ๊ฐ€ ์—†์Œ์„ ํ™•์ธํ•˜๊ณ , ๋กค๋ฐฑ ๊ณ„ํš์ด ์ค€๋น„๋˜์—ˆ์„ ๋•Œ ์˜› ์ปฌ๋Ÿผ๊ณผ ๊ด€๋ จ ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•˜์„ธ์š”.

์˜ˆ: full_name์„ ๋„์ž…ํ–ˆ์ง€๋งŒ ์˜ค๋ž˜๋œ ํด๋ผ์ด์–ธํŠธ๋Š” first_name๊ณผ last_name์„ ๋ณด๋‚ธ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ผ์ • ๊ธฐ๊ฐ„ ๋™์•ˆ ๋ฐฑ์—”๋“œ๋Š” ์“ฐ๊ธฐ ์‹œ full_name์„ ๊ตฌ์„ฑํ•˜๊ณ , ๊ธฐ์กด ์‚ฌ์šฉ์ž๋“ค์„ ๋ฐฑํ•„ํ•œ ๋’ค ๊ธฐ๋ณธ์ ์œผ๋กœ full_name์„ ์ฝ์œผ๋ฉด์„œ ์˜› ํŽ˜์ด๋กœ๋“œ๋ฅผ ๊ณ„์† ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ฑ„ํƒ์ด ๋ช…ํ™•ํ•ด์ง€๋ฉด ์˜› ํ•„๋“œ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

๋†€๋ผ์›€ ์—†๋Š” ๋ฐฑํ•„: ์ƒˆ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ฑ„์šฐ๊ธฐ

๋ฐฑํ•„์€ ๊ธฐ์กด ํ–‰์— ์ƒˆ ์ปฌ๋Ÿผ์ด๋‚˜ ํ…Œ์ด๋ธ”์„ ์ฑ„์šฐ๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ถ€ํ•˜, ๊ธด ์ž ๊ธˆ, "๋ฐ˜์ฏค ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ" ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ๋™์ž‘์„ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ์–ด ์ข…์ข… ๋ฌด์ค‘๋‹จ ๋ณ€๊ฒฝ ์ค‘ ๊ฐ€์žฅ ์œ„ํ—˜ํ•œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

๋จผ์ € ๋ฐฑํ•„์„ ์–ด๋–ป๊ฒŒ ์‹คํ–‰ํ• ์ง€ ๊ฒฐ์ •ํ•˜์„ธ์š”. ์†Œ๊ทœ๋ชจ ๋ฐ์ดํ„ฐ์…‹์€ ์ˆ˜๋™ ๋Ÿฐ๋ถ์œผ๋กœ ์ถฉ๋ถ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ์…‹์€ ๋ฐ˜๋ณต ์‹คํ–‰ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ์ค‘๋‹จํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์›Œ์ปค๋‚˜ ์Šค์ผ€์ค„ ์žก์„ ์„ ํ˜ธํ•˜์„ธ์š”.

์ž‘์—…์„ ๋ฐฐ์น˜๋กœ ๋‚˜๋ˆ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ฐ€ํ•ด์ง€๋Š” ์••๋ ฅ์„ ์ œ์–ดํ•˜์„ธ์š”. ์ˆ˜๋ฐฑ๋งŒ ํ–‰์„ ํ•œ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜์ง€ ๋งˆ์„ธ์š”. ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์ฒญํฌ ํฌ๊ธฐ์™€ ๋ฐฐ์น˜ ์‚ฌ์ด์˜ ์งง์€ ์ผ์‹œ์ค‘๋‹จ์„ ๋ชฉํ‘œ๋กœ ํ•ด ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ํŠธ๋ž˜ํ”ฝ์ด ์›ํ™œํ•˜๊ฒŒ ์œ ์ง€๋˜๋„๋ก ํ•˜์„ธ์š”.

์‹ค์šฉ ํŒจํ„ด:

  • ์ธ๋ฑ์Šค๋œ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด ๋‹ค์Œ 1,000ํ–‰ ๊ฐ™์€ ์†Œ๊ทœ๋ชจ ๋ฐฐ์น˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  • ๋ˆ„๋ฝ๋œ ๊ฒƒ๋งŒ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค(์ด๋ฏธ ๋ฐฑํ•„๋œ ํ–‰์„ ๋‹ค์‹œ ์“ฐ์ง€ ๋งˆ์„ธ์š”).
  • ๋น ๋ฅด๊ฒŒ ์ปค๋ฐ‹ํ•˜๊ณ  ์ž ๊น ์‰ฌ์„ธ์š”.
  • ์ง„ํ–‰ ์ƒํ™ฉ(๋งˆ์ง€๋ง‰ ์ฒ˜๋ฆฌ๋œ ID๋‚˜ ํƒ€์ž„์Šคํƒฌํ”„)์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
  • ์‹คํŒจ ์‹œ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์ง€ ์•Š๊ณ  ์žฌ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

์žก์„ ์žฌ์‹œ์ž‘ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ์„ธ์š”. ์ „์šฉ ํ…Œ์ด๋ธ”์— ๊ฐ„๋‹จํ•œ ์ง„ํ–‰ ๋งˆ์ปค๋ฅผ ์ €์žฅํ•˜๊ณ , ์žก์„ ์žฌ์‹คํ–‰ํ•ด๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ์†์ƒ๋˜์ง€ ์•Š๋„๋ก ์„ค๊ณ„ํ•˜์„ธ์š”. ์˜ˆ: new_field IS NULL ์กฐ๊ฑด์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋Š” ์‹์˜ ๋ฉฑ๋“ฑ์„ฑ(idempotent) ์—…๋ฐ์ดํŠธ๊ฐ€ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์ง„ํ–‰ ์ค‘์— ๊ฒ€์ฆํ•˜์„ธ์š”. ์ƒˆ ๊ฐ’์ด ์—†๋Š” ํ–‰ ์ˆ˜๋ฅผ ์ถ”์ ํ•˜๊ณ  ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋ณธ ๊ฒ€์‚ฌ๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”. ์˜ˆ: ์ž”์•ก์ด ์Œ์ˆ˜์ธ์ง€, ํƒ€์ž„์Šคํƒฌํ”„๊ฐ€ ๊ธฐ๋Œ€ ๋ฒ”์œ„์ธ์ง€, ์ƒํƒœ๊ฐ€ ํ—ˆ์šฉ๋œ ์ง‘ํ•ฉ์— ์†ํ•˜๋Š”์ง€ ๋“ฑ. ์‹ค์ œ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ƒ˜ํ”Œ๋งํ•ด ์ ๊ฒ€ํ•˜์„ธ์š”.

๋ฐฑํ•„์ด ์™„๋ฃŒ๋˜์ง€ ์•Š์€ ๋™์•ˆ ์•ฑ์ด ์–ด๋–ป๊ฒŒ ํ–‰๋™ํ•ด์•ผ ํ• ์ง€ ๊ฒฐ์ •ํ•˜์„ธ์š”. ์•ˆ์ „ํ•œ ์˜ต์…˜์€ ํด๋ฐฑ ์ฝ๊ธฐ์ž…๋‹ˆ๋‹ค: ์ƒˆ ํ•„๋“œ๊ฐ€ null์ด๋ฉด ์˜› ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๊ฑฐ๋‚˜ ์ฝ์Šต๋‹ˆ๋‹ค. ์˜ˆ: preferred_language๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฐฑํ•„์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ API๋Š” preferred_language๊ฐ€ ๋น„์–ด ์žˆ์œผ๋ฉด ํ”„๋กœํ•„ ์„ค์ •์—์„œ ๊ธฐ์กด ์–ธ์–ด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์™„๋ฃŒ ํ›„์—๋งŒ ์ƒˆ ํ•„๋“œ๋ฅผ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค.

ํ˜ผํ•ฉ ํด๋ผ์ด์–ธํŠธ ๋ฒ„์ „์—์„œ์˜ API ํ˜ธํ™˜์„ฑ ๊ทœ์น™

Turn your rollout into steps
Use visual tools to add fields, backfill safely, and keep old clients working.
Create App

์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ์„ ๋ฐฐํฌํ•  ๋•Œ ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ๋ฅผ ํ†ต์ œํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” ๋“œ๋ญ…๋‹ˆ๋‹ค. ์›น ์‚ฌ์šฉ์ž๋Š” ๋นจ๋ฆฌ ์—…๋ฐ์ดํŠธํ•˜์ง€๋งŒ ์˜ค๋ž˜๋œ ๋ชจ๋ฐ”์ผ ๋นŒ๋“œ๋Š” ์ˆ˜์ฃผ๊ฐ„ ํ™œ์„ฑ ์ƒํƒœ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์Šคํ‚ค๋งˆ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด "์•ˆ์ „"ํ•˜๋”๋ผ๋„ ํ•˜์œ„ ํ˜ธํ™˜ API๊ฐ€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

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

๊ธฐ์กด ํ•„๋“œ์˜ ์˜๋ฏธ๋ฅผ ๋ฐ”๊พธ์ง€ ๋งˆ์„ธ์š”. ํ•„๋“œ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋”๋ผ๋„ ์˜› ์ด๋ฆ„์„ ๊ณ„์† ๋™์ž‘ํ•˜๋„๋ก ์œ ์ง€ํ•˜๋ฉด ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ํ•„๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•ด ์ƒˆ๋กœ์šด ์˜๋ฏธ๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์ด ๋ฏธ๋ฌ˜ํ•œ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“œ๋Š” ์ง€์ ์ž…๋‹ˆ๋‹ค.

์„œ๋ฒ„ ์ธก ๊ธฐ๋ณธ๊ฐ’์€ ์•ˆ์ „๋ง์ž…๋‹ˆ๋‹ค. preferred_language ๊ฐ™์€ ์ƒˆ ์ปฌ๋Ÿผ์„ ๋„์ž…ํ•  ๋•Œ ๊ฐ’์ด ์—†์œผ๋ฉด ์„œ๋ฒ„์—์„œ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•˜์„ธ์š”. API ์‘๋‹ต์— ์ƒˆ ํ•„๋“œ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๊ณ , ์˜ค๋ž˜๋œ ํด๋ผ์ด์–ธํŠธ๋Š” ์ด๋ฅผ ๋ฌด์‹œํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ์žฅ์• ๋ฅผ ์˜ˆ๋ฐฉํ•˜๋Š” ํ˜ธํ™˜์„ฑ ๊ทœ์น™:

  • ์ƒˆ ํ•„๋“œ๋ฅผ ๋จผ์ € ์„ ํƒ์ ์œผ๋กœ ์ถ”๊ฐ€ํ•˜๊ณ , ์ฑ„ํƒ ํ›„์—๋งŒ ๊ฐ•์ œํ•˜์„ธ์š”.
  • ๋” ๋‚˜์€ ๋™์ž‘์„ ๋’ค์— ์ˆจ๊ฒจ๋‘๋”๋ผ๋„ ์˜› ๋™์ž‘์„ ์•ˆ์ •์ ์œผ๋กœ ์œ ์ง€ํ•˜์„ธ์š”.
  • ์ƒˆ ํ•„๋“œ๊ฐ€ ์—†์„ ๋•Œ ์„œ๋ฒ„์—์„œ ๊ธฐ๋ณธ๊ฐ’์„ ์ ์šฉํ•˜์„ธ์š”.
  • ํ˜ผํ•ฉ ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ€์ •ํ•˜๊ณ  ๋‘ ๊ฒฝ๋กœ๋ฅผ ๋ชจ๋‘ ํ…Œ์ŠคํŠธํ•˜์„ธ์š”: "์ƒˆ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋ƒ„"๊ณผ "์˜› ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ƒ๋žตํ•จ".
  • ์—๋Ÿฌ ๋ฉ”์‹œ์ง€์™€ ์—๋Ÿฌ ์ฝ”๋“œ๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์œ ์ง€ํ•ด ๋ชจ๋‹ˆํ„ฐ๋ง์ด ๊ฐ‘์ž๊ธฐ ์‹œ๋„๋Ÿฌ์›Œ์ง€์ง€ ์•Š๊ฒŒ ํ•˜์„ธ์š”.

์˜ˆ: ๊ฐ€์ž… ํ๋ฆ„์— company_size๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฐฑ์—”๋“œ๋Š” ํ•ด๋‹น ํ•„๋“œ๊ฐ€ ์—†์„ ๋•Œ "unknown" ๊ฐ™์€ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ์‹  ํด๋ผ์ด์–ธํŠธ๋Š” ์‹ค์ œ ๊ฐ’์„ ๋ณด๋‚ด๊ณ , ์˜ค๋ž˜๋œ ํด๋ผ์ด์–ธํŠธ๋Š” ๊ณ„์† ์ž‘๋™ํ•˜๋ฉฐ ๋Œ€์‹œ๋ณด๋“œ๋Š” ์ฝ์„ ์ˆ˜ ์žˆ๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

์•ฑ์„ ์žฌ์ƒ์„ฑ(regenerate)ํ•  ๋•Œ: ์Šคํ‚ค๋งˆ์™€ ๋กœ์ง์„ ๋™๊ธฐํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•

ํ”Œ๋žซํผ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์žฌ์ƒ์„ฑํ•˜๋ฉด ์ฝ”๋“œ์™€ ์„ค์ •์„ ๊น”๋”ํ•˜๊ฒŒ ์žฌ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฌด์ค‘๋‹จ ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ์— ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ž‘์€ ์ถ”๊ฐ€์  ๋‹จ๊ณ„๋ฅผ ๋งŒ๋“ค์–ด ์ž์ฃผ ์žฌ๋ฐฐํฌํ•˜๋ฉด ์ˆ˜๊ฐœ์›” ๋™์•ˆ ํŒจ์น˜๋ฅผ ๋“ค๊ณ  ๋‹ค๋‹ˆ๋Š” ๋ถ€๋‹ด์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋ช…ํ™•ํ•œ ๋ช…๋ช… ๊ทœ์น™์€ ๋‹จ๊ณ„์  ๋กค์•„์›ƒ์—์„œ ์‚ฌ๊ณ ๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค. ์ƒˆ ํ•„๋“œ๋ฅผ ๋„์ž…ํ•˜๋ฉด ์–ด๋А ๊ฒƒ์ด ์˜ค๋ž˜๋œ ํด๋ผ์ด์–ธํŠธ์šฉ์ด๊ณ  ์–ด๋А ๊ฒƒ์ด ์ƒˆ ๊ฒฝ๋กœ์ธ์ง€ ๋ถ„๋ช…ํ•˜๊ฒŒ ๋งŒ๋“œ์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด ์ƒˆ ์ปฌ๋Ÿผ์„ status_v2๋กœ ์ด๋ฆ„ ์ง“๋Š” ๊ฒƒ์€ status_new๋ณด๋‹ค ์—ฌ์„ฏ ๋‹ฌ ๋’ค์—๋„ ์˜๋ฏธ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐ ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

์žฌ์ƒ์„ฑ ํ›„ ๋ฌด์—‡์„ ๋‹ค์‹œ ํ…Œ์ŠคํŠธํ• ์ง€

๋ณ€๊ฒฝ์ด ์ถ”๊ฐ€์ ์ด๋ผ๋„ ์žฌ๋นŒ๋“œ๋Š” ์ˆจ๊ฒจ์ง„ ๊ฒฐํ•ฉ์„ ๋“œ๋Ÿฌ๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์žฌ์ƒ์„ฑ ๋ฐ ๋ฐฐํฌ ํ›„์—๋Š” ์ž‘์€ ํ•ต์‹ฌ ํ๋ฆ„์„ ๋‹ค์‹œ ํ™•์ธํ•˜์„ธ์š”:

  • ๊ฐ€์ž…, ๋กœ๊ทธ์ธ, ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์„ค์ •, ํ† ํฐ ๊ฐฑ์‹ .
  • ํ•ต์‹ฌ ์ƒ์„ฑ ๋ฐ ์—…๋ฐ์ดํŠธ ๋™์ž‘(๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ๋“ค).
  • ๊ด€๋ฆฌ์ž ๋ฐ ๊ถŒํ•œ ๊ฒ€์‚ฌ.
  • ๊ฒฐ์ œ ๋ฐ ์›นํ›…(์˜ˆ: Stripe ์ด๋ฒคํŠธ).
  • ์•Œ๋ฆผ ๋ฐ ๋ฉ”์‹œ์ง€(์ด๋ฉ”์ผ/SMS, Telegram).

์—๋””ํ„ฐ๋ฅผ ์—ด๊ธฐ ์ „์— ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋‹จ๊ณ„๋ฅผ ๊ณ„ํšํ•˜์„ธ์š”: ์ƒˆ ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , ์–‘์ชฝ ํ•„๋“œ๋ฅผ ์ง€์›ํ•˜๋Š” ์ƒํƒœ๋กœ ๋ฐฐํฌํ•˜๊ณ , ๋ฐฑํ•„ํ•˜๊ณ , ์ฝ๊ธฐ๋ฅผ ์ „ํ™˜ํ•œ ๋‹ค์Œ, ๋‚˜์ค‘์— ์˜› ๊ฒฝ๋กœ๋ฅผ ์ œ๊ฑฐํ•˜์„ธ์š”. ์ด ์ˆœ์„œ๋Š” ์Šคํ‚ค๋งˆ, ๋กœ์ง, ์ƒ์„ฑ๋œ ์ฝ”๋“œ๊ฐ€ ํ•จ๊ป˜ ์›€์ง์ด๊ฒŒ ํ•˜์—ฌ ๋ณ€๊ฒฝ์„ ์ž‘๊ณ  ๊ฒ€ํ†  ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

์žฅ์• ๋ฅผ ์œ ๋ฐœํ•˜๋Š” ํ”ํ•œ ์‹ค์ˆ˜(๋ฐ ํ”ผํ•˜๋Š” ๋ฐฉ๋ฒ•)

Run a low risk practice migration
Create a small change end to end, then reuse the same rollout pattern for bigger updates.
Try the Builder

๋ฌด์ค‘๋‹จ ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ ์ค‘ ๋ฐœ์ƒํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์žฅ์• ๋Š” "๋ฌด๊ฑฐ์šด" ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—…์—์„œ ์ƒ๊ธฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, API, ํด๋ผ์ด์–ธํŠธ ๊ฐ„ ๊ณ„์•ฝ(contract)์„ ์ž˜๋ชป๋œ ์ˆœ์„œ๋กœ ๋ณ€๊ฒฝํ•ด์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ ํ•จ์ •๊ณผ ๋” ์•ˆ์ „ํ•œ ์กฐ์น˜:

  • ์˜ค๋ž˜๋œ ์ฝ”๋“œ๊ฐ€ ์•„์ง ์ฝ์„ ๋•Œ ์ปฌ๋Ÿผ ์ด๋ฆ„์„ ๋ฐ”๊ฟˆ. ์˜› ์ปฌ๋Ÿผ์„ ์œ ์ง€ํ•˜๊ณ  ์ƒˆ ์ปฌ๋Ÿผ์„ ์ถ”๊ฐ€ํ•œ ๋’ค ๋‘ ๊ฐ€์ง€๋ฅผ ์ผ์ • ๊ธฐ๊ฐ„ ๋งคํ•‘ํ•˜์„ธ์š”(๋‘˜ ๋‹ค ์“ฐ๊ฑฐ๋‚˜ ๋ทฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋“ฑ). ์•„๋ฌด๋„ ์˜› ์ด๋ฆ„์— ์˜์กดํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์ฆ๋ช…ํ•œ ๋’ค์—๋งŒ ์ด๋ฆ„์„ ๋ฐ”๊พธ์„ธ์š”.
  • nullable ํ•„๋“œ๋ฅผ ๋„ˆ๋ฌด ์ผ์ฐ ํ•„์ˆ˜๋กœ ๋งŒ๋“ฆ. ๋จผ์ € nullable๋กœ ์ถ”๊ฐ€ํ•˜๊ณ , ์ฝ”๋“œ๊ฐ€ ๋ชจ๋“  ๊ณณ์—์„œ ์“ฐ๋„๋ก ๋ฐฐํฌํ•œ ๋’ค ์˜ค๋ž˜๋œ ํ–‰์„ ๋ฐฑํ•„ํ•˜๊ณ  ๋งˆ์ง€๋ง‰ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์—์„œ NOT NULL์„ ์ ์šฉํ•˜์„ธ์š”.
  • ํ…Œ์ด๋ธ”์„ ์ž ๊ทธ๋Š” ๋Œ€๊ทœ๋ชจ ๋‹จ์ผ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ๋ฐฑํ•„ํ•จ. ์ž‘์€ ๋ฐฐ์น˜๋กœ ๋ฐฑํ•„ํ•˜๊ณ  ์ œํ•œ๊ณผ ์ผ์‹œ์ค‘๋‹จ์„ ๋‘ฌ ์ง„ํ–‰ ์ƒํ™ฉ์„ ์ถ”์ ํ•˜์„ธ์š”.
  • ์“ฐ๊ธฐ๋ณด๋‹ค ๋จผ์ € ์ฝ๊ธฐ๋ฅผ ์ „ํ™˜ํ•จ. ๋จผ์ € ์“ฐ๊ธฐ๋ฅผ ์ „ํ™˜ํ•˜๊ณ , ๊ทธ๋‹ค์Œ ๋ฐฑํ•„, ๋งˆ์ง€๋ง‰์œผ๋กœ ์ฝ๊ธฐ๋ฅผ ์ „ํ™˜ํ•˜์„ธ์š”. ์ฝ๊ธฐ๋ฅผ ๋จผ์ € ๋ฐ”๊พธ๋ฉด ๋นˆ ํ™”๋ฉด, ์ž˜๋ชป๋œ ํ•ฉ๊ณ„, "ํ•„๋“œ ์—†์Œ" ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ค๋ž˜๋œ ํ•„๋“œ๋ฅผ ์ฆ๊ฑฐ ์—†์ด ์‚ญ์ œํ•จ. ์˜ค๋ž˜๋œ ํ•„๋“œ๋Š” ์ƒ๊ฐ๋ณด๋‹ค ๋” ์˜ค๋ž˜ ์œ ์ง€ํ•˜์„ธ์š”. ์˜ค๋ž˜๋œ ๋ฒ„์ „์ด ์‚ฌ์‹ค์ƒ ๋น„ํ™œ์„ฑ ์ƒํƒœ์ธ์ง€ ์ง€ํ‘œ๋กœ ํ™•์ธํ•˜๊ณ , ํ๊ธฐ ์ฐฝ๊ตฌ๋ฅผ ๊ณต์ง€ํ•œ ๋’ค ์ œ๊ฑฐํ•˜์„ธ์š”.

์•ฑ์„ ์žฌ์ƒ์„ฑํ•˜๋ฉด ์ด๋ฆ„๊ณผ ์ œ์•ฝ์„ ํ•œ ๋ฒˆ์— "์ •๋ฆฌ"ํ•˜๊ณ  ์‹ถ์€ ์œ ํ˜น์ด ๋“ญ๋‹ˆ๋‹ค. ๊ทธ ์œ ํ˜น์„ ์ฐธ์œผ์„ธ์š”. ์ •๋ฆฌ๋Š” ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„์ด์ง€ ์ฒซ ๋‹จ๊ณ„๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

์ข‹์€ ๊ทœ์น™: ๋ณ€๊ฒฝ์„ ์•ˆ์ „ํ•˜๊ฒŒ ์•ž์œผ๋กœ ์ง„ํ–‰ํ•˜๊ณ  ๋˜๋Œ๋ฆด ์ˆ˜ ์—†๋‹ค๋ฉด ์ƒ์‚ฐ ํ™˜๊ฒฝ์— ํˆฌ์ž…ํ•  ์ค€๋น„๊ฐ€ ๋œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋‹จ๊ณ„์  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์œ„ํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ๋กค๋ฐฑ ๊ณ„ํš

Build with mixed clients in mind
Build a production-ready backend with PostgreSQL modeling and version-friendly API changes.
Start Building

๋ฌด์ค‘๋‹จ ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ์˜ ์„ฑ๊ณต ์—ฌ๋ถ€๋Š” ๋‘ ๊ฐ€์ง€์— ๋‹ฌ๋ฆฝ๋‹ˆ๋‹ค: ๋ฌด์—‡์„ ๊ฐ์‹œํ•˜๋А๋ƒ, ์–ผ๋งˆ๋‚˜ ๋นจ๋ฆฌ ์ค‘๋‹จํ•  ์ˆ˜ ์žˆ๋А๋ƒ.

๋ฐฐํฌ๊ฐ€ ๋๋‚ฌ๋‹ค๋Š” ๊ฒƒ๋งŒ ๋ณด๋Š” ๋Œ€์‹  ์‹ค์ œ ์‚ฌ์šฉ์ž ์˜ํ–ฅ์— ํ•ด๋‹นํ•˜๋Š” ์‹ ํ˜ธ๋ฅผ ์ถ”์ ํ•˜์„ธ์š”:

  • ์—…๋ฐ์ดํŠธํ•œ ์—”๋“œํฌ์ธํŠธ์˜ API ์—๋Ÿฌ์œจ(ํŠนํžˆ 4xx/5xx ์ŠคํŒŒ์ดํฌ).
  • ๋А๋ฆฐ ์ฟผ๋ฆฌ(p95 ๋˜๋Š” p99 ์ฟผ๋ฆฌ ์‹œ๊ฐ„) โ€” ์ˆ˜์ •ํ•œ ํ…Œ์ด๋ธ” ๋Œ€์ƒ.
  • ์“ฐ๊ธฐ ์ง€์—ฐ(ํ”ผํฌ ํŠธ๋ž˜ํ”ฝ ์ค‘ ์‚ฝ์ž… ๋ฐ ์—…๋ฐ์ดํŠธ์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„).
  • ํ ๊นŠ์ด(๋ฐฑํ•„์ด๋‚˜ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ์šฉ ์ž‘์—…์ด ์Œ“์ด๋Š”์ง€).
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค CPU/IO ์‚ฌ์šฉ๋Ÿ‰(๋ณ€๊ฒฝ ํ›„ ๊ธ‰๊ฒฉํ•œ ์ƒ์Šน ์—ฌ๋ถ€).

๋“€์–ผ๋ผ์ดํŠธ๋ฅผ ํ•˜๋Š” ๊ฒฝ์šฐ(์˜›/์ƒˆ ์ปฌ๋Ÿผ ๋‘˜ ๋‹ค ์“ฐ๋Š” ๊ฒฝ์šฐ) ๋‘ ๊ฐ’์„ ๋น„๊ตํ•˜๋Š” ์ž„์‹œ ๋กœ๊น…์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”. ๋‹จ, ๋กœ๊ทธ๋Š” ์ฐจ์ด๊ฐ€ ๋‚  ๋•Œ๋งŒ ๊ธฐ๋กํ•˜๊ณ , ๋ ˆ์ฝ”๋“œ ID์™€ ์งง์€ ์ด์œ  ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•˜๋ฉฐ, ๋ณผ๋ฅจ์ด ๋†’์œผ๋ฉด ์ƒ˜ํ”Œ๋งํ•˜์„ธ์š”. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ›„ ์ด ๋กœ๊น…์„ ์ œ๊ฑฐํ•˜๋ผ๋Š” ๋ฆฌ๋งˆ์ธ๋”๋ฅผ ๋งŒ๋“ค์–ด ์˜๊ตฌ์ ์ธ ๋…ธ์ด์ฆˆ๊ฐ€ ๋˜์ง€ ์•Š๊ฒŒ ํ•˜์„ธ์š”.

๋กค๋ฐฑ์€ ํ˜„์‹ค์ ์œผ๋กœ ๊ณ„ํšํ•˜์„ธ์š”. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์Šคํ‚ค๋งˆ๋ฅผ ๋กค๋ฐฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ฅผ ๋กค๋ฐฑํ•˜๊ณ  ์ถ”๊ฐ€์  ์Šคํ‚ค๋งˆ๋Š” ์œ ์ง€ํ•˜๋Š” ๋ฐฉ์‹์ด ๋” ํ”ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์šฉ์ ์ธ ๋กค๋ฐฑ ๋Ÿฐ๋ถ:

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์„ ๋งˆ์ง€๋ง‰ ์ •์ƒ ๋ฒ„์ „์œผ๋กœ ๋˜๋Œ๋ฆฝ๋‹ˆ๋‹ค.
  • ์ƒˆ ์ฝ๊ธฐ๋ฅผ ๋จผ์ € ๋น„ํ™œ์„ฑํ™”ํ•œ ๋‹ค์Œ ์ƒˆ ์“ฐ๊ธฐ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒˆ ํ…Œ์ด๋ธ”์ด๋‚˜ ์ปฌ๋Ÿผ์€ ์œ ์ง€ํ•˜๋˜ ์‚ฌ์šฉ์„ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐฑํ•„์„ ์ค‘๋‹จํ•˜๊ณ  ์ง€ํ‘œ๊ฐ€ ์•ˆ์ •๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

๋ฐฑํ•„์—๋Š” ๋ช‡ ์ดˆ ์•ˆ์— ๋Œ ์ˆ˜ ์žˆ๋Š” ์ •์ง€ ์Šค์œ„์น˜(ํ”ผ์ฒ˜ ํ”Œ๋ž˜๊ทธ, ์„ค์ • ๊ฐ’, ์žก ์ผ์‹œ์ค‘์ง€)๋ฅผ ๋งŒ๋“œ์„ธ์š”. ๋˜ํ•œ ๋“€์–ผ๋ผ์ดํŠธ ์‹œ์ž‘ ์‹œ๊ธฐ, ๋ฐฑํ•„ ์‹คํ–‰ ์‹œ๊ธฐ, ์ฝ๊ธฐ ์ „ํ™˜ ์‹œ๊ธฐ, "์ค‘๋‹จ"์˜ ์˜๋ฏธ๋ฅผ ์‚ฌ์ „์— ์†Œํ†ตํ•ด๋‘์–ด ๊ธด๊ธ‰ ์ƒํ™ฉ์—์„œ ์ž„๊ธฐ์‘๋ณ€์„ ํ•˜์ง€ ์•Š๊ฒŒ ํ•˜์„ธ์š”.

๋น ๋ฅธ ๋ฐฐํฌ ์ „ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ์„ ๋ฐฐํฌํ•˜๊ธฐ ์ง์ „์— ์ž ์‹œ ๋ฉˆ์ถฐ ์ด ์ฒดํฌ๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”. ํ˜ผํ•ฉ ํด๋ผ์ด์–ธํŠธ ๋ฒ„์ „์—์„œ ์ž‘์€ ๊ฐ€์ •์„ ๋†“์น˜๋ฉด ํฐ ์žฅ์• ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.

  • ๋ณ€๊ฒฝ์ด ์ถ”๊ฐ€์ (additive)์ธ๊ฐ€? ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ํ…Œ์ด๋ธ”, ์ปฌ๋Ÿผ, ์ธ๋ฑ์Šค๋งŒ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ธฐ์กด ๊ฒƒ์„ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ์—„๊ฒฉํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ์˜ค๋ž˜๋œ ์“ฐ๊ธฐ๋ฅผ ๊ฑฐ๋ถ€ํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ์ฝ๊ธฐ๊ฐ€ ๋‘ ํ˜•ํƒœ ๋ชจ๋‘ ์ž‘๋™ํ•˜๋Š”๊ฐ€? ์ƒˆ ์„œ๋ฒ„ ์ฝ”๋“œ๋Š” "์ƒˆ ํ•„๋“œ ์กด์žฌ"์™€ "์ƒˆ ํ•„๋“œ ๋ถ€์žฌ" ๋ชจ๋‘์—์„œ ์˜ค๋ฅ˜ ์—†์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์„ ํƒ์  ๊ฐ’์€ ์•ˆ์ „ํ•œ ๊ธฐ๋ณธ๊ฐ’์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
  • ์“ฐ๊ธฐ ํ˜ธํ™˜์„ฑ์€ ์œ ์ง€๋˜๋Š”๊ฐ€? ์ƒˆ ํด๋ผ์ด์–ธํŠธ๋Š” ์ƒˆ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ณ  ์˜ค๋ž˜๋œ ํด๋ผ์ด์–ธํŠธ๋Š” ์˜› ํŽ˜์ด๋กœ๋“œ๋กœ๋„ ์„ฑ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ๋‘ ํฌ๋งท์„ ๋ชจ๋‘ ์ˆ˜์šฉํ•˜๊ณ  ์˜ค๋ž˜๋œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํŒŒ์‹ฑํ•  ์ˆ˜ ์žˆ๋Š” ์‘๋‹ต์„ ์ƒ์„ฑํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐฑํ•„์€ ๋ฉˆ์ท„๋‹ค ์žฌ์‹œ์ž‘ํ•ด๋„ ์•ˆ์ „ํ•œ๊ฐ€? ์žก์€ ๋ฐฐ์น˜๋กœ ์‹คํ–‰๋˜๊ณ , ์žฌ์‹œ์ž‘ํ•ด๋„ ๋ฐ์ดํ„ฐ ์ค‘๋ณต์ด๋‚˜ ์†์ƒ์ด ์—†์–ด์•ผ ํ•˜๋ฉฐ ๋‚จ์€ ํ–‰ ์ˆ˜๋ฅผ ์ธก์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ญ์ œ ๋‚ ์งœ๋ฅผ ์•Œ๊ณ  ์žˆ๋Š”๊ฐ€? ์–ธ์ œ ๋ ˆ๊ฑฐ์‹œ ํ•„๋“œ๋‚˜ ๋กœ์ง์„ ์ œ๊ฑฐํ• ์ง€์— ๋Œ€ํ•œ ๊ตฌ์ฒด์  ๊ทœ์น™์ด ์žˆ๋Š”๊ฐ€(์˜ˆ: X์ผ ํ›„ ๋ฐ Y%์˜ ์š”์ฒญ์ด ์—…๋ฐ์ดํŠธ๋œ ํด๋ผ์ด์–ธํŠธ์—์„œ ์˜ค๋Š”์ง€ ํ™•์ธ).

์žฌ์ƒ์„ฑ ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ถ”๊ฐ€ ์ ๊ฒ€: ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋ ค๋Š” ์ •ํ™•ํ•œ ๋ชจ๋ธ์—์„œ ๋นŒ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ฐฐํฌํ•œ ๋’ค, ์ƒ์„ฑ๋œ API์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ์˜› ๋ ˆ์ฝ”๋“œ๋ฅผ ์—ฌ์ „ํžˆ ํ—ˆ์šฉํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ํ”ํ•œ ์‹คํŒจ๋Š” ์ƒˆ ์Šคํ‚ค๋งˆ๊ฐ€ ์ƒˆ ํ•„์ˆ˜ ๋กœ์ง์„ ์˜๋ฏธํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋Š” ์‹ค์ˆ˜์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ๋ฐฐํฌ ํ›„ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ๋ฌด์—‡์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์–ด๋–ค ๊ฒƒ์„ ๋จผ์ € ๋กค๋ฐฑํ• ์ง€(ํ”ผ์ฒ˜ ํ”Œ๋ž˜๊ทธ ๋„๊ธฐ, ๋ฐฑํ•„ ์ผ์‹œ์ค‘์ง€, ์„œ๋ฒ„ ๋ฆด๋ฆฌ์Šค ๋˜๋Œ๋ฆฌ๊ธฐ) ๋‘ ๊ฐ€์ง€ ๋น ๋ฅธ ํ–‰๋™์„ ์ ์–ด๋‘์„ธ์š”. ์ด๊ฒƒ์ด "๋น ๋ฅด๊ฒŒ ๋ฐ˜์‘ํ•˜๊ฒ ๋‹ค"๋Š” ์ถ”์ƒ์  ๋‹ค์ง์„ ์‹ค์ œ ๊ณ„ํš์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

์˜ˆ์‹œ: ์˜ค๋ž˜๋œ ๋ชจ๋ฐ”์ผ ์•ฑ์ด ์—ฌ์ „ํžˆ ํ™œ์„ฑํ™”๋œ ์ƒํƒœ์—์„œ ์ƒˆ ํ•„๋“œ ์ถ”๊ฐ€ํ•˜๊ธฐ

Test your migration playbook
Prototype a phased migration plan in a real app you can deploy to cloud providers.
Get Started

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

์•ˆ์ „ํ•œ ๊ฒฝ๋กœ:

  • 1๋‹จ๊ณ„: ์ปฌ๋Ÿผ์„ nullable๋กœ ์ถ”๊ฐ€ํ•˜๊ณ  ์ œ์•ฝ์„ ๋‘์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ์ฝ๊ธฐ/์“ฐ๊ธฐ๋Š” ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • 2๋‹จ๊ณ„: ๋“€์–ผ ๋ผ์ดํŠธ. ์ƒˆ ํด๋ผ์ด์–ธํŠธ(๋˜๋Š” ๋ฐฑ์—”๋“œ)๊ฐ€ ์ƒˆ ํ•„๋“œ๋ฅผ ์”๋‹ˆ๋‹ค. ์˜› ํด๋ผ์ด์–ธํŠธ๋Š” ์ปฌ๋Ÿผ์ด null์„ ํ—ˆ์šฉํ•˜๋ฏ€๋กœ ๊ณ„์† ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
  • 3๋‹จ๊ณ„: ๋ฐฑํ•„. ๋ฐฐ์†ก ๋ฐฉ์‹์—์„œ ์œ ์ถ”ํ•˜๊ฑฐ๋‚˜ ๊ธฐ๋ณธ๊ฐ’์„ "anytime"์œผ๋กœ ์„ค์ •ํ•ด ์˜› ํ–‰์„ ์ฑ„์›๋‹ˆ๋‹ค.
  • 4๋‹จ๊ณ„: ์ฝ๊ธฐ ์ „ํ™˜. API์™€ UI๊ฐ€ ๋จผ์ € delivery_window๋ฅผ ์ฝ๋˜ ๊ฐ’์ด ์—†์œผ๋ฉด ์œ ์ถ”๋œ ๊ฐ’์„ ํด๋ฐฑ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • 5๋‹จ๊ณ„: ๋‚˜์ค‘์— ๊ฐ•์ œํ™”. ์ฑ„ํƒ๊ณผ ๋ฐฑํ•„์ด ์™„๋ฃŒ๋˜๋ฉด NOT NULL์„ ์ถ”๊ฐ€ํ•˜๊ณ  ํด๋ฐฑ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ๋‹จ๊ณ„ ๋™์•ˆ ์‚ฌ์šฉ์ž๊ฐ€ ๋А๋ผ๋Š” ๋ณ€ํ™”๋Š” ์ง€๋ฃจํ•จ(boring)์ž…๋‹ˆ๋‹ค(๋ชฉํ‘œ๊ฐ€ ๋ฐ”๋กœ ๊ทธ๊ฒƒ์ž…๋‹ˆ๋‹ค):

  • ์˜ค๋ž˜๋œ ๋ชจ๋ฐ”์ผ ์‚ฌ์šฉ์ž๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค๊ณ  API๊ฐ€ ๊ฑฐ๋ถ€ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ณ„์† ์ฃผ๋ฌธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ƒˆ ๋ชจ๋ฐ”์ผ ์‚ฌ์šฉ์ž๋Š” ์ƒˆ ํ•„๋“œ๋ฅผ ๋ณด๊ณ  ์„ ํƒ์ด ์ผ๊ด€๋˜๊ฒŒ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  • ์šด์˜๊ณผ ์ง€์›ํŒ€์€ ํ•„๋“œ๊ฐ€ ์ ์ง„์ ์œผ๋กœ ์ฑ„์›Œ์ง€๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ๋ˆ„๋ฝ์€ ๋ณด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฐ ๋‹จ๊ณ„์˜ ๊ฐ„๋‹จํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ธฐ์ค€: ์ƒˆ ์ฃผ๋ฌธ์—์„œ delivery_window๊ฐ€ ๋น„์–ด์žˆ์ง€ ์•Š์€ ๋น„์œจ์„ ์ถ”์ ํ•˜์„ธ์š”. ์ด ๋น„์œจ์ด ์•ˆ์ •์ ์œผ๋กœ ๋†’๊ณ  "ํ•„๋“œ ๋ˆ„๋ฝ" ๊ฒ€์ฆ ์˜ค๋ฅ˜๊ฐ€ ๊ฑฐ์˜ 0์ด๋ฉด ๋ฐฑํ•„์—์„œ ์ œ์•ฝ ๊ฐ•์ œํ™”๋กœ ๋„˜์–ด๊ฐ€๊ธฐ ์•ˆ์ „ํ•œ ์‹ ํ˜ธ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„: ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ”Œ๋ ˆ์ด๋ถ ๋งŒ๋“ค๊ธฐ

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

ํ”Œ๋ ˆ์ด๋ถ์€ ๊ฐ„๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌด์—‡์„ ์ถ”๊ฐ€ํ•˜๊ณ , ์–ด๋–ป๊ฒŒ ์•ˆ์ „ํ•˜๊ฒŒ ๋ฐฐํฌํ•˜๋ฉฐ, ์–ธ์ œ ์˜ค๋ž˜๋œ ๋ถ€๋ถ„์„ ์ œ๊ฑฐํ• ์ง€ ๋‹ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ ํ…œํ”Œ๋ฆฟ:

  • ์ถ”๊ฐ€๋งŒ ํ•œ๋‹ค(์ƒˆ ์ปฌ๋Ÿผ/ํ…Œ์ด๋ธ”/์ธ๋ฑ์Šค, ์„ ํƒ์  ์ƒˆ API ํ•„๋“œ).
  • ์˜› ๊ตฌ์กฐ์™€ ์ƒˆ ๊ตฌ์กฐ๋ฅผ ๋ชจ๋‘ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ๋ฐฐํฌํ•œ๋‹ค.
  • ์†Œ๊ทœ๋ชจ ๋ฐฐ์น˜๋กœ ๋ฐฑํ•„ํ•˜๊ณ  ์™„๋ฃŒ ์‹ ํ˜ธ๋ฅผ ๋ช…ํ™•ํžˆ ํ•œ๋‹ค.
  • ๋™์ž‘ ์ „ํ™˜์€ ํ”ผ์ฒ˜ ํ”Œ๋ž˜๊ทธ๋‚˜ ์„ค์ •์œผ๋กœ ํ•˜๊ณ  ์žฌ๋ฐฐํฌ์— ์˜์กดํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ์ปท์˜คํ”„ ๋‚ ์งœ์™€ ๊ฒ€์ฆ ํ›„์—๋งŒ ์˜ค๋ž˜๋œ ํ•„๋“œ/์—”๋“œํฌ์ธํŠธ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.

๋‚ฎ์€ ์œ„ํ—˜์˜ ํ…Œ์ด๋ธ”(์ƒˆ ์„ ํƒ์  ์ƒํƒœ, ๋ฉ”๋ชจ ํ•„๋“œ)๋กœ ์‹œ์ž‘ํ•ด ์ „์ฒด ํ”Œ๋ ˆ์ด๋ถ์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์‹คํ–‰ํ•˜์„ธ์š”: ์ถ”๊ฐ€์  ๋ณ€๊ฒฝ, ๋ฐฑํ•„, ํ˜ผํ•ฉ ๋ฒ„์ „ ํด๋ผ์ด์–ธํŠธ, ์ •๋ฆฌ ๋‹จ๊ณ„. ์ด ์—ฐ์Šต์€ ์ฃผ์š” ์žฌ์„ค๊ณ„ ์‹œ๋„ ์ „์— ๋ชจ๋‹ˆํ„ฐ๋ง, ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ, ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์˜ ๋นˆํ‹ˆ์„ ๋“œ๋Ÿฌ๋ƒ…๋‹ˆ๋‹ค.

์žฅ๊ธฐ์  ํ˜ผ๋ž€์„ ๋ง‰๋Š” ํ•œ ๊ฐ€์ง€ ์Šต๊ด€: "๋‚˜์ค‘์— ์ œ๊ฑฐ"ํ•  ํ•ญ๋ชฉ์„ ์‹ค์ œ ์ž‘์—…์œผ๋กœ ์ทจ๊ธ‰ํ•˜์„ธ์š”. ์ž„์‹œ ์ปฌ๋Ÿผ, ํ˜ธํ™˜์„ฑ ์ฝ”๋“œ, ๋“€์–ผ๋ผ์ดํŠธ ๋กœ์ง์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์ฆ‰์‹œ ์ •๋ฆฌ ํ‹ฐ์ผ“์„ ๋งŒ๋“ค๊ณ  ๋‹ด๋‹น์ž์™€ ๋‚ ์งœ๋ฅผ ์ง€์ •ํ•˜์„ธ์š”. ๋ฆด๋ฆฌ์Šค ๋ฌธ์„œ์— ์ž‘์ง€๋งŒ ์ง€์†์ ์ธ "ํ˜ธํ™˜์„ฑ ๋ถ€์ฑ„" ๋ฉ”๋ชจ๋ฅผ ๋‚จ๊ฒจ ๊ฐ€์‹œ์„ฑ์„ ์œ ์ง€ํ•˜์„ธ์š”.

AppMaster๋กœ ๊ตฌ์ถ•ํ•˜๋ฉด ์žฌ์ƒ์„ฑ์„ ์•ˆ์ „ ์ ˆ์ฐจ์˜ ์ผ๋ถ€๋กœ ์ทจ๊ธ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: ์ถ”๊ฐ€์  ์Šคํ‚ค๋งˆ๋ฅผ ๋ชจ๋ธ๋งํ•˜๊ณ , ์ „ํ™˜ ์ค‘์— ์˜›/์ƒˆ ํ•„๋“œ๋ฅผ ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์—…๋ฐ์ดํŠธํ•œ ๋’ค ์žฌ์ƒ์„ฑํ•˜์—ฌ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์š”๊ตฌ์‚ฌํ•ญ ๋ณ€ํ™”์— ๋”ฐ๋ผ ๊น”๋”ํ•˜๊ฒŒ ์œ ์ง€๋˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ ์ฝ”๋“œ๊ฐ€ ์‹ค์ œ๋กœ ์ƒ์„ฑ๋˜๋Š” ๋…ธ์ฝ”๋“œ ํ™˜๊ฒฝ์— ์–ด๋–ป๊ฒŒ ๋งž๋Š”์ง€ ๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด AppMaster (appmaster.io)๋Š” ๋ฐ˜๋ณต์ ์ด๊ณ  ๋‹จ๊ณ„์ ์ธ ๋ฐฐํฌ ๋ฐฉ์‹์— ๋งž์ถฐ ์„ค๊ณ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชฉํ‘œ๋Š” ์™„๋ฒฝํ•จ์ด ์•„๋‹ˆ๋ผ ๋ฐ˜๋ณต์„ฑ์ž…๋‹ˆ๋‹ค: ๋ชจ๋“  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์— ๊ณ„ํš, ์ธก์ •, ๊ทธ๋ฆฌ๊ณ  ์ฒ ์ˆ˜ ๊ฒฝ๋กœ๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

What does โ€œzero-downtimeโ€ actually mean for a schema change?

๋ฌด์ค‘๋‹จ(์ œ๋กœ ๋‹ค์šดํƒ€์ž„)์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๋™์•ˆ ์‚ฌ์šฉ์ž๋“ค์ด ์ •์ƒ์ ์œผ๋กœ ๊ณ„์† ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋ช…๋ฐฑํ•œ ๋‹ค์šดํƒ€์ž„์„ ํ”ผํ•˜๋Š” ๊ฒƒ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋นˆ ํ™”๋ฉด, ์ž˜๋ชป๋œ ๊ฐ’, ์ž‘์—… ์‹คํŒจ, ๊ธด ์ž ๊ธˆ์œผ๋กœ ์ธํ•œ ์“ฐ๊ธฐ ์ฐจ๋‹จ ๊ฐ™์€ ์€๋ฐ€ํ•œ ์žฅ์• ๋„ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

Why do schema changes break things even when the migration succeeds?

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

Why are older mobile apps such a big risk during migrations?

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

Whatโ€™s the safest type of schema change to do without downtime?

์ถ”๊ฐ€(additive) ๋ณ€๊ฒฝ์€ ๊ธฐ์กด ์Šคํ‚ค๋งˆ๋ฅผ ์œ ์ง€ํ•œ ์ฑ„ ์ƒˆ ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด ์ฝ”๋“œ๊ฐ€ ๊นจ์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ์ ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด ์ด๋ฆ„ ๋ณ€๊ฒฝ์ด๋‚˜ ์‚ญ์ œ๋Š” ์˜ค๋ž˜๋œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์˜์กดํ•˜๋˜ ๊ฒƒ์„ ์ œ๊ฑฐํ•˜๋ฏ€๋กœ ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค.

How do I add a new required field without breaking old clients?

์ƒˆ ํ•„๋“œ๋ฅผ ๋ฐ”๋กœ ํ•„์ˆ˜๋กœ ๋งŒ๋“ค์ง€ ๋ง๊ณ  ๋จผ์ € nullable(๋„ ํ—ˆ์šฉ)๋กœ ์ถ”๊ฐ€ํ•˜์„ธ์š”. ์˜ค๋ž˜๋œ ์ฝ”๋“œ๊ฐ€ ๊ณ„์† ํ–‰์„ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ ๋’ค, ๋ฐฐ์น˜๋กœ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ์ฑ„์šฐ๊ณ , ์“ฐ๊ธฐ๊ฐ€ ์ผ๊ด€๋˜๊ฒŒ ์ด๋ค„์งˆ ๋•Œ NOT NULL์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

Whatโ€™s a practical rollout sequence for a zero-downtime migration?

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

How can I backfill data without causing locks or slowdowns?

์ž‘์€ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ์†Œ๊ทœ๋ชจ ๋ฐฐ์น˜ ๋‹จ์œ„๋กœ ๋ฐฑํ•„์„ ์‹คํ–‰ํ•˜์„ธ์š”. ํ…Œ์ด๋ธ”์„ ์ž ๊ทธ๊ฑฐ๋‚˜ ๋ถ€ํ•˜๋ฅผ ๊ธ‰์ฆ์‹œํ‚ค์ง€ ์•Š๋„๋ก ์ œํ•œ๊ณผ ์งง์€ ์ผ์‹œ์ค‘๋‹จ(sleep)์„ ๋‘๊ณ  ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ง„ํ–‰ ์ƒํ™ฉ์„ ๊ธฐ๋กํ•ด ์ค‘๋‹จ ํ›„ ์žฌ์‹œ์ž‘์ด ์•ˆ์ „ํ•˜๋„๋ก ๋งŒ๋“œ์„ธ์š”.

How do I keep my API compatible while the schema changes?

์ƒˆ ํ•„๋“œ๋ฅผ ์ฒ˜์Œ์—๋Š” ์„ ํƒ์ (optional)์œผ๋กœ ์ทจ๊ธ‰ํ•˜๊ณ , ์„œ๋ฒ„ ์ธก์—์„œ ๊ฐ’์ด ์—†์„ ๋•Œ ๊ธฐ๋ณธ๊ฐ’์„ ์ ์šฉํ•˜์„ธ์š”. ๊ธฐ์กด ๋™์ž‘์„ ๋ณ€๊ฒฝํ•˜์ง€ ๋ง๊ณ , ์ƒˆ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฐ’์„ ๋ณด๋‚ผ ๋•Œ์™€ ์˜ค๋ž˜๋œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ƒ๋žตํ•  ๋•Œ ๋‘ ๊ฒฝ๋กœ๋ฅผ ํ…Œ์ŠคํŠธํ•˜์„ธ์š”.

Whatโ€™s the best rollback plan during a phased migration?

๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์Šคํ‚ค๋งˆ๋ฅผ ๋˜๋Œ๋ฆฌ๊ธฐ๋ณด๋‹ค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ฅผ ๋˜๋Œ๋ฆฝ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์ฝ๊ธฐ๋ฅผ ๋จผ์ € ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ , ๋‹ค์Œ์œผ๋กœ ์ƒˆ๋กœ์šด ์“ฐ๊ธฐ๋ฅผ ์ค‘๋‹จํ•˜์„ธ์š”. ์ƒˆ ํ…Œ์ด๋ธ”/์ปฌ๋Ÿผ์€ ์œ ์ง€ํ•˜๋˜ ์‚ฌ์šฉ์„ ์ค‘์ง€ํ•˜๊ณ , ๋ฐฑํ•„์€ ์•ˆ์ •ํ™”๋  ๋•Œ๊นŒ์ง€ ์ผ์‹œ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค.

What should I monitor to know itโ€™s safe to move to the next phase?

์—๋Ÿฌ์œจ, ๋А๋ฆฐ ์ฟผ๋ฆฌ(p95/p99), ์“ฐ๊ธฐ ์ง€์—ฐ, ํ ๊นŠ์ด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค CPU/IO ์‚ฌ์šฉ๋Ÿ‰ ๊ฐ™์€ ์‚ฌ์šฉ์ž ์˜ํ–ฅ ์ง€ํ‘œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”. ๊ฐ ๋‹จ๊ณ„์—์„œ ์ง€ํ‘œ๊ฐ€ ์•ˆ์ •์ ์ด๊ณ  ์ƒˆ ํ•„๋“œ ์ปค๋ฒ„๋ฆฌ์ง€๊ฐ€ ๋†’์„ ๋•Œ๋งŒ ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์‰ฌ์šด ์‹œ์ž‘
๋ฉ‹์ง„๋งŒ๋“ค๊ธฐ

๋ฌด๋ฃŒ ์š”๊ธˆ์ œ๋กœ AppMaster๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”.
์ค€๋น„๊ฐ€ ๋˜๋ฉด ์ ์ ˆํ•œ ๊ตฌ๋…์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๋‹ค
๋ฌด์ค‘๋‹จ(์ œ๋กœ ๋‹ค์šดํƒ€์ž„) ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ: ์•ˆ์ „ํ•˜๊ฒŒ ์œ ์ง€๋˜๋Š” ์ถ”๊ฐ€์  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ | AppMaster