2024๋…„ 12์›” 15์ผยท5๋ถ„ ์ฝ๊ธฐ

์•ˆ์ „ํ•œ ์ฒญ๊ตฌ ์—…๋ฐ์ดํŠธ๋ฅผ ์œ„ํ•œ ๋ฉฑ๋“ฑ์„ฑ ๊ฒฐ์ œ ์›นํ›… ์ฒดํฌ๋ฆฌ์ŠคํŠธ

์ด ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋Š” ์ด๋ฒคํŠธ ์ค‘๋ณต ์ œ๊ฑฐ, ์žฌ์‹œ๋„ ์ฒ˜๋ฆฌ, ์ธ๋ณด์ด์Šคยท๊ตฌ๋…ยท๊ถŒํ•œ์„ ์•ˆ์ „ํ•˜๊ฒŒ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.

์•ˆ์ „ํ•œ ์ฒญ๊ตฌ ์—…๋ฐ์ดํŠธ๋ฅผ ์œ„ํ•œ ๋ฉฑ๋“ฑ์„ฑ ๊ฒฐ์ œ ์›นํ›… ์ฒดํฌ๋ฆฌ์ŠคํŠธ

๊ฒฐ์ œ ์›นํ›…์ด ์ค‘๋ณต ์—…๋ฐ์ดํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ์ด์œ 

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

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

ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ๋ฉฑ๋“ฑ์„ฑ์ด ์—†๋‹ค๋ฉด ๊ฐ™์€ ์ด๋ฒคํŠธ๋ฅผ ๋‘ ๋ฒˆ ์ ์šฉํ•ด ๊ณ ๊ฐ๊ณผ ์žฌ๋ฌดํŒ€์ด ๋ฐ”๋กœ ์•Œ์•„์ฐจ๋ฆฌ๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค:

  • ์ธ๋ณด์ด์Šค๊ฐ€ ๋‘ ๋ฒˆ ๊ฒฐ์ œ๋จ์œผ๋กœ ํ‘œ์‹œ๋˜์–ด ์ค‘๋ณต ํšŒ๊ณ„ ํ•ญ๋ชฉ ๋ฐœ์ƒ
  • ๊ฐฑ์‹ ์ด ๋‘ ๋ฒˆ ์ ์šฉ๋˜์–ด ์ ‘๊ทผ ๊ธฐ๊ฐ„์ด ๊ณผ๋„ํ•˜๊ฒŒ ์—ฐ์žฅ๋จ
  • ๊ถŒํ•œ(์ถ”๊ฐ€ ํฌ๋ ˆ๋”ง, ์ขŒ์„, ๊ธฐ๋Šฅ)์ด ๋‘ ๋ฒˆ ๋ถ€์—ฌ๋จ
  • ํ™˜๋ถˆ์ด๋‚˜ ์ฐจ์ง€๋ฐฑ์ด ์ ‘๊ทผ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋˜๋Œ๋ฆฌ์ง€ ๋ชปํ•จ

์ด๊ฑด ๋‹จ์ˆœํ•œ โ€œ๋ชจ๋ฒ” ์‚ฌ๋ก€โ€ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ฒญ๊ตฌ์ธ์ง€, ๋ฌธ์˜ ํ‹ฐ์ผ“์„ ๋งŒ๋“œ๋Š” ์ฒญ๊ตฌ์ธ์ง€์˜ ์ฐจ์ด์ž…๋‹ˆ๋‹ค.

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

์›นํ›…์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉฑ๋“ฑ์„ฑ ๊ธฐ๋ณธ ์›์น™

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

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

์ด๊ฒƒ์„ ์ž‘๋™์‹œํ‚ค๋ ค๋ฉด ๋‘ ๊ฐ€์ง€๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค: ์•ˆ์ •์ ์ธ ์‹๋ณ„์ž์™€ ์ด๋ฏธ ๋ณธ ๊ฒƒ์„ ๊ธฐ์–ตํ•  ์ž‘์€ "๋ฉ”๋ชจ๋ฆฌ"์ž…๋‹ˆ๋‹ค.

์–ด๋–ค ID๋ฅผ ์ €์žฅํ•ด์•ผ ํ•˜๋‚˜(๊ทธ๋ฆฌ๊ณ  ๋ฌด์—‡์„ ๋ณด๊ด€ํ• ์ง€)

๋Œ€๋ถ€๋ถ„์˜ ๊ฒฐ์ œ ํ”Œ๋žซํผ์€ ์›นํ›… ์ด๋ฒคํŠธ์— ๊ณ ์œ ํ•œ ์ด๋ฒคํŠธ ID๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€๋Š” ์š”์ฒญ ID, ๋ฉฑ๋“ฑ์„ฑ ํ‚ค ๋˜๋Š” ํŽ˜์ด๋จผํŠธ ๊ฐ์ฒด ID(์˜ˆ: charge ๋˜๋Š” payment intent) ๊ฐ™์€ ๊ณ ์œ  ์‹๋ณ„์ž๋ฅผ ํŽ˜์ด๋กœ๋“œ ์•ˆ์— ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์งˆ๋ฌธ์— ๋‹ตํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ €์žฅํ•˜์„ธ์š”: โ€œ์ด ์ •ํ™•ํ•œ ์ด๋ฒคํŠธ๋ฅผ ์ด๋ฏธ ์ ์šฉํ–ˆ๋‚˜?โ€

์‹ค๋ฌด์  ์ตœ์†Œ ํ•ญ๋ชฉ:

  • ์ด๋ฒคํŠธ ID(๊ณ ์œ  ํ‚ค)
  • ์ด๋ฒคํŠธ ํƒ€์ž…(๋””๋ฒ„๊น…์— ์œ ์šฉ)
  • ์ˆ˜์‹  ํƒ€์ž„์Šคํƒฌํ”„
  • ์ฒ˜๋ฆฌ ์ƒํƒœ(์ฒ˜๋ฆฌ๋จ/์‹คํŒจ)
  • ์˜ํ–ฅ์„ ๋ฐ›์€ ๊ณ ๊ฐ, ์ธ๋ณด์ด์Šค ๋˜๋Š” ๊ตฌ๋…์— ๋Œ€ํ•œ ์ฐธ์กฐ

ํ•ต์‹ฌ์€ ์ด๋ฒคํŠธ ID๋ฅผ ๊ณ ์œ  ์ œ์•ฝ์ด ์žˆ๋Š” ํ…Œ์ด๋ธ”์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ•ธ๋“ค๋Ÿฌ๋Š” ์•ˆ์ „ํ•˜๊ฒŒ ์ด๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: ๋จผ์ € ์ด๋ฒคํŠธ ID๋ฅผ ์‚ฝ์ž…ํ•˜์„ธ์š”; ์ด๋ฏธ ์กด์žฌํ•˜๋ฉด ์ค‘๋ณต์œผ๋กœ ๋ณด๊ณ  ์ค‘์ง€ํ•˜๊ณ  200์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ค‘๋ณต ๊ธฐ๋ก์€ ์–ผ๋งˆ๋‚˜ ์˜ค๋ž˜ ๋ณด๊ด€ํ•ด์•ผ ํ•˜๋‚˜

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

AppMaster ๊ฐ™์€ ์ƒ์„ฑ๋œ ๋ฐฑ์—”๋“œ์—์„œ๋Š” ์ด ๊ฒƒ์ด WebhookEvents ๋ชจ๋ธ์— ์ด๋ฒคํŠธ ID์— ๋Œ€ํ•œ ์œ ๋‹ˆํฌ ํ•„๋“œ๋ฅผ ๋‘๊ณ , ์ค‘๋ณต์ด ๊ฐ์ง€๋˜๋ฉด ์กฐ๊ธฐ ์ข…๋ฃŒํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค๋กœ ๊น”๋”ํ•˜๊ฒŒ ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ ์ค‘๋ณต ์ œ๊ฑฐ๋ฅผ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ์„ค๊ณ„

์ข‹์€ ์›นํ›… ํ•ธ๋“ค๋Ÿฌ๋Š” ๋Œ€๋ถ€๋ถ„ ๋ฐ์ดํ„ฐ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ œ๊ณต์ž ์ด๋ฒคํŠธ๋ฅผ ์ •ํ™•ํžˆ ํ•œ ๋ฒˆ์”ฉ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ทธ ๋‹ค์Œ์˜ ๋ชจ๋“  ์ฒ˜๋ฆฌ๊ฐ€ ๋” ์•ˆ์ „ํ•ด์ง‘๋‹ˆ๋‹ค.

์˜์ˆ˜์ฆ ๋กœ๊ทธ์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋Š” ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”๋กœ ์‹œ์ž‘ํ•˜์„ธ์š”. PostgreSQL(๋˜๋Š” AppMaster์˜ Data Designer์— ๋ชจ๋ธ๋งํ•  ๋•Œ)์—์„œ๋Š” ์ž‘๊ณ  ์—„๊ฒฉํ•˜๊ฒŒ ์œ ์ง€ํ•ด ์ค‘๋ณต์ด ๋น ๋ฅด๊ฒŒ ์‹คํŒจํ•˜๋„๋ก ํ•˜์„ธ์š”.

์ตœ์†Œ๋กœ ํ•„์š”ํ•œ ํ•ญ๋ชฉ

์‹ค๋ฌด์ ์ธ ๊ธฐ์ค€์˜ webhook_events ํ…Œ์ด๋ธ” ์˜ˆ:

  • provider (ํ…์ŠคํŠธ, ์˜ˆ: "stripe")
  • provider_event_id (ํ…์ŠคํŠธ, ํ•„์ˆ˜)
  • status (ํ…์ŠคํŠธ, ์˜ˆ: "received", "processed", "failed")
  • processed_at (ํƒ€์ž„์Šคํƒฌํ”„, nullable)
  • raw_payload (jsonb ๋˜๋Š” text)

(provider, provider_event_id)์— ์œ ๋‹ˆํฌ ์ œ์•ฝ์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”. ์ด ๋‹จ์ผ ๊ทœ์น™์ด ์ฃผ์š”ํ•œ ์ค‘๋ณต ๋ฐฉ์ง€ ์ˆ˜๋‹จ์ž…๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธํ•  ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ID๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์›นํ›… ์ด๋ฒคํŠธ ID์™€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ customer_id, invoice_id, subscription_id ๊ฐ™์€ ๊ฐ’๋“ค์„ ํ…์ŠคํŠธ๋กœ ๋ณด๊ด€ํ•˜์„ธ์š”. ์ œ๊ณต์ž๋“ค์ด ์ข…์ข… ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ID๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์›์‹œ ํŽ˜์ด๋กœ๋“œ vs ํŒŒ์‹ฑ๋œ ํ•„๋“œ

์›์‹œ ํŽ˜์ด๋กœ๋“œ๋ฅผ ์ €์žฅํ•˜๋ฉด ๋””๋ฒ„๊น…๊ณผ ์žฌ์ฒ˜๋ฆฌ ์‹œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์‹ฑ๋œ ํ•„๋“œ๋Š” ์ฟผ๋ฆฌ์™€ ๋ฆฌํฌํŒ…์„ ์‰ฝ๊ฒŒ ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋งŒ ์ €์žฅํ•˜์„ธ์š”.

๊ฐ„๋‹จํ•œ ์ ‘๊ทผ๋ฒ•:

  • ํ•ญ์ƒ raw_payload๋ฅผ ์ €์žฅํ•˜์„ธ์š”
  • ์ž์ฃผ ์กฐํšŒํ•˜๋Š” ๋ช‡๋ช‡ ํŒŒ์‹ฑ๋œ ID(๊ณ ๊ฐ, ์ธ๋ณด์ด์Šค, ๊ตฌ๋…)๋„ ์ €์žฅํ•˜์„ธ์š”
  • ํ•„ํ„ฐ๋ง์„ ์œ„ํ•œ ์ •๊ทœํ™”๋œ event_type(ํ…์ŠคํŠธ)์„ ์ €์žฅํ•˜์„ธ์š”

์˜ˆ๋ฅผ ๋“ค์–ด invoice.paid ์ด๋ฒคํŠธ๊ฐ€ ๋‘ ๋ฒˆ ๋„์ฐฉํ•˜๋ฉด ์œ ๋‹ˆํฌ ์ œ์•ฝ์ด ๋‘ ๋ฒˆ์งธ ์‚ฝ์ž…์„ ๋ง‰์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ์šฉ์œผ๋กœ ์›์‹œ ํŽ˜์ด๋กœ๋“œ๊ฐ€ ๋‚จ์•„ ์žˆ๊ณ , ํŒŒ์‹ฑ๋œ ์ธ๋ณด์ด์Šค ID๋กœ ์ฒซ ๋ฒˆ์งธ ์—…๋ฐ์ดํŠธ ์‹œ์ ์„ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ๊ณ„๋ณ„: ์•ˆ์ „ํ•œ ์›นํ›… ํ•ธ๋“ค๋Ÿฌ ํ”Œ๋กœ์šฐ

์•ˆ์ „ํ•œ ํ•ธ๋“ค๋Ÿฌ๋Š” ์ผ๋ถ€๋Ÿฌ ์ง€๋ฃจํ•ฉ๋‹ˆ๋‹ค. ์ œ๊ณต์ž๊ฐ€ ๊ฐ™์€ ์ด๋ฒคํŠธ๋ฅผ ์žฌ์‹œ๋„ํ•˜๊ฑฐ๋‚˜ ์ด๋ฒคํŠธ๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์˜ค์ง€ ์•Š์•„๋„ ํ•ญ์ƒ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๋งค๋ฒˆ ๋”ฐ๋ผ์•ผ ํ•  5๋‹จ๊ณ„ ํ”Œ๋กœ์šฐ

  1. ์„œ๋ช…์„ ๊ฒ€์ฆํ•˜๊ณ  ํŽ˜์ด๋กœ๋“œ๋ฅผ ํŒŒ์‹ฑํ•˜์„ธ์š”. ์„œ๋ช… ์ฒดํฌ์— ์‹คํŒจํ•˜๊ฑฐ๋‚˜, ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ด๋ฒคํŠธ ํƒ€์ž…์ด๊ฑฐ๋‚˜, ํŒŒ์‹ฑํ•  ์ˆ˜ ์—†์œผ๋ฉด ์š”์ฒญ์„ ๊ฑฐ๋ถ€ํ•˜์„ธ์š”.

  2. ์ฒญ๊ตฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฑด๋“œ๋ฆฌ๊ธฐ ์ „์— ์ด๋ฒคํŠธ ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ธฐ๋กํ•˜์„ธ์š”. ์ œ๊ณต์ž ์ด๋ฒคํŠธ ID, ํƒ€์ž…, ์ƒ์„ฑ ์‹œ๊ฐ, ์›์‹œ ํŽ˜์ด๋กœ๋“œ(๋˜๋Š” ํ•ด์‹œ)๋ฅผ ์ €์žฅํ•˜์„ธ์š”. ์ด๋ฒคํŠธ ID๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•˜๋ฉด ์ค‘๋ณต์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ค‘๋‹จํ•˜์„ธ์š”.

  3. ์ด๋ฒคํŠธ๋ฅผ ๋‹จ์ผ โ€œ์†Œ์œ ์žโ€ ๋ ˆ์ฝ”๋“œ์— ๋งคํ•‘ํ•˜์„ธ์š”. ๋ฌด์—‡์„ ์—…๋ฐ์ดํŠธํ• ์ง€ ๊ฒฐ์ •ํ•˜์„ธ์š”: ์ธ๋ณด์ด์Šค, ๊ตฌ๋…, ๋˜๋Š” ๊ณ ๊ฐ. ์™ธ๋ถ€ ID๋ฅผ ๋ ˆ์ฝ”๋“œ์— ์ €์žฅํ•ด ์ง์ ‘ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์„ธ์š”.

  4. ์•ˆ์ „ํ•œ ์ƒํƒœ ๋ณ€๊ฒฝ์„ ์ ์šฉํ•˜์„ธ์š”. ์ƒํƒœ๋Š” ํ•ญ์ƒ ์•ž์œผ๋กœ๋งŒ ์ด๋™์‹œํ‚ค์„ธ์š”. ๋Šฆ๊ฒŒ ๋„์ฐฉํ•œ "invoice.updated"๋กœ ์ด๋ฏธ ๊ฒฐ์ œ๋œ ์ธ๋ณด์ด์Šค๋ฅผ ๋˜๋Œ๋ฆฌ์ง€ ๋งˆ์„ธ์š”. ์ ์šฉํ•œ ๋‚ด์šฉ(์ด์ „ ์ƒํƒœ, ์ƒˆ ์ƒํƒœ, ํƒ€์ž„์Šคํƒฌํ”„, ์ด๋ฒคํŠธ ID)์„ ๊ฐ์‚ฌ์šฉ์œผ๋กœ ๊ธฐ๋กํ•˜์„ธ์š”.

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

AppMaster์—์„œ๋Š” ๋ณดํ†ต ์›นํ›… ์ด๋ฒคํŠธ์šฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”๊ณผ "์ด๋ฒคํŠธ ID๋ฅผ ์ด๋ฏธ ๋ณด์•˜๋Š”๊ฐ€?"๋ฅผ ํ™•์ธํ•œ ๋’ค ์ตœ์†Œํ•œ์˜ ์—…๋ฐ์ดํŠธ ๋‹จ๊ณ„๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค๋กœ ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค.

์žฌ์‹œ๋„, ํƒ€์ž„์•„์›ƒ, ์ˆœ์„œ๊ฐ€ ๋’ค๋ฐ”๋€ ์ „๋‹ฌ ์ฒ˜๋ฆฌ

์ค‘๋ณต ์ ‘๊ทผ ๋ถ€์—ฌ ๋ฐฉ์ง€ํ•˜๊ธฐ
๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ๋กœ์ง์œผ๋กœ ์ธ๋ณด์ด์Šค, ๊ตฌ๋…, ๊ถŒํ•œ ์—…๋ฐ์ดํŠธ๋ฅผ ๋™๊ธฐํ™”ํ•˜์„ธ์š”.
AppMaster ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

์ œ๊ณต์ž๋Š” ๋น ๋ฅธ ์„ฑ๊ณต ์‘๋‹ต์„ ๋ฐ›์ง€ ๋ชปํ•˜๋ฉด ์›นํ›…์„ ์žฌ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด๋ฒคํŠธ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋ณด๋‚ด์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋‘ ๋ฒˆ ๋„์ฐฉํ•˜๊ฑฐ๋‚˜ ๋‚˜์ค‘ ์ด๋ฒคํŠธ๊ฐ€ ๋จผ์ € ๋„์ฐฉํ•ด๋„ ํ•ธ๋“ค๋Ÿฌ๋Š” ์•ˆ์ „ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

์ˆœ์„œ๊ฐ€ ๋’ค๋ฐ”๋€Œ์—ˆ์„ ๋•Œ: ์ตœ์‹  ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์„ธ์š”

์ˆœ์„œ๊ฐ€ ๋’ค๋ฐ”๋€Œ๋Š” ๊ฒƒ์€ ์ •์ƒ์ž…๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ์„ ์ ์šฉํ•˜๊ธฐ ์ „์— ๋‘ ๊ฐ€์ง€ ๊ฒ€์‚ฌ๋ฅผ ํ•˜์„ธ์š”:

  • ํƒ€์ž„์Šคํƒฌํ”„ ๋น„๊ต: ๊ฐ์ฒด(์ธ๋ณด์ด์Šค, ๊ตฌ๋…, ๊ถŒํ•œ)์— ๋Œ€ํ•ด ์ด๋ฏธ ์ €์žฅ๋œ ๊ฒƒ๋ณด๋‹ค ์ตœ์‹ ์ธ ๊ฒฝ์šฐ๋งŒ ์ ์šฉํ•˜์„ธ์š”.
  • ํƒ€์ž„์Šคํƒฌํ”„๊ฐ€ ๊ทผ์ ‘ํ•˜๊ฑฐ๋‚˜ ๋ถˆ๋ช…ํ™•ํ•  ๋•Œ๋Š” ์ƒํƒœ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”: paid๋Š” open์„ ๋ฎ๊ณ , canceled๋Š” active๋ฅผ ๋ฎ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ ์ธ๋ณด์ด์Šค๋ฅผ ๊ฒฐ์ œ๋กœ ๊ธฐ๋กํ•ด๋‘๊ณ  ๋Šฆ๊ฒŒ "open" ์ด๋ฒคํŠธ๊ฐ€ ๋„์ฐฉํ•˜๋ฉด ๋ฌด์‹œํ•˜์„ธ์š”. "canceled"๋ฅผ ๋ฐ›์•˜๋Š”๋ฐ ์ดํ›„ ๋” ์˜ค๋ž˜๋œ "active" ์—…๋ฐ์ดํŠธ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋ฉด ์ทจ์†Œ๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์„ธ์š”.

๋ฌด์‹œ vs ํ์ž‰

์˜ค๋ž˜๋˜์—ˆ๊ฑฐ๋‚˜ ์ด๋ฏธ ์ ์šฉ๋˜์—ˆ์Œ์„ ์ฆ๋ช…ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ด๋ฒคํŠธ๋ฅผ ๋ฌด์‹œํ•˜์„ธ์š”(๊ฐ™์€ ์ด๋ฒคํŠธ ID, ๋” ์˜ค๋ž˜๋œ ํƒ€์ž„์Šคํƒฌํ”„, ๋‚ฎ์€ ์ƒํƒœ ์šฐ์„ ์ˆœ์œ„). ๋ฐ˜๋Œ€๋กœ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„์ง ์—†์–ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ(์˜ˆ: ๊ณ ๊ฐ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์•„์ง ์—†์Œ) ์ด๋ฒคํŠธ๋ฅผ ํ์— ๋„ฃ์œผ์„ธ์š”.

์‹ค๋ฌด ํŒจํ„ด:

  • ์ด๋ฒคํŠธ๋ฅผ ์ฆ‰์‹œ ์ €์žฅํ•˜๊ณ  ์ฒ˜๋ฆฌ ์ƒํƒœ(received, processing, done, failed)๋ฅผ ๋‘์„ธ์š”
  • ์ข…์† ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด waiting์œผ๋กœ ํ‘œ์‹œํ•˜๊ณ  ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์žฌ์‹œ๋„ํ•˜์„ธ์š”
  • ์žฌ์‹œ๋„ ์ œํ•œ์„ ๋‘๊ณ  ๋ฐ˜๋ณต ์‹คํŒจ ์‹œ ์•Œ๋ฆผ์„ ์„ค์ •ํ•˜์„ธ์š”

AppMaster์—์„œ๋Š” ์›นํ›… ์ด๋ฒคํŠธ ํ…Œ์ด๋ธ”๊ณผ ์š”์ฒญ์„ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•˜๊ณ  ํ์— ๋„ฃ์€ ์ด๋ฒคํŠธ๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž˜ ๋งž์Šต๋‹ˆ๋‹ค.

์ธ๋ณด์ด์Šค, ๊ตฌ๋…, ๊ถŒํ•œ์„ ์•ˆ์ „ํ•˜๊ฒŒ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ

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

์ธ๋ณด์ด์Šค: ์ƒํƒœ ๋ณ€๊ฒฝ์„ ๋‹จ์กฐ๋กญ๊ฒŒ(๋ชจ๋…ธํ† ๋‹‰) ์œ ์ง€ํ•˜์„ธ์š”

์ธ๋ณด์ด์Šค๋Š” paid, voided, refunded ๊ฐ™์€ ์ƒํƒœ๋ฅผ ๊ฑฐ์นฉ๋‹ˆ๋‹ค. ๋ถ€๋ถ„ ๊ฒฐ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์ด๋ฒคํŠธ๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋„์ฐฉํ–ˆ๋Š”์ง€์— ๋”ฐ๋ผ ์ธ๋ณด์ด์Šค๋ฅผ ํ† ๊ธ€ํ•˜์ง€ ๋งˆ์„ธ์š”. ํ˜„์žฌ ์ƒํƒœ์™€ ์ฃผ์š” ์ด์•ก(amount_paid, amount_refunded)์„ ์ €์žฅํ•˜๊ณ  ์•ž์œผ๋กœ ์•ˆ์ „ํ•œ ์ „์ด๋งŒ ํ—ˆ์šฉํ•˜์„ธ์š”.

์‹ค๋ฌด ๊ทœ์น™:

  • ์ธ๋ณด์ด์Šค๋Š” ํ•œ ๋ฒˆ๋งŒ paid๋กœ ํ‘œ์‹œํ•˜์„ธ์š”. paid ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜์Œ ๋ณด์•˜์„ ๋•Œ๋งŒ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • ํ™˜๋ถˆ์ด ๋ฐœ์ƒํ•˜๋ฉด amount_refunded๋ฅผ ์ธ๋ณด์ด์Šค ์ด์•ก๊นŒ์ง€ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ์ ˆ๋Œ€ ๊ฐ์†Œ์‹œํ‚ค์ง€ ๋งˆ์„ธ์š”.
  • ์ธ๋ณด์ด์Šค๊ฐ€ voided๋˜๋ฉด ์ดํ–‰(fulfillment) ๋™์ž‘์„ ์ค‘์ง€ํ•˜๋˜ ๊ฐ์‚ฌ์šฉ์œผ๋กœ ๋ ˆ์ฝ”๋“œ๋ฅผ ์œ ์ง€ํ•˜์„ธ์š”.
  • ๋ถ€๋ถ„ ๊ฒฐ์ œ์˜ ๊ฒฝ์šฐ "์™„์ „ ๊ฒฐ์ œ(fully paid)" ์ด์ ์„ ์ฃผ์ง€ ๋ง๊ณ  ๊ธˆ์•ก๋งŒ ์—…๋ฐ์ดํŠธํ•˜์„ธ์š”.

๊ตฌ๋…๊ณผ ๊ถŒํ•œ: ๋ถ€์—ฌ๋Š” ํ•œ ๋ฒˆ, ํšŒ์ˆ˜๋Š” ํ•œ ๋ฒˆ

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

์ ‘๊ทผ ์ œ์–ด๋ฅผ ์œ„ํ•œ ๊ทœ์น™:

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

๋ถ„๋ฆฌ ์ƒํƒœ๋ฅผ ํ”ผํ•˜๋ ค๋ฉด ํ•œ ํŠธ๋žœ์žญ์…˜์—์„œ ์ฒ˜๋ฆฌํ•˜์„ธ์š”

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

AppMaster์—์„œ๋Š” ๋ณดํ†ต ํ•˜๋‚˜์˜ Business Process ํ๋ฆ„์—์„œ PostgreSQL์„ ์ œ์–ดํ•˜๊ณ  ๋น„์ฆˆ๋‹ˆ์Šค ๋ณ€๊ฒฝ๊ณผ ํ•จ๊ป˜ ๊ฐ์‚ฌ ํ•ญ๋ชฉ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž˜ ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค.

์›นํ›… ์—”๋“œํฌ์ธํŠธ ๋ณด์•ˆ ๋ฐ ๋ฐ์ดํ„ฐ ์•ˆ์ „ ๊ฒ€์‚ฌ

์›นํ›… ๋กœ์ง์„ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ
5๋‹จ๊ณ„ ์›นํ›… ํ”Œ๋กœ์šฐ๋ฅผ ์‹œ๊ฐ์  Business Process๋กœ ์ „ํ™˜ํ•ด ํ…Œ์ŠคํŠธํ•˜๊ณ  ์žฌ์‹คํ–‰ํ•˜์„ธ์š”.
์‹œ์ž‘ํ•˜๊ธฐ

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

์ฒญ๊ตฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฑด๋“œ๋ฆฌ๊ธฐ ์ „์— ๋ฐœ์‹ ์ž๋ฅผ ๊ฒ€์ฆํ•˜์„ธ์š”

๋ชจ๋“  ์š”์ฒญ์˜ ์„œ๋ช…์„ ๊ฒ€์ฆํ•˜์„ธ์š”. Stripe์˜ ๊ฒฝ์šฐ ์ผ๋ฐ˜์ ์œผ๋กœ Stripe-Signature ํ—ค๋”๋ฅผ ํ™•์ธํ•˜๊ณ  ์›์‹œ ์š”์ฒญ ๋ณธ๋ฌธ(raw request body)์„ ์‚ฌ์šฉํ•˜๋ฉฐ(์žฌ์ž‘์„ฑ๋œ JSON์ด ์•„๋‹˜) ์˜ค๋ž˜๋œ ํƒ€์ž„์Šคํƒฌํ”„๋Š” ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค. ํ—ค๋”๊ฐ€ ์—†์œผ๋ฉด ๋ฐ”๋กœ ์‹คํŒจ ์ฒ˜๋ฆฌํ•˜์„ธ์š”.

์ดˆ๊ธฐ ๊ฒ€์ฆ์œผ๋กœ๋Š” ์˜ฌ๋ฐ”๋ฅธ HTTP ๋ฉ”์„œ๋“œ, Content-Type, ํ•„์š”ํ•œ ํ•„๋“œ(์ด๋ฒคํŠธ id, ํƒ€์ž…, ์ธ๋ณด์ด์Šค๋‚˜ ๊ตฌ๋…์„ ์ฐพ๋Š” ๋ฐ ์“ธ ๊ฐ์ฒด id)๋ฅผ ํ™•์ธํ•˜์„ธ์š”. AppMaster๋กœ ๋นŒ๋“œํ•˜๋ฉด ์„œ๋ช… ๋น„๋ฐ€์€ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋‚˜ ๋ณด์•ˆ ์„ค์ •์— ๋‘๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‚˜ ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ์— ๋‘์ง€ ๋งˆ์„ธ์š”.

๋น ๋ฅธ ๋ณด์•ˆ ์ฒดํฌ๋ฆฌ์ŠคํŠธ:

  • ์œ ํšจํ•œ ์„œ๋ช…๊ณผ ์ตœ์‹  ํƒ€์ž„์Šคํƒฌํ”„๊ฐ€ ์—†์œผ๋ฉด ์š”์ฒญ์„ ๊ฑฐ๋ถ€
  • ์˜ˆ์ƒ ํ—ค๋”์™€ ์ฝ˜ํ…์ธ  ํƒ€์ž…์„ ์š”๊ตฌ
  • ์›นํ›… ํ•ธ๋“ค๋Ÿฌ๋Š” ์ตœ์†Œ ๊ถŒํ•œ์˜ DB ์ ‘๊ทผ๋งŒ ์‚ฌ์šฉ
  • ๋น„๋ฐ€๊ฐ’์€ ํ…Œ์ด๋ธ” ๋ฐ–(env/config)์— ์ €์žฅํ•˜๊ณ  ํ•„์š” ์‹œ ๊ต์ฒด
  • ์ด๋ฒคํŠธ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์˜๊ตฌ ์ €์žฅํ•œ ๋’ค์—๋งŒ 2xx ์‘๋‹ต ๋ฐ˜ํ™˜

๋น„๋ฐ€ ์œ ์ถœ ์—†์ด ๋กœ๊ทธ๋ฅผ ์œ ์šฉํ•˜๊ฒŒ ์œ ์ง€ํ•˜์„ธ์š”

์žฌ์‹œ๋„์™€ ๋ถ„์Ÿ์„ ๋””๋ฒ„๊น…ํ•  ์ˆ˜ ์žˆ์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธฐ๋˜ ๋ฏผ๊ฐํ•œ ๊ฐ’์€ ํ”ผํ•˜์„ธ์š”. ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์•ˆ์ „ํ•œ PII์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ: ์ œ๊ณต์ž ๊ณ ๊ฐ ID, ๋‚ด๋ถ€ ์‚ฌ์šฉ์ž ID, ๋งˆ์Šคํ‚น๋œ ์ด๋ฉ”์ผ(์˜ˆ: a***@domain.com). ์ „์ฒด ์นด๋“œ ๋ฐ์ดํ„ฐ, ์ „์ฒด ์ฃผ์†Œ, ์›์‹œ ์ธ์ฆ ํ—ค๋”๋Š” ์ ˆ๋Œ€ ์ €์žฅํ•˜์ง€ ๋งˆ์„ธ์š”.

์žฌ๊ตฌ์„ฑ์— ๋„์›€์ด ๋˜๋Š” ๋กœ๊ทธ ํ•ญ๋ชฉ:

  • ์ œ๊ณต์ž ์ด๋ฒคํŠธ id, ํƒ€์ž…, ์ƒ์„ฑ ์‹œ๊ฐ
  • ๊ฒ€์ฆ ๊ฒฐ๊ณผ(์„œ๋ช… ์ •์ƒ/์‹คํŒจ) โ€” ๋‹จ, ์„œ๋ช… ์ž์ฒด๋Š” ์ €์žฅ ๊ธˆ์ง€
  • ์ค‘๋ณต ๊ฒฐ์ •(new vs already processed)
  • ์ˆ˜์ •๋œ ๋‚ด๋ถ€ ๋ ˆ์ฝ”๋“œ ID(์ธ๋ณด์ด์Šค/๊ตฌ๋…/๊ถŒํ•œ)
  • ์˜ค๋ฅ˜ ์ด์œ ์™€ ์žฌ์‹œ๋„ ํšŸ์ˆ˜(ํ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ)

๊ธฐ๋ณธ์ ์ธ ๋‚จ์šฉ ๋ฐฉ์ง€๋„ ์ถ”๊ฐ€ํ•˜์„ธ์š”: IP๋ณ„ ์†๋„ ์ œํ•œ๊ณผ(๊ฐ€๋Šฅํ•˜๋ฉด) ๊ณ ๊ฐ ID๋ณ„ ์ œํ•œ, ํ•„์š” ์‹œ ์ œ๊ณต์ž IP ๋ฒ”์œ„๋งŒ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ๋„ ๊ณ ๋ คํ•˜์„ธ์š”.

์ค‘๋ณต ์ฒญ๊ตฌ๋‚˜ ์ค‘๋ณต ์ ‘๊ทผ์„ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ํ”ํ•œ ์‹ค์ˆ˜

Stripe ์ฒญ๊ตฌ ํ”„๋กœํ† ํƒ€์ž… ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค๊ธฐ
Stripe ๊ฒฐ์ œ๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  ์ค‘๋ณต ์ „๋‹ฌ์„ ํ…Œ์ŠคํŠธํ•ด ๋ณด์„ธ์š” โ€” ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์—†์ด ๋น ๋ฅด๊ฒŒ ํ”„๋กœํ† ํƒ€์ž…ํ•˜์„ธ์š”.
์ง€๊ธˆ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

๋Œ€๋ถ€๋ถ„์˜ ์ฒญ๊ตฌ ๋ฒ„๊ทธ๋Š” ์ˆ˜ํ•™ ๋ฌธ์ œ ๋•Œ๋ฌธ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์›นํ›… ์ „๋‹ฌ์„ ๋‹จ์ผ ์‹ ๋ขฐ ๊ฐ€๋Šฅํ•œ ๋ฉ”์‹œ์ง€๋กœ ์ทจ๊ธ‰ํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ์‹ค์ˆ˜:

  • ํƒ€์ž„์Šคํƒฌํ”„๋‚˜ ๊ธˆ์•ก์œผ๋กœ ์ค‘๋ณต ์ œ๊ฑฐ: ์„œ๋กœ ๋‹ค๋ฅธ ์ด๋ฒคํŠธ๊ฐ€ ๊ฐ™์€ ๊ธˆ์•ก์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ณ  ์žฌ์‹œ๋„๊ฐ€ ๋ช‡ ๋ถ„ ํ›„์— ๋„์ฐฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ๊ณต์ž์˜ ๊ณ ์œ  ์ด๋ฒคํŠธ ID๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
  • ์„œ๋ช… ๊ฒ€์ฆ ์ „์— DB๋ฅผ ์—…๋ฐ์ดํŠธ: ๋จผ์ € ๊ฒ€์ฆํ•˜๊ณ , ํŒŒ์‹ฑํ•œ ๋’ค์— ํ–‰๋™ํ•˜์„ธ์š”.
  • ํ˜„์žฌ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š๊ณ  ๋ชจ๋“  ์ด๋ฒคํŠธ๋ฅผ ์‹ ๋ขฐ: ์ด๋ฏธ ๊ฒฐ์ œ๋˜๊ฑฐ๋‚˜ ํ™˜๋ถˆ๋œ ์ธ๋ณด์ด์Šค๋ฅผ ๋งน๋ชฉ์ ์œผ๋กœ paid๋กœ ํ‘œ๊ธฐํ•˜์ง€ ๋งˆ์„ธ์š”.
  • ๋™์ผ ๊ตฌ๋งค์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ๊ถŒํ•œ ์ƒ์„ฑ: ์žฌ์‹œ๋„๋กœ ์ค‘๋ณต ํ–‰์ด ์ƒ๊น๋‹ˆ๋‹ค. ensure entitlement exists for subscription_id ๊ฐ™์€ upsert ๊ทœ์น™์„ ์„ ํ˜ธํ•˜์„ธ์š”.
  • ์•Œ๋ฆผ ์„œ๋น„์Šค๊ฐ€ ๋‹ค์šด๋˜์–ด ์›นํ›…์„ ์‹คํŒจ ์ฒ˜๋ฆฌํ•จ: ์ด๋ฉ”์ผ, SMS, Slack ๋“ฑ์€ ์ฒญ๊ตฌ๋ฅผ ์ฐจ๋‹จํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์•Œ๋ฆผ์€ ํ์— ๋„ฃ๊ณ  ํ•ต์‹ฌ ์ฒญ๊ตฌ ๋ณ€๊ฒฝ์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅํ•œ ๋’ค ์„ฑ๊ณต์„ ๋ฐ˜ํ™˜ํ•˜์„ธ์š”.

๊ฐ„๋‹จํ•œ ์˜ˆ: ๊ฐฑ์‹  ์ด๋ฒคํŠธ๊ฐ€ ๋‘ ๋ฒˆ ๋„์ฐฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ ์ „๋‹ฌ์€ ๊ถŒํ•œ ํ–‰์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์žฌ์‹œ๋„๊ฐ€ ๋‘ ๋ฒˆ์งธ ํ–‰์„ ์ƒ์„ฑํ•ด ์•ฑ์ด "๋‘ ๊ฐœ์˜ ํ™œ์„ฑ ๊ถŒํ•œ"์ด๋ผ๊ณ  ํŒ๋‹จํ•˜๋ฉด ์ถ”๊ฐ€ ์ขŒ์„์ด๋‚˜ ํฌ๋ ˆ๋”ง์„ ๋ถ€์—ฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

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

์‹ค๋ฌด ์˜ˆ์‹œ: ์ค‘๋ณต ๊ฐฑ์‹  + ์ดํ›„ ํ™˜๋ถˆ

์ด ํŒจํ„ด์€ ๊ฒ๋‚˜ ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ๋‹ค์‹œ ์‹คํ–‰ํ•ด๋„ ์•ˆ์ „ํ•˜๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ๋‹ค๋ฉด ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๊ณ ๊ฐ์ด ์›”๊ฐ„ ์š”๊ธˆ์ œ๋ฅผ ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๋‹ค. Stripe๊ฐ€ ๊ฐฑ์‹  ์ด๋ฒคํŠธ(์˜ˆ: invoice.paid)๋ฅผ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ์ด๋ฅผ ์ˆ˜์‹ ํ•ด DB๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์ง€๋งŒ 200 ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐ ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค(์ฝœ๋“œ ์Šคํƒ€ํŠธ, ๋ฐ”์œ DB ๋“ฑ). Stripe๋Š” ์‹คํŒจํ•œ ๊ฒƒ์œผ๋กœ ๋ณด๊ณ  ๊ฐ™์€ ์ด๋ฒคํŠธ๋ฅผ ์žฌ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

์ฒซ ์ „๋‹ฌ์—์„œ ์ ‘๊ทผ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ์žฌ์‹œ๋„์—์„œ๋Š” ๊ฐ™์€ ์ด๋ฒคํŠธ์ž„์„ ๊ฐ์ง€ํ•˜๊ณ  ์•„๋ฌด ์ž‘์—…๋„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ดํ›„ ํ™˜๋ถˆ ์ด๋ฒคํŠธ(์˜ˆ: charge.refunded)๊ฐ€ ๋„์ฐฉํ•˜๋ฉด ํ•œ ๋ฒˆ๋งŒ ์ ‘๊ทผ์„ ํšŒ์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ชจ๋ธ๋งํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•(์•ฑ๋งˆ์Šคํ„ฐ Data Designer์—์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ํ…Œ์ด๋ธ”):

  • webhook_events(event_id UNIQUE, type, processed_at, status)
  • invoices(invoice_id UNIQUE, subscription_id, status, paid_at, refunded_at)
  • entitlements(customer_id, product, active, valid_until, source_invoice_id)

๊ฐ ์ด๋ฒคํŠธ ํ›„์˜ DB ์ƒํƒœ ์˜ˆ์‹œ

Event A(๊ฐฑ์‹ , ์ฒซ ์ „๋‹ฌ) ํ›„: webhook_events์— event_id=evt_123๋กœ ์ƒˆ ํ–‰์ด ์ถ”๊ฐ€๋˜๊ณ  status=processed๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. invoices๋Š” paid๋กœ ํ‘œ์‹œ๋˜๊ณ  entitlements.active=true, valid_until์ด ํ•œ ๊ฒฐ์ œ ์ฃผ๊ธฐ๋งŒํผ ์•ž์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

Event A ์žฌ์ „๋‹ฌ(์žฌ์‹œ๋„) ํ›„: webhook_events ์‚ฝ์ž…์ด ์œ ๋‹ˆํฌ ์ œ์•ฝ์œผ๋กœ ์‹คํŒจํ•˜๊ฑฐ๋‚˜ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์ด๋ฏธ ์ฒ˜๋ฆฌ๋œ ๊ฒƒ์œผ๋กœ ๋ณด๊ณ  ์•„๋ฌด ๋ณ€๊ฒฝ๋„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Event B(ํ™˜๋ถˆ) ํ›„: webhook_events์— event_id=evt_456 ์ƒˆ ํ–‰์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. invoices.refunded_at์ด ์„ค์ •๋˜๊ณ  status=refunded๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. entitlements.active=false๋กœ ์„ค์ •๋˜๊ฑฐ๋‚˜ valid_until์ด ํ˜„์žฌ ์‹œ๊ฐ์œผ๋กœ ์กฐ์ •๋˜์–ด source_invoice_id๋ฅผ ์‚ฌ์šฉํ•ด ์ ‘๊ทผ์„ ํ•œ ๋ฒˆ๋งŒ ํšŒ์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.

์ค‘์š”ํ•œ ์„ธ๋ถ€๋Š” ํƒ€์ด๋ฐ์ž…๋‹ˆ๋‹ค: ์ค‘๋ณต ๊ฒ€์‚ฌ(๋“€ํ”„ ์ฒดํฌ)๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ฑฐ๋‚˜ ํšŒ์ˆ˜ํ•˜๊ธฐ ์ „์— ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

์ถœ์‹œ ์ „ ๋น ๋ฅธ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

์•ˆ์ „ํ•œ ๊ฒฐ์ œ ์›นํ›… ๋งŒ๋“ค๊ธฐ
์ค‘๋ณต ์ œ๊ฑฐ ํ…Œ์ด๋ธ”๊ณผ ๋ช…ํ™•ํ•œ ์ฒ˜๋ฆฌ ํ๋ฆ„์œผ๋กœ ๋ฉฑ๋“ฑ์„ฑ ์›นํ›… ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๊ตฌ์ถ•ํ•˜์„ธ์š”.
์ง€๊ธˆ ์‹œ๋„

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

์—”๋“œํˆฌ์—”๋“œ ์„ค์ •์„ ๊ฒ€์ฆํ•˜๋Š” ์ฒดํฌ๋ฆฌ์ŠคํŠธ:

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

๋Œ€๊ทœ๋ชจ ๊ด€์ฐฐ(์˜ค๋ฒ„์‹œ๋นŒ๋ฆฌํ‹ฐ) ์„ธํŠธ๊ฐ€ ์—†์–ด๋„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์‹ ํ˜ธ๋Š” ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋กœ๊ทธ๋‚˜ ๋‹จ์ˆœ ๋Œ€์‹œ๋ณด๋“œ์—์„œ ๋‹ค์Œ์„ ์ถ”์ ํ•˜์„ธ์š”:

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

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

๋‹ค์Œ ๋‹จ๊ณ„: ํ…Œ์ŠคํŠธ, ๋ชจ๋‹ˆํ„ฐ๋ง, ๋…ธ์ฝ”๋“œ ๋ฐฑ์—”๋“œ๋กœ ๊ตฌ์ถ•ํ•˜๊ธฐ

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

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

์ง€์›ํŒ€์—๋Š” ๊ฐ„๋‹จํ•œ ๋Ÿฐ๋ถ์„ ์ œ๊ณตํ•ด ๋ฌธ์ œ๋ฅผ ์ถ”์ ํ•˜๋„๋ก ํ•˜์„ธ์š”:

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

๋งŽ์€ ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์ฝ”๋“œ๋ฅผ ์“ฐ์ง€ ์•Š๊ณ  ๊ตฌํ˜„ํ•˜๋ ค๋ฉด AppMaster(appmaster.io)์ด ํ•ต์‹ฌ ํ…Œ์ด๋ธ”์„ ๋ชจ๋ธ๋งํ•˜๊ณ  ์›นํ›… ํ”Œ๋กœ์šฐ๋ฅผ ์‹œ๊ฐ์  Business Process๋กœ ๋งŒ๋“œ๋Š” ๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค. ์ƒ์„ฑ๋œ ๋ฐฑ์—”๋“œ๋ฅผ ๋ฐฐํฌํ•˜๊ธฐ ์ „์— ์žฌ์‹œ๋„ ์ƒํ™ฉ์—์„œ๋„ ์•ˆ์ „ํ•œ์ง€ ๋ฐ˜๋“œ์‹œ ํ™•์ธํ•˜์„ธ์š”.

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

์™œ ๊ฒฐ์ œ ์ œ๊ณต์ž๊ฐ€ ๊ฐ™์€ ์›นํ›…์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ณด๋‚ด๋‚˜์š”?

์ค‘๋ณต ์›นํ›… ์ „๋‹ฌ์€ ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. ์ œ๊ณต์ž๊ฐ€ ์ตœ์†Œ ํ•œ ๋ฒˆ ์ด์ƒ(at least once) ์ „๋‹ฌ์„ ๋ชฉํ‘œ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์—”๋“œํฌ์ธํŠธ๊ฐ€ ํƒ€์ž„์•„์›ƒ๋˜๊ฑฐ๋‚˜ 5xx๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜ ์—ฐ๊ฒฐ์ด ์ž ๊น ๋Š๊ธฐ๋ฉด ๋™์ผํ•œ ์ด๋ฒคํŠธ๋ฅผ ์žฌ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

์›นํ›… ์ด๋ฒคํŠธ๋ฅผ ์ค‘๋ณต ์ œ๊ฑฐํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

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

์ฒญ๊ตฌ ๊ธฐ๋ก์„ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์ „์— ์ด๋ฒคํŠธ๋ฅผ ์ €์žฅํ•ด์•ผ ํ•˜๋‚˜์š”?

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

์›นํ›… ์ค‘๋ณต ๊ธฐ๋ก์€ ์–ผ๋งˆ๋‚˜ ์˜ค๋ž˜ ๋ณด๊ด€ํ•ด์•ผ ํ•˜๋‚˜์š”?

์ง€์—ฐ๋œ ์žฌ์‹œ๋„์™€ ์กฐ์‚ฌ ๊ธฐ๊ฐ„์„ ์ปค๋ฒ„ํ•  ๋งŒํผ ๋ณด๊ด€ํ•˜์„ธ์š”. ์‹ค๋ฌด์ ์œผ๋กœ๋Š” 30โ€“90์ผ์ด ์ผ๋ฐ˜์ ์ด๊ณ , ๋ถ„์Ÿ์ด๋‚˜ ์ฐจ์ง€๋ฐฑ, ๊ธด ๊ตฌ๋… ์ฃผ๊ธฐ๊ฐ€ ์žˆ๋‹ค๋ฉด 6โ€“12๊ฐœ์›”๊นŒ์ง€ ๋ณด๊ด€ํ•œ ๋’ค ์˜ค๋ž˜๋œ ํ–‰์€ ์ •๋ฆฌํ•ด ํ…Œ์ด๋ธ” ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•˜์„ธ์š”.

์ด๋ฏธ ์ค‘๋ณต ์ œ๊ฑฐ๋ฅผ ํ•ด๋‘์—ˆ์œผ๋ฉด ์„œ๋ช… ๊ฒ€์ฆ์ด ํ•„์š” ์—†๋‚˜์š”?

์„œ๋ช…์„ ๊ฒ€์ฆํ•œ ๋’ค์—๋งŒ ์ฒญ๊ตฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฑด๋“œ๋ฆฌ์„ธ์š”. ์„œ๋ช… ๊ฒ€์ฆ์„ ๋จผ์ € ํ•˜์ง€ ์•Š์œผ๋ฉด ์œ„์กฐ๋œ โ€œ๊ฒฐ์ œ ์™„๋ฃŒโ€ ์ด๋ฒคํŠธ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธ๋ฐ›์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ฒ€์ฆ ์‹คํŒจ ์‹œ ์š”์ฒญ์„ ๊ฑฐ๋ถ€ํ•˜๊ณ  ์ฒญ๊ตฌ ๋ณ€๊ฒฝ์„ ๊ธฐ๋กํ•˜์ง€ ๋งˆ์„ธ์š”.

์›นํ›… ํƒ€์ž„์•„์›ƒ์„ ์žฌ์‹œ๋„๋กœ ์ธํ•ด ์ค‘๋ณต ์—†์ด ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜์š”?

์ด๋ฒคํŠธ๊ฐ€ ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅ๋œ ํ›„์— ์ˆ˜์‹ ์„ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•˜๊ณ  ๋ฌด๊ฑฐ์šด ์ž‘์—…์€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์˜ฎ๊ธฐ์„ธ์š”. ๋А๋ฆฐ ํ•ธ๋“ค๋Ÿฌ๋Š” ํƒ€์ž„์•„์›ƒ์„ ์œ ๋ฐœํ•˜๊ณ , ํƒ€์ž„์•„์›ƒ์€ ์žฌ์‹œ๋„๋ฅผ ๋Š˜๋ ค ์ค‘๋ณต ์—…๋ฐ์ดํŠธ ์œ„ํ—˜์„ ํ‚ค์›๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ๋„์ฐฉํ•˜์ง€ ์•Š์„ ๋•Œ๋Š” ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋‚˜์š”?

์ƒํƒœ๋ฅผ ์•ž์œผ๋กœ๋งŒ ์ด๋™์‹œํ‚ค๊ณ  ์˜ค๋ž˜๋œ ์ด๋ฒคํŠธ๋Š” ๋ฌด์‹œํ•˜์„ธ์š”. ๊ฐ€๋Šฅํ•˜๋ฉด ์ด๋ฒคํŠธ ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ๋น„๊ตํ•˜๊ณ , ํƒ€์ž„์Šคํƒฌํ”„๊ฐ€ ์• ๋งคํ•˜๋ฉด ์ƒํƒœ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”(์˜ˆ: refunded๋Š” paid๋ฅผ ๋ฎ์–ด์“ด๋‹ค).

๊ฐฑ์‹  ์›นํ›…์ด ์žฌ์‹œ๋„๋  ๋•Œ ์ ‘๊ทผ์„ ๋‘ ๋ฒˆ ๋ถ€์—ฌํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด?

๋งค ์ด๋ฒคํŠธ๋งˆ๋‹ค ์ƒˆ ๊ถŒํ•œ ํ–‰์„ ๋งŒ๋“ค์ง€ ๋งˆ์„ธ์š”. โ€œ์‚ฌ์šฉ์ž/์ƒํ’ˆ/๊ธฐ๊ฐ„(๋˜๋Š” ๊ตฌ๋…) ๋‹น ํ•˜๋‚˜์˜ ๊ถŒํ•œ์„ ๋ณด์žฅโ€ํ•˜๋Š” upsert ๊ทœ์น™์„ ์ ์šฉํ•˜๊ณ  ๋‚ ์งœ๋‚˜ ํ•œ๋„๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์„ธ์š”. ์–ด๋–ค ์ด๋ฒคํŠธ ID๊ฐ€ ๋ณ€๊ฒฝ์„ ๋ฐœ์ƒ์‹œ์ผฐ๋Š”์ง€ ๊ธฐ๋กํ•ด ๊ฐ์‚ฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์„ธ์š”.

์™œ ์ธ๋ณด์ด์Šค์™€ ๊ถŒํ•œ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์— ๋„ฃ์–ด์•ผ ํ•˜๋‚˜์š”?

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

๋งŽ์€ ์ปค์Šคํ…€ ๋ฐฑ์—”๋“œ ์ฝ”๋“œ๋ฅผ ์“ฐ์ง€ ์•Š๊ณ  AppMaster์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

์˜ˆ โ€” ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. WebhookEvents ๋ชจ๋ธ์— ์œ ๋‹ˆํฌ ์ด๋ฒคํŠธ ID๋ฅผ ๋งŒ๋“ค๊ณ  โ€œ์ด๋ฏธ ๋ณด์•˜๋Š”๊ฐ€?โ€๋ฅผ ํ™•์ธํ•˜๋Š” Business Process๋ฅผ ๊ตฌ์ถ•ํ•˜์„ธ์š”. ์ธ๋ณด์ด์Šค/๊ตฌ๋…/๊ถŒํ•œ์„ Data Designer์— ๋ช…์‹œ์ ์œผ๋กœ ๋ชจ๋ธ๋งํ•˜๋ฉด ์žฌ์‹œ๋„์™€ ์žฌ์‹คํ–‰ ์‹œ ์ค‘๋ณต ํ–‰ ์ƒ์„ฑ์„ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

์‹œ์ž‘ํ•˜๋‹ค
์•ˆ์ „ํ•œ ์ฒญ๊ตฌ ์—…๋ฐ์ดํŠธ๋ฅผ ์œ„ํ•œ ๋ฉฑ๋“ฑ์„ฑ ๊ฒฐ์ œ ์›นํ›… ์ฒดํฌ๋ฆฌ์ŠคํŠธ | AppMaster