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

CRUD ์ค‘์‹ฌ ๋ฐฑ์—”๋“œ์™€ API๋ฅผ ์œ„ํ•œ ์ตœ์†Œ ๊ด€์ธก ์„ค์ •

CRUD ์ค‘์‹ฌ ๋ฐฑ์—”๋“œ๋ฅผ ์œ„ํ•œ ์ตœ์†Œ ๊ด€์ธก ์„ค์ •: ๊ตฌ์กฐํ™”๋œ ๋กœ๊ทธ, ํ•ต์‹ฌ ๋ฉ”ํŠธ๋ฆญ, ๋А๋ฆฐ ์ฟผ๋ฆฌยท์˜ค๋ฅ˜ยท์žฅ์• ๋ฅผ ์กฐ๊ธฐ์— ํฌ์ฐฉํ•˜๋Š” ์‹ค์šฉ์  ๊ฒฝ๋ณด.

CRUD ์ค‘์‹ฌ ๋ฐฑ์—”๋“œ์™€ API๋ฅผ ์œ„ํ•œ ์ตœ์†Œ ๊ด€์ธก ์„ค์ •

CRUD ์ค‘์‹ฌ ์•ฑ์—์„œ ๊ด€์ธก์ด ํ•ด๊ฒฐํ•˜๋Š” ๋ฌธ์ œ

CRUD ์ค‘์‹ฌ์˜ ๋น„์ฆˆ๋‹ˆ์Šค ์•ฑ์€ ๋ณดํ†ต ์ง€๋ฃจํ•˜์ง€๋งŒ ๋น„์šฉ์ด ํฐ ๋ฐฉ์‹์œผ๋กœ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ๋ชฉ๋ก ํŽ˜์ด์ง€๊ฐ€ ๋งค์ฃผ ๋А๋ ค์ง€๊ณ , ์ €์žฅ ๋ฒ„ํŠผ์ด ๊ฐ€๋” ํƒ€์ž„์•„์›ƒ๋˜๋ฉฐ, ๊ณ ๊ฐ์ง€์›์—๋Š” ์žฌํ˜„๋˜์ง€ ์•Š๋Š” "๋ฌด์ž‘์œ„ 500"์ด ๋ณด๊ณ ๋ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” ์•„๋ฌด ๋ฌธ์ œ๊ฐ€ ์—†์–ด ๋ณด์ด์ง€๋งŒ ํ”„๋กœ๋•์…˜์€ ๋ฏฟ์Œ์ง์Šค๋Ÿฝ์ง€ ์•Š๊ฒŒ ๋А๊ปด์ง‘๋‹ˆ๋‹ค.

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

๊ด€์ธก์€ ๊ทธ ์ถ”์ธก์„ ๋‹ต์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด: ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ฌ๋Š”์ง€ ๋ณด๊ณ  ์™œ ์ผ์–ด๋‚ฌ๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์„ธ ๊ฐ€์ง€ ์‹ ํ˜ธ ์œ ํ˜•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค:

  • ๋กœ๊ทธ: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฌด์—‡์„ ๊ฒฐ์ •ํ–ˆ๋Š”์ง€(์œ ์šฉํ•œ ์ปจํ…์ŠคํŠธ์™€ ํ•จ๊ป˜)
  • ๋ฉ”ํŠธ๋ฆญ: ์‹œ์Šคํ…œ์ด ์‹œ๊ฐ„์— ๋”ฐ๋ผ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€(์ง€์—ฐ, ์˜ค๋ฅ˜์œจ, ํฌํ™”๋„)
  • ํŠธ๋ ˆ์ด์Šค(์„ ํƒ์ ): ์„œ๋น„์Šค์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ „๋ฐ˜์—์„œ ์‹œ๊ฐ„์ด ์–ด๋””์— ์†Œ๋น„๋˜์—ˆ๋Š”์ง€

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

์ตœ์†Œํ•œ์˜ ์„ค์ •์€ ๋‚˜์œ ๋‚ ์— ์‹ค์ œ๋กœ ๋‹ตํ•ด์•ผ ํ•˜๋Š” ์งˆ๋ฌธ๋“ค์—์„œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค:

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

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

์ตœ์†Œํ•œ์˜ ์„ค์ •: ํ•„์š”ํ•œ ๊ฒƒ๊ณผ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ

์ตœ์†Œ ๊ด€์ธก ๊ตฌ์„ฑ์€ ๋กœ๊ทธ, ๋ฉ”ํŠธ๋ฆญ, ์•Œ๋ฆผ ์„ธ ๊ธฐ๋‘ฅ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ํŠธ๋ ˆ์ด์Šค๋Š” ์œ ์šฉํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ CRUD ์ค‘์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ์•ฑ์—๋Š” ๋ณด๋„ˆ์Šค ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค.

๋ชฉํ‘œ๋Š” ๋‹จ์ˆœํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์–ธ์ œ ์‹คํŒจํ•˜๋Š”์ง€(1), ์™œ ์‹คํŒจํ•˜๋Š”์ง€(2), ์‹œ์Šคํ…œ์˜ ์–ด๋””์—์„œ ๋ฐœ์ƒํ•˜๋Š”์ง€(3)๋ฅผ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์งˆ๋ฌธ๋“ค์— ๋น ๋ฅด๊ฒŒ ๋‹ตํ•˜์ง€ ๋ชปํ•˜๋ฉด ์“ธ๋ฐ์—†๋Š” ์ถ”์ธก๊ณผ ๋…ผ์Ÿ์— ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋ณดํ†ต ์ด ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ตœ์†Œ ์‹ ํ˜ธ ์„ธํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

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

์ฆ์ƒ๊ณผ ์›์ธ์„ ๋ถ„๋ฆฌํ•˜๋ฉด ์กฐ์‚ฌํ•˜๊ธฐ ์ˆ˜์›”ํ•ฉ๋‹ˆ๋‹ค. ์ฆ์ƒ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋А๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค: 500, ํƒ€์ž„์•„์›ƒ, ๋А๋ฆฐ ํŽ˜์ด์ง€. ์›์ธ์€ ์ด๋ฅผ ๋งŒ๋“œ๋Š” ์‹ค์ œ ์š”์ธ์ž…๋‹ˆ๋‹ค: ๋ฝ ๊ฒฝ์Ÿ, ํฌํ™”๋œ ์ปค๋„ฅ์…˜ ํ’€, ์ƒˆ ํ•„ํ„ฐ ์ถ”๊ฐ€ ํ›„ ๋А๋ ค์ง„ ์ฟผ๋ฆฌ. ์ฆ์ƒ์— ๋Œ€ํ•ด ๊ฒฝ๋ณด๋ฅผ ์„ค์ •ํ•˜๊ณ  ์›์ธ ์‹ ํ˜ธ๋กœ ์กฐ์‚ฌํ•˜์„ธ์š”.

์‹ค์šฉ์ ์ธ ๊ทœ์น™ ํ•˜๋‚˜: ์ค‘์š”ํ•œ ์‹ ํ˜ธ๋ฅผ ๋ณผ ๋‹จ์ผ ์œ„์น˜๋ฅผ ์„ ํƒํ•˜์„ธ์š”. ๋กœ๊ทธ ๋„๊ตฌ, ๋ฉ”ํŠธ๋ฆญ ๋„๊ตฌ, ๋ณ„๋„ ์•Œ๋ฆผ ์ธ๋ฐ•์Šค๋ฅผ ๊ณ„์† ์™”๋‹ค๊ฐ”๋‹ค ํ•˜๋ฉด ๊ฐ€์žฅ ๊ธ‰ํ•  ๋•Œ ์†๋„๊ฐ€ ๋А๋ ค์ง‘๋‹ˆ๋‹ค.

์••๋ฐ• ์ƒํ™ฉ์—์„œ๋„ ์ฝ๊ธฐ ์‰ฌ์šด ๊ตฌ์กฐํ™”๋œ ๋กœ๊ทธ

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

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

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

CRUD ์ค‘์‹ฌ API ์„œ๋น„์Šค์—๋Š” ๊ฐ„๋‹จํ•œ ํ•„๋“œ ์„ธํŠธ๊ฐ€ ๋Œ€๋ถ€๋ถ„ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค:

  • timestamp, level, service, env
  • request_id, route, method, status
  • duration_ms, db_query_count
  • tenant_id ๋˜๋Š” account_id(๊ฐœ์ธ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹Œ ์•ˆ์ „ํ•œ ์‹๋ณ„์ž)

๋กœ๊ทธ๋Š” "์–ด๋–ค ๊ณ ๊ฐ์˜ ์–ด๋–ค ํ™”๋ฉด์ธ์ง€"๋ฅผ ์ขํžˆ๋„๋ก ๋„์™€์•ผ ํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ ์œ ์ถœ๋กœ ์ด์–ด์ ธ์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๋ฆ„, ์ด๋ฉ”์ผ, ์ „ํ™”๋ฒˆํ˜ธ, ์ฃผ์†Œ, ํ† ํฐ ๋˜๋Š” ์ „์ฒด ์š”์ฒญ ๋ณธ๋ฌธ์€ ๊ธฐ๋กํ•˜์ง€ ๋งˆ์„ธ์š”. ๋” ๊นŠ์€ ์„ธ๋ถ€๊ฐ€ ํ•„์š”ํ•˜๋ฉด ํ•„์š”ํ•  ๋•Œ์—๋งŒ ๋งˆ์Šคํ‚น๊ณผ ํ•จ๊ป˜ ๊ธฐ๋กํ•˜์„ธ์š”.

CRUD ์‹œ์Šคํ…œ์—์„œ ๋น ๋ฅด๊ฒŒ ํšจ๊ณผ๋ฅผ ๋ณด๋Š” ๋‘ ํ•„๋“œ๋Š” duration_ms์™€ db_query_count์ž…๋‹ˆ๋‹ค. ์ด๋“ค์€ ํŠธ๋ ˆ์ด์‹ฑ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์ „์—๋„ ๋А๋ฆฐ ํ•ธ๋“ค๋Ÿฌ์™€ ์‹ค์ˆ˜๋กœ ๋ฐœ์ƒํ•œ N+1 ํŒจํ„ด์„ ์žก์•„๋ƒ…๋‹ˆ๋‹ค.

๋กœ๊ทธ ๋ ˆ๋ฒจ์„ ์ •์˜ํ•ด ๋ชจ๋‘๊ฐ€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜์„ธ์š”:

  • info: ์˜ˆ์ƒ๋˜๋Š” ์ด๋ฒคํŠธ(์š”์ฒญ ์™„๋ฃŒ, ์ž‘์—… ์‹œ์ž‘)
  • warn: ๋น„์ •์ƒ์ ์ด์ง€๋งŒ ๋ณต๊ตฌ ๊ฐ€๋Šฅํ•œ ์ƒํ™ฉ(๋А๋ฆฐ ์š”์ฒญ, ์žฌ์‹œ๋„ ์„ฑ๊ณต)
  • error: ์‹คํŒจํ•œ ์š”์ฒญ ๋˜๋Š” ์ž‘์—…(์˜ˆ์™ธ, ํƒ€์ž„์•„์›ƒ, ์˜์กด์„ฑ ์‹คํŒจ)

AppMaster ๊ฐ™์€ ํ”Œ๋žซํผ์œผ๋กœ ๋ฐฑ์—”๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๋ฉด ์ƒ์„ฑ๋œ ์„œ๋น„์Šค ์ „๋ฐ˜์—์„œ ๊ฐ™์€ ํ•„๋“œ๋ช…์„ ์œ ์ง€ํ•ด request_id๋กœ ๊ฒ€์ƒ‰ํ•˜๋ฉด ์–ด๋””์„œ๋“  ์ž‘๋™ํ•˜๊ฒŒ ํ•˜์„ธ์š”.

CRUD ๋ฐฑ์—”๋“œ์™€ API์— ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํ•ต์‹ฌ ๋ฉ”ํŠธ๋ฆญ

CRUD ์ค‘์‹ฌ ์•ฑ์˜ ๋Œ€๋ถ€๋ถ„ ์‚ฌ๊ณ ๋Š” ์ต์ˆ™ํ•œ ๋ชจ์–‘์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค: ํ•œ๋‘ ๊ฐœ ์—”๋“œํฌ์ธํŠธ๊ฐ€ ๋А๋ ค์ง€๊ณ  DB๊ฐ€ ์ŠคํŠธ๋ ˆ์Šค๋ฅผ ๋ฐ›์œผ๋ฉฐ ์‚ฌ์šฉ์ž๋Š” ์Šคํ”ผ๋„ˆ๋‚˜ ํƒ€์ž„์•„์›ƒ์„ ๋ด…๋‹ˆ๋‹ค. ๋ฉ”ํŠธ๋ฆญ์€ ์ด ์ด์•ผ๊ธฐ๋ฅผ ๋ช‡ ๋ถ„ ๋‚ด์— ๋ช…ํ™•ํžˆ ๋ณด์—ฌ์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ตœ์†Œ ์„ธํŠธ๋Š” ๋ณดํ†ต ๋‹ค์„ฏ ์˜์—ญ์„ ์ปค๋ฒ„ํ•ฉ๋‹ˆ๋‹ค:

  • ํŠธ๋ž˜ํ”ฝ: ์ดˆ๋‹น ์š”์ฒญ ์ˆ˜(๋ผ์šฐํŠธ๋ณ„ ๋˜๋Š” ์„œ๋น„์Šค๋ณ„ ์ตœ์†Œ), ์ƒํƒœ ์ฝ”๋“œ ํด๋ž˜์Šค๋ณ„ ์š”์ฒญ๋ฅ (2xx, 4xx, 5xx)
  • ์˜ค๋ฅ˜: 5xx ๋น„์œจ, ํƒ€์ž„์•„์›ƒ ์ˆ˜, ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ์ž ์‹ค์ˆ˜๋กœ ๋ฐœ์ƒํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ์˜ค๋ฅ˜(4xx)๋ฅผ ๋ณ„๋„๋กœ ๊ธฐ๋ก
  • ์ง€์—ฐ(ํผ์„ผํƒ€์ผ): ์ผ๋ฐ˜ ๊ฒฝํ—˜์„ ์œ„ํ•œ p50๊ณผ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋Š” ์‹ ํ˜ธ๋กœ p95(๋•Œ๋กœ๋Š” p99)
  • ํฌํ™”๋„: CPU์™€ ๋ฉ”๋ชจ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ  ์•ฑ ํŠน์œ ์˜ ํฌํ™”๋„(์›Œ์ปค ํ™œ์šฉ๋ฅ , ๋…ธ์ถœ ๊ฐ€๋Šฅํ•œ ์Šค๋ ˆ๋“œ/๊ณ ๋ฃจํ‹ด ์••๋ ฅ ๋“ฑ)
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์••๋ ฅ: ์ฟผ๋ฆฌ ์ง€์—ฐ p95, ์ปค๋„ฅ์…˜ ํ’€ ์‚ฌ์šฉ๋Ÿ‰(์‚ฌ์šฉ ์ค‘ vs ์ตœ๋Œ€), ๋ฝ ๋Œ€๊ธฐ ์‹œ๊ฐ„(๋˜๋Š” ๋ฝ ๋Œ€๊ธฐ ์ฟผ๋ฆฌ ์นด์šดํŠธ)

๋‘ ๊ฐ€์ง€ ์„ธ๋ถ€๊ฐ€ ๋ฉ”ํŠธ๋ฆญ์„ ํ›จ์”ฌ ๋” ์‹ค์šฉ์ ์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

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

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

๋‹จ์ˆœํ•œ ๊ทœ์น™: ๋ฉ”ํŠธ๋ฆญ์ด ๋‹ค์Œ ์กฐ์น˜(๋กค๋ฐฑ, ์Šค์ผ€์ผ๋ง, ์ฟผ๋ฆฌ ์ˆ˜์ •, ์ž‘์—… ์ •์ง€)๋ฅผ ์•Œ๋ ค์ฃผ์ง€ ๋ชปํ•œ๋‹ค๋ฉด ์ตœ์†Œ ์„ธํŠธ์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹ ํ˜ธ: CRUD ๊ณ ํ†ต์˜ ํ”ํ•œ ๊ทผ๋ณธ ์›์ธ

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

CRUD ์ค‘์‹ฌ ์•ฑ์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” "๋А๋ฆฌ๊ฒŒ ๋А๊ปด์ง€๋Š”" ์ƒํƒœ๊ฐ€ ์‹ค์ œ ์‚ฌ์šฉ์ž ๊ณ ํ†ต์œผ๋กœ ์ด์–ด์ง€๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ์˜ ์„ค์ •์€ ๋ณ‘๋ชฉ์ด PostgreSQL์ธ์ง€(์•ฑ ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ) ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค ์ข…๋ฅ˜์˜ DB ๋ฌธ์ œ์ธ์ง€ ๋ถ„๋ช…ํžˆ ์•Œ๋ ค์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

PostgreSQL์—์„œ ๋จผ์ € ์ธก์ •ํ•  ๊ฒƒ

์ˆ˜์‹ญ ๊ฐœ์˜ ๋Œ€์‹œ๋ณด๋“œ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๊ณ ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ์‹ ํ˜ธ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์„ธ์š”:

  • ๋А๋ฆฐ ์ฟผ๋ฆฌ ๋น„์œจ๊ณผ p95/p99 ์ฟผ๋ฆฌ ์‹œ๊ฐ„(์ƒ์œ„ ๋А๋ฆฐ ์ฟผ๋ฆฌ ํฌํ•จ)
  • ๋ฝ ๋Œ€๊ธฐ์™€ ๋ฐ๋“œ๋ฝ(๋ˆ„๊ฐ€ ๋ˆ„๊ตฌ๋ฅผ ๋ธ”๋กœํ‚นํ•˜๋Š”์ง€)
  • ์ปค๋„ฅ์…˜ ์‚ฌ์šฉ๋Ÿ‰(ํ™œ์„ฑ ์ปค๋„ฅ์…˜ vs ํ’€ ํ•œ๊ณ„, ์‹คํŒจํ•œ ์ปค๋„ฅ์…˜)
  • ๋””์Šคํฌ ๋ฐ I/O ์••๋ ฅ(์ง€์—ฐ, ํฌํ™”๋„, ์—ฌ์œ  ๊ณต๊ฐ„)
  • ๋ณต์ œ ์ง€์—ฐ(์ฝ๊ธฐ ๋ ˆํ”Œ๋ฆฌ์นด๋ฅผ ์šด์˜ ์ค‘์ด๋ผ๋ฉด)

์•ฑ ์‹œ๊ฐ„๊ณผ DB ์‹œ๊ฐ„์„ ๋ถ„๋ฆฌํ•˜์„ธ์š”

API ๋ ˆ์ด์–ด์— ์ฟผ๋ฆฌ ํƒ€์ด๋ฐ ํžˆ์Šคํ† ๊ทธ๋žจ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์—”๋“œํฌ์ธํŠธ๋‚˜ ์œ ์Šค์ผ€์ด์Šค๋กœ ํƒœ๊ทธํ•˜์„ธ์š”(์˜ˆ: GET /customers, "search orders", "update ticket status"). ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์—”๋“œํฌ์ธํŠธ๊ฐ€ ๋งŽ์€ ์ž‘์€ ์ฟผ๋ฆฌ ๋•Œ๋ฌธ์— ๋А๋ฆฐ์ง€, ํ•˜๋‚˜์˜ ํฐ ์ฟผ๋ฆฌ ๋•Œ๋ฌธ์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

N+1 ํŒจํ„ด์„ ์กฐ๊ธฐ์— ํฌ์ฐฉํ•˜์„ธ์š”

CRUD ํ™”๋ฉด์€ ์ข…์ข… N+1 ์ฟผ๋ฆฌ๋ฅผ ์œ ๋ฐœํ•ฉ๋‹ˆ๋‹ค: ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ค๋Š” ์ฟผ๋ฆฌ ํ•˜๋‚˜, ๊ทธ ๋‹ค์Œ ๊ฐ ํ–‰๋งˆ๋‹ค ๊ด€๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ฟผ๋ฆฌ. ์š”์ฒญ ์ˆ˜๋Š” ์ผ์ •ํ•œ๋ฐ ์š”์ฒญ๋‹น DB ์ฟผ๋ฆฌ ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚˜๋Š” ์—”๋“œํฌ์ธํŠธ๋ฅผ ๊ด€์ฐฐํ•˜์„ธ์š”. ๋ชจ๋ธ๊ณผ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์—์„œ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ํŽ˜์น˜ ํŒจํ„ด์„ ํŠœ๋‹ํ•ด์•ผ ํ•˜๋Š” ์˜์—ญ์ด ํ”ํ•˜๊ฒŒ ์—ฌ๊ธฐ์—์„œ ๋‚˜์˜ต๋‹ˆ๋‹ค.

์ด๋ฏธ ์บ์‹œ๊ฐ€ ์žˆ๋‹ค๋ฉด ํžˆํŠธ์œจ์„ ์ถ”์ ํ•˜์„ธ์š”. ๋” ์ข‹์€ ์ฐจํŠธ๋ฅผ ์œ„ํ•ด ์บ์‹œ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€๋Š” ๋งˆ์„ธ์š”.

์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ๊ณผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์œ„ํ—˜ ์ฐฝ์œผ๋กœ ์ทจ๊ธ‰ํ•˜์„ธ์š”. ์‹œ์ž‘ยท์ข…๋ฃŒ ์‹œ๊ฐ„์„ ๊ธฐ๋กํ•˜๊ณ  ํ•ด๋‹น ์ฐฝ ๋™์•ˆ ๋ฝ, ์ฟผ๋ฆฌ ์‹œ๊ฐ„, ์ปค๋„ฅ์…˜ ์˜ค๋ฅ˜์˜ ๊ธ‰์ฆ์„ ๊ด€์ฐฐํ•˜์„ธ์š”.

์ ์ ˆํ•œ ์‚ฌ๋žŒ์„ ๊นจ์šฐ๋Š” ์•Œ๋ฆผ ์„ค๊ณ„

์˜ค๋žซ๋™์•ˆ ์ง€์†๋˜๋Š” CRUD ์•ฑ ์ถœ์‹œํ•˜๊ธฐ
๋‚ด๋ถ€ ๋„๊ตฌ๋‚˜ ๊ด€๋ฆฌ ํฌํ„ธ์„ ๋งŒ๋“ค๊ณ  ์ผ๊ด€๋œ ์Šคํƒ์œผ๋กœ ์„ฑ๋Šฅ์„ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ฒŒ ์œ ์ง€ํ•˜์„ธ์š”.
๋ฌด๋ฃŒ๋กœ ์‹œ์ž‘

์•Œ๋ฆผ์€ ์ฐจํŠธ๊ฐ€ ๋ฐ”์˜๋‹ค๋Š” ์‚ฌ์‹ค์ด ์•„๋‹ˆ๋ผ ์‹ค์ œ ์‚ฌ์šฉ์ž ๋ฌธ์ œ๋ฅผ ๊ฐ€๋ฆฌ์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค. CRUD ์ค‘์‹ฌ ์•ฑ์—์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋А๋ผ๋Š” ๊ฒƒ(์˜ค๋ฅ˜์™€ ๋А๋ฆผ)์„ ๊ฐ์‹œํ•˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์„ธ์š”.

์ฒ˜์Œ์— ์„ธ ๊ฐœ๋งŒ ์ถ”๊ฐ€ํ•œ๋‹ค๋ฉด ๋‹ค์Œ์„ ๊ถŒํ•ฉ๋‹ˆ๋‹ค:

  • 5xx ๋น„์œจ ์ƒ์Šน
  • ์ง€์†์ ์ธ p95 ์ง€์—ฐ
  • ์„ฑ๊ณต ์š”์ฒญ์˜ ๊ฐ‘์ž‘์Šค๋Ÿฐ ๊ฐ์†Œ

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

์ž„๊ณ„๊ฐ’: ๊ธฐ์ค€์„  + ์—ฌ์œ , ์ถ”์ธก ์•„๋‹˜

"p95 > 200ms" ๊ฐ™์€ ํ•˜๋“œ์ฝ”๋”ฉ ์ˆ˜์น˜๋Š” ํ™˜๊ฒฝ๋งˆ๋‹ค ์ž˜ ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ •์ƒ ์ฃผ๊ฐ„์„ ์ธก์ •ํ•œ ๋’ค ์ •์ƒ ๋ฒ”์œ„ ๋ฐ”๋กœ ์œ„์— ์—ฌ์œ ๋ฅผ ๋‘๊ณ  ์•Œ๋ฆผ์„ ์„ค์ •ํ•˜์„ธ์š”. ์˜ˆ: p95๊ฐ€ ํ†ต์ƒ ์—…๋ฌด์‹œ๊ฐ„์— 350โ€“450ms๋ผ๋ฉด 10๋ถ„ ๋™์•ˆ 700ms๋ฅผ ๋„˜์œผ๋ฉด ์•Œ๋ฆผ์„ ์šธ๋ฆฌ์„ธ์š”. 5xx๊ฐ€ ๋ณดํ†ต 0.1โ€“0.3%๋ผ๋ฉด 5๋ถ„ ๋™์•ˆ 2%์ผ ๋•Œ ํŽ˜์ด์ง€๋ฅผ ์šธ๋ฆฌ๋Š” ์‹์ž…๋‹ˆ๋‹ค.

์ž„๊ณ„๊ฐ’์€ ์•ˆ์ •์ ์œผ๋กœ ์œ ์ง€ํ•˜์„ธ์š”. ๋งค์ผ ์กฐ์ •ํ•˜์ง€ ๋ง๊ณ  ์‚ฌ๊ณ  ์ดํ›„ ์‹ค์ œ ๊ฒฐ๊ณผ์™€ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์„ ๋•Œ ์กฐ์ •ํ•˜์„ธ์š”.

ํŽ˜์ด์ง€ ๋ฐœ์‹  vs ํ‹ฐ์ผ“: ๋ฏธ๋ฆฌ ๊ฒฐ์ •ํ•˜์„ธ์š”

๋‘ ๋‹จ๊ณ„ ์‹ฌ๊ฐ๋„๋ฅผ ์‚ฌ์šฉํ•ด ์‹ ํ˜ธ์— ๋Œ€ํ•œ ์‹ ๋ขฐ๋ฅผ ์œ ์ง€ํ•˜์„ธ์š”:

  • ํŽ˜์ด์ง€: ์‚ฌ์šฉ์ž๊ฐ€ ์ฐจ๋‹จ๋˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ„ํ—˜ํ•  ๋•Œ(๋†’์€ 5xx, API ํƒ€์ž„์•„์›ƒ, DB ์ปค๋„ฅ์…˜ ํ’€ ๊ฑฐ์˜ ๊ณ ๊ฐˆ)
  • ํ‹ฐ์ผ“ ์ƒ์„ฑ: ์•…ํ™”๋˜๊ณ  ์žˆ์œผ๋‚˜ ๊ธด๊ธ‰ํ•˜์ง€ ์•Š์„ ๋•Œ(์„œ์„œํžˆ ์ƒ์Šนํ•˜๋Š” p95, ํ ๋ฐฑ๋กœ๊ทธ ์ฆ๊ฐ€, ๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰ ์ถ”์„ธ ์ƒ์Šน)

๋ฐฐํฌ ์ฐฝ์ด๋‚˜ ๊ณ„ํš๋œ ์œ ์ง€๋ณด์ˆ˜ ๋™์•ˆ์€ ์•Œ๋ฆผ์„ ์ผ์‹œ ์ค‘๋‹จํ•˜์„ธ์š”.

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

๋น„์ฆˆ๋‹ˆ์Šค ์•ฑ์„ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ SLO(๋ฐ ๊ฒฝ๋ณด์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ)

๋ฌด์—‡์ด "์ถฉ๋ถ„ํžˆ ์ข‹์€์ง€"๋ฅผ ์ •ํ•˜๋ฉด ์ตœ์†Œ ์„ค์ •์ด ๋” ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด SLO์˜ ๋ชฉ์ ์ž…๋‹ˆ๋‹ค: ๋ง‰์—ฐํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ๊ตฌ์ฒด์  ๊ฒฝ๋ณด๋กœ ๋ฐ”๊ฟ” ์ค๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ๋А๋ผ๋Š” ๊ฒƒ๊ณผ ์ง์ ‘ ์—ฐ๊ฒฐ๋˜๋Š” SLI๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์„ธ์š”: ๊ฐ€์šฉ์„ฑ(์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญ์„ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€), ์ง€์—ฐ(๋™์ž‘์ด ์–ผ๋งˆ๋‚˜ ๋นจ๋ฆฌ ์™„๋ฃŒ๋˜๋Š”๊ฐ€), ์˜ค๋ฅ˜์œจ(์š”์ฒญ์ด ์–ผ๋งˆ๋‚˜ ์ž์ฃผ ์‹คํŒจํ•˜๋Š”๊ฐ€).

SLO๋Š” ๋ผ์šฐํŠธ๋ณ„์ด ์•„๋‹ˆ๋ผ ์—”๋“œํฌ์ธํŠธ ๊ทธ๋ฃน๋ณ„๋กœ ์„ค์ •ํ•˜์„ธ์š”. CRUD ์ค‘์‹ฌ ์•ฑ์—์„œ๋Š” ์ฝ๊ธฐ(GET/๋ชฉ๋ก/๊ฒ€์ƒ‰), ์“ฐ๊ธฐ(์ƒ์„ฑ/์ˆ˜์ •/์‚ญ์ œ), ์ธ์ฆ(login/token refresh)์ฒ˜๋Ÿผ ๊ทธ๋ฃนํ™”ํ•˜๋ฉด ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์šด SLO๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ ์˜ˆ์‹œ SLO:

  • ๋‚ด๋ถ€ CRUD ์•ฑ(๊ด€๋ฆฌ ํฌํ„ธ): ์›”๋ณ„ ๊ฐ€์šฉ์„ฑ 99.5%, ์ฝ๊ธฐ ์š”์ฒญ์˜ 95%๊ฐ€ 800ms ๋ฏธ๋งŒ, ์“ฐ๊ธฐ ์š”์ฒญ์˜ 95%๊ฐ€ 1.5s ๋ฏธ๋งŒ, ์˜ค๋ฅ˜์œจ 0.5% ๋ฏธ๋งŒ
  • ๊ณต๊ฐœ API: ์›”๋ณ„ ๊ฐ€์šฉ์„ฑ 99.9%, ์ฝ๊ธฐ ์š”์ฒญ์˜ 99%๊ฐ€ 400ms ๋ฏธ๋งŒ, ์“ฐ๊ธฐ ์š”์ฒญ์˜ 99%๊ฐ€ 800ms ๋ฏธ๋งŒ, ์˜ค๋ฅ˜์œจ 0.1% ๋ฏธ๋งŒ

์—๋Ÿฌ ๋ฒ„์ง“์€ SLO์—์„œ ํ—ˆ์šฉ๋˜๋Š” "๋‚˜์œ ์‹œ๊ฐ„"์ž…๋‹ˆ๋‹ค. ์˜ˆ: ์›” 99.9% ๊ฐ€์šฉ์„ฑ์€ ํ•œ ๋‹ฌ์— ์•ฝ 43๋ถ„์˜ ๋‹ค์šดํƒ€์ž„์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„์ง“์„ ์ผ์ฐ ๋‹ค ์จ๋ฒ„๋ ธ๋‹ค๋ฉด ์•ˆ์ •์„ฑ์ด ํšŒ๋ณต๋  ๋•Œ๊นŒ์ง€ ์œ„ํ—˜ํ•œ ๋ณ€๊ฒฝ์„ ๋ฉˆ์ถ”์„ธ์š”.

SLO๋Š” ๋ฌด์—‡์ด ๊ฒฝ๋ณด๋ฅผ ๋ฐ›์„์ง€(์ฆ‰์‹œ ํŽ˜์ด์ง€), ๋ฌด์—‡์ด ๋Œ€์‹œ๋ณด๋“œ ํŠธ๋ Œ๋“œ์ธ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค. ์—๋Ÿฌ ๋ฒ„์ง“์„ ๋น ๋ฅด๊ฒŒ ์†Œ์ง„ํ•  ๋•Œ(์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์ œ๋กœ ์‹คํŒจํ•  ๋•Œ) ๊ฒฝ๋ณด๋ฅผ ์šธ๋ฆฌ์„ธ์š”, ๋‹จ์ˆœํžˆ ์ง€ํ‘œ๊ฐ€ ์•ฝ๊ฐ„ ๋‚˜๋น ์กŒ๋‹ค๊ณ  ๊ฒฝ๋ณด๋ฅผ ์šธ๋ฆฌ์ง€๋Š” ๋งˆ์„ธ์š”.

AppMaster๋กœ ๋น ๋ฅด๊ฒŒ ๋ฐฑ์—”๋“œ๋ฅผ ๊ตฌ์ถ•ํ•œ๋‹ค๋ฉด ๊ตฌํ˜„์ด ๋ฐ”๋€Œ์–ด๋„ SLO์€ ์‚ฌ์šฉ์ž ์˜ํ–ฅ์— ์ง‘์ค‘ํ•˜๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.

๋‹จ๊ณ„๋ณ„: ํ•˜๋ฃจ ๋งŒ์— ์ตœ์†Œ ๊ด€์ธก ํ™˜๊ฒฝ ๊ตฌ์ถ•ํ•˜๊ธฐ

๊นจ๋—ํ•œ ๋ฐฑ์—”๋“œ๋กœ ์‹œ์ž‘ํ•˜์„ธ์š”
๋น ๋ฅด๊ฒŒ CRUD ๋ฐฑ์—”๋“œ๋ฅผ ๋งŒ๋“ค๊ณ  ์ฒ˜์Œ๋ถ€ํ„ฐ ๋กœ๊ทธ์™€ ๋ฉ”ํŠธ๋ฆญ์„ ์ผ๊ด€๋˜๊ฒŒ ์œ ์ง€ํ•˜์„ธ์š”.
AppMaster ์ฒดํ—˜ํ•ด๋ณด๊ธฐ

์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ€์žฅ ์ž์ฃผ ์ ‘ํ•˜๋Š” ์‹œ์Šคํ…œ ์กฐ๊ฐ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์„ธ์š”. ๋А๋ฆฌ๊ฑฐ๋‚˜ ๊ณ ์žฅ ๋‚˜๋ฉด ์ „์ฒด ์•ฑ์ด ๋‹ค์šด๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋А๊ปด์ง€๋Š” API ํ˜ธ์ถœ๊ณผ ์ž‘์—…์„ ์„ ํƒํ•˜์„ธ์š”.

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

ํ•˜๋ฃจ ๊ณ„ํš ์˜ˆ์‹œ

  • 1์‹œ๊ฐ„: ์ƒ์œ„ 5๊ฐœ ์—”๋“œํฌ์ธํŠธ์™€ 1โ€“2๊ฐœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์„ ์„ ํƒํ•˜์„ธ์š”. "์ข‹์€ ์ƒํƒœ"์˜ ๊ธฐ์ค€(ํ‰๊ท  ์ง€์—ฐ, ๊ธฐ๋Œ€ ์˜ค๋ฅ˜์œจ, ์ •์ƒ DB ์‹œ๊ฐ„)์„ ์ ์œผ์„ธ์š”.
  • 2โ€“3์‹œ๊ฐ„: ์ผ๊ด€๋œ ํ•„๋“œ(request_id, user_id(๊ฐ€๋Šฅํ•˜๋ฉด), endpoint, status_code, latency_ms, db_time_ms, ์งง์€ error_code)๋กœ ๊ตฌ์กฐํ™”๋œ ๋กœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”.
  • 3โ€“4์‹œ๊ฐ„: ํ•ต์‹ฌ ๋ฉ”ํŠธ๋ฆญ ์ถ”๊ฐ€: ์ดˆ๋‹น ์š”์ฒญ, p95 ์ง€์—ฐ, 4xx/5xx ๋น„์œจ, DB ํƒ€์ด๋ฐ(๊ฐ€๋Šฅํ•˜๋ฉด ์ฟผ๋ฆฌ ์ง€์†์‹œ๊ฐ„๊ณผ ํ’€ ํฌํ™”).
  • 4โ€“6์‹œ๊ฐ„: ์„ธ ๊ฐœ์˜ ๋Œ€์‹œ๋ณด๋“œ ์ž‘์„ฑ: ๊ฐœ์š”(ํ•œ๋ˆˆ์— ๋ณด๋Š” ์ƒํƒœ), API ์ƒ์„ธ(์—”๋“œํฌ์ธํŠธ ๋ถ„ํ•ด), DB ๋ทฐ(๋А๋ฆฐ ์ฟผ๋ฆฌ, ๋ฝ, ์ปค๋„ฅ์…˜ ์‚ฌ์šฉ).
  • 6โ€“8์‹œ๊ฐ„: ์•Œ๋ฆผ ์ถ”๊ฐ€, ํ†ต์ œ๋œ ์‹คํŒจ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•ด ์•Œ๋ฆผ์ด ์‹ค๋ฌด์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

๊ฒฝ๋ณด๋Š” ์ ๊ณ  ์ง‘์ค‘์ ์œผ๋กœ ์œ ์ง€ํ•˜์„ธ์š”. ์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์ œ๋กœ ์˜ํ–ฅ ๋ฐ›๋Š” ๊ฒƒ๋“ค์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์•Œ๋ฆผ์„ ์›ํ•ฉ๋‹ˆ๋‹ค.

์‹œ์ž‘์šฉ ์•Œ๋ฆผ(5โ€“8๊ฐœ)

์ข‹์€ ์Šคํƒ€ํ„ฐ ์„ธํŠธ๋Š”: API p95 ์ง€์—ฐ ๊ณผ๋‹ค, ์ง€์†์  5xx ๋น„์œจ, 4xx ๊ธ‰์ฆ(์ฃผ๋กœ ์ธ์ฆ/์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ณ€๊ฒฝ), ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—… ์‹คํŒจ, DB ๋А๋ฆฐ ์ฟผ๋ฆฌ, DB ์ปค๋„ฅ์…˜ ํ’€ ๊ฑฐ์˜ ํ•œ๊ณ„, ๋””์Šคํฌ ์—ฌ์œ  ๊ณต๊ฐ„ ๋ถ€์กฑ(์…€ํ”„ ํ˜ธ์ŠคํŒ…์ธ ๊ฒฝ์šฐ)์ž…๋‹ˆ๋‹ค.

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

๋ชจ๋‹ˆํ„ฐ๋ง์„ ์‹œ๋„๋Ÿฝ๊ฒŒ ํ•˜๊ฑฐ๋‚˜ ๋ฌด์šฉ์ง€๋ฌผ๋กœ ๋งŒ๋“œ๋Š” ํ”ํ•œ ์‹ค์ˆ˜

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

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

๋˜ ๋‹ค๋ฅธ ๊ณ ์ „์  ์‹ค์ˆ˜๋Š” ์ƒ๊ด€ ID ๋ˆ„๋ฝ์ž…๋‹ˆ๋‹ค. ์˜ค๋ฅ˜ ๋กœ๊ทธ, ๋А๋ฆฐ ์š”์ฒญ, DB ์ฟผ๋ฆฌ๋ฅผ ํ•œ ์š”์ฒญ์— ์—ฐ๊ฒฐํ•˜์ง€ ๋ชปํ•˜๋ฉด ์ˆ˜์‹œ๊ฐ„์„ ์žƒ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์š”์ฒญ์— request_id๋ฅผ ๋ถ€์—ฌํ•˜๊ณ (๋กœ๊ทธ, ํŠธ๋ ˆ์ด์Šค๊ฐ€ ์žˆ์œผ๋ฉด ํŠธ๋ ˆ์ด์Šค์—๋„), ์‘๋‹ต์— ์•ˆ์ „ํ•  ๋•Œ ํฌํ•จํ•˜์„ธ์š”.

๋…ธ์ด์ฆˆ๋ฅผ ์œ ๋ฐœํ•˜๋Š” ํ”ํ•œ ์›์ธ

์‹œ๋„๋Ÿฌ์šด ์‹œ์Šคํ…œ์€ ๋ณดํ†ต ๊ณตํ†ต ๋ฌธ์ œ๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค:

  • ํ•˜๋‚˜์˜ ์•Œ๋ฆผ์ด 4xx์™€ 5xx๋ฅผ ์„ž์–ด ํด๋ผ์ด์–ธํŠธ ์‹ค์ˆ˜์™€ ์„œ๋ฒ„ ์˜ค๋ฅ˜๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ๋ชปํ•จ
  • ๋ฉ”ํŠธ๋ฆญ์ด ํ‰๊ท ๋งŒ ์ถ”์ ํ•ด ๊ผฌ๋ฆฌ ์ง€์—ฐ(p95/p99)์„ ์ˆจ๊น€
  • ๋กœ๊ทธ์— ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ(๋น„๋ฐ€๋ฒˆํ˜ธ, ํ† ํฐ, ์ „์ฒด ์š”์ฒญ ๋ณธ๋ฌธ)๊ฐ€ ํฌํ•จ๋จ
  • ์•Œ๋ฆผ์ด ์ฆ์ƒ์—๋งŒ ๋ฐ˜์‘(์˜ˆ: CPU ๋†’์Œ)ํ•˜๊ณ  ์‚ฌ์šฉ์ž ์˜ํ–ฅ(์˜ค๋ฅ˜์œจ, ์ง€์—ฐ)์„ ๋ณด์ง€ ๋ชปํ•จ
  • ๋ฐฐํฌ๊ฐ€ ๋ณด์ด์ง€ ์•Š์•„ ํšŒ๊ท€๊ฐ€ ๋ฌด์ž‘์œ„ ์‹คํŒจ์ฒ˜๋Ÿผ ๋ณด์ž„

CRUD ์•ฑ์€ ํŠนํžˆ "ํ‰๊ท ์˜ ํ•จ์ •"์— ์ทจ์•ฝํ•ฉ๋‹ˆ๋‹ค. ๋‹จ ํ•˜๋‚˜์˜ ๋А๋ฆฐ ์ฟผ๋ฆฌ๊ฐ€ 5% ์š”์ฒญ์„ ๊ดด๋กญ๊ฒŒ ๋งŒ๋“œ๋Š” ๋™์•ˆ ํ‰๊ท ์€ ๊ดœ์ฐฎ์•„ ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผฌ๋ฆฌ ์ง€์—ฐ๊ณผ ์˜ค๋ฅ˜์œจ์„ ํ•จ๊ป˜ ๋ณด๋ฉด ๋” ๋ช…ํ™•ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฐํฌ ๋งˆ์ปค๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”. CI๋กœ ๋ฐฐํฌํ•˜๋“  AppMaster์ฒ˜๋Ÿผ ์ฝ”๋“œ๋ฅผ ์žฌ์ƒ์„ฑํ•˜๋“  ๋ฒ„์ „๊ณผ ๋ฐฐํฌ ์‹œ๊ฐ„์„ ์ด๋ฒคํŠธ์™€ ๋กœ๊ทธ์— ๊ธฐ๋กํ•˜์„ธ์š”.

๋น ๋ฅธ ์ ๊ฒ€: ์ตœ์†Œ ๊ด€์ธก ์ฒดํฌ๋ฆฌ์ŠคํŠธ

UI๋ฅผ ๋ฐฑ์—”๋“œ ์ƒํƒœ์™€ ์—ฐ๊ฒฐํ•˜๊ธฐ
๋ฐฑ์—”๋“œ์™€ ํ•จ๊ป˜ ์›นยท๋ชจ๋ฐ”์ผ ์•ฑ์„ ๋ฐฐํฌํ•ด ์‚ฌ์šฉ์ž ์˜ํ–ฅ ์‹ ํ˜ธ๊ฐ€ ์‹ค์ œ ํ™”๋ฉด๊ณผ ์—ฐ๊ฒฐ๋˜๊ฒŒ ํ•˜์„ธ์š”.
๋นŒ๋“œ ์‹œ์ž‘

์‚ฌ๊ฑด ์ค‘ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ 20๋ถ„ ๋’ค์ง€์ง€ ์•Š๊ณ  ๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ์— ๋น ๋ฅด๊ฒŒ ๋‹ตํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์„ค์ •์ด ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. "์˜ˆ/์•„๋‹ˆ์˜ค"๋กœ ๋น ๋ฅด๊ฒŒ ๋‹ตํ•˜์ง€ ๋ชปํ•˜๋ฉด ํ•ต์‹ฌ ์‹ ํ˜ธ๊ฐ€ ๋น ์กŒ๊ฑฐ๋‚˜ ๋ทฐ๊ฐ€ ํฉ์–ด์ ธ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‚ฌ๊ฑด ์ค‘ ๋น ๋ฅธ ์ ๊ฒ€ ํ•ญ๋ชฉ

๋‹ค์Œ ์ž‘์—… ๋Œ€๋ถ€๋ถ„์„ 1๋ถ„ ์ด๋‚ด์— ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

  • ๋‹จ์ผ ์˜ค๋ฅ˜ ๋ทฐ(5xx, ํƒ€์ž„์•„์›ƒ, ์‹คํŒจํ•œ ์ž‘์—…)์—์„œ ์ง€๊ธˆ ์‚ฌ์šฉ์ž๊ฐ€ ์‹คํŒจํ•˜๊ณ  ์žˆ๋Š”์ง€(์˜ˆ/์•„๋‹ˆ์˜ค) ์•Œ ์ˆ˜ ์žˆ๋Š”๊ฐ€?
  • ๊ฐ€์žฅ ๋А๋ฆฐ ์—”๋“œํฌ์ธํŠธ ๊ทธ๋ฃน๊ณผ ๊ทธ p95 ์ง€์—ฐ์„ ์ฐพ๊ณ  ์•…ํ™” ์ค‘์ธ์ง€ ๋ณผ ์ˆ˜ ์žˆ๋Š”๊ฐ€?
  • ์š”์ฒญ์— ๋Œ€ํ•ด ์•ฑ ์‹œ๊ฐ„๊ณผ DB ์‹œ๊ฐ„์„ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€(ํ•ธ๋“ค๋Ÿฌ ์‹œ๊ฐ„, DB ์ฟผ๋ฆฌ ์‹œ๊ฐ„, ์™ธ๋ถ€ ํ˜ธ์ถœ)?
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ปค๋„ฅ์…˜ ํ•œ๊ณ„ ๋˜๋Š” CPU ํ•œ๊ณ„์— ๊ทผ์ ‘ํ–ˆ๋Š”์ง€, ์ฟผ๋ฆฌ๊ฐ€ ๋Œ€๊ธฐ ์ค‘์ธ์ง€ ๋ณผ ์ˆ˜ ์žˆ๋Š”๊ฐ€?
  • ์•Œ๋ฆผ์ด ์šธ๋ ธ๋‹ค๋ฉด ๋‹ค์Œ ํ–‰๋™(๋กค๋ฐฑ, ์Šค์ผ€์ผ, DB ์ปค๋„ฅ์…˜ ํ™•์ธ, ํŠน์ • ์—”๋“œํฌ์ธํŠธ ๊ฒ€์‚ฌ)์„ ์ œ์•ˆํ•˜๋Š”๊ฐ€?

๋กœ๊ทธ๋Š” ์•ˆ์ „ํ•˜๋ฉด์„œ ์œ ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ์‹คํŒจ ์š”์ฒญ์„ ์„œ๋น„์Šค๋“ค ์ „๋ฐ˜์—์„œ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์„ ์ •๋„์˜ ์ปจํ…์ŠคํŠธ๋Š” ํ•„์š”ํ•˜์ง€๋งŒ ๊ฐœ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ถœํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

๋กœ๊ทธ ๊ฑด์ „์„ฑ ์ ๊ฒ€

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

AppMaster๋กœ CRUD ์ค‘์‹ฌ ๋ฐฑ์—”๋“œ๋ฅผ ๋นŒ๋“œํ•œ๋‹ค๋ฉด ์—๋Ÿฌ, ์—”๋“œํฌ์ธํŠธ๋ณ„ p95 ์ง€์—ฐ, DB ์ƒํƒœ๋ฅผ ๊ฒฐํ•ฉํ•œ ๋‹จ์ผ "์‚ฌ๊ฑด ๋ทฐ"๋ฅผ ๋ชฉํ‘œ๋กœ ํ•˜์„ธ์š”. ์ด๊ฒƒ๋งŒ์œผ๋กœ๋„ ๋น„์ฆˆ๋‹ˆ์Šค ์•ฑ์˜ ๋Œ€๋ถ€๋ถ„ ์‹ค์ œ ์žฅ์• ๋ฅผ ์ปค๋ฒ„ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ: ์˜ฌ๋ฐ”๋ฅธ ์‹ ํ˜ธ๋กœ ๋А๋ฆฐ CRUD ํ™”๋ฉด ์ง„๋‹จํ•˜๊ธฐ

๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋กœ๊ทธ ํ‘œ์ค€ํ™”ํ•˜๊ธฐ
์š”์ฒญ ID์™€ ๊ตฌ์กฐํ™”๋œ ํ•„๋“œ๋ฅผ ํ•œ ๋ฒˆ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ชจ๋“  ์ƒˆ ์„œ๋น„์Šค์—์„œ ์žฌ์‚ฌ์šฉํ•˜์„ธ์š”.
์‹œ์ž‘ํ•˜๊ธฐ

๋‚ด๋ถ€ ๊ด€๋ฆฌ์ž ํฌํ„ธ์ด ์˜ค์ „ ๋‚ด๋‚ด ๊ดœ์ฐฎ๋‹ค๊ฐ€ ๋ฐ”์œ ์‹œ๊ฐ„๋Œ€์— ํ˜„์ €ํžˆ ๋А๋ ค์ง‘๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” "์ฃผ๋ฌธ" ๋ชฉ๋ก์„ ์—ด๊ฑฐ๋‚˜ ํŽธ์ง‘์„ ์ €์žฅํ•  ๋•Œ 10~20์ดˆ๊ฐ€ ๊ฑธ๋ฆฐ๋‹ค๊ณ  ๋ถˆํ‰ํ•ฉ๋‹ˆ๋‹ค.

์ƒ์œ„ ์‹ ํ˜ธ๋ถ€ํ„ฐ ๋ด…๋‹ˆ๋‹ค. API ๋Œ€์‹œ๋ณด๋“œ๋Š” ์ฝ๊ธฐ ์—”๋“œํฌ์ธํŠธ์˜ p95๊ฐ€ ์•ฝ 300ms์—์„œ 4โ€“6s๋กœ ๋›ฐ์—ˆ์ง€๋งŒ ์˜ค๋ฅ˜์œจ์€ ๋‚ฎ๊ฒŒ ์œ ์ง€๋œ ๊ฒƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋™์‹œ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŒจ๋„์€ ํ™œ์„ฑ ์ปค๋„ฅ์…˜์ด ํ’€ ํ•œ๊ณ„์— ๊ทผ์ ‘ํ–ˆ๊ณ  ๋ฝ ๋Œ€๊ธฐ๊ฐ€ ์ฆ๊ฐ€ํ•œ ๊ฒƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ ๋…ธ๋“œ์˜ CPU๋Š” ์ •์ƒ์ด๋ผ ์ปดํ“จํŠธ ๋ฌธ์ œ์ฒ˜๋Ÿผ ๋ณด์ด์ง„ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์œผ๋กœ ๋А๋ฆฐ ์š”์ฒญ ํ•˜๋‚˜๋ฅผ ๊ณจ๋ผ ๋กœ๊ทธ๋ฅผ ๋”ฐ๋ผ๊ฐ‘๋‹ˆ๋‹ค. ์—”๋“œํฌ์ธํŠธ(GET /orders ์˜ˆ์‹œ)๋กœ ํ•„ํ„ฐ๋งํ•˜๊ณ  ์ง€์†์‹œ๊ฐ„๋ณ„ ์ •๋ ฌ์„ ํ•ฉ๋‹ˆ๋‹ค. 6์ดˆ์งœ๋ฆฌ ์š”์ฒญ์˜ request_id๋ฅผ ์žก์•„ ์„œ๋น„์Šค ์ „๋ฐ˜์—์„œ ๊ฒ€์ƒ‰ํ•˜๋ฉด ํ•ธ๋“ค๋Ÿฌ๋Š” ๋น ๋ฅด๊ฒŒ ๋๋‚ฌ์ง€๋งŒ ๋™์ผ request_id์˜ DB ์ฟผ๋ฆฌ ๋กœ๊ทธ๊ฐ€ 5.4์ดˆ๋ฅผ ๊ธฐ๋กํ•˜๊ณ  rows=50, ํฐ lock_wait_ms๋ฅผ ๋ณด์ด๋Š” ๊ฒƒ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ์›์ธ์„ ํ™•์‹ ์„ ๊ฐ–๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: ๋А๋ฆผ์€ ๋„คํŠธ์›Œํฌ๋‚˜ ๋ฐฑ์—”๋“œ CPU๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฒฝ๋กœ(๋А๋ฆฐ ์ฟผ๋ฆฌ ๋˜๋Š” ๋ฝ ๊ฒฝ์Ÿ)์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ตœ์†Œํ•œ์˜ ์„ค์ •์ด ์ œ๊ณตํ•˜๋Š” ๊ฐ€์น˜์ž…๋‹ˆ๋‹ค: ๋ฌธ์ œ๋ฅผ ํ›จ์”ฌ ๋น ๋ฅด๊ฒŒ ์ขํž ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ ์•ˆ์ „ํ•œ ์ˆ˜์ • ์ˆœ์„œ:

  • ๋ชฉ๋ก ํ™”๋ฉด์—์„œ ์‚ฌ์šฉํ•œ ํ•„ํ„ฐ/์ •๋ ฌ์— ๋งž์ถฐ ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์กฐ์ •ํ•˜์„ธ์š”.
  • ๊ด€๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์˜ ์ฟผ๋ฆฌ๋‚˜ ์กฐ์ธ์œผ๋กœ ๊ฐ€์ ธ์˜ค๋„๋ก N+1 ์ฟผ๋ฆฌ๋ฅผ ์ œ๊ฑฐํ•˜์„ธ์š”.
  • ๋ถ€ํ•˜ ์‹œ DB๊ฐ€ ๊ณ ๊ฐˆ๋˜์ง€ ์•Š๋„๋ก ์ปค๋„ฅ์…˜ ํ’€์„ ํŠœ๋‹ํ•˜์„ธ์š”.
  • ์ฝ๊ธฐ ์ค‘์‹ฌ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ๋งŒ ์•ˆ์ •์ ์ธ ์บ์‹œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋ฌดํšจํ™” ๊ทœ์น™์„ ๋ฌธ์„œํ™”ํ•˜์„ธ์š”.

๋‹ซ๋Š” ๋ฃจํ”„: ์—”๋“œํฌ์ธํŠธ ๊ทธ๋ฃน์˜ p95 ์ง€์—ฐ์ด ์ง€์ •ํ•œ ์ž„๊ณ„๊ฐ’ ์ด์ƒ์œผ๋กœ 10๋ถ„๊ฐ„ ์œ ์ง€๋˜๊ณ  DB ์ปค๋„ฅ์…˜ ์‚ฌ์šฉ๋Ÿ‰์ด (์˜ˆ: 80%) ์ด์ƒ์ผ ๋•Œ๋งŒ ํŽ˜์ด์ง€๋ฅผ ์šธ๋ฆฌ๋„๋ก ๊ฒฐํ•ฉ ๊ฒฝ๋ณด๋ฅผ ๋งŒ๋“œ์„ธ์š”. ์ด ์กฐํ•ฉ์€ ๋…ธ์ด์ฆˆ๋ฅผ ์ค„์ด๊ณ  ๋‹ค์Œ ๋ฒˆ์—๋Š” ๋” ๋นจ๋ฆฌ ์ด ๋ฌธ์ œ๋ฅผ ์žก๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„: ์ตœ์†Œํ•œ์œผ๋กœ ์œ ์ง€ํ•˜๋‹ค๊ฐ€ ์‹ค์ œ ์‚ฌ๊ณ ๋กœ ๊ฐœ์„ ํ•˜๊ธฐ

์ตœ์†Œ ๊ด€์ธก ๊ตฌ์„ฑ์€ ์ฒซ๋‚  ๋”ฐ๋ถ„ํ•˜๊ฒŒ ๋А๊ปด์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ๋งŽ์€ ๋Œ€์‹œ๋ณด๋“œ์™€ ์•Œ๋ฆผ์œผ๋กœ ์‹œ์ž‘ํ•˜๋ฉด ๊ณ„์† ํŠœ๋‹ํ•˜๋‹ค๊ฐ€๋„ ์‹ค์ œ ๋ฌธ์ œ๋ฅผ ๋†“์นฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ์‚ฌ๊ณ ๋ฅผ ํ”ผ๋“œ๋ฐฑ์œผ๋กœ ์ทจ๊ธ‰ํ•˜์„ธ์š”. ์ˆ˜์ •์ด ๋ฐฐํฌ๋œ ํ›„: ๋ฌด์—‡์ด ์žˆ์—ˆ์œผ๋ฉด ๋” ๋นจ๋ฆฌ ๋ฐœ๊ฒฌํ•˜๊ณ  ์ง„๋‹จํ•  ์ˆ˜ ์žˆ์—ˆ์„๊นŒ? ๊ทธ ํ•ญ๋ชฉ๋งŒ ์ถ”๊ฐ€ํ•˜์„ธ์š”.

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

์ž‘์€ ๋ฐฐํฌ ๊ทœ์œจ์ด ๋น ๋ฅธ ์„ฑ๊ณผ๋ฅผ ์ค๋‹ˆ๋‹ค:

  • ๋ฐฐํฌ ๋งˆ์ปค(version, environment, commit/build ID)๋ฅผ ์ถ”๊ฐ€ํ•ด ๋ฌธ์ œ๊ฐ€ ๋ฐฐํฌ ํ›„ ์‹œ์ž‘๋๋Š”์ง€ ๋ณด์„ธ์š”.
  • ์ƒ์œ„ 3๊ฐœ ๊ฒฝ๋ณด์— ๋Œ€ํ•œ ์ž‘์€ ๋Ÿฐ๋ถ์„ ์ž‘์„ฑํ•˜์„ธ์š”: ์˜๋ฏธ, ์ฒซ ํ™•์ธ ํ•ญ๋ชฉ, ๋‹ด๋‹น์ž.
  • ๊ฐ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ํ•„์ˆ˜ ํ•ญ๋ชฉ์ด ๋‹ด๊ธด ๋‹จ์ผ "๊ณจ๋“ " ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์œ ์ง€ํ•˜์„ธ์š”.

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

ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ๊ฐœ์„ ๋งŒ ์„ ํƒํ•˜์„ธ์š”. ์‹ค์ œ๋กœ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚จ ๊ฒƒ์— ๊ธฐ๋ฐ˜ํ•ด ๋‹ค์Œ ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”:

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

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

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

CRUD ์ค‘์‹ฌ ์•ฑ์— ์–ธ์ œ ๊ด€์ธก์„ ๋„์ž…ํ•ด์•ผ ํ•˜๋‚˜์š”?

ํ”„๋กœ๋•์…˜ ๋ฌธ์ œ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ๋ฌธ์ œ๋ฅผ ๊ณ ์น˜๋Š” ์‹œ๊ฐ„๋ณด๋‹ค ๊ธธ์–ด์งˆ ๋•Œ ๊ด€์ธก์„ ์‹œ์ž‘ํ•˜์„ธ์š”. โ€œ๋ฌด์ž‘์œ„ 500โ€, ๋А๋ฆฐ ๋ชฉ๋ก ํŽ˜์ด์ง€, ์žฌํ˜„๋˜์ง€ ์•Š๋Š” ํƒ€์ž„์•„์›ƒ์ด ๋ณด์ธ๋‹ค๋ฉด, ์ผ๊ด€๋œ ์†Œ๋Ÿ‰์˜ ๋กœ๊ทธยท๋ฉ”ํŠธ๋ฆญยท์•Œ๋ฆผ์œผ๋กœ ์ถ”์ธก์— ๋“œ๋Š” ์‹œ๊ฐ„์„ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค๋ฌด์—์„œ ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ์˜ค๋ธŒ์ €๋ฒ„๋นŒ๋ฆฌํ‹ฐ์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

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

์‹ค์ œ๋กœ ํšจ๊ณผ๊ฐ€ ์žˆ๋Š” ๊ฐ€์žฅ ์ตœ์†Œํ•œ์˜ ๊ด€์ธก ๊ตฌ์„ฑ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

๊ตฌ์กฐํ™”๋œ ์š”์ฒญ ๋กœ๊ทธ, ๋ช‡ ๊ฐ€์ง€ ํ•ต์‹ฌ ๋ฉ”ํŠธ๋ฆญ, ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ์ž ์˜ํ–ฅ ๊ธฐ๋ฐ˜์˜ ์†Œ์ˆ˜ ๊ฒฝ๋ณด๋กœ ์‹œ์ž‘ํ•˜์„ธ์š”. ๋งŽ์€ CRUD ์•ฑ์€ duration_ms, db_time_ms(๋˜๋Š” ์œ ์‚ฌ ์ง€ํ‘œ)์™€ ์ „์—ญ request_id๋ฅผ ์ด๋ฏธ ๋กœ๊น…ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ํŠธ๋ ˆ์ด์‹ฑ ์—†์ด๋„ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ๊ฑด ๋ฐœ์ƒ ์‹œ ๋กœ๊ทธ๊ฐ€ ์œ ์šฉํ•˜๋„๋ก ์ƒ๊ด€ ID๋Š” ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•˜๋‚˜์š”?

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

CRUD API์šฉ ๊ตฌ์กฐํ™”๋œ ๋กœ๊ทธ์— ๋ฌด์—‡์„ ํฌํ•จํ•ด์•ผ ํ•˜๋‚˜์š”?

๋กœ๊ทธ์— timestamp, level, service, env, route, method, status, duration_ms์™€ tenant_id ๊ฐ™์€ ์•ˆ์ „ํ•œ ์‹๋ณ„์ž๋ฅผ ๋‚จ๊ธฐ์„ธ์š”. ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐœ์ธ ๋ฐ์ดํ„ฐ, ํ† ํฐ, ์ „์ฒด ์š”์ฒญ ๋ณธ๋ฌธ์€ ๊ธฐ๋กํ•˜์ง€ ๋งˆ์„ธ์š”. ๋ณด๋‹ค ์ƒ์„ธํ•œ ์ •๋ณด๋Š” ํŠน์ • ์˜ค๋ฅ˜์— ๋Œ€ํ•ด ํ•„์š”ํ•  ๋•Œ๋งŒ ๋งˆ์Šคํ‚น/๋ถ€๋ถ„ ๋กœ๊ทธ๋กœ ๋‚จ๊ธฐ์„ธ์š”.

CRUD ๋ฐฑ์—”๋“œ์™€ API ์„œ๋น„์Šค์— ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ฉ”ํŠธ๋ฆญ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

์š”์ฒญ๋ฅ , 5xx ๋น„์œจ, ์ง€์—ฐ ํผ์„ผํƒ€์ผ(์ตœ์†Œ p50 ๋ฐ p95), CPU/๋ฉ”๋ชจ๋ฆฌ ๋“ฑ ํฌํ™”๋„ ์ง€ํ‘œ์™€ DB ์‹œ๊ฐ„ ๋ฐ ์ปค๋„ฅ์…˜ ํ’€ ์‚ฌ์šฉ๋Ÿ‰์„ ์กฐ๊ธฐ์— ์ถ”๊ฐ€ํ•˜์„ธ์š”. ๋งŽ์€ CRUD ์žฅ์• ๊ฐ€ DB ๊ฒฝ์Ÿ์ด๋‚˜ ํ’€ ๊ณ ๊ฐˆ์—์„œ ์˜ต๋‹ˆ๋‹ค.

์™œ ํ‰๊ท  ์ง€์—ฐ์ด ์•„๋‹Œ p95/p99 ์ง€์—ฐ์„ ๊ฐ•์กฐํ•˜๋‚˜์š”?

ํ‰๊ท ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋А๋ผ๋Š” ๋А๋ฆฐ ๊ผฌ๋ฆฌ๋ฅผ ์ˆจ๊น๋‹ˆ๋‹ค. p95/p99๋Š” ์†Œ์ˆ˜์˜ ์š”์ฒญ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์‹ฌ๊ฐํ•œ ์ง€์—ฐ์„ ํฌ์ฐฉํ•˜๋ฏ€๋กœ ๋ฌธ์ œ ํƒ์ง€์— ํ›จ์”ฌ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

CRUD ์•ฑ์—์„œ PostgreSQL์˜ ์šฐ์„  ์ธก์ • ๋Œ€์ƒ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

์ฒซ์งธ๋กœ ๋А๋ฆฐ ์ฟผ๋ฆฌ ๋น„์œจ๊ณผ p95/p99 ์ฟผ๋ฆฌ ์‹œ๊ฐ„(์ƒ์œ„ ๋А๋ฆฐ ์ฟผ๋ฆฌ ํฌํ•จ), ๋‘˜์งธ๋กœ ๋ฝ ๋Œ€๊ธฐ ๋ฐ ๋ฐ๋“œ๋ฝ, ์…‹์งธ๋กœ ์ปค๋„ฅ์…˜ ์‚ฌ์šฉ๋Ÿ‰(ํ™œ์„ฑ ์ปค๋„ฅ์…˜ vs ํ’€ ํ•œ๊ณ„)๊ณผ ๊ฐ™์€ ์ง€ํ‘œ๋ฅผ ์šฐ์„  ๋ณด์„ธ์š”. ์ด๋“ค์ด ๋Œ€๋ถ€๋ถ„์˜ DB ๋ณ‘๋ชฉ ์›์ธ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์•Œ๋ฆผ ํ”ผ๋กœ๋ฅผ ํ”ผํ•˜๋ ค๋ฉด ์–ด๋–ค ์•Œ๋ฆผ์„ ๋จผ์ € ์„ค์ •ํ•ด์•ผ ํ•˜๋‚˜์š”?

์‚ฌ์šฉ์ž ์˜ํ–ฅ์— ์ดˆ์ ์„ ๋งž์ถ˜ ๊ฒฝ๋ณด๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์„ธ์š”: ์ง€์†์ ์ธ 5xx ์ฆ๊ฐ€, ์ง€์†์ ์ธ p95 ์ง€์—ฐ ์ฆ๊ฐ€, ์„ฑ๊ณต ์š”์ฒญ์˜ ๊ธ‰๊ฒฉํ•œ ๊ฐ์†Œ ๊ฐ™์€ ๊ฒƒ๋“ค์ž…๋‹ˆ๋‹ค. ์›์ธ ๊ธฐ๋ฐ˜ ๊ฒฝ๋ณด(DB ์ปค๋„ฅ์…˜ ํ•œ๊ณ„ ๋“ฑ)๋Š” ๊ทธ ๋‹ค์Œ์— ์ถ”๊ฐ€ํ•˜์„ธ์š”.

์ƒ์„ฑ๋œ ๋ฐฑ์—”๋“œ(์˜ˆ: AppMaster)์—์„œ ์‚ฌ๊ฑด์„ ๋ฐฐํฌ์™€ ์—ฐ๊ด€์ง“๋Š” ๋ฐฉ๋ฒ•์€?

๋กœ๊ทธ, ๋Œ€์‹œ๋ณด๋“œ, ์•Œ๋ฆผ์— ๋ฒ„์ „/๋นŒ๋“œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋ถ™์ด๊ณ  ๋ฐฐํฌ ๋งˆ์ปค๋ฅผ ๊ธฐ๋กํ•˜์„ธ์š”. ํŠนํžˆ AppMaster๋กœ ์ƒ์„ฑ๋œ ๋ฐฑ์—”๋“œ์ฒ˜๋Ÿผ ์ฝ”๋“œ ์žฌ์ƒ์„ฑยท๋ฐฐํฌ๊ฐ€ ์žฆ์€ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ฐฐํฌ ์งํ›„ ํšŒ๊ท€๊ฐ€ ์žˆ์—ˆ๋Š”์ง€ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

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

์‹œ์ž‘ํ•˜๋‹ค
CRUD ์ค‘์‹ฌ ๋ฐฑ์—”๋“œ์™€ API๋ฅผ ์œ„ํ•œ ์ตœ์†Œ ๊ด€์ธก ์„ค์ • | AppMaster