API ํค ํ์ UX: ์ค์ฝํ, ์ ํ์๋น์ค ํค, ๊ทธ๋ฆฌ๊ณ ๋ก๊ทธ
์ฌ๋ฐ๋ฅธ API ํค ํ์ : ์ต์ ๊ถํ ์ค์ฝํ, ์ฌ์ฉ ๋ก๊ทธ, ์์ ํ UX๋ก ์ ํ์๋น์ค ํค ๊ด๋ฆฌ๋ฅผ ์ค๊ณํด ์ง์ ํฐ์ผ๊ณผ ์ฌ๊ณ ๋ฅผ ์ค์ด์ธ์.

์ค์ ์ ํ์์ API ํค๊ฐ ๋ฌธ์ ๊ฐ ๋๋ ์ด์
API ํค๋ ์ฒ์์ ๋จ์ํฉ๋๋ค: ํค ํ๋, ํตํฉ ํ๋, ๋. ๋ฌธ์ ๋ ์๊ฐ์ด ์ง๋ ๊ฐ์ ํค๊ฐ ๊ณต์ ์คํ๋ ๋์ํธ, Slack ๋ฉ์์ง, ํน์ ๋ ์ด์ ์์ ์๊ฐ ์๋ ์คํฌ๋ฆฝํธ์ ํ๋์ฝ๋ฉ๋ ๋ ์๊น๋๋ค. ํค๊ฐ ์ฌ๊ธฐ์ ๊ธฐ ๋ณต์ฌ๋๋ฉด ๋๊ฐ ์ ์ฌ์ฉํ๋์ง ๊ฐ์ ๊ธฐ๋ณธ์ ์ธ ์ง๋ฌธ์ ๋ตํ ์ ์๋ ๋ฅ๋ ฅ์ ์์ต๋๋ค.
์ ๋ ๋ฐ๋์ง ์๋ ํค๋ ํํ ํจ์ ์ ๋๋ค. ํค๊ฐ ์ ์ถ๋๋ฉด ์กฐ์ฉํ ๋ช ๋ฌ๊ฐ ์ ์ฉ๋๊ฑฐ๋, ์์์น ๋ชปํ ๋น์ฉ, ๋๋ ๋ฐ์ดํฐ ์ ์ถ๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ์๋ฌด๋ฐ โ๋์โ ์ผ์ด ์์ด๋ ์ค๋๋ ํค๋ ๋๋ฌด ๋ง์ ๊ณณ์ ๋จ์ ์์ด ์์ ์๊ฒ ์ ๊ฑฐํ๊ธฐ ์ด๋ ต๋ค๋ ์ ์์ ์ํ์ ๋ง๋ญ๋๋ค.
์ข์ ํค ๊ด๋ฆฌ๋ ๋จ์ง ๋ณด์๋ง์ ๋ฌธ์ ๊ฐ ์๋๋๋ค. ์ฌ๊ณ ๋ฅผ ์ค์ด๊ณ ์ง์ ์ ๋ฌด๋ ์ค์ฌ์ค๋๋ค. ๊ณ ๊ฐ์ด ์์ ์ ํค๋ฅผ ๋ณด๊ณ , ์ ํํ๊ณ , ์์ ํ๊ฒ ๊ต์ฒดํ ์ ์์ผ๋ฉด ํ์ ์๋ ์ฌ์ค์ ๊ณผ ์ถ์ธก์ ์์กดํ์ง ์์๋ ๋ฉ๋๋ค.
"์ ํ ์๋น์ค"๋ ์ญํ ์ ๋ฐ๋ผ ๋ฌ๋ผ์ผ ํฉ๋๋ค. ๊ด๋ฆฌ์๋ค์ ๋ณดํต ์ํฌ์คํ์ด์ค ์ ์ฒด๋ฅผ ์ ์ดํด์ผ ํ๊ณ , ์ผ๋ฐ ์ฌ์ฉ์๋ ์์ ์ด ์์ ํ ํญ๋ชฉ์ด๋ ๊ด๋ฆฌ์๊ฐ ์์ํ ํญ๋ชฉ๋ง ๊ด๋ฆฌํด์ผ ํฉ๋๋ค. ๋ชฉํ๋ ๋ช ํํ ์์ ๊ถ๊ณผ ๊ฒฝ๊ณ์ด๋ฉฐ ๊ถํ์ ๋ฏธ๋ก๋ฅผ ๋ง๋ค์ง ์๋ ๊ฒ์ ๋๋ค.
๋ณด์๊ณผ ์ฌ์ฉ์ฑ์ ํจ๊ป ์๋ํด์ผ ํฉ๋๋ค. UX๊ฐ ๋ถํธํ๋ฉด ์ฌ๋๋ค์ ์ฐํํ์ฌ ํ ๊ฐ์ "๋ง์คํฐ ํค"๋ฅผ ์ด๋์๋ ์ฌ์ฌ์ฉํ ๊ฒ์ ๋๋ค. ์ค์ฉ์ ์ธ ์์คํ ์ ๊ฐ์ฅ ์์ ํ ๊ฒฝ๋ก๋ฅผ ๊ฐ์ฅ ์ฌ์ด ๊ฒฝ๋ก๋ก ๋ง๋ญ๋๋ค:
- ์ฑ์ด๋ ํตํฉ๋ณ๋ก ํค๋ฅผ ์์ฑํ์ธ์, ํ์ฌ ํ๋๋น ํ๋๊ฐ ์๋๋๋ค.
- ๊ฐ ํค๊ฐ ํ ์ ์๋ ์ผ์(๊ทธ๋ฆฌ๊ณ ์ด๋ ๊ณณ์์ ์ฌ์ฉ๋๋์ง) ์ ํํ์ธ์.
- ๋๊ฐ ๋ง๋ค์๋์ง์ ๋ง์ง๋ง ์ฌ์ฉ ์๊ฐ์ ๋ณด์ฌ์ฃผ์ธ์.
- ํ์ ์ ์ผ์์ ์ด๊ณ ๋ถ๋ด ์๋ ๋์์ผ๋ก ๋ง๋์ธ์.
์์: ํํธ๋๊ฐ "API ์ ๊ทผ"์ ์์ฒญํฉ๋๋ค. ์ ์ผํ ์ต์ ์ด ์ ์ฒด ์ ๊ทผ ํค๋ผ๋ฉด ์๋๋ณด๋ค ๋ง์ ๊ถํ์ ๋๊ฒจ์ฃผ๊ฒ ๋ฉ๋๋ค. ์ ํ ์๋น์ค ํ๋ฆ์ ํํธ๋์ ์์ ์ ๋ง๋ ์ข์ ํค๋ฅผ ๋ฐ๊ธํ๋๋ก ํด์ผ ํฉ๋๋ค.
๊ธฐ๋ณธ ๊ฐ๋ : ํค, ์ค์ฝํ, ์์ ์, ํ๊ฒฝ
ํค ๊ด๋ฆฌ๋ ๊ด๋ จ ์ธ๋ฌผ์ ๋ช ํํ ํ๊ณ ์ฑ ์์ ๋ถ๋ช ํ ํ๋ฉด ๋ ์ฌ์์ง๋๋ค. ๋๋ถ๋ถ์ ์ ํ์ ๋ช ๊ฐ์ง ๋ฐ๋ณต๋๋ ์ญํ ์ ๊ฐ์ต๋๋ค: ๊ณ์ ์์ ์(๊ท์น ์ค์ ๋ฐ ๊ฒฐ์ ), ๊ด๋ฆฌ์(์ํฌ์คํ์ด์ค ์ ๋ฐ ์ ๊ทผ ๊ด๋ฆฌ), ๊ฐ๋ฐ์(์ฝ๋์์ ํค ์ฌ์ฉ ๋ฐ ํ์ ), ์ง์(โ์ ์คํจํ๋์?โ์ ๋ต๋ณ), ๊ฐ์ฌ์(์ ๊ทผ์ด ํต์ ๋๊ณ ์ถ์ ๊ฐ๋ฅํ์ง ๊ฒ์ฆ).
ํค๋ ๋จ์ํ ๋น๋ฐ ๋ฌธ์์ด์ด ์๋๋๋ค. ์ปจํ ์คํธ๊ฐ ์๋ ๊ถํ ์๋ ์๊ฒฉ ์ฆ๋ช ์ ๋๋ค. ํค๋ฅผ ๊ณต์ ๋น๋ฐ๋ฒํธ์ฒ๋ผ ์ทจ๊ธํ๋ฉด ํ์ , ์ฌ๊ณ ๋์, ๊ธฐ๋ณธ ๋๋ฒ๊น ์์ ๊ณ ์ํ๊ฒ ๋ฉ๋๋ค.
์ด๊ธฐ์ ๋ช ๊ฐ์ง ํต์ฌ ๊ฐ์ฒด๋ฅผ ์ ์ํ์ธ์:
- ํค: ๋น๋ฐ ๊ฐ๊ณผ ๋ฉํ๋ฐ์ดํฐ(์์ฑ ํ ์๋ฌธ ๋น๋ฐ์ ์ ์ฅํ์ง ๋ง์ธ์).
- ์ค์ฝํ: ํ์ฉ๋ ๋์์ ๋ช ๋ช ๋ ์งํฉ(์: ์ฃผ๋ฌธ ์ฝ๊ธฐ, ์ก์ฅ ์ฐ๊ธฐ ๋ฑ).
- ์์ ์: ํค์ ์ฑ ์ ์๋ ํน์ ์ฌ์ฉ์๋ ์๋น์ค ๊ณ์ .
- ํ๊ฒฝ: ํค๊ฐ ์๋ํ๋ ๊ณณ(๊ฐ๋ฐ, ์คํ ์ด์ง, ํ๋ก๋์ ).
- ๋ง๋ฃ: ์ธ์ ์๋์ด ์ค์ง๋๋์ง ๋๋ ์ธ์ ํ์ ํด์ผ ํ๋์ง.
์คํจ ์์์ ์์ธก ๊ฐ๋ฅํฉ๋๋ค: ํค๊ฐ ์ ์ฅ์๋ ์ฑํ ์ ์ ์ถ๋๊ณ , ์ค์ฝํ๊ฐ "์๋ํ๊ฒ ํ๋ ค๊ณ " ๋๋ฌด ๋์ด์ง๋ฉฐ, ์ด๋ค ํค๊ฐ ์์ฒญ์ ๋ง๋ค์๋์ง ์๋ฌด๋ ๋ชจ๋ฅด๋ ์ํฉ์ ๋๋ค. ๋ง์ง๋ง ๋ฌธ์ ๋ ์ง์ ๋ถ๋ด์ ๋๋ฆฌ๊ณ ๋ณด์ ์์ ์ ์ง์ฐ์ํต๋๋ค.
๋ํ v1์์ ์ง์ํ์ง ์์ ํญ๋ชฉ์ ๋ฏธ๋ฆฌ ๊ฒฐ์ ํ์ธ์. ๋ง์ ํ์ด ์กฐ์ง ์ ์ฒด ๊ณต์ ํค, ๋ง๋ฃ ์๋ "์๊ตฌ" ํค, ๋ชจ๋ ํ๊ฒฝ์์ ๋์ํ๋ ํค๋ฅผ ํผํฉ๋๋ค. ๊ทธ๋ฐ ์ต์ ์ ์ค๊ณ์ ๋ถ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ๊ฒ์ด ๋์ค์ ๋จ์ํ๋ ค๊ณ ์ ์ฐ๋ ๊ฒ๋ณด๋ค ์ฝ์ต๋๋ค.
์ฌ๋๋ค์ด ์ค์ ๋ก ์ฌ์ฉํ ์ต์ ๊ถํ ์ค์ฝํ ์ค๊ณ
์ต์ ๊ถํ์ ์ฌ์ฉ์๊ฐ ๋ช ์ด ์์ ์ฌ๋ฐ๋ฅธ ์ค์ฝํ๋ฅผ ์ ํํ ์ ์์ด์ผ๋ง ์๋ํฉ๋๋ค. ๋ณด์ ์ ๋ฌธ๊ฐ๊ฐ ์ดํดํด์ผ ํ ์์ค์ด๋ผ๋ฉด ์ฌ์ฉ์๋ค์ "์ ์ฒด ์ ๊ทผ"์ ์ ํํ๊ณ ๋์ด๊ฐ๋๋ค.
์ฌ๋์ด ์ค๋ช
ํ ๋ฒํ ๋์ ๋ชฉ๋ก์ผ๋ก ์์ํ์ธ์. "์ก์ฅ ๋ณด๊ธฐ"๋ ๋ช
ํํฉ๋๋ค. billing.read๋ ๊ด์ฐฎ์ง๋ง UI๊ฐ ํ์ดํ ์ธ์ด๋ก ์ค๋ช
ํด์ค์ผ ํฉ๋๋ค. ์ด ์ ์ ํ์ ์ ๋ ์ค์ํฉ๋๋ค. ๊ณ ๊ฐ์ด ๋์ฒด ํค๊ฐ ์ด์ ํค์ ์ผ์นํ๋์ง ํ์ ํด์ผ ํ๋๊น์.
์ค์ฝํ ์งํฉ์ ์๊ณ ์์ ์ ์ด๋ฉฐ ์ค์ ์ ๋ฌด ์ค์ฌ์ผ๋ก ๊ทธ๋ฃนํํ์ธ์. ์:
- ๋ณด๊ณ (์ก์ฅ, ๊ณ ๊ฐ, ์ ์ฐ ๋ณด๊ธฐ)
- ๊ณ ๊ฐ ์ง์(๊ณ ๊ฐ ์กฐํ, ํ๋ถ ์ฒ๋ฆฌ)
- ์ฃผ๋ฌธ ๊ด๋ฆฌ(์ฃผ๋ฌธ ์์ฑ, ์ํ ์ ๋ฐ์ดํธ, ์ทจ์)
- ์นํํฌ(์๋ํฌ์ธํธ ์์ฑ, ๋น๋ฐ ํ์ )
- ๊ด๋ฆฌ์(์ฌ์ฉ์ ๊ด๋ฆฌ, API ํค ๊ด๋ฆฌ)
์์ ํ ๊ธ์ด 50๊ฐ๋ ๋์ง ์๊ฒ ํ์ธ์. ๊ธด ๋ชฉ๋ก์ด ์๋ค๋ฉด ๋ณดํต ์ค์ฝํ๊ฐ ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ๊ทธ๋๋ก ๋ฐ์ํ๊ณ ์์์ ์๋ฏธํฉ๋๋ค. ์ฌ๋๋ค์ ์ค์ ์์ ๋ฐฉ์์ ๋ง๊ฒ ๋ง๋ค์ง ๋ชปํ ๊ฒ์ ๋๋ค.
์์ ํ ๊ธฐ๋ณธ๊ฐ์ ์ ๊ณตํ์ธ์. ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก์ ๋ํด "๊ถ์ฅ ๋ฒ๋ค"์ ์ ์ํ๊ณ ๊ฐ ๋ฒ๋ค์ด ๋ฌด์์ ํ๋์ง ๋ช ํํ ํ์ธ์. ์๋ฅผ ๋ค์ด "ํ๊ณ ํตํฉ" ๋ฒ๋ค์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ก์ฅ๊ณผ ์ ์ฐ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ํ๊ณ ํ๋ถ์ ๋๋ ์์ ๋๋ค. ๊ณ ๊ธ ์ฌ์ฉ์๋ ์ฌ์ ํ ์ปค์คํฐ๋ง์ด์ฆํ ์ ์๊ฒ ํฉ๋๋ค.
์ํ๋๊ฐ ๋์ ์ค์ฝํ์๋ ์ผ๋ถ๋ฌ ๋ง์ฐฐ์ ์ถ๊ฐํ์ธ์. ์ถ๊ฐ ํ์ธ ๋จ๊ณ, ๊ด๋ฆฌ์ ์ ์ฉ ๊ถํ, ์๊ฐ ์ ํ๋ ๊ถํ ์์น, ๊ฐ์ฌ ๋ก๊ทธ์ ์ ์ฅ๋๋ ํ์ ์ฌ์ ๊ฐ์ ๋ฐฉ์์ด ์์ต๋๋ค.
์์: ํํธ๋๊ฐ ์ก์ฅ์ ์์ฌ ์์คํ
๊ณผ ๋๊ธฐํํด์ผ ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ์๋ orders:read์ customers:read ๊ฐ์ ์ฝ๊ธฐ ๊ถํ๋ง ์ฃผ๊ณ "์ฒญ๊ตฌ ๊ด๋ฆฌ" ๊ฐ์ ๊ถํ์ ์ฃผ์ง ๋ง์ธ์. ๋์ค์ ํ๋ถ์ด ํ์ํ๋ฉด ๊ทธ ๋จ์ผ ๊ถํ๋ง ์์ฒญํ๋๋ก ํ๊ณ ์น์ธํ๋ฉด ๋ฉ๋๋ค.
ํค ๊ด๋ฆฌ UX: ์ค์๋ฅผ ๋ง๋ ํ๋ฉด๊ณผ ๋ฌธ๊ตฌ
๊ธฐ๋ณธ ํ์ด์ง๋ ํ ๊ฐ์ง ์ง๋ฌธ์ ๋น ๋ฅด๊ฒ ๋ตํด์ผ ํฉ๋๋ค: "์ง๊ธ ์ด๋ค ํค๊ฐ ์กด์ฌํ๋ฉฐ ์์ ํ๊ฐ?" ๊ฐ๋จํ ํ ์ด๋ธ์ด ๋ณดํต ๊ฐ์ฅ ์ ์๋ํฉ๋๋ค: ํค ์ด๋ฆ, ํ๊ฒฝ, ์ํ(ํ์ฑ, ๋ง๋ฃ, ํ๊ธฐ), ๋ง์ง๋ง ์ฌ์ฉ ์๊ฐ, ์งง์ ์ค์ฝํ ์์ฝ. ๋น ์ํ๋ ๊ฐ๋ฅด์น๋ ๋น๋ํ์ง ๋ง์ธ์: "์์ง ํค๊ฐ ์์ต๋๋ค. ํน์ ์ฑ์ด๋ ํํธ๋์ฉ์ผ๋ก ํ์ํ ์ค์ฝํ๋ง ๊ฐ์ง ํค๋ฅผ ์์ฑํ์ธ์."์ฒ๋ผ์.
ํค ์์ฑ์ ๋ฌด์์ ๋น๋ฐ์ ์์ฑํ๋ ํ์๊ฐ ์๋๋ผ ๊ถํ์ ์ค์ ํ๋ ๋๋์ด์ด์ผ ํฉ๋๋ค. ํ๋ฆ์ ์งง๊ฒ ์ ์งํ๊ณ ํ์ดํ ๋ ์ด๋ธ์ ์ฐ๋ฉฐ ์ฌ๋๋ค์ด ์์ฃผ ๋งํ๋ ๊ณณ์ ์์ ๋์๋ง์ ์ถ๊ฐํ์ธ์.
๊ฒฌ๊ณ ํ ์์ฑ ํผ์๋ ๋ณดํต ๋ค์์ด ํ์ํฉ๋๋ค:
- ์ด๋ฆ(ํ์): "Payroll dashboard (prod)"์ฒ๋ผ "Key 1"๋ณด๋ค ๊ตฌ์ฒด์ ์ธ ์ด๋ฆ.
- ํ๊ฒฝ(ํ์): ํ ์คํธ vs ํ๋ก๋์ ์ด ๋ช ํํ ๊ตฌ๋ถ๋์ด์ผ ํฉ๋๋ค.
- ์ค์ฝํ(ํ์): ์์ ํ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์์ํ๊ณ ์ฌ์ฉ์๊ฐ ์ถ๊ฐํ๋๋ก ํฉ๋๋ค.
- ๋ง๋ฃ(์ ํ์ด์ง๋ง ๊ถ์ฅ): "90์ผ" ๊ฐ์ ์ฌ์ด ํ๋ฆฌ์ .
- ์์ฑ์/์์ ์(์๋): ๋์ค์ ์ฐ๋ฝํ ์ฌ๋์ ํ์.
๋น๋ฐ์ ์์ฑํ ๋๋ ํ ๋ฒ๋ง ๋ณด์ฌ์ฃผ๊ณ ์ด์ ๋ฅผ ๊ฐ๋จํ ์ค๋ช ํ์ธ์: "๋ณด์์ ์ํด ์์ฑ ํ ์๋ณธ์ ์ ์ฅํ์ง ์์ต๋๋ค. ์ง๊ธ ๋ณต์ฌํ์ธ์. ๋ค์ ๋ณผ ์ ์์ต๋๋ค." ๋ณต์ฌ ํ ๋ฒ์ ์ํ ๋ช ํํ ๋์๊ณผ ๊ฐ๋ฒผ์ด ํ์ธ(์: "์ด ๋น๋ฐ์ ์์ ํ ์ฅ์์ ์ ์ฅํ์ต๋๋ค")์ ์ ๊ณตํ์ธ์.
ํ๊ธฐ์ ํ์ ์ ์ฐพ๊ธฐ ์ฌ์ฐ๋ฉด์๋ ์ค์๋ก ์คํ๋๊ธฐ ์ด๋ ต๊ฒ ๋ง๋์ธ์. "๊ด๋ฆฌ" ๋ฉ๋ด ๋ค์ ๋๊ณ ์ํฅ์ด ๋ช ํํ๊ฒ ๋๋ฌ๋๋ ๋ฌธ๊ตฌ๋ฅผ ์ฌ์ฉํ์ธ์:
- ํ๊ธฐ(Revoked): "์ฆ์ ์๋์ ๋ฉ์ถฅ๋๋ค. ์ด๋ฅผ ์ฌ์ฉํ๋ ์ฑ์ ์คํจํฉ๋๋ค."\n- ํ์ (Rotate): "์ ํค๋ฅผ ์์ฑํ์ฌ ์์ ํ๊ฒ ์ ํํ ๋ค์ ์ด์ ํค๋ฅผ ํ๊ธฐํฉ๋๋ค."
ํ์ ์ ์ง์ํ๋ค๋ฉด ์๋ด ๋ค์ด์ผ๋ก๊ทธ๊ฐ ๋์์ด ๋ฉ๋๋ค: ์ด์ ํค ๋ผ๋ฒจ, ์ ํค ๋ผ๋ฒจ, ์ปท์คํ ์๊ฐ ์ ์ ํธ์ถ ์์คํ ์ ์ ๋ฐ์ดํธํ๋ผ๋ ์๋ฆผ์ ๋ณด์ฌ์ฃผ์ธ์.
์ง์ํ์ด ํญ์ ๋ฌป๋ ์ง๋ฌธ์ ๋ตํ๋ ์ฌ์ฉ ๋ก๊ทธ
๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ์ง์ํ์ ๋ณดํต ๊ฐ์ ์ง๋ฌธ์ ํฉ๋๋ค: ์ด๋ค ํค๊ฐ ์ฌ์ฉ๋์๋, ๋ฌด์์ ์๋ํ๋, ๋ฌด์์ด ๋ณ๊ฒฝ๋์๋. ์ข์ API ์ฌ์ฉ ๋ก๊ทธ๋ ์๋ฒ ๋ก๊ทธ๋ฅผ ๋ค์ ์ด์ง ์์๋ ๊ทธ ๋ต์ ๋ช ํํ ํด์ค๋๋ค.
์ ์ฉํ ๋ก๊ทธ ํญ๋ชฉ์ ์์ง๋ง ๊ตฌ์ฒด์ ์ด๋ฉฐ ์ฌ๋๋ค์ด ๋น ๋ฅด๊ฒ ์ค์บํ๊ณ ํํฐ๋งํ ์ ์๋ ์ผ๊ด๋ ํ๋๋ฅผ ๊ฐ์ต๋๋ค:
- ํ์์คํฌํ(์๊ฐ๋ ํฌํจ)
- ํค ID(์๋ฌธ ๋น๋ฐ์ด ์๋)์ ํค ์์ ์
- ์๋ํฌ์ธํธ ๋๋ ์ก์ ์ด๋ฆ(๊ฐ๋ฅํ๋ฉด ์ฌ๋์ด ์ดํดํ๊ธฐ ์ฌ์ด ํ์)
- ์์ค IP์ ์ ์ ์์ด์ ํธ(๊ฐ๋ฅํ ๊ฒฝ์ฐ)
- ๊ฒฐ๊ณผ(์ฑ๊ณต, ์ค์ฝํ์ ์ํด ์ฐจ๋จ, ์ธ์ฆ ์คํจ, ์๋ ์ ํ, ์๋ฒ ์ค๋ฅ)์ ์๋ต ์ฝ๋
๋ก๊ทธ๋ฅผ ํค ์์ธ ํ์ด์ง์ ์ฐ๊ฒฐํ์ธ์. ๋ ๊ฐ์ง ์์ ์งํ๊ฐ ๋ง์ ํฐ์ผ์ ์๋ฐฉํฉ๋๋ค: **์ต์ด ๊ด์ฐฐ ์๊ฐ(First seen)**๊ณผ ๋ง์ง๋ง ์ฌ์ฉ(Last used). "ํ ๋ฒ๋ ์ฌ์ฉ๋ ์ ์์"์ผ๋ก ํ์๋๋ฉด ์ญ์ ํ๋ณด์ด๊ณ , "๋ง์ง๋ง ์ฌ์ฉ"์ด 2๋ ์ ์ด๋ฉด ๋ค์ ํ์ ์์ ๋จ๊ธฐ๊ธฐ ์ด๋ ต์ต๋๋ค.
v1์์๋ ๋ด๋ณด๋ด๊ธฐ(export)๋ณด๋ค ํํฐ๋ง์ด ๋ ์ค์ํฉ๋๋ค. ํํฐ๋ ๊ฐ๋จํ๊ณ ์์ธก ๊ฐ๋ฅํ๊ฒ ํ์ธ์: ์๊ฐ ๋ฒ์, ์ํ(์ฑ๊ณต vs ์ฐจ๋จ vs ์คํจ), ์ก์ /์ค์ฝํ, ํ๊ฒฝ.
๋ณด์กด ๊ธฐ๊ฐ(retention)์ ๋จ์ํ ์ ์ฅ ๋ฌธ์ ๊ฐ ์๋๋ผ ์ ํ ๊ฒฐ์ ์ ๋๋ค. ๋ง์ ํ์ด UI์์ 30~90์ผ์ ์์์ ์ผ๋ก ํ๊ณ ๋ ๊ธด ๊ธฐ๋ก์ ๊ด๋ฆฌ์๋ง ๋ณด๊ฒ ํฉ๋๋ค. UI์ ์ด๋ฅผ ๋ช ํํ ํ์ํด ์ฌ์ฉ์๊ฐ ๋ก๊ทธ๊ฐ "์์ด์ง" ๊ฒ์ผ๋ก ์คํดํ์ง ์๋๋ก ํ์ธ์.
๊ณ ๊ฐ์ ๋์ง ์๋ ์์ ํ ํ์ ๋ชจ๋ธ
ํ์ ์ ์์ธก ๊ฐ๋ฅํ ๋๋ง ์๋ํฉ๋๋ค. ๊ฐ๋จํ ์ ์ฑ ์ ๊ฒ์ํด ๋ ๊ฐ์ง ์ง๋ฌธ์ ๋ตํ์ธ์: ํค๋ฅผ ์ผ๋ง๋ ์์ฃผ ํ์ ํด์ผ ํ๋๊ฐ(์์ฝ ๊ธฐ๋ฐ)์ ์ด๋ค ์ด๋ฒคํธ๊ฐ ์ฆ์ ํ์ ์ ๊ฐ์ ํ๋๊ฐ(์ด๋ฒคํธ ๊ธฐ๋ฐ). ์์ฝ ํ์ ์ ์๋ฅผ ๋ค์ด 90์ผ๋ง๋ค์ผ ์ ์์ต๋๋ค. ์ด๋ฒคํธ ๊ธฐ๋ฐ ํ์ ์ "์ง์์ด ํด์ฌํจ", "ํค๊ฐ ํฐ์ผ์ ๋ถ์ฌ๋ฃ์ด์ง", "๋น์ ์์ ์ฌ์ฉ ๊ธ์ฆ" ๋ฑ์ด ๋ ์ ์์ต๋๋ค.
๊ฐ์ฅ ์์ ํ ๋ชจ๋ธ์ ๊ฒน์นจ(overlap)์ ๋๋ค. ๊ณ ๊ฐ์ด ํ ์๊ฐ์ ํค๋ฅผ ๊ต์ฒดํ๋๋ก ๊ฐ์ํ์ง ๋ง์ธ์. ์ ํค๋ฅผ ๋ง๋ค๊ณ ์ด์ ํค๊ฐ ์ฌ์ ํ ์๋ํ๋๋ก ํ ๋ค ๋ช ํํ ์๊ฐ ์ฐฝ ํ์ ์ด์ ํค๋ฅผ ๋ด๋ฆฌ์ธ์.
์ค์ฉ์ ์ธ ํ๋ฆ:
- ์ ํค๋ฅผ ์์ฑํ๊ณ "ํ์ฑ(Active)"์ผ๋ก ํ์ํฉ๋๋ค.
- ์ด์ ํค๋ ํ์ฑ ์ํ๋ก ์ ์งํ๋ "๊ณง ํ์ "์ผ๋ก ๋ผ๋ฒจ์ ๋ถ์ ๋๋ค.
- ๊ณ ๊ฐ์ด ํด๋ผ์ด์ธํธ๋ฅผ ์ ๋ฐ์ดํธํ๊ณ ํธ์ถ์ด ์ฑ๊ณตํ๋์ง ๊ฒ์ฆํฉ๋๋ค.
- ๊ณ ๊ฐ์ด "ํ์ ์๋ฃ"๋ฅผ ํด๋ฆญํ๊ฑฐ๋ ์ด์ ํค๊ฐ ์๋์ผ๋ก ๋ง๋ฃ๋ฉ๋๋ค.
- ์ด์ ํค๋ "ํ๊ธฐ(Revoked)"๋์ด ๋ค์ ํ์ฑํํ ์ ์์ต๋๋ค.
์ ์ ๊ธฐ๊ฐ์ ์ค์ํ์ง๋ง ๋ช ํํด์ผ ํฉ๋๋ค. ๋ฆฌ์คํธ ๋ทฐ์ ๋ง๋ฃ ๋ ์ง๋ฅผ ํ์ํ๊ณ (์: 14์ผ, 3์ผ, 24์๊ฐ ์ ) ์ฌ์ ์ ๊ฒฝ๊ณ ๋ฅผ ๋ณด์ฌ์ฃผ์ธ์. "๊ณง ๋ง๋ฃ" ๊ฐ์ ๋ชจํธํ ๋ฌธ๊ตฌ๋ฅผ ํผํ๊ณ "์ด ํค๋ 1์ 30์ผ 10:00 UTC์ ์๋์ ๋ฉ์ถฅ๋๋ค."์ฒ๋ผ ๊ตฌ์ฒด์ ์ผ๋ก ์ฐ์ธ์.
์๋ ์ ํ(rate limits)๊ณผ ์ ๊ธ์ ์ ์ ๋์์ ์ฒ๋ฒํ์ง ์์ผ๋ฉด์ ๊ณ์ ์ ๋ณดํธํด์ผ ํฉ๋๋ค. ๋ง์ ํด๋ผ์ด์ธํธ๊ฐ ๋คํธ์ํฌ ํ์์์ ์ดํ ์ฌ์๋ํ๋ฏ๋ก ์คํจ ๋ช ๋ฒ์ผ๋ก ์ ๊ทธ๋ฉด ์ค๊ฒฝ๋ณด๊ฐ ๋ฐ์ํฉ๋๋ค. ๊ท์น์ ์ดํดํ๊ธฐ ์ฝ๊ฒ ์ ์งํ์ธ์:
- ํค๋ณ ๋ฐ IP๋ณ ์๋ ์ ํ(๊ณ์ ๋ณ๋ง์ด ์๋).
- 401 ์ค๋ฅ๋ ํ์์์๊ณผ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌ.
- ๋จผ์ ๊ฒฝ๊ณ ํ๊ณ , ์ผ์์ ์ผ๋ก ํธ๋ํฝ์ ์ ํํ ๋ค, ํ์ํ๋ฉด ์ ํค๋ฅผ ์๊ตฌ.
- UI์ ํญ์ ์ด์ ๋ฅผ ํ์: "120์์ฒญ/๋ถ์ผ๋ก ์ธํด ์ ํ๋จ."
์์: ํํธ๋๊ฐ ๋ ์ง์ญ์์ API๋ฅผ ์ฌ์ฉํฉ๋๋ค. ํ์ ๋์ ๋ ํค๊ฐ 7์ผ๊ฐ ๋ชจ๋ ์๋ํ๋ฉด ๋ฐฐํฌ๊ฐ ํ๋ฐค์ค ์ปท์ค๋ฒ๋ ์ง์ ํฐ์ผ ์์ด ์์ ํ๊ฒ ์งํ๋ฉ๋๋ค.
๋ชจ๋ํฐ๋ง๊ณผ ์๋ฆผ: ๋ฌด์์ ๋ณด์ฌ์ฃผ๊ณ , ๋ฌด์์ ์๋ฆด์ง
์ข์ ๋ชจ๋ํฐ๋ง์ "๋ณด์ ์ผ์๋"๊ฐ ์๋๋ผ ํ ๊ฐ์ง ์ง๋ฌธ์ ๋น ๋ฅด๊ฒ ๋ตํ๋ ๊ฒ์ ๋๋ค: ์ด ํค๊ฐ ์์ ์๊ฐ ๊ธฐ๋ํ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ๋๊ณ ์๋?
ํค ๋ชฉ๋ก์๋ ์ฌ๋๋ค์ด ๋น ๋ฅด๊ฒ ํ์ด๋ณผ ์ ์๋ ์ํ ์นฉ์ ๋ณด์ฌ์ฃผ์ธ์. "ํ์ฑ(Active)"๊ณผ "ํ๊ธฐ(Revoked)"๋ ๋ช ํํ์ง๋ง "๊ณง ๋ง๋ฃ(Expiring soon)"๋ ์๊ธฐ์น ์์ ์ค๋จ์ ๋ง์ต๋๋ค. ๊ฐ๋จํ "๋ง์ง๋ง ์ฌ์ฉ(Last used)" ํ์์คํฌํ์ "ํ ๋ฒ๋ ์ฌ์ฉ ์ ํจ(Never used)" ํ์๋ ์ถ๊ฐํ์ธ์.
๋ก๊ทธ ๋ทฐ๋ ๋จ์ํ ์์ ์์ฒญ๋ณด๋ค ํจํด์ ๊ฐ์กฐํด์ผ ํฉ๋๋ค. ํ๋ คํ ๊ทธ๋ํ๊ฐ ์์ด๋ ์ ์ฉํ ์ ์์ต๋๋ค. ๋ช ๊ฐ์ง ์ ๊ณ ๋ฅธ ์ ํธ๊ฐ ๋๋ถ๋ถ์ ๋ฌธ์ ๋ฅผ ์ก์ต๋๋ค:
- ์์ฒญ์ด๋ ์คํจ์ ๊ฐ์์ค๋ฌ์ด ๊ธ์ฆ(ํนํ ๋ง์ 401)
- ์๋ก์ด IP ๋ฒ์๋ ์๋ก์ด ๊ตญ๊ฐ์์ ์ฒ์ ๊ด์ฐฐ
- ์์ฃผ๊ฐ ์กฐ์ฉํ๋ ํค๊ฐ ๋ค์ ํธ์ถ์ ์์ํจ
์๋ฆผ์ ๋๋ฌผ๊ณ ์คํ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค. ๋ชจ๋ ๊ฒ์ ์๋ฆฌ๋ฉด ์ฌ์ฉ์๋ ๋ฌด์ ์ฒ๋ฆฌํ๊ณ ์ ๋ง ์ค์ํ ์๋ฆผ์ ๋์นฉ๋๋ค. ์ค์ฉ์ ์ธ v1 ์๋ฆผ ์ธํธ:
- ํค ๊ณง ๋ง๋ฃ(์: 7์ผ, 1์ผ)
- ์ค๋ ๋นํ์ฑ ํ ์ฒซ ์ฌ์ฉ
- ์งง์ ๊ธฐ๊ฐ ๋ด ๋ง์ 401
๋ฏผ๊ฐํ ์ค์ฝํ์ ๊ฒฝ์ฐ ์์ฑ, ํ์ , ํ์ฅ ์ ์ MFA๋ ์น์ธ ๋จ๊ณ ๊ฐ์ ๋ ๊ฐํ ๊ฒ์ดํธ๋ฅผ ์ถ๊ฐํ ๊ฐ์น๊ฐ ์์ต๋๋ค. ์ํฅ์ด ํฐ ๊ณณ์๋ง ์ฐ์ธ์.
๋ฐฑ์๋์ ๋ฐ์ดํฐ ๋ชจ๋ธ: ์ ์ฅํด์ผ ํ ๊ฒ(๊ทธ๋ฆฌ๊ณ ์ ์ฅํ์ง ๋ง์์ผ ํ ๊ฒ)
์ข์ UI๋ ๋ฐฑ์๋๊ฐ ์๋ชป ์ ์ฅํ๋ฉด ์คํจํฉ๋๋ค. ๋ชฉํ๋ ๋จ์ํฉ๋๋ค: ๊ธฐ๋ณธ์ ์ผ๋ก ์์ ํ๊ณ , ๊ฐ์ฌํ๊ธฐ ์ฝ๊ณ , ์ค์ฉํ๊ธฐ ์ด๋ ต๊ฒ ํค๋ฅผ ๋ง๋๋ ๊ฒ.
์๊ณ ๋ช ํํ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ก ์์ํ์ธ์. "๋๊ฐ ๋ฌด์์ ์ธ์ ์ ํ๋๊ฐ"์ ๋ตํ ์ ์์ ๋งํผ์ ํ๋๊ฐ ํ์ํฉ๋๋ค.
ํฌํจํ ํต์ฌ ํ ์ด๋ธ
์ค์ฉ์ ์ธ ์ต์ ๊ตฌ์ฑ์:
- api_keys: id, owner_id, environment, status(ํ์ฑ/ํ๊ธฐ), created_at, last_used_at, expires_at(์ ํ), key_prefix, secret_hash, rotated_from_key_id(์ ํ)
- scopes: id, name, description, risk_level(์ ํ)
- api_key_scopes: api_key_id, scope_id
- audit_events: actor_id, action, target_type, target_id, metadata, created_at
์ค์ฝํ ๋ชจ๋ธ์ ์์ ์ ์ผ๋ก ์ ์งํ์ธ์. ์ค์ฝํ๋ฅผ ๋์ค์ ์ด๋ฆ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ญ์ ํ๋ฉด ํตํฉ์ด ๊นจ์ง๊ณ ๋ก๊ทธ๊ฐ ํผ๋์ค๋ฌ์์ง ์ ์์ต๋๋ค.
์๋ฌธ ๋น๋ฐ์ ์ ๋ ์ ์ฅํ์ง ๋ง์ธ์
API ํค๋ ๋น๋ฐ๋ฒํธ์ฒ๋ผ ์ทจ๊ธํ์ธ์. ์์ฑ ์ ํ ๋ฒ๋ง ๋ณด์ฌ์ฃผ๊ณ ์ดํ์๋ ์ผ๋ฐฉํฅ ํด์(๋ฐ ํค๋ณ ์ํธ)๋ง ์ ์ฅํ์ธ์. ์ง์๊ณผ UX ์ฉ๋๋ก ํค๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํ ์งง๊ณ ๋น๋ฐ์ด ์๋ ์๋ณ์(์: "live_2F9Kโฆ")๋ฅผ ์ ์ฅํ์ธ์.
ํ์ ์ ๊ฒฝ์ฐ ์ ํค์ ์ด์ ํค์ ๊ด๊ณ(rotated_from_key_id)๋ฅผ ์ ์ฅํ์ธ์. ์ด๋ ๊ฒ ํ๋ฉด ์ค๋๋ ๋น๋ฐ์ ๋ณด๊ดํ์ง ์๊ณ ๋ ๊น๋ํ ๊ธฐ๋ก์ ์ ์งํ ์ ์์ต๋๋ค.
๊ฐ์ฌ ์ถ์ ๊ณผ ์ ๊ทผ ์ ์ด
๋ชจ๋ ๋ฏผ๊ฐํ ๋ณ๊ฒฝ์ ๊ฐ์ฌ ์ด๋ฒคํธ๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค: ์์ฑ, ์ค์ฝํ ๋ณ๊ฒฝ, ํ์ , ํ๊ธฐ, ๋ก๊ทธ ์กฐํ ๋ฑ. ๋๊ฐ ๋ฌด์์ ํ ์ ์๋์ง ๋ฏธ๋ฆฌ ๊ฒฐ์ ํ์ธ์. ์ผ๋ฐ์ ์ธ ์ค์ ์ ๊ด๋ฆฌ์๊ฐ ๋ชจ๋ ํค๋ฅผ ๊ด๋ฆฌํ๊ณ ๋ชจ๋ ๋ก๊ทธ๋ฅผ ๋ณผ ์ ์๊ณ , ๊ฐ๋ฐ์๋ ์์ ์ ํค๋ฅผ ๊ด๋ฆฌํ๊ณ ์์ ์ ๋ก๊ทธ๋ง ๋ณผ ์ ์์ผ๋ฉฐ, ์ง์/์ฝ๊ธฐ ์ ์ฉ ์ญํ ์ ๋น๋ฐ์ ๋ณด๊ฑฐ๋ ์ค์ฝํ๋ฅผ ๋ณ๊ฒฝํ ์ ์๊ณ ๋ก๊ทธ๋ง ๋ณผ ์ ์๊ฒ ํ๋ ๊ฒ์ ๋๋ค.
๋ณด์ ์ํ๊ณผ ์ง์ ๋ถ๋ด์ ๋ง๋๋ ํํ ์ค์๋ค
ํ์ ์ ์ง์ ์ ๋ชฝ์ผ๋ก ๋ง๋๋ ๊ฐ์ฅ ๋น ๋ฅธ ๋ฐฉ๋ฒ์ ์ํํ ์ ํ์ ์ ์์ฒ๋ผ ๋๋ผ๊ฒ ํ๋ UI๋ฅผ ์ถ์ํ๋ ๊ฒ์ ๋๋ค. ๋๋ถ๋ถ์ ๋ฌธ์ ๋ ์์ธก ๊ฐ๋ฅํ ๋ช ๊ฐ์ง ํจ์ ์์ ์ต๋๋ค.
์ง๋์น๊ฒ ๊ด๋ ํ ๊ธฐ๋ณธ๊ฐ
๊ธฐ๋ณธ ํค๊ฐ "๋ชจ๋ ๊ฒ์ ํ ์ ์๋ค"๋ฉด ๋๋ถ๋ถ ์ฌ๋์ ์ขํ์ง ์์ ๊ฒ์ ๋๋ค. ์ฒซ ํค๋ฅผ ๊ทธ๋๋ก ํ๋ก๋์ ์ ๋ณต์ฌํ๊ณ ์์ด๋ฒ๋ฆฝ๋๋ค.
๋ ์์ ํ ํจํด์ ์ต์ ์ค์ฝํ ๊ธฐ๋ณธ๊ฐ๊ณผ ๋ฌด์ธ๊ฐ ์คํจํ์ ๋์ ๋ช ํํ ์ค๋ฅ(์: "missing scope: invoices.read"). "์ ์ฒด ์ ๊ทผ" ์ต์ ์ด ํ์ํ๋ค๋ฉด ๋ช ์์ ์ธ ์ ํ์ผ๋ก ์งง์ ๊ฒฝ๊ณ ๋ฅผ ๋ถ์ด์ธ์.
์ ์ฒด๋ถ๋ช ์ ํค์ ์ ์ฒด๋ถ๋ช ์ ์ค๋จ
ํค์๋ ์์ ์์ ๋ชฉ์ ์ด ํ์ํฉ๋๋ค. ์ด ํ๋๊ฐ ์์ผ๋ฉด ๋ช ์ฃผ ํ "์ด๋ค ํค๊ฐ ๋ฌธ์ ์ธ์ง?" "์ด๊ฑธ ์ญ์ ํ ์ ์๋?" ๊ฐ์ ํฐ์ผ์ด ์์ ๋๋ค.
์์ฑ ์ ๋ ๊ฐ์ง ์์ ์ ๋ ฅ์ ์๊ตฌํ์ธ์:
- ์์ ์(์ฌ๋ ๋๋ ํ)
- ๋ชฉ์ (์: "Zapier ํตํฉ" ๋๋ "Partner ABC sandbox")
ํ์ ๋ ํํ ์ฅ์ ์ ๋ฐ์์ ๋๋ค. ์ด์ ํค๋ฅผ ์ฆ์ ๋ฌดํจํํ๋ ๊ฐ์ ์ปท์ค๋ฒ๋ฅผ ํ๋ฉด ๊ณ ๊ฐ์ ๋ค์ดํ์์ ๊ฒฝํํฉ๋๋ค. ๊ฒน์นจ์ ํ์ฉํ์ธ์: ์ ํค ์์ฑ โ ์ด์ ํค ๋จ๊ธฐ ์ ํจ ์ ์ง โ ์ด์ ํค ๋นํ์ฑํ.
๊ธฐ๋ณธ ์ง๋ฌธ์ ๋ตํ์ง ๋ชปํ๋ ๋ก๊ทธ
๋ก๊ทธ๊ฐ ์คํจํ๋ ์ด์ ๋ ๋ณดํต ์ง์์ ํ์ํ ํ ๊ฐ์ง ํญ๋ชฉ์ด ๋น ์ก๊ธฐ ๋๋ฌธ์ ๋๋ค: ์ด๋ค ํค๊ฐ ์ฌ์ฉ๋์๋๊ฐ. ์ ์ฉํ ํญ๋ชฉ์๋ ํค id(๋น๋ฐ ์๋), ํ์์คํฌํ, ์๋ํฌ์ธํธ/์ก์ , ํ๊ฒฝ, ๊ฒฐ๊ณผ(์ฑ๊ณต/์คํจ ๋ฐ ์ํ ์ฝ๋)๊ฐ ํฌํจ๋์ด์ผ ํฉ๋๋ค. ๊ฒฐ๊ณผ ์ฝ๋ ์์ด๋ "์๋ชป๋ ํค"์ธ์ง "์ค์ฝํ ๋ถ์กฑ"์ธ์ง "์๋ฒ ์ค๋ฅ"์ธ์ง ์ ์ ์์ต๋๋ค.
"๋์์ด ๋๋" UX๋ก ๋น๋ฐ์ด ์ ์ถ๋จ
์์ฑ ํ ๋น๋ฐ์ ๋ค์ ๋ณด์ฌ์ฃผ์ง ๋ง์ธ์. ์ด๋ฉ์ผ๋ก ๋ณด๋ด์ง ๋ง์ธ์. ์คํฌ๋ฆฐ์ท, ๋ด๋ณด๋ด๊ธฐ, "ํ์๊ณผ ๊ณต์ " ํ๋ฆ์ ํฌํจ์ํค์ง ๋ง์ธ์. ๋๊ตฐ๊ฐ ๋ถ์คํ๋ฉด ํด๊ฒฐ์ฑ ์ ์ ํค๋ฅผ ๋ง๋ค๊ณ ํ์ ํ๋ ๊ฒ์ ๋๋ค.
์ถ์ ์ ์ ํ์ธํ ๋น ๋ฅธ ์ฒดํฌ๋ฆฌ์คํธ
์ถ์ ์ ์ ๋น ๋ฅธ ์ง์ยท๋ณด์ ์ ๊ฒ์ ํ์ธ์. ์ข์ ํค ํ๋ฉด์ ํค ์์ฑ๋ฟ ์๋๋ผ ์์ ํ ์ ํ์ ์ฝ๊ฒ ๋ง๋๋ ๊ฒ์ด ํต์ฌ์ ๋๋ค.
- ๋ชจ๋ ํค์ ๋ช ํํ ์์ ์์ ๋ชฉ์ ์ด ์์. "๋๊ฐ ์์ ํ๊ณ ์ ์กด์ฌํ๋๊ฐ?"์ ๋ตํ ์ ์์ด์ผ ํฉ๋๋ค.
- ํ ๊ณณ์์ "๋๊ฐ ๋ง์ง๋ง์ผ๋ก ์ฌ์ฉํ๋"์ ๋ตํ ์ ์์. ๊ฐ ํค์ ๋ํด ๋ง์ง๋ง ์ฌ์ฉ ์๊ฐ, ํ๊ฒฝ, ํธ์ถ ์ฑ/ํด๋ผ์ด์ธํธ๋ฅผ ๋ณด์ฌ์ฃผ์ธ์.
- ๋ฐ์ ๋ ์๋ ํ์ ์ด ์์ ํจ. ์ ํ ์ค ๋ ๊ฐ์ ํ์ฑ ํค๋ฅผ ์ง์ํ๊ณ ๊ฐ๋จํ ๊ณํ์ ๋ณด์ฌ์ฃผ์ธ์: ์ ํค ์์ฑ โ ํด๋ผ์ด์ธํธ ์ ๋ฐ์ดํธ โ ํธ๋ํฝ ํ์ธ โ ์ด์ ํค ๋นํ์ฑํ.
- ๋ฏผ๊ฐํ ์ค์ฝํ๋ ๋ช ํํ๊ณ ๋ณดํธ๋จ. ๊ณ ์ํฅ ์ค์ฝํ๋ฅผ ํ์ดํ ๋จ์ด๋ก ๋ผ๋ฒจ๋งํ๊ณ ์์ฒญ ์ ์ถ๊ฐ ๋จ๊ณ๋ฅผ ๊ฑธ๊ธฐ.
- ํ๊ธฐ๋ ๋น ๋ฅด๊ณ ์ํฅ์ด ์ธก์ ๊ฐ๋ฅํจ. ์ ์ถ๋ ํค๋ ๋ช ์ด ๋ด์ ํ๊ธฐ ๊ฐ๋ฅํ๊ณ ๋ก๊ทธ๊ฐ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ฌ๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
๋ ธ์ฝ๋ ๋๊ตฌ๋ก ๋ง๋ ๋ค๋ฉด ์ด๋ฌํ ํฌ์ธํธ๋ฅผ ๋์ค์ "๊ฐ์ "์ด ์๋๋ผ ์ด๊ธฐ UI ์๊ตฌ์ฌํญ์ผ๋ก ๋ค๋ฃจ์ธ์. ์ด๋ค์ด ํค ๊ด๋ฆฌ๊ฐ ์ฌ๊ณ ๋ฅผ ์ค์ด๋์ง ๋ง๋ค์ง ๊ฒฐ์ ํฉ๋๋ค.
์์: ํํธ๋์๊ฒ ์ ์ฒด ๊ณ์ ์ ์ฃผ์ง ์๊ณ ์ ๊ทผ ๊ถํ ๋ถ์ฌํ๊ธฐ
์ผ๋ฐ์ ์ํฉ: ๋ฌผ๋ฅ ํํธ๋๊ฐ ์ก์ฅ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ๊ฐ์ ๋ฐฐ์ก์ ์์ฑํด์ผ ํฉ๋๋ค. ์ฃผ๋ฌธ์ ๋ณ๊ฒฝํ๊ฑฐ๋ ํ๋ถ์ ์ฒ๋ฆฌํ๊ฑฐ๋ ๊ณ ๊ฐ ์ง์ ๋ ธํธ๋ฅผ ๋ณผ ํ์๋ ์์ต๋๋ค. ์ ์ฒด ์ ๊ทผ ํค๋ฅผ ๊ฑด๋ค๋ฉด ๊ณต๊ฒฉ ๋ฒ์๊ฐ ๋์ด์ง๋๋ค.
๊ฐ๋จํ๊ณ ์์ ํ ํ๋ฆ(ํํธ๋์๊ฒ ๋น ๋ฅด๊ฒ ๋๊ปด์ง): ๊ฐ๋ฐ์ ํฌํธ์์ ๊ณ์ ์์ ์๊ฐ "Logistics Partner - Orders Read"๋ผ๋ ์ ํค๋ฅผ ์์ฑํฉ๋๋ค. ์ฝ๊ธฐ ์ ์ฉ ์ค์ฝํ์ธ orders:read๋ง ์ ํํ๊ณ ๋ง๋ฃ์ผ(์: 90์ผ)์ ์ค์ ํ๋ฉฐ, ํ์ค์ ์ด๋ผ๋ฉด ์๋ ค์ง IP ๋ฒ์๋ก๋ง ํ์ฉํ ์๋ ์์ต๋๋ค.
๋ณต์ฌ ๋จ๊ณ๋ ๋ช ํํ๊ฒ ํ์ํ์ธ์: ํ ํฐ์ ํ ๋ฒ๋ง ๋ณด์ฌ์ฃผ๊ณ "์ง๊ธ ๋ณต์ฌํ์ธ์. ์ด ํค๋ ๋ค์ ๋ณผ ์ ์์ต๋๋ค." ๊ฐ์ ๋ฌธ๊ตฌ๋ฅผ ๋ถ๋ช ํ ์ ์ต๋๋ค. ์ด ํ ๋ฌธ์ฅ์ด ๋ง์ ์ง์ ํฐ์ผ์ ์๋ฐฉํฉ๋๋ค.
๋ฉฐ์น ํ ํํธ๋๊ฐ "API๊ฐ ๋ค์ด๋ ๊ฒ ๊ฐ๋ค"๊ณ ๋ณด๊ณ ํ๋ฉด ์ฌ์ฉ ๋ก๊ทธ๋ ๋ช ์ด ๋ง์ ์ค์ง์ ์ง๋ฌธ์ ๋ตํด์ค์ผ ํฉ๋๋ค:
- ์ด๋ค ์๋ํฌ์ธํธ๊ฐ ํธ์ถ๋์๊ณ , ์ด๋ค ํค๊ฐ ์ฌ์ฉ๋์๋๊ฐ
- ๋ฐํ๋ ์ํ ์ฝ๋์ ์ค๋ฅ ๋ฉ์์ง
- IP ์ฃผ์์ ์ ์ ์์ด์ ํธ(ํด๋น๋๋ ๊ฒฝ์ฐ)
- ์ง์ ์ถ์ ์ฉ ํ์์คํฌํ์ ์์ฒญ ID
์ด ์๋๋ฆฌ์ค์์ ๋ก๊ทธ๋ ์ข
์ข
๊ฐ๋จํ ๋ฌธ์ ๋ฅผ ๋๋ฌ๋
๋๋ค: ๊ทธ๋ค์ด ์ฝ๊ธฐ ์ ์ฉ ํค๋ก /orders/update๋ฅผ ํธ์ถํ๊ฑฐ๋ ์์ฒญ์ด ํ์ฉ ๋ชฉ๋ก์ ์๋ ์๋ก์ด IP์์ ์ค๊ณ ์๋ค๋ ์์
๋๋ค. ์ด์ ์ง์์ ์ถ์ธกํ๋ ๋์ ํ๋์ ๋ช
ํํ ์์ ์์ ์ค ์ ์์ต๋๋ค.
ํ์ ์ ์ข์ UX๊ฐ ์ง๊ฐ๋ฅผ ๋ฐํํ๋ ์๊ฐ์
๋๋ค. ํํธ๋์ ๊ณ์ฝ์๊ฐ ๋ ๋๋ฉด ๋์ผํ orders:read ์ค์ฝํ๋ก ์ ํค๋ฅผ ๋ง๋ค๊ณ ๋ ํค๋ฅผ ๋จ๊ธฐ๊ฐ ๊ฒน์น๊ฒ ์ ์งํ ํ ์ ํค๋ก ํตํฉ์ด ํ์ธ๋๋ฉด ์ด์ ํค๋ฅผ ํ๊ธฐํฉ๋๋ค.
์ฑ๊ณต์ ์ด๋ ์ต๋๋ค: ํํธ๋๊ฐ ํ์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์จ๋ณด๋ฉํ๊ณ , ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ทผ์ ์ต์ํ๋๋ฉฐ, ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ๋ฌด์์ด ์ผ์ด๋ฌ๋์ง ์ ํํ ๋ณด๊ณ ์ ์ํ ๋์ํ ์ ์์ต๋๋ค.
๋ค์ ๋จ๊ณ: v1์ ์ถ์ํ๊ณ ์ ์ฒด๋ฅผ ๋ค์ ์ฐ์ง ๋ง๊ณ ๊ฐ์ ํ์ธ์
์๊ฒ ์์ํ์ธ์. ๊น๋ํ v1์ด ๋ช ๋ฌ ๊ฑธ๋ ค๋ ์ฌ๋๋ค์ ํผ๋์ค๋ฝ๊ฒ ํ๋ ํ๋ คํ ํฌํธ๋ณด๋ค ๋ซ์ต๋๋ค. ๋๋ถ๋ถ ์ ํ์ ์งง์ ์ค์ฝํ ๋ชฉ๋ก, ๊ธฐ๋ณธ ์ฌ์ฉ ๋ก๊ทธ, ํ๋์ ์์ ํ ํ์ ํ๋ฆ์ผ๋ก ๋๋ถ๋ถ์ ์ค์ ์๊ตฌ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์ธ ๊ฐ์ง ๋น๋ฉ ๋ธ๋ก์ผ๋ก ์์ํ์ธ์: ํค, ์ค์ฝํ, ๋ก๊ทธ. ์ฒ์์ ์ค์ฝํ๋ฅผ ๊ฑฐ์น ๊ฒ(read, write, admin) ์ ์งํ๊ณ ์ฆ๊ฑฐ๊ฐ ์์ ๋๊น์ง ์์ญ ๊ฐ์ง์ ์์ ๊ถํ์ ์ถ๊ฐํ์ง ๋ง์ธ์. ํ์ ์ ์ง๋ฃจํ๊ฒ ๋ง๋์ธ์: ๋ ๋ฒ์งธ ํค ์์ฑ โ ํ ์คํธ โ ์ด์ ํค ํ๊ธฐ.
์๋ํ๋ ๊ฐ๋จํ v1 ์ฒดํฌ๋ฆฌ์คํธ:
- 6~12๊ฐ ์ค์ฝํ(๊ฐ ์ค์ฝํ๊ฐ ํ์ฉํ๋ ๋ฐ์ ๋ํ ๋ช ํํ ์์ ํฌํจ)
- ํค๋ณ ํ๊ฒฝ(prod vs sandbox)๊ณผ ๋ช ํํ ์์ ์
- ์๊ฐ, ์๋ํฌ์ธํธ/์ก์ , ์ํ ์ฝ๋, ํค ๋ผ๋ฒจ์ด ํฌํจ๋ ์ฌ์ฉ ๋ก๊ทธ
- ๊ฒน์นจ์ ์ง์ํ๋ ํ์ ํ๋ฆ(์ผ์์ ์ผ๋ก ๋ ๊ฐ์ ํ์ฑ ํค)
- ์ค์๋ก ํด๋ฆญํ๊ธฐ ์ด๋ ค์ด ํ๊ธฐ ์ก์
v1์ด ๋ผ์ด๋ธ๋ ํ์๋ ์ง์ ํฐ์ผ์ ์ค์ด๋ ๊ณณ์ ์ฐ๋ง๋ฅผ ์ถ๊ฐํ์ธ์. ๋ก๊ทธ ํํฐ(๋ ์ง ๋ฒ์, ์ํ, ์๋ํฌ์ธํธ/์ก์ )๊ฐ ๋ณดํต ์ฒซ ๋ฒ์งธ ์ฑ๊ณผ์ ๋๋ค. ๋ค์์ ๊ฒฝ๋ณด: ๊ธ์ฆ, ๋ฐ๋ณต ์ธ์ฆ ์คํจ, ์ค๋ ๋นํ์ฑ ํ ์ฒซ ์ฌ์ฉ ๋ฑ์ ์๋ฆฌ์ธ์. ๋ฏผ๊ฐํ ์ค์ฝํ์๋ ๋ชจ๋ ๊ฒ์ ๊ด๋ฆฌ์ ์ ์ฉ์ผ๋ก ๋ง๋ค๊ธฐ๋ณด๋ค ์น์ธ ๋จ๊ณ๋ฅผ ์ถ๊ฐํ์ธ์.
์ ํ ๋ด๋ถ์์ UX๋ฅผ ๋ฌธ์ํํ์ธ์. ์ก์ ์์ ์งง์ ๋์๋ง์ด ๊ธด ๋ฌธ์๋ณด๋ค ํจ๊ณผ์ ์ ๋๋ค: "์ ๋ฌด ์๊ฐ์ ํค๋ฅผ ํ์ ํ์ธ์. ํธ๋ํฝ์ด ์ ํ๋ ๋๊น์ง ๋ ํค๋ฅผ ํ์ฑํ ์ํ๋ก ์ ์งํ์ธ์." ๊ฐ์ ๋ฌธ๊ตฌ๊ฐ ์ข์ต๋๋ค.
๋น ๋ฅด๊ฒ ์ ํ ์๋น์ค ํฌํธ์ ๊ตฌ์ถํ๊ณ ์ถ๋ค๋ฉด ๋ ธ์ฝ๋ ์ ๊ทผ๋ฒ์ผ๋ก ์ ๋ชจ๋ธ๋งํ ์ ์์ต๋๋ค: Keys ํ ์ด๋ธ, Scopes ํ ์ด๋ธ, Key-Scope ์กฐ์ธ, Logs ํ ์ด๋ธ, ๊ด๋ฆฌ์์ ์ง์ ์ญํ . On AppMaster (appmaster.io), you can design the database in the PostgreSQL Data Designer, implement rotation and approvals in the Business Process Editor, and ship an admin panel plus customer portal UI with flexible deployment options, including cloud hosting or source export.


