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

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

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

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

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

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

์š”์•ฝํ•˜์ž๋ฉด, API Blueprint ์–ธ์–ด๋Š” AppMasterno-code ํ”Œ๋žซํผ ๋ฐ ๊ทธ ์ด์ƒ์—์„œ API ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ์ดˆ์„์ด ๋  ๊ณ ์œ ํ•œ ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. API Blueprint๋Š” RESTful API๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ๋ฌธ์„œํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ„๊ฒฐํ•˜๊ณ  ํ‘œํ˜„๋ ฅ์ด ํ’๋ถ€ํ•˜๋ฉฐ ๋ช…ํ™•ํ•œ ํ˜•์‹์„ ์ œ๊ณตํ•จ์œผ๋กœ์จ ํ˜‘์—… ๊ฐœ์„ , ์‹ ์†ํ•œ ํ”„๋กœํ† ํƒ€์ดํ•‘ ๋ฐ ์˜ค๋ฅ˜ ๊ฐ์†Œ๋ฅผ ์ด‰์ง„ํ•˜์—ฌ ๊ถ๊ทน์ ์œผ๋กœ ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ์ž์™€ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ๋” ๋น ๋ฅด๊ณ  ๋น„์šฉ ํšจ์œจ์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ์— ๊ธฐ์—ฌํ•ฉ๋‹ˆ๋‹ค. ์กฐ์ง.