2023๋…„ 6์›” 14์ผยท5๋ถ„ ์ฝ๊ธฐ

Go๋กœ RESTful API ๊ตฌ์ถ•

Go ๋ฐ AppMaster.io ์ฝ”๋“œ ์—†๋Š” ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ•๋ ฅํ•œ RESTful API๋ฅผ ์„ค๊ณ„, ๊ตฌ์ถ• ๋ฐ ๋ฐฐํฌํ•˜๋Š” ํ•„์ˆ˜ ์š”์†Œ๋ฅผ ์•Œ์•„๋ณด์„ธ์š”. API ๊ฒŒ์ž„์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์„ธ์š”!

Go๋กœ RESTful API ๊ตฌ์ถ•

RESTful API ์ดํ•ด

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

RESTful API๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ์•„๋ž˜์— ์ œ๊ณต๋œ 6๊ฐ€์ง€ ๊ธฐ๋ณธ ์ œ์•ฝ ์กฐ๊ฑด์„ ๋”ฐ๋ฅด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

  1. ์ƒํƒœ ๋น„์ €์žฅ: RESTful API๋Š” ํด๋ผ์ด์–ธํŠธ ๋˜๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ํ˜„์žฌ ์ƒํƒœ์— ๋Œ€ํ•œ ์„œ๋ฒ„ ์ธก ์ •๋ณด๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜คํžˆ๋ ค ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ์˜ ๊ฐ ์š”์ฒญ์—๋Š” ์„œ๋ฒ„๊ฐ€ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ์•„ํ‚คํ…์ฒ˜: ๊ฐ RESTful API๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ๊ธฐ๋ณธ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์„œ๋ฒ„๋Š” ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ์ฒ˜๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ถ„๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ฌธ์ œ๋ฅผ ๋” ์ž˜ ๋ถ„๋ฆฌํ•˜๊ณ  ๋…๋ฆฝ์ ์ธ ํ™•์žฅ ๋ฐ ๋” ์‰ฌ์šด ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  3. ์บ์‹œ ๊ฐ€๋Šฅ์„ฑ: API ์‘๋‹ต์„ ์บ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‘๋‹ต ์‚ฌ๋ณธ์„ ์ €์žฅํ•˜๊ณ  ์„œ๋ฒ„์—์„œ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ์š”์ฒญํ•˜์ง€ ์•Š๊ณ ๋„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„ฑ๋Šฅ๊ณผ ํšจ์œจ์„ฑ์„ ๋ชจ๋‘ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ๊ณ„์ธตํ™”๋œ ์‹œ์Šคํ…œ: RESTful API๋Š” ๊ณ„์ธต ๋‚ด์˜ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋ฐ”๋กœ ์œ„ ๋˜๋Š” ์•„๋ž˜์— ์žˆ๋Š” ๊ตฌ์„ฑ ์š”์†Œ๋งŒ ๋ณด๋Š” ๊ณ„์ธตํ™”๋œ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ํ•„์š”์— ๋”ฐ๋ผ ์œ ์ง€ ๊ด€๋ฆฌ ๋ฐ ํ™•์žฅ์ด ๋” ์‰ฌ์šด ๋ชจ๋“ˆ์‹ ์„ค๊ณ„๊ฐ€ ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค.
  5. Code-On-Demand: ํ•„์ˆ˜๋Š” ์•„๋‹ˆ์ง€๋งŒ REST๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์„ ํƒ์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•œ JavaScript .
  6. ๊ท ์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค: RESTful API๋Š” ํ†ต์‹ ์„ ์œ„ํ•œ ์ผ๊ด€๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํ‘œ์ค€ HTTP ๋ฉ”์„œ๋“œ(GET, POST, PUT ๋ฐ DELETE ๋“ฑ) ์ง‘ํ•ฉ์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด API์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ„์†Œํ™”๋˜๊ณ  ๋ณด๋‹ค ์ง๊ด€์ ์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

RESTful API ๊ฐœ๋ฐœ์„ ์œ„ํ•ด Go๋ฅผ ์„ ํƒํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

Golang ์ด๋ผ๊ณ ๋„ ํ•˜๋Š” Go๋Š” Google์—์„œ ๋งŒ๋“  ์ •์ ์œผ๋กœ ์œ ํ˜•์ด ์ง€์ •๋˜๊ณ  ์ปดํŒŒ์ผ๋œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ์ˆ˜๋…„ ๋™์•ˆ Go๋Š” ๋‹จ์ˆœ์„ฑ, ์„ฑ๋Šฅ ๋ฐ ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ๋กœ ์ธํ•ด ๊ฐœ๋ฐœ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์ƒ๋‹นํ•œ ์ฃผ๋ชฉ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ, ํŠนํžˆ RESTful API ๊ตฌ์ถ•์— ํŠนํžˆ ์ธ๊ธฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. RESTful API ๊ฐœ๋ฐœ์„ ์œ„ํ•ด Go๋ฅผ ์„ ํƒํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ์„ฑ๋Šฅ: ์ปดํŒŒ์ผ๋œ ์–ธ์–ด์ธ Go๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•ด์„ ์–ธ์–ด์— ๋น„ํ•ด ์ธ์ƒ์ ์ธ ์„ฑ๋Šฅ ์ด์ ์„ ์ž๋ž‘ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ด์ฌ , PHP ๋˜๋Š” ๋ฃจ๋น„. ์ด๋กœ ์ธํ•ด Go๋Š” ์งง์€ ๋Œ€๊ธฐ ์‹œ๊ฐ„์œผ๋กœ ๋งŽ์€ ์ˆ˜์˜ ์š”์ฒญ์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๊ณ ์„ฑ๋Šฅ RESTful API๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ•๋ ฅํ•œ ๊ฒฝ์Ÿ์ž๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  2. ๋™์‹œ์„ฑ: ๋‹ค์Œ๊ณผ ๊ฐ™์€ Go์˜ ๋‚ด์žฅ ๋™์‹œ์„ฑ ๊ธฐ๋Šฅ ๊ณ ๋ฃจํ‹ด ๊ณผ ์ฑ„๋„์„ ์‚ฌ์šฉํ•˜๋ฉด ๋™์‹œ์— ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋” ๊ฐ„๋‹จํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์‹œ์„ฑ์€ ํŠนํžˆ ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์—ฌ๋Ÿฌ ์š”์ฒญ์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” RESTful API์— ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
  3. ๊ฐ•๋ ฅํ•œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: Go์—๋Š” HTTP ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ์ด ํฌํ•จ๋œ ํ’๋ถ€ํ•œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. JSON ์ธ์ฝ”๋”ฉ ๋ฐ ๋””์ฝ”๋”ฉ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์ƒํ˜ธ ์ž‘์šฉ. ์ด ํฌ๊ด„์ ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” RESTful API ๊ฐœ๋ฐœ์„ ํฌ๊ฒŒ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ํƒ€์‚ฌ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์˜์กด๋„๋ฅผ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ์ •์  ํƒ€์ดํ•‘ ๋ฐ ์œ ํ˜• ์•ˆ์ „์„ฑ: Go์˜ ์—„๊ฒฉํ•œ ํƒ€์ดํ•‘ ์‹œ์Šคํ…œ์€ ์ปดํŒŒ์ผ ์ค‘์— ์˜ค๋ฅ˜๋ฅผ ํฌ์ฐฉํ•˜์—ฌ ๋ณด๋‹ค ๊ฐ•๋ ฅํ•˜๊ณ  ์•ˆ์ „ํ•˜๋ฉฐ ์œ ์ง€ ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค. ํ˜•์‹ ์•ˆ์ „์„ฑ์€ ๋ฐ์ดํ„ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ํŠนํžˆ ์œ ์šฉํ•˜์—ฌ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” RESTful API๋ฅผ ๋ณด๋‹ค ์‰ฝ๊ฒŒ โ€‹โ€‹๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  5. ๋ฐฐํฌ ์šฉ์ด์„ฑ: Go๋Š” ์™ธ๋ถ€ ์ข…์†์„ฑ ์—†์ด ๋‹จ์ผ ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ์ปดํŒŒ์ผ๋˜๋ฏ€๋กœ Go ๊ธฐ๋ฐ˜ RESTful API ๋ฐฐํฌ๊ฐ€ ๋งค์šฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ณด๋‹ค ์‰ฝ๊ฒŒ โ€‹โ€‹๋ฐฐํฌ ๋ฐ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์‰ฝ๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ AppMaster.io๊ฐ€ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

๊ทธ๋งŒํผ AppMaster.io ํ”Œ๋žซํผ์€ Go๋กœ RESTful API๋ฅผ ๊ตฌ์ถ•ํ•  ๋•Œ ๊ฒŒ์ž„ ์ฒด์ธ์ €์ž…๋‹ˆ๋‹ค. ์˜ ํž˜์„ ๋นŒ์–ดAppMaster ์˜no-code ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๋Š” ๊ธฐ์กด ์ฝ”๋”ฉ์„ ์‚ฌ์šฉํ•  ๋•Œ๋ณด๋‹ค ํ›จ์”ฌ ์งง์€ ์‹œ๊ฐ„์— RESTful API๋ฅผ ์„ค๊ณ„, ๊ตฌ์ถ• ๋ฐ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋งŒ๋“œ๋Š” ์ฃผ์š” ๊ธฐ๋Šฅ ์ค‘ ์ผ๋ถ€AppMaster.io๋Š” Go๋ฅผ ์‚ฌ์šฉํ•œ RESTful API ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ํƒ์›”ํ•œ ์„ ํƒ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ์ƒ์„ฑ ๋ฐ ๊ตฌ์„ฑ์„ ์œ„ํ•œ ์‹œ๊ฐ์  ๋ฐฑ์—”๋“œ ์ฒญ์‚ฌ์ง„ ์„ค๊ณ„endpoints
  • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์‹œ๊ฐ์ ์œผ๋กœ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•œ Business Process Designer
  • Go ๊ธฐ๋ฐ˜ ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ์ž๋™ ์†Œ์Šค ์ฝ”๋“œ ์ƒ์„ฑ
  • ๊ฐ„ํŽธํ•œ API ๋ฌธ์„œํ™” ๋ฐ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ Swagger ๋ฌธ์„œ ์ƒ์„ฑ
  • ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์šฐ๋“œ์— ์‰ฝ๊ฒŒ ๋ฐฐํฌ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ์ง€์›
  • ๋‚ด์žฅ ๋ณด์•ˆ ๊ธฐ๋Šฅ ๋ฐ ์ธ์ฆ ์ง€์›
  • ๋‹ค์–‘ํ•œ ํƒ€์‚ฌ ์„œ๋น„์Šค์™€์˜ ํ†ตํ•ฉ ๊ธฐ๋Šฅ

์˜ ๋„์›€์œผ๋กœAppMaster.io, Go๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ•๋ ฅํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋ฉฐ ์œ ์ง€ ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•œ RESTful API๋ฅผ ๋ช‡ ์‹œ๊ฐ„ ๋งŒ์— ๊ตฌ์ถ• ๋ฐ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‹œ๊ฐ„๊ณผ ๋น„์šฉ ํšจ์œจ์„ฑ ๋ชจ๋‘์—์„œ ๊ฒฝ์Ÿ ์šฐ์œ„๋ฅผ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํƒ์ƒ‰ AppMaster ํ”Œ๋žซํผ

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

์‹œ์ž‘ํ•˜๋ ค๋ฉดLearn์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌด๋ฃŒ ๊ณ„์ •& ํƒ์ƒ‰ ๊ณ„ํš. ๋กœ๊ทธ์ธํ•˜๋ฉด ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ธฐ๋ณธ ๋Œ€์‹œ๋ณด๋“œ๊ฐ€ โ€‹โ€‹ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

ํด๋ฆญ์‹œ์ž‘ํ•˜๋ ค๋ฉด "์ƒˆ ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ" ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด์‹ญ์‹œ์˜ค. ์„ ํƒํ•˜๋‹คRESTful API์˜ ํ”„๋กœ์ ํŠธ ์œ ํ˜•์œผ๋กœ "๋ฐฑ์—”๋“œ" , ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์„ ์ง€์ •ํ•˜๊ณ  ํด๋ฆญ "๋‹ค์Œ" AWS, Google Cloud Platform ๋˜๋Š”์„ ํ˜ธ๋„์— ๋”ฐ๋ผ Microsoft Azure .

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

API ๋งŒ๋“ค๊ธฐ AppMaster ์˜ ๋ฐฑ์—”๋“œ ์ฒญ์‚ฌ์ง„

Go API๋ฅผ ๋” ๋น ๋ฅด๊ฒŒ ๊ตฌ์ถ•
REST ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ์„ค๊ณ„ํ•˜๊ณ  AppMaster๊ฐ€ Go ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ํ•˜์„ธ์š”.
AppMaster ์ฒดํ—˜ํ•˜๊ธฐ

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

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

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

Business Process Designer๋กœ ๋น„์ฆˆ๋‹ˆ์Šค ๋…ผ๋ฆฌ ์ •์˜

Business Process Designer๋Š” ๋‹ค์Œ์˜ ์‹œ๊ฐ์  ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ API์— ๋Œ€ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” AppMaster.io ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ์ œ์–ดํ•˜๊ณ  ์กฐ์œจ๋œ ๋ฐฉ์‹์œผ๋กœ ์ž‘์—…์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋ฏ€๋กœ ๋น ๋ฅด๊ณ  ๊ฐ•๋ ฅํ•œ API๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ์ธก๋ฉด์ž…๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๋ ค๋ฉด์‚ฌ์ด๋“œ๋ฐ”์˜ "๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค" ์„น์…˜. API์™€ ๊ด€๋ จ๋œ ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค ๋ชฉ๋ก์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ƒˆ ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ํด๋ฆญํ•˜์‹ญ์‹œ์˜ค. "์ƒˆ ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค ๋งŒ๋“ค๊ธฐ"๋ฅผ ํด๋ฆญ ํ•˜๊ณ  ํ”„๋กœ์„ธ์Šค ์ด๋ฆ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค ๋””์ž์ด๋„ˆ์—์„œ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋…ธ๋“œ drag and drop "๋ ˆ์ฝ”๋“œ ๋งŒ๋“ค๊ธฐ", "๊ธฐ๋ก ์—…๋ฐ์ดํŠธ", "์ด๋ฉ”์ผ ๋ณด๋‚ด๊ธฐ" ๋“ฑ์€ API์˜ ๊ธฐ๋ณธ ๋…ผ๋ฆฌ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์‹œ๊ฐ์  ์ˆœ์„œ๋„์—์„œ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฐ ๋…ธ๋“œ์˜ ์†์„ฑ์„ ํŽธ์ง‘ํ•˜์—ฌ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•˜๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์œ ์—ฐํ•˜๊ณ  ์ง๊ด€์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด API์— ํ•„์š”ํ•œ ๋งŒํผ ์ •๊ตํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

Swagger๋กœ API ๋ฌธ์„œํ™” ๋ฐ ํ…Œ์ŠคํŠธ

๋ฐ์ดํ„ฐ ๋ชจ๋ธ์—์„œ API๋กœ
๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ CRUD ์—”๋“œํฌ์ธํŠธ๊ฐ€ ํฌํ•จ๋œ ๋™์ž‘ํ•˜๋Š” ๋ฐฑ์—”๋“œ๋กœ ์ „ํ™˜ํ•˜์„ธ์š”.
์ง€๊ธˆ ์‹œ์ž‘ํ•˜๊ธฐ

์ ์ ˆํ•œ ๋ฌธ์„œ๋Š” ๋‹ค์–‘ํ•œ API์˜ ๋ชฉ์ ๊ณผ ์‚ฌ์šฉ๋ฒ•์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋ฏ€๋กœ ๋ชจ๋“  API์— ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.endpoints. ์ด๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด,AppMaster.io ํ”Œ๋žซํผ์—์„œ ์ž๋™ ์ƒ์„ฑ์„œ๋ฒ„์šฉ Swagger (OpenAPI) ๋ฌธ์„œ๊ฐ ํ”„๋กœ์ ํŠธ์˜ endpoints.Swagger ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ RESTful API๋ฅผ ์„ค๊ณ„, ๊ตฌ์ถ•, ๋ฌธ์„œํ™” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” API ๋ฌธ์„œํ™” ๋„๊ตฌ ์„ธํŠธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋งŒํผSwagger UI๋Š” API ๋ฆฌ์†Œ์Šค๋ฅผ ์‹œ๊ฐํ™”ํ•˜๊ณ  ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Swagger ๋ฌธ์„œ ์ƒ์„ฑ AppMaster.io

์–ป์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.API์— ๋Œ€ํ•œ Swagger ์„ค๋ช…์„œAppMaster.io ํ”Œ๋žซํผ.

  1. ์—์„œ ํ”„๋กœ์ ํŠธ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์—ฝ๋‹ˆ๋‹ค.AppMaster.io Studio ๊ณ„์ •.
  2. ๋ฅผ ํด๋ฆญํ•˜์‹ญ์‹œ์˜ค๋Œ€์‹œ๋ณด๋“œ ์™ผ์ชฝ์˜ 'API ๋ฌธ์„œ' ํƒญ.
  3. ํ‘œ์‹œ๋œ ํŒจ๋„์—์„œ ์ƒ์„ฑ๋œAPI์— ๋Œ€ํ•œ Swagger ํ˜ธํ™˜ JSON ๋˜๋Š” YAML ํŒŒ์ผ๊ณผSwagger UI.

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

Swagger๋กœ API ํ…Œ์ŠคํŠธ

๊ทธ๋งŒํผSwagger UI๋Š” API์šฉ ํด๋ผ์ด์–ธํŠธ ์—ญํ• ์„ ํ•˜์—ฌ API ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์‘๋‹ต์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • API๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉดendpoint:

  1. ์ฐพ๊ธฐํ…Œ์ŠคํŠธํ•˜๋ ค๋Š” endpointSwagger UI.
  2. ํด๋ฆญ์˜†์— ์žˆ๋Š” '์‚ฌ์šฉํ•ด๋ณด๊ธฐ' ๋ฒ„ํŠผendpoint.
  3. ํ•„์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ํด๋ฆญ'์‹คํ–‰ํ•˜๋‹ค'.
  4. UI๋Š” ์ƒํƒœ ์ฝ”๋“œ, ํ—ค๋” ๋ฐ ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•œ ์„œ๋ฒ„ ์‘๋‹ต์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค ์ค‘์— API๋ฅผ ์ฒ ์ €ํžˆ ํ…Œ์ŠคํŠธ ๋ฐ ๋””๋ฒ„๊ทธํ•˜๊ณ  ์˜๋„ํ•œ ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์šฐ๋“œ์— ๋ฐฐํฌ AppMaster

์›น ํ”„๋ŸฐํŠธ์—”๋“œ ์ถ”๊ฐ€
๋™์ผํ•œ ๋…ธ์ฝ”๋“œ ์ž‘์—…๊ณต๊ฐ„์—์„œ ๊ตฌ์ถ•ํ•œ ์›น UI์™€ Go ๋ฐฑ์—”๋“œ๋ฅผ ๊ฒฐํ•ฉํ•˜์„ธ์š”.
์›น ์•ฑ ๊ตฌ์ถ•

RESTful API๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ํ…Œ์ŠคํŠธํ–ˆ์œผ๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋Š” ๋ฐฐํฌ์ž…๋‹ˆ๋‹ค.AppMaster.io๋Š” ๋ฐฐํฌ๋ฅผ Go ๊ธฐ๋ฐ˜ ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋‹ค์–‘ํ•œ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค ๋ฐ ์ปจํ…Œ์ด๋„ˆํ™” ๊ธฐ์ˆ ๊ณผ์˜ ์›ํ™œํ•œ ํ†ตํ•ฉ์„ ์ง€์›ํ•˜์—ฌ ๋งค์šฐ ๊ฐ„ํŽธํ•ฉ๋‹ˆ๋‹ค. API์— ๋งŒ์กฑํ•˜๊ณ  ๋ฐฐํฌํ•  ์ค€๋น„๊ฐ€ ๋˜๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ๊ท€ํ•˜์˜AppMaster.io Studio ํ”„๋กœ์ ํŠธ ๋Œ€์‹œ๋ณด๋“œ.
  2. ํด๋ฆญ๋Œ€์‹œ๋ณด๋“œ์˜ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ ๋ชจ์„œ๋ฆฌ์— ์žˆ๋Š” '๊ฒŒ์‹œ' ๋ฒ„ํŠผ์ž…๋‹ˆ๋‹ค.
  3. AppMaster.io๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ปดํŒŒ์ผํ•˜๊ณ , ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ , Docker ์ปจํ…Œ์ด๋„ˆ(๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์šฉ)๋กœ ํŒจํ‚ค์ง•ํ•ฉ๋‹ˆ๋‹ค.
  4. ๊ฒŒ์‹œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ(Business ๋ฐ Business+ ๊ตฌ๋…์˜ ๊ฒฝ์šฐ) ๋˜๋Š” ์†Œ์Šค ์ฝ”๋“œ(Enterprise ๊ตฌ๋…์˜ ๊ฒฝ์šฐ)๋ฅผ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  5. ์ƒ์„ฑ๋œ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ ํƒํ•œ ํด๋ผ์šฐ๋“œ ๊ณต๊ธ‰์ž์— ๋ฐฐํฌํ•˜๊ฑฐ๋‚˜ ์˜จํ”„๋ ˆ๋ฏธ์Šค์—์„œ ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์˜ ์ฃผ์š” ์ด์ ๋ฐฐํฌ์šฉ AppMaster.io๋Š” ๋‹ค์–‘ํ•œ ํด๋ผ์šฐ๋“œ ๊ณต๊ธ‰์ž์™€์˜ ์œ ์—ฐ์„ฑ ๋ฐ ํ˜ธํ™˜์„ฑ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํŠน์ • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์š”๊ตฌ ์‚ฌํ•ญ์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๊ณต๊ธ‰์ž๋ฅผ ์„ ํƒํ•˜๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณด์•ˆ ๋ฐ ์ธ์ฆ ์ถ”๊ฐ€

๋ณด์•ˆ ๋ฐ ์ธ์ฆ์€ ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž๋งŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐ์ดํ„ฐ ๋ฐ ๊ธฐ๋Šฅ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•˜๋Š” ๋ชจ๋“  API์˜ ํ•„์ˆ˜ ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค.AppMaster.io๋Š” RBAC(์—ญํ•  ๊ธฐ๋ฐ˜ ์•ก์„ธ์Šค ์ œ์–ด), ์ธ์ฆ ํ† ํฐ ๋ฐ SSL/TLS ์•”ํ˜ธํ™”์™€ ๊ฐ™์€ ๊ฐ•๋ ฅํ•œ ๋ณด์•ˆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ๊ตฌํ˜„์„ ์šฉ์ดํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

RBAC(์—ญํ•  ๊ธฐ๋ฐ˜ ์•ก์„ธ์Šค ์ œ์–ด)

RBAC๋Š” ์—ญํ•  ๋ฐ ๊ถŒํ•œ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์•ก์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ~ ์•ˆ์—AppMaster.io, ์‚ฌ์šฉ์ž ์ง€์ • ์—ญํ• ์„ ์ •์˜ํ•˜๊ณ  ํŠน์ • ๊ถŒํ•œ์„ ํ• ๋‹นํ•˜์—ฌ API์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์กฐ์ง ๊ตฌ์กฐ์— ๋”ฐ๋ผ ์•ก์„ธ์Šค endpoints ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. API์—์„œ RBAC๋ฅผ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด:

  1. ์—์„œ ์‚ฌ์šฉ์ž ์—ญํ•  ์ƒ์„ฑAppMaster.io ์ŠคํŠœ๋””์˜ค.
  2. ๊ฐ API์˜ ์—ญํ• ์— ์•ก์„ธ์Šค ๊ถŒํ•œ ํ• ๋‹นHTTP endpoint ์™€endpoints.
  3. ์ƒ์„ฑ๋œ ์—ญํ• ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ๋ฐ ํ•ด๋‹น ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ธ์ฆ ํ† ํฐ

์ธ์ฆ ํ† ํฐ์€ API ๋ณด์•ˆ์„ ์œ„ํ•œ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.endpoints.AppMaster.io๋Š” JWT(JSON ์›น ํ† ํฐ)๋ฅผ ์ง€์›ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ API์— ๋Œ€ํ•œ ๋ณด์•ˆ ์•ก์„ธ์Šค๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.endpoints. ์‚ฌ์šฉ์ž๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ธ์ฆํ•˜๋ฉด ์„œ๋ฒ„๋Š” ์ง€์ •๋œ ๋งŒ๋ฃŒ ์‹œ๊ฐ„์œผ๋กœ JWT๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ JWT๋ฅผ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž๋ฅผ ์ธ์ฆํ•  ์ˆ˜ ์žˆ๋„๋ก ํ›„์† ์š”์ฒญ์˜ "Authorization" ํ—ค๋”. ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œ๋œ API์—์„œ JWT ๊ธฐ๋ฐ˜ ์ธ์ฆ์„ ๊ตฌํ˜„ํ•˜๋ ค๋ฉดAppMaster.io :

  1. ์ธ์ฆ ๋งŒ๋“ค๊ธฐJWT์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ž๊ฒฉ ์ฆ๋ช…์„ ๊ตํ™˜ํ•˜๊ธฐ ์œ„ํ•œ API์˜ endpoint.
  2. ๋ณด์•ˆ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋”ฐ๋ผ JWT ํ† ํฐ์„ ์ƒ์„ฑํ•˜๊ณ  ๋งŒ๋ฃŒ ์‹œ๊ฐ„์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  3. ์„œ๋ฒ„๊ฐ€ ๊ฐ ์š”์ฒญ์˜ ํ† ํฐ์„ ๊ฒ€์ฆํ•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค."๊ถŒํ•œ ๋ถ€์—ฌ" ํ—ค๋”.

SSL/TLS ์•”ํ˜ธํ™”

๋ณด์•ˆ ํ†ต์‹ ์€ ๋ชจ๋“  API์— ํ•„์ˆ˜์ ์ด๋ฉฐAppMaster.io๋Š” SSL/TLS ์•”ํ˜ธํ™”๋ฅผ ์ง€์›ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ๊ณต๊ธ‰์ž ๋˜๋Š” ์˜จํ”„๋ ˆ๋ฏธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ API๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๊ฒฝ์šฐ ์„œ๋ฒ„๊ฐ€ HTTP ๋Œ€์‹  HTTPS๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ ๊ธฐ๊ด€์—์„œ ์œ ํšจํ•œ SSL ์ธ์ฆ์„œ๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค. ํ™œ์šฉํ•˜์—ฌRESTful API ๊ฐœ๋ฐœ ์š”๊ตฌ์— AppMaster.io ๋ฐ Go๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ•๋ ฅํ•˜๊ณ  ์•ˆ์ „ํ•˜๋ฉฐ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ API๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚  ๊ฒฝ์Ÿ์ด ์น˜์—ดํ•œ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ์—…๊ณ„์—์„œAppMaster.io ์ฝ”๋“œ ์—†๋Š” ํ”Œ๋žซํผ์ด ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์„œ๋น„์Šค์™€ ํ†ตํ•ฉ

API๋ฅผ ์ดˆ๊ธฐ๋ถ€ํ„ฐ ๋ณดํ˜ธ
์—”๋“œํฌ์ธํŠธ๋ฅผ ๋ณดํ˜ธํ•˜๊ณ  API ํ™•์žฅ์— ๋”ฐ๋ผ ์ ‘๊ทผ์„ ์ œ์–ดํ•˜๋ ค๋ฉด ์ธ์ฆ์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”.
์ธ์ฆ ์ถ”๊ฐ€

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

ํƒ€์‚ฌ API ํ†ตํ•ฉ

Go ๊ธฐ๋ฐ˜ RESTful API๋ฅผ ๋‹ค๋ฅธ ์„œ๋น„์Šค์™€ ํ†ตํ•ฉํ•˜๋Š” ํ•œ ๊ฐ€์ง€ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ํƒ€์‚ฌ API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” Go์˜ ๊ด‘๋ฒ”์œ„ํ•œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๊ฐ•๋ ฅํ•œ ํŒจํ‚ค์ง€ ์ง€์›์„ ํ™œ์šฉํ•˜์—ฌ ์›ํ™œํ•˜๊ฒŒ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ `net/http` ํŒจํ‚ค์ง€๋Š” ์™ธ๋ถ€ API์™€์˜ ํšจ์œจ์ ์ธ ํ†ต์‹ ์„ ์šฉ์ดํ•˜๊ฒŒ ํ•˜์—ฌ HTTP ์š”์ฒญ ๋ฐ ์‘๋‹ต ์ฒ˜๋ฆฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹จ์ˆœํ™”ํ•ฉ๋‹ˆ๋‹ค.

AppMaster BP(Business Process) ๋””์ž์ด๋„ˆ๋ฅผ ํ†ตํ•ด ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋…ผ๋ฆฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์—ฌ ์ด๋ฅผ ๋ณด์™„ํ•ฉ๋‹ˆ๋‹ค. ํƒ€์‚ฌ API ํ†ตํ•ฉ์„ ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค์˜ ์‹œ๊ฐ์  ํ๋ฆ„์— ๋ฐ”๋กœ ํ†ตํ•ฉํ•˜์—ฌ ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ”Œ๋žซํผ์€ ์ด๋Ÿฌํ•œ ํ†ตํ•ฉ์ด ์•ˆ์ „ํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋ฉฐ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์šด์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ†ตํ•ฉ

๊ฐ•๋ ฅํ•œ RESTful API๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ, ๊ฒ€์ƒ‰ ๋ฐ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ํ†ตํ•ฉ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๊ฐ•๋ ฅํ•œ ์–ธ์–ด์ธ Go๋Š” ์›ํ™œํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํŒจํ‚ค์ง€๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ธ๊ธฐ ์žˆ๋Š” ์ผ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋Š” ORM ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—…์„ ์œ„ํ•œ `gorm`๊ณผ ๊ณ ๊ธ‰ SQL ์ฟผ๋ฆฌ๋ฅผ ์œ„ํ•œ `sqlx`๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

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

์‹ค์‹œ๊ฐ„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ํ†ตํ•ฉ

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

AppMaster ์‚ฌ์šฉํ•˜๋ฉด WebSocket์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.ํด๋ผ์ด์–ธํŠธ์™€ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค ๊ฐ„์˜ ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก API ์ฒญ์‚ฌ์ง„์—์„œ endpoints ์›ํ™œํ•˜๊ฒŒ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ํ”Œ๋žซํผ์˜ ์‹œ๊ฐ์  BP Designer์™€ ๊ฒฐํ•ฉํ•˜๋ฉด API์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์—์„œ ๋“ค์–ด์˜ค๊ณ  ๋‚˜๊ฐ€๋Š” WebSocket ๋ฉ”์‹œ์ง€๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ ํ†ตํ•ฉ

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

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

๊ฒฐ๋ก 

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

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

๋‚ด Go API๋ฅผ AppMaster.io์™€ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

์˜ˆ, Go API๋ฅผ AppMaster.io ํ”Œ๋žซํผ๊ณผ ํ†ตํ•ฉํ•˜์—ฌ ๋ฐฑ์—”๋“œ, ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์•ฑ ๊ฐœ๋ฐœ์„ ๊ฐ„์†Œํ™”ํ•˜๊ณ  ๋” ๋น ๋ฅธ ๊ฐœ๋ฐœ ์ฃผ๊ธฐ์™€ ์‰ฌ์šด ํ™•์žฅ์„ฑ์„ ๊ฐ–์ถ˜ ๊ฐ•๋ ฅํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Go์—์„œ ๋‚ด RESTful API๋ฅผ ์–ด๋–ป๊ฒŒ ํ…Œ์ŠคํŠธํ•˜๊ณ  ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋‚˜์š”?

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

์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ๋กœ Go API๋ฅผ ๋ณดํ˜ธํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜์š”?

JWT, OAuth2 ๋˜๋Š” API ํ‚ค์™€ ๊ฐ™์€ ์ธ์ฆ ํ”„๋กœํ† ์ฝœ์„ ๊ตฌํ˜„ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ ์ž๊ฒฉ ์ฆ๋ช…์„ ํ™•์ธํ•˜๊ณ  ์Šน์ธ๋œ ํด๋ผ์ด์–ธํŠธ๋งŒ ๋ณดํ˜ธ๋œ ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์—ฌ Go API๋ฅผ ๋ณดํ˜ธํ•˜์„ธ์š”.

Go API์—์„œ ๋ฏธ๋“ค์›จ์–ด์˜ ์—ญํ• ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

๋ฏธ๋“ค์›จ์–ด๋Š” HTTP ์š”์ฒญ ๋ฐ ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ค‘๊ฐ„ ๊ณ„์ธต ์—ญํ• ์„ ํ•˜๋ฏ€๋กœ ์ธ์ฆ, ๋กœ๊น…, ์บ์‹œ ์ œ์–ด ๋ฐ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ์ผ๊ด€๋˜๊ณ  ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

RESTful API ๊ตฌ์ถ•์— Go๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

Go ๋˜๋Š” Golang์€ ๋‹จ์ˆœ์„ฑ, ํšจ์œจ์„ฑ ๋ฐ ์„ฑ๋Šฅ์— ์ค‘์ ์„ ๋‘” ์ •์  ํ˜•์‹์˜ ์ปดํŒŒ์ผ๋œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ๋น ๋ฅธ ์ปดํŒŒ์ผ, ์‰ฌ์šด ๋™์‹œ์„ฑ ๋ฐ ํ™•์žฅ์„ฑ์œผ๋กœ ์ธํ•ด RESTful API๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ํƒ์›”ํ•œ ์„ ํƒ์ž…๋‹ˆ๋‹ค.

RESTful API๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

RESTful API๋Š” HTTP ์š”์ฒญ์„ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„์˜ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด REST(Representational State Transfer)์˜ ์ง€์นจ ๋ฐ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋”ฐ๋ฅด๋Š” ์›น ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

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

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

์‹œ์ž‘ํ•˜๋‹ค
Go๋กœ RESTful API ๊ตฌ์ถ• | AppMaster