๋ฌด์ค๋จ(์ ๋ก ๋ค์ดํ์) ์คํค๋ง ๋ณ๊ฒฝ: ์์ ํ๊ฒ ์ ์ง๋๋ ์ถ๊ฐ์ ๋ง์ด๊ทธ๋ ์ด์
์ถ๊ฐ์ ๋ง์ด๊ทธ๋ ์ด์ , ์์ ํ ๋ฐฑํ, ๋จ๊ณ์ ๋กค์์์ผ๋ก ์ค๋๋ ํด๋ผ์ด์ธํธ๋ฅผ ์ ์งํ๋ฉด์ ๋ฌด์ค๋จ(์ ๋ก ๋ค์ดํ์) ์คํค๋ง ๋ณ๊ฒฝ์ ์ํํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.

์คํค๋ง ๋ณ๊ฒฝ์์ ๋ฌด์ค๋จ(์ ๋ก ๋ค์ดํ์)์ด ์ค์ ๋ก ์๋ฏธํ๋ ๊ฒ
๋ฌด์ค๋จ ์คํค๋ง ๋ณ๊ฒฝ์ ์๋ฌด ๊ฒ๋ ๋ฐ๊พธ์ง ์๋๋ค๋ ๋ป์ด ์๋๋๋ค. ์ฌ์ฉ์๋ค์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฑ์ ์ ๋ฐ์ดํธํ๋ ๋์ ์คํจ๋ ์์ ์ค๋จ ์์ด ๊ณ์ ์์ ํ ์ ์๊ฒ ํ๋ค๋ ๋ป์ ๋๋ค.
๋ค์ดํ์์ ์์คํ ์ด ์ ์์ ์ผ๋ก ๋์ํ์ง ์๋ ๋ชจ๋ ์๊ฐ์ ๋๋ค. 500 ์๋ฌ, API ํ์์์, ๋น ํ๋ฉด์ด๋ ์๋ชป๋ ๊ฐ์ด ํ์๋๋ ํ๋ฉด, ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์คํจ, ๋๋ ๊ธด ๋ง์ด๊ทธ๋ ์ด์ ์ด ์ ๊ธ์ผ๋ก ์ธํด ์ฝ๊ธฐ๋ ๋์ง๋ง ์ฐ๊ธฐ๋ฅผ ๋ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ์ด ๋ชจ๋ ์ฌ๊ธฐ์ ํด๋นํฉ๋๋ค.
์คํค๋ง ๋ณ๊ฒฝ์ ์ฃผ UI ์ธ์๋ ์ฌ๋ฌ ๊ณณ์ ๊นจ๋จ๋ฆด ์ ์์ต๋๋ค. ํํ ์คํจ ์ง์ ์ผ๋ก๋ ์ค๋๋ ์๋ต ํ์์ ๊ธฐ๋ํ๋ API ํด๋ผ์ด์ธํธ, ํน์ ์ปฌ๋ผ์ ์ฝ๊ฑฐ๋ ์ฐ๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ , ํ ์ด๋ธ์ ์ง์ ์กฐํํ๋ ๋ฆฌํฌํธ, ์๋ํํฐ ํตํฉ, ๊ทธ๋ฆฌ๊ณ "์ด์ ๊น์ง ์ ๋๋" ๋ด๋ถ ๊ด๋ฆฌ์ ์คํฌ๋ฆฝํธ๊ฐ ์์ต๋๋ค.
์ค๋๋ ๋ชจ๋ฐ์ผ ์ฑ๊ณผ ์บ์๋ ํด๋ผ์ด์ธํธ๋ ๋น๋ฒํ ๋ฌธ์ ์ ๋๋ค. ์ด๋ค์ ์ฆ์ ์ ๋ฐ์ดํธํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๋ค ์ฌ์ฉ์๋ ์ฑ ๋ฒ์ ์ ์์ฃผ๊ฐ ์ ์งํ๊ธฐ๋ ํ๊ณ , ์ด๋ค ์ฌ์ฉ์๋ ๊ฐํ์ ์ฐ๊ฒฐ๋ก ์ธํด ์ด์ ์์ฒญ์ ๋์ค์ ์ฌ์๋ํ๊ธฐ๋ ํฉ๋๋ค. ์น ํด๋ผ์ด์ธํธ๋ ์๋น์ค ์์ปค๋ CDN, ํ๋ก์ ์บ์๊ฐ ์ค๋๋ ์ฝ๋๋ฅผ ์ ์งํ๋ฉด "๊ตฌ๋ฒ์ "์ฒ๋ผ ํ๋ํ ์ ์์ต๋๋ค.
์ง์ง ๋ชฉํ๋ "ํ๋์ ํฐ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋นจ๋ฆฌ ๋๋ด๊ธฐ"๊ฐ ์๋๋๋ค. ์๋ก ๋ค๋ฅธ ํด๋ผ์ด์ธํธ๊ฐ ๋ค๋ฅธ ๋ฒ์ ์ ์ฌ์ฉํ๋ ์ํฉ์์๋ ๊ฐ ๋จ๊ณ๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ์๋ํ๋ ์์ ๋จ๊ณ๋ค์ ์ฐ์์ ๋๋ค.
์ค์ฉ์ ์ธ ์ ์: ์๋ก์ด ์ฝ๋์ ์๋ก์ด ์คํค๋ง๋ฅผ ์ด๋ค ์์๋ก๋ ๋ฐฐํฌํด๋ ์์คํ ์ด ๊ณ์ ๋์ํด์ผ ํฉ๋๋ค.
์ด ์ฌ๊ณ ๋ฐฉ์์ ์ ํ์ ์ธ ํจ์ ์ ํผํ๊ฒ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ปฌ๋ผ์ด ์๊ธฐ๊ธฐ ์ ์ ์ ์ฑ์ ๋ฐฐํฌํ๊ฑฐ๋ ์ค๋๋ ์ฝ๋๊ฐ ์ฒ๋ฆฌํ์ง ๋ชปํ๋ ์ ์ปฌ๋ผ์ ์ถ๊ฐํ๋ ์ค์ ๋ฑ์ ๋๋ค. ๋ณ๊ฒฝ์ ๋จผ์ ์ถ๊ฐ์ (additive)์ผ๋ก ๊ณํํ๊ณ , ๋จ๊ณ๋ฅผ ๋๋ ๋กค์์ํ๋ฉฐ, ์๋ฌด ๊ฒ๋ ์ฌ์ฉํ์ง ์๋๋ค๊ณ ํ์ ํ ๋๋ง ์ ๊ฒฝ๋ก๋ฅผ ์ ๊ฑฐํ์ธ์.
๊ธฐ์กด ์ฝ๋๋ฅผ ๊นจ์ง ์๋ ์ถ๊ฐ์ ๋ณ๊ฒฝ์ผ๋ก ์์ํ๊ธฐ
๋ฌด์ค๋จ ์คํค๋ง ๋ณ๊ฒฝ์ผ๋ก ๊ฐ๋ ๊ฐ์ฅ ์์ ํ ๋ฐฉ๋ฒ์ ๊ต์ฒด(replace)๊ฐ ์๋๋ผ ์ถ๊ฐ(add)์ ๋๋ค. ์ ์ปฌ๋ผ์ด๋ ์ ํ ์ด๋ธ์ ์ถ๊ฐํ๋ ๊ฒ์ ๊ธฐ์กด ์ฝ๋๊ฐ ์ด์ ํํ๋ฅผ ๊ณ์ ์ฝ๊ณ ์ธ ์ ์์ผ๋ฏ๋ก ๊ฑฐ์ ๋ฌธ์ ๊ฐ ์๊ธฐ์ง ์์ต๋๋ค.
์ด๋ฆ ๋ณ๊ฒฝ(renames)๊ณผ ์ญ์ (deletions)๋ ์ํํฉ๋๋ค. ์ด๋ฆ ๋ณ๊ฒฝ์ ์ฌ์ค์ "์๋ก ์ถ๊ฐ + ์๊ฒ ์ ๊ฑฐ"์ ๋๋ค. ์ด ์ค ์๊ฒ์ ์ ๊ฑฐํ๋ ๋จ๊ณ๊ฐ ์ค๋๋ ํด๋ผ์ด์ธํธ๋ฅผ ์ถฉ๋์ํค๋ ์ง์ ์ ๋๋ค. ์ด๋ฆ์ ๋ฐ๊ฟ์ผ ํ๋ค๋ฉด ๋ ๋จ๊ณ๋ก ์ฒ๋ฆฌํ์ธ์: ๋จผ์ ์ ํ๋๋ฅผ ์ถ๊ฐํ๊ณ , ์ ํ๋๋ ์ ์ ์ ์งํ ๋ค ์๋ฌด๋ ์์กดํ์ง ์๋ ๊ฒ์ด ํ์ธ๋๋ฉด ์ ๊ฑฐํฉ๋๋ค.
์ปฌ๋ผ์ ์ถ๊ฐํ ๋๋ nullable๋ก ์์ํ์ธ์. nullable ์ปฌ๋ผ์ ์ ์ฝ๋๊ฐ ์ ์ปฌ๋ผ์ ๋ชจ๋ฅธ ์ฑ๋ก ํ์ ์ฝ์
ํ ์ ์๊ฒ ํด์ค๋๋ค. ๊ถ๊ทน์ ์ผ๋ก NOT NULL์ ์ํ๋ค๋ฉด ๋จผ์ nullable๋ก ์ถ๊ฐํ๊ณ ๋ฐฑํ์ ํ ๋ค ๋์ค์ NOT NULL์ ์ ์ฉํ์ธ์. ๊ธฐ๋ณธ๊ฐ(defaults)์ด ๋์์ด ๋ ์ ์์ง๋ง ์ฃผ์ํด์ผ ํฉ๋๋ค. ์ผ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ๊ธฐ๋ณธ๊ฐ์ ์ถ๊ฐํ๋ ์์
์ด ๋ง์ ํ์ ๊ฑด๋๋ ค์ ๋ณ๊ฒฝ์ด ๋๋ ค์ง ์ ์์ต๋๋ค.
์ธ๋ฑ์ค๋ "์์ ํ์ง๋ง ๋น์ฉ์ด ์๋" ์ถ๊ฐ ํญ๋ชฉ์ ๋๋ค. ์ฝ๊ธฐ๋ฅผ ๋น ๋ฅด๊ฒ ํ์ง๋ง ์ธ๋ฑ์ค ์์ฑ๊ณผ ์ ์ง๊ฐ ์ฐ๊ธฐ๋ฅผ ๋๋ฆฌ๊ฒ ํ ์ ์์ต๋๋ค. ์ด๋ค ์ฟผ๋ฆฌ๊ฐ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ ์ง ํ์คํ ๋ ์ถ๊ฐํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋ฐ์ ๋๋ ํ๊ฐํ ์๊ฐ์ ๋กค์์์ ๊ณ ๋ คํ์ธ์.
์ถ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์ ์ ์ํ ๊ฐ๋จํ ๊ท์น:
- ์ ํ ์ด๋ธ์ด๋ ์ปฌ๋ผ์ ๋จผ์ ์ถ๊ฐํ๊ณ , ๊ธฐ์กด ๊ฒ์ ๊ทธ๋๋ก ๋ก๋๋ค.
- ์ ํ๋๋ ๋ฐ์ดํฐ๊ฐ ์ฑ์์ง ๋๊น์ง ์ ํ์ (nullable)์ผ๋ก ๋ง๋ญ๋๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ์ ๋ฐ์ดํธ๋ ๋๊น์ง ๊ธฐ์กด ์ฟผ๋ฆฌ์ ํ์ด๋ก๋๊ฐ ์๋ํ๋๋ก ์ ์งํฉ๋๋ค.
- ์ ์ฝ์กฐ๊ฑด(
NOT NULL, unique, foreign keys)์ ๋ฐฑํ ํ์ ์ ์ฉํฉ๋๋ค.
์ค๋๋ ํด๋ผ์ด์ธํธ๋ฅผ ์ ์งํ๋ฉด์ ๋จ๊ณ๋ณ๋ก ๋กค์์ํ๊ธฐ
๋ฌด์ค๋จ ์คํค๋ง ๋ณ๊ฒฝ์ ๋จ์ผ ๋ฐฐํฌ๊ฐ ์๋๋ผ ๋กค์์์ผ๋ก ์ทจ๊ธํ์ธ์. ๋ชฉํ๋ ์ค๋๋ ๋ฒ์ ๊ณผ ์ ๋ฒ์ ์ ์ฑ์ด ์ฌ์ด๋๋ฐ์ด์ฌ์ด๋๋ก ์คํ๋๋ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ์ง์ ์ผ๋ก ์ ํํ๋ก ์ด๋ํ๋ ๊ฒ์ ๋๋ค.
์ค์ฉ์ ์์:
- ํธํ๋๋ ๋ฐฉ์์ผ๋ก ์ ์คํค๋ง๋ฅผ ์ถ๊ฐํ์ธ์. ์ ์ปฌ๋ผ์ด๋ ํ ์ด๋ธ์ ๋ง๋ค๊ณ ๋์ ํ์ฉํ๋ฉฐ, ์ค๋๋ ์ฝ๋๊ฐ ์ฑ์ฐ์ง ๋ชปํ๋ ์๊ฒฉํ ์ ์ฝ์ ํผํ์ธ์. ์ธ๋ฑ์ค๊ฐ ํ์ํ๋ฉด ์ฐ๊ธฐ๋ฅผ ์ฐจ๋จํ์ง ์๋ ๋ฐฉ์์ผ๋ก ์ถ๊ฐํ์ธ์.
- ๋ ๊ฐ์ง โ์ธ์ดโ ๋ชจ๋๋ฅผ ์ดํดํ๋ ๋ฐฑ์๋ ์ฝ๋๋ฅผ ๋ฐฐํฌํ์ธ์. API๊ฐ ์ ์์ฒญ๊ณผ ์ ์์ฒญ์ ๋ชจ๋ ์์ฉํ๋๋ก ์ ๋ฐ์ดํธํ์ธ์. ์ ํ๋๋ฅผ ์ฐ๋ ์ ํ๋๋ ์ฌ๋ฐ๋ฅด๊ฒ ์ ์งํ๋ โ๋์ผ ๋ผ์ดํธ(dual write)โ ๋จ๊ณ๊ฐ ํผํฉ๋ ํด๋ผ์ด์ธํธ ๋ฒ์ ์์ ์์ ํฉ๋๋ค.
- ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ์๊ท๋ชจ ๋ฐฐ์น๋ก ๋ฐฑํํ์ธ์. ์ค๋๋ ํ๋ค์ ๋ํด ์ ์ปฌ๋ผ์ ์ ์ง์ ์ผ๋ก ์ฑ์ฐ์ธ์. ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ์ ํํ๊ณ ํ์ํ๋ฉด ์ง์ฐ์ ๋๋ฉฐ ์งํ ์ํฉ์ ์ถ์ ํด ๋ถํ๊ฐ ์ฆ๊ฐํ๋ฉด ์ผ์์ค์งํ ์ ์๊ฒ ํ์ธ์.
- ์ปค๋ฒ๋ฆฌ์ง๊ฐ ์ถฉ๋ถํ ๋๋ง ์ฝ๊ธฐ๋ฅผ ์ ํํ์ธ์. ๋๋ถ๋ถ์ ํ์ด ๋ฐฑํ๋๊ณ ํ์ ์ด ์๋ฉด ๋ฐฑ์๋๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ํ๋๋ฅผ ์ฝ๋๋ก ๋ฐ๊พธ์ธ์. ๋น๋ถ๊ฐ์ ์ ํ๋๋ก ๋๋์๊ฐ๋ ํด๋ฐฑ์ ์ ์งํ์ธ์.
- ์ ํ๋๋ ๋ง์ง๋ง์ ์ ๊ฑฐํ์ธ์. ์ค๋๋ ๋ชจ๋ฐ์ผ ๋น๋๊ฐ ๋๋ถ๋ถ ์ฌ๋ผ์ง๊ณ , ๋ก๊ทธ์ ์ ํ๋ ์ฝ๊ธฐ๊ฐ ์์์ ํ์ธํ๊ณ , ๋กค๋ฐฑ ๊ณํ์ด ์ค๋น๋์์ ๋ ์ ์ปฌ๋ผ๊ณผ ๊ด๋ จ ์ฝ๋๋ฅผ ์ ๊ฑฐํ์ธ์.
์: full_name์ ๋์
ํ์ง๋ง ์ค๋๋ ํด๋ผ์ด์ธํธ๋ first_name๊ณผ last_name์ ๋ณด๋ธ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์ผ์ ๊ธฐ๊ฐ ๋์ ๋ฐฑ์๋๋ ์ฐ๊ธฐ ์ full_name์ ๊ตฌ์ฑํ๊ณ , ๊ธฐ์กด ์ฌ์ฉ์๋ค์ ๋ฐฑํํ ๋ค ๊ธฐ๋ณธ์ ์ผ๋ก full_name์ ์ฝ์ผ๋ฉด์ ์ ํ์ด๋ก๋๋ฅผ ๊ณ์ ์ง์ํฉ๋๋ค. ์ฑํ์ด ๋ช
ํํด์ง๋ฉด ์ ํ๋๋ฅผ ์ญ์ ํฉ๋๋ค.
๋๋ผ์ ์๋ ๋ฐฑํ: ์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ์ฑ์ฐ๊ธฐ
๋ฐฑํ์ ๊ธฐ์กด ํ์ ์ ์ปฌ๋ผ์ด๋ ํ ์ด๋ธ์ ์ฑ์ฐ๋ ์์ ์ ๋๋ค. ๋๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ถํ, ๊ธด ์ ๊ธ, "๋ฐ์ฏค ๋ง์ด๊ทธ๋ ์ด์ ๋" ํผ๋์ค๋ฌ์ด ๋์์ ์ด๋ํ ์ ์์ด ์ข ์ข ๋ฌด์ค๋จ ๋ณ๊ฒฝ ์ค ๊ฐ์ฅ ์ํํ ๋ถ๋ถ์ ๋๋ค.
๋จผ์ ๋ฐฑํ์ ์ด๋ป๊ฒ ์คํํ ์ง ๊ฒฐ์ ํ์ธ์. ์๊ท๋ชจ ๋ฐ์ดํฐ์ ์ ์๋ ๋ฐ๋ถ์ผ๋ก ์ถฉ๋ถํ ์ ์์ต๋๋ค. ๋๊ท๋ชจ ๋ฐ์ดํฐ์ ์ ๋ฐ๋ณต ์คํํ๊ณ ์์ ํ๊ฒ ์ค๋จํ ์ ์๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ปค๋ ์ค์ผ์ค ์ก์ ์ ํธํ์ธ์.
์์ ์ ๋ฐฐ์น๋ก ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐํด์ง๋ ์๋ ฅ์ ์ ์ดํ์ธ์. ์๋ฐฑ๋ง ํ์ ํ ํธ๋์ญ์ ์ผ๋ก ์ ๋ฐ์ดํธํ์ง ๋ง์ธ์. ์์ธก ๊ฐ๋ฅํ ์ฒญํฌ ํฌ๊ธฐ์ ๋ฐฐ์น ์ฌ์ด์ ์งง์ ์ผ์์ค๋จ์ ๋ชฉํ๋ก ํด ์ผ๋ฐ ์ฌ์ฉ์ ํธ๋ํฝ์ด ์ํํ๊ฒ ์ ์ง๋๋๋ก ํ์ธ์.
์ค์ฉ ํจํด:
- ์ธ๋ฑ์ค๋ ํค๋ฅผ ์ฌ์ฉํด ๋ค์ 1,000ํ ๊ฐ์ ์๊ท๋ชจ ๋ฐฐ์น๋ฅผ ์ ํํฉ๋๋ค.
- ๋๋ฝ๋ ๊ฒ๋ง ์ ๋ฐ์ดํธํฉ๋๋ค(์ด๋ฏธ ๋ฐฑํ๋ ํ์ ๋ค์ ์ฐ์ง ๋ง์ธ์).
- ๋น ๋ฅด๊ฒ ์ปค๋ฐํ๊ณ ์ ๊น ์ฌ์ธ์.
- ์งํ ์ํฉ(๋ง์ง๋ง ์ฒ๋ฆฌ๋ ID๋ ํ์์คํฌํ)์ ๊ธฐ๋กํฉ๋๋ค.
- ์คํจ ์ ์ฒ์๋ถํฐ ๋ค์ ์์ํ์ง ์๊ณ ์ฌ์๋ํฉ๋๋ค.
์ก์ ์ฌ์์ ๊ฐ๋ฅํ๊ฒ ๋ง๋์ธ์. ์ ์ฉ ํ
์ด๋ธ์ ๊ฐ๋จํ ์งํ ๋ง์ปค๋ฅผ ์ ์ฅํ๊ณ , ์ก์ ์ฌ์คํํด๋ ๋ฐ์ดํฐ๊ฐ ์์๋์ง ์๋๋ก ์ค๊ณํ์ธ์. ์: new_field IS NULL ์กฐ๊ฑด์ผ๋ก ์
๋ฐ์ดํธํ๋ ์์ ๋ฉฑ๋ฑ์ฑ(idempotent) ์
๋ฐ์ดํธ๊ฐ ๋์์ด ๋ฉ๋๋ค.
์งํ ์ค์ ๊ฒ์ฆํ์ธ์. ์ ๊ฐ์ด ์๋ ํ ์๋ฅผ ์ถ์ ํ๊ณ ๋ช ๊ฐ์ง ๊ธฐ๋ณธ ๊ฒ์ฌ๋ฅผ ์ถ๊ฐํ์ธ์. ์: ์์ก์ด ์์์ธ์ง, ํ์์คํฌํ๊ฐ ๊ธฐ๋ ๋ฒ์์ธ์ง, ์ํ๊ฐ ํ์ฉ๋ ์งํฉ์ ์ํ๋์ง ๋ฑ. ์ค์ ๋ ์ฝ๋๋ฅผ ์ํ๋งํด ์ ๊ฒํ์ธ์.
๋ฐฑํ์ด ์๋ฃ๋์ง ์์ ๋์ ์ฑ์ด ์ด๋ป๊ฒ ํ๋ํด์ผ ํ ์ง ๊ฒฐ์ ํ์ธ์. ์์ ํ ์ต์
์ ํด๋ฐฑ ์ฝ๊ธฐ์
๋๋ค: ์ ํ๋๊ฐ null์ด๋ฉด ์ ๊ฐ์ ๊ณ์ฐํ๊ฑฐ๋ ์ฝ์ต๋๋ค. ์: preferred_language๋ฅผ ์ถ๊ฐํ๋ฉด ๋ฐฑํ์ด ์๋ฃ๋ ๋๊น์ง API๋ preferred_language๊ฐ ๋น์ด ์์ผ๋ฉด ํ๋กํ ์ค์ ์์ ๊ธฐ์กด ์ธ์ด๋ฅผ ๋ฐํํ๊ณ , ์๋ฃ ํ์๋ง ์ ํ๋๋ฅผ ์๊ตฌํฉ๋๋ค.
ํผํฉ ํด๋ผ์ด์ธํธ ๋ฒ์ ์์์ API ํธํ์ฑ ๊ท์น
์คํค๋ง ๋ณ๊ฒฝ์ ๋ฐฐํฌํ ๋ ๋ชจ๋ ํด๋ผ์ด์ธํธ๋ฅผ ํต์ ํ ์ ์๋ ๊ฒฝ์ฐ๋ ๋๋ญ ๋๋ค. ์น ์ฌ์ฉ์๋ ๋นจ๋ฆฌ ์ ๋ฐ์ดํธํ์ง๋ง ์ค๋๋ ๋ชจ๋ฐ์ผ ๋น๋๋ ์์ฃผ๊ฐ ํ์ฑ ์ํ์ผ ์ ์์ต๋๋ค. ๊ทธ๋์ ์คํค๋ง ๋ง์ด๊ทธ๋ ์ด์ ์ด "์์ "ํ๋๋ผ๋ ํ์ ํธํ API๊ฐ ์ค์ํฉ๋๋ค.
์ ๋ฐ์ดํฐ๋ฅผ ์ฒ์์๋ ์ ํ์ฌํญ์ผ๋ก ์ทจ๊ธํ์ธ์. ์์ฒญ๊ณผ ์๋ต์ ์ ํ๋๋ฅผ ์ถ๊ฐํ๋ ์ฒซ๋ ๋ถํฐ ํ์๋ฅผ ์๊ตฌํ์ง ๋ง์ธ์. ์ค๋๋ ํด๋ผ์ด์ธํธ๊ฐ ์ ํ๋๋ฅผ ๋ณด๋ด์ง ์์๋ ์๋ฒ๋ ์์ฒญ์ ๋ฐ์๋ค์ฌ ์ด์ ๊ณผ ๋์ผํ๊ฒ ๋์ํด์ผ ํฉ๋๋ค.
๊ธฐ์กด ํ๋์ ์๋ฏธ๋ฅผ ๋ฐ๊พธ์ง ๋ง์ธ์. ํ๋ ์ด๋ฆ์ ๋ฐ๊พธ๋๋ผ๋ ์ ์ด๋ฆ์ ๊ณ์ ๋์ํ๋๋ก ์ ์งํ๋ฉด ๊ด์ฐฎ์ต๋๋ค. ํ๋๋ฅผ ์ฌ์ฌ์ฉํด ์๋ก์ด ์๋ฏธ๋ฅผ ๋ถ์ฌํ๋ ๊ฒ์ด ๋ฏธ๋ฌํ ๋ฌธ์ ๋ฅผ ๋ง๋๋ ์ง์ ์ ๋๋ค.
์๋ฒ ์ธก ๊ธฐ๋ณธ๊ฐ์ ์์ ๋ง์
๋๋ค. preferred_language ๊ฐ์ ์ ์ปฌ๋ผ์ ๋์
ํ ๋ ๊ฐ์ด ์์ผ๋ฉด ์๋ฒ์์ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ์ธ์. API ์๋ต์ ์ ํ๋๋ฅผ ํฌํจํ ์ ์๊ณ , ์ค๋๋ ํด๋ผ์ด์ธํธ๋ ์ด๋ฅผ ๋ฌด์ํ๋ฉด ๋ฉ๋๋ค.
๋๋ถ๋ถ์ ์ฅ์ ๋ฅผ ์๋ฐฉํ๋ ํธํ์ฑ ๊ท์น:
- ์ ํ๋๋ฅผ ๋จผ์ ์ ํ์ ์ผ๋ก ์ถ๊ฐํ๊ณ , ์ฑํ ํ์๋ง ๊ฐ์ ํ์ธ์.
- ๋ ๋์ ๋์์ ๋ค์ ์จ๊ฒจ๋๋๋ผ๋ ์ ๋์์ ์์ ์ ์ผ๋ก ์ ์งํ์ธ์.
- ์ ํ๋๊ฐ ์์ ๋ ์๋ฒ์์ ๊ธฐ๋ณธ๊ฐ์ ์ ์ฉํ์ธ์.
- ํผํฉ ํธ๋ํฝ์ ๊ฐ์ ํ๊ณ ๋ ๊ฒฝ๋ก๋ฅผ ๋ชจ๋ ํ ์คํธํ์ธ์: "์ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋"๊ณผ "์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ตํจ".
- ์๋ฌ ๋ฉ์์ง์ ์๋ฌ ์ฝ๋๋ฅผ ์์ ์ ์ผ๋ก ์ ์งํด ๋ชจ๋ํฐ๋ง์ด ๊ฐ์๊ธฐ ์๋๋ฌ์์ง์ง ์๊ฒ ํ์ธ์.
์: ๊ฐ์
ํ๋ฆ์ company_size๋ฅผ ์ถ๊ฐํ๋ฉด ๋ฐฑ์๋๋ ํด๋น ํ๋๊ฐ ์์ ๋ "unknown" ๊ฐ์ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ ์ ์์ต๋๋ค. ์ต์ ํด๋ผ์ด์ธํธ๋ ์ค์ ๊ฐ์ ๋ณด๋ด๊ณ , ์ค๋๋ ํด๋ผ์ด์ธํธ๋ ๊ณ์ ์๋ํ๋ฉฐ ๋์๋ณด๋๋ ์ฝ์ ์ ์๊ฒ ์ ์ง๋ฉ๋๋ค.
์ฑ์ ์ฌ์์ฑ(regenerate)ํ ๋: ์คํค๋ง์ ๋ก์ง์ ๋๊ธฐํํ๋ ๋ฐฉ๋ฒ
ํ๋ซํผ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์์ฑํ๋ฉด ์ฝ๋์ ์ค์ ์ ๊น๋ํ๊ฒ ์ฌ๋น๋ํ ์ ์์ต๋๋ค. ์ด๋ ๋ฌด์ค๋จ ์คํค๋ง ๋ณ๊ฒฝ์ ๋์์ด ๋ฉ๋๋ค. ์์ ์ถ๊ฐ์ ๋จ๊ณ๋ฅผ ๋ง๋ค์ด ์์ฃผ ์ฌ๋ฐฐํฌํ๋ฉด ์๊ฐ์ ๋์ ํจ์น๋ฅผ ๋ค๊ณ ๋ค๋๋ ๋ถ๋ด์ ์ค์ผ ์ ์์ต๋๋ค.
ํต์ฌ์ ๋จ์ผ ์์ค ์ค๋ธ ํธ๋ฃจ์ค์ ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง๊ฐ ํ ๊ณณ์์ ๋ณ๊ฒฝ๋๊ณ ๋น์ฆ๋์ค ๋ก์ง์ด ๋ค๋ฅธ ๊ณณ์์ ๋ณ๊ฒฝ๋๋ฉด ๋น ๋ฅด๊ฒ ์ผ๊ด์ฑ ๋จ์ด์ง์ด ์๊น๋๋ค. ๋ณ๊ฒฝ์ ์ด๋์์ ์ ์ํ ์ง ๊ฒฐ์ ํ๊ณ ๋ค๋ฅธ ๊ฒ์ ์์ฑ๋ ์ถ๋ ฅ๋ฌผ๋ก ์ทจ๊ธํ์ธ์.
๋ช
ํํ ๋ช
๋ช
๊ท์น์ ๋จ๊ณ์ ๋กค์์์์ ์ฌ๊ณ ๋ฅผ ์ค์
๋๋ค. ์ ํ๋๋ฅผ ๋์
ํ๋ฉด ์ด๋ ๊ฒ์ด ์ค๋๋ ํด๋ผ์ด์ธํธ์ฉ์ด๊ณ ์ด๋ ๊ฒ์ด ์ ๊ฒฝ๋ก์ธ์ง ๋ถ๋ช
ํ๊ฒ ๋ง๋์ธ์. ์๋ฅผ ๋ค์ด ์ ์ปฌ๋ผ์ status_v2๋ก ์ด๋ฆ ์ง๋ ๊ฒ์ status_new๋ณด๋ค ์ฌ์ฏ ๋ฌ ๋ค์๋ ์๋ฏธ๋ฅผ ์ ์งํ๋ ๋ฐ ์์ ํฉ๋๋ค.
์ฌ์์ฑ ํ ๋ฌด์์ ๋ค์ ํ ์คํธํ ์ง
๋ณ๊ฒฝ์ด ์ถ๊ฐ์ ์ด๋ผ๋ ์ฌ๋น๋๋ ์จ๊ฒจ์ง ๊ฒฐํฉ์ ๋๋ฌ๋ผ ์ ์์ต๋๋ค. ์ฌ์์ฑ ๋ฐ ๋ฐฐํฌ ํ์๋ ์์ ํต์ฌ ํ๋ฆ์ ๋ค์ ํ์ธํ์ธ์:
- ๊ฐ์ , ๋ก๊ทธ์ธ, ๋น๋ฐ๋ฒํธ ์ฌ์ค์ , ํ ํฐ ๊ฐฑ์ .
- ํต์ฌ ์์ฑ ๋ฐ ์ ๋ฐ์ดํธ ๋์(๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๊ฒ๋ค).
- ๊ด๋ฆฌ์ ๋ฐ ๊ถํ ๊ฒ์ฌ.
- ๊ฒฐ์ ๋ฐ ์นํ (์: Stripe ์ด๋ฒคํธ).
- ์๋ฆผ ๋ฐ ๋ฉ์์ง(์ด๋ฉ์ผ/SMS, Telegram).
์๋ํฐ๋ฅผ ์ด๊ธฐ ์ ์ ๋ง์ด๊ทธ๋ ์ด์ ๋จ๊ณ๋ฅผ ๊ณํํ์ธ์: ์ ํ๋๋ฅผ ์ถ๊ฐํ๊ณ , ์์ชฝ ํ๋๋ฅผ ์ง์ํ๋ ์ํ๋ก ๋ฐฐํฌํ๊ณ , ๋ฐฑํํ๊ณ , ์ฝ๊ธฐ๋ฅผ ์ ํํ ๋ค์, ๋์ค์ ์ ๊ฒฝ๋ก๋ฅผ ์ ๊ฑฐํ์ธ์. ์ด ์์๋ ์คํค๋ง, ๋ก์ง, ์์ฑ๋ ์ฝ๋๊ฐ ํจ๊ป ์์ง์ด๊ฒ ํ์ฌ ๋ณ๊ฒฝ์ ์๊ณ ๊ฒํ ๊ฐ๋ฅํ๋ฉฐ ๋๋๋ฆด ์ ์๊ฒ ํฉ๋๋ค.
์ฅ์ ๋ฅผ ์ ๋ฐํ๋ ํํ ์ค์(๋ฐ ํผํ๋ ๋ฐฉ๋ฒ)
๋ฌด์ค๋จ ์คํค๋ง ๋ณ๊ฒฝ ์ค ๋ฐ์ํ๋ ๋๋ถ๋ถ์ ์ฅ์ ๋ "๋ฌด๊ฑฐ์ด" ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์์ ์๊ธฐ์ง ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค, API, ํด๋ผ์ด์ธํธ ๊ฐ ๊ณ์ฝ(contract)์ ์๋ชป๋ ์์๋ก ๋ณ๊ฒฝํด์ ๋ฐ์ํฉ๋๋ค.
์ผ๋ฐ์ ์ธ ํจ์ ๊ณผ ๋ ์์ ํ ์กฐ์น:
- ์ค๋๋ ์ฝ๋๊ฐ ์์ง ์ฝ์ ๋ ์ปฌ๋ผ ์ด๋ฆ์ ๋ฐ๊ฟ. ์ ์ปฌ๋ผ์ ์ ์งํ๊ณ ์ ์ปฌ๋ผ์ ์ถ๊ฐํ ๋ค ๋ ๊ฐ์ง๋ฅผ ์ผ์ ๊ธฐ๊ฐ ๋งคํํ์ธ์(๋ ๋ค ์ฐ๊ฑฐ๋ ๋ทฐ๋ฅผ ์ฌ์ฉํ๋ ๋ฑ). ์๋ฌด๋ ์ ์ด๋ฆ์ ์์กดํ์ง ์๋ ๊ฒ์ ์ฆ๋ช ํ ๋ค์๋ง ์ด๋ฆ์ ๋ฐ๊พธ์ธ์.
- nullable ํ๋๋ฅผ ๋๋ฌด ์ผ์ฐ ํ์๋ก ๋ง๋ฆ. ๋จผ์ nullable๋ก ์ถ๊ฐํ๊ณ , ์ฝ๋๊ฐ ๋ชจ๋ ๊ณณ์์ ์ฐ๋๋ก ๋ฐฐํฌํ ๋ค ์ค๋๋ ํ์ ๋ฐฑํํ๊ณ ๋ง์ง๋ง ๋ง์ด๊ทธ๋ ์ด์
์์
NOT NULL์ ์ ์ฉํ์ธ์. - ํ ์ด๋ธ์ ์ ๊ทธ๋ ๋๊ท๋ชจ ๋จ์ผ ํธ๋์ญ์ ์ผ๋ก ๋ฐฑํํจ. ์์ ๋ฐฐ์น๋ก ๋ฐฑํํ๊ณ ์ ํ๊ณผ ์ผ์์ค๋จ์ ๋ฌ ์งํ ์ํฉ์ ์ถ์ ํ์ธ์.
- ์ฐ๊ธฐ๋ณด๋ค ๋จผ์ ์ฝ๊ธฐ๋ฅผ ์ ํํจ. ๋จผ์ ์ฐ๊ธฐ๋ฅผ ์ ํํ๊ณ , ๊ทธ๋ค์ ๋ฐฑํ, ๋ง์ง๋ง์ผ๋ก ์ฝ๊ธฐ๋ฅผ ์ ํํ์ธ์. ์ฝ๊ธฐ๋ฅผ ๋จผ์ ๋ฐ๊พธ๋ฉด ๋น ํ๋ฉด, ์๋ชป๋ ํฉ๊ณ, "ํ๋ ์์" ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
- ์ค๋๋ ํ๋๋ฅผ ์ฆ๊ฑฐ ์์ด ์ญ์ ํจ. ์ค๋๋ ํ๋๋ ์๊ฐ๋ณด๋ค ๋ ์ค๋ ์ ์งํ์ธ์. ์ค๋๋ ๋ฒ์ ์ด ์ฌ์ค์ ๋นํ์ฑ ์ํ์ธ์ง ์งํ๋ก ํ์ธํ๊ณ , ํ๊ธฐ ์ฐฝ๊ตฌ๋ฅผ ๊ณต์งํ ๋ค ์ ๊ฑฐํ์ธ์.
์ฑ์ ์ฌ์์ฑํ๋ฉด ์ด๋ฆ๊ณผ ์ ์ฝ์ ํ ๋ฒ์ "์ ๋ฆฌ"ํ๊ณ ์ถ์ ์ ํน์ด ๋ญ๋๋ค. ๊ทธ ์ ํน์ ์ฐธ์ผ์ธ์. ์ ๋ฆฌ๋ ๋ง์ง๋ง ๋จ๊ณ์ด์ง ์ฒซ ๋จ๊ณ๊ฐ ์๋๋๋ค.
์ข์ ๊ท์น: ๋ณ๊ฒฝ์ ์์ ํ๊ฒ ์์ผ๋ก ์งํํ๊ณ ๋๋๋ฆด ์ ์๋ค๋ฉด ์์ฐ ํ๊ฒฝ์ ํฌ์ ํ ์ค๋น๊ฐ ๋ ๊ฒ์ด ์๋๋๋ค.
๋จ๊ณ์ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ํ ๋ชจ๋ํฐ๋ง๊ณผ ๋กค๋ฐฑ ๊ณํ
๋ฌด์ค๋จ ์คํค๋ง ๋ณ๊ฒฝ์ ์ฑ๊ณต ์ฌ๋ถ๋ ๋ ๊ฐ์ง์ ๋ฌ๋ฆฝ๋๋ค: ๋ฌด์์ ๊ฐ์ํ๋๋, ์ผ๋ง๋ ๋นจ๋ฆฌ ์ค๋จํ ์ ์๋๋.
๋ฐฐํฌ๊ฐ ๋๋ฌ๋ค๋ ๊ฒ๋ง ๋ณด๋ ๋์ ์ค์ ์ฌ์ฉ์ ์ํฅ์ ํด๋นํ๋ ์ ํธ๋ฅผ ์ถ์ ํ์ธ์:
- ์ ๋ฐ์ดํธํ ์๋ํฌ์ธํธ์ API ์๋ฌ์จ(ํนํ 4xx/5xx ์คํ์ดํฌ).
- ๋๋ฆฐ ์ฟผ๋ฆฌ(p95 ๋๋ p99 ์ฟผ๋ฆฌ ์๊ฐ) โ ์์ ํ ํ ์ด๋ธ ๋์.
- ์ฐ๊ธฐ ์ง์ฐ(ํผํฌ ํธ๋ํฝ ์ค ์ฝ์ ๋ฐ ์ ๋ฐ์ดํธ์ ๊ฑธ๋ฆฌ๋ ์๊ฐ).
- ํ ๊น์ด(๋ฐฑํ์ด๋ ์ด๋ฒคํธ ์ฒ๋ฆฌ์ฉ ์์ ์ด ์์ด๋์ง).
- ๋ฐ์ดํฐ๋ฒ ์ด์ค CPU/IO ์ฌ์ฉ๋(๋ณ๊ฒฝ ํ ๊ธ๊ฒฉํ ์์น ์ฌ๋ถ).
๋์ผ๋ผ์ดํธ๋ฅผ ํ๋ ๊ฒฝ์ฐ(์/์ ์ปฌ๋ผ ๋ ๋ค ์ฐ๋ ๊ฒฝ์ฐ) ๋ ๊ฐ์ ๋น๊ตํ๋ ์์ ๋ก๊น ์ ์ถ๊ฐํ์ธ์. ๋จ, ๋ก๊ทธ๋ ์ฐจ์ด๊ฐ ๋ ๋๋ง ๊ธฐ๋กํ๊ณ , ๋ ์ฝ๋ ID์ ์งง์ ์ด์ ์ฝ๋๋ฅผ ํฌํจํ๋ฉฐ, ๋ณผ๋ฅจ์ด ๋์ผ๋ฉด ์ํ๋งํ์ธ์. ๋ง์ด๊ทธ๋ ์ด์ ํ ์ด ๋ก๊น ์ ์ ๊ฑฐํ๋ผ๋ ๋ฆฌ๋ง์ธ๋๋ฅผ ๋ง๋ค์ด ์๊ตฌ์ ์ธ ๋ ธ์ด์ฆ๊ฐ ๋์ง ์๊ฒ ํ์ธ์.
๋กค๋ฐฑ์ ํ์ค์ ์ผ๋ก ๊ณํํ์ธ์. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์คํค๋ง๋ฅผ ๋กค๋ฐฑํ์ง ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ๋กค๋ฐฑํ๊ณ ์ถ๊ฐ์ ์คํค๋ง๋ ์ ์งํ๋ ๋ฐฉ์์ด ๋ ํํฉ๋๋ค.
์ค์ฉ์ ์ธ ๋กค๋ฐฑ ๋ฐ๋ถ:
- ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ๋ง์ง๋ง ์ ์ ๋ฒ์ ์ผ๋ก ๋๋๋ฆฝ๋๋ค.
- ์ ์ฝ๊ธฐ๋ฅผ ๋จผ์ ๋นํ์ฑํํ ๋ค์ ์ ์ฐ๊ธฐ๋ฅผ ๋นํ์ฑํํฉ๋๋ค.
- ์ ํ ์ด๋ธ์ด๋ ์ปฌ๋ผ์ ์ ์งํ๋ ์ฌ์ฉ์ ์ค์งํฉ๋๋ค.
- ๋ฐฑํ์ ์ค๋จํ๊ณ ์งํ๊ฐ ์์ ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค.
๋ฐฑํ์๋ ๋ช ์ด ์์ ๋ ์ ์๋ ์ ์ง ์ค์์น(ํผ์ฒ ํ๋๊ทธ, ์ค์ ๊ฐ, ์ก ์ผ์์ค์ง)๋ฅผ ๋ง๋์ธ์. ๋ํ ๋์ผ๋ผ์ดํธ ์์ ์๊ธฐ, ๋ฐฑํ ์คํ ์๊ธฐ, ์ฝ๊ธฐ ์ ํ ์๊ธฐ, "์ค๋จ"์ ์๋ฏธ๋ฅผ ์ฌ์ ์ ์ํตํด๋์ด ๊ธด๊ธ ์ํฉ์์ ์๊ธฐ์๋ณ์ ํ์ง ์๊ฒ ํ์ธ์.
๋น ๋ฅธ ๋ฐฐํฌ ์ ์ฒดํฌ๋ฆฌ์คํธ
์คํค๋ง ๋ณ๊ฒฝ์ ๋ฐฐํฌํ๊ธฐ ์ง์ ์ ์ ์ ๋ฉ์ถฐ ์ด ์ฒดํฌ๋ฅผ ์คํํ์ธ์. ํผํฉ ํด๋ผ์ด์ธํธ ๋ฒ์ ์์ ์์ ๊ฐ์ ์ ๋์น๋ฉด ํฐ ์ฅ์ ๋ก ์ด์ด์ง๋๋ค.
- ๋ณ๊ฒฝ์ด ์ถ๊ฐ์ (additive)์ธ๊ฐ? ๋ง์ด๊ทธ๋ ์ด์ ์ด ํ ์ด๋ธ, ์ปฌ๋ผ, ์ธ๋ฑ์ค๋ง ์ถ๊ฐํ๊ณ ๊ธฐ์กด ๊ฒ์ ์ ๊ฑฐํ๊ฑฐ๋ ์ด๋ฆ์ ๋ฐ๊พธ๊ฑฐ๋ ์๊ฒฉํ๊ฒ ๋ง๋ค์ด ์ค๋๋ ์ฐ๊ธฐ๋ฅผ ๊ฑฐ๋ถํ์ง ์๋์ง ํ์ธํฉ๋๋ค.
- ์ฝ๊ธฐ๊ฐ ๋ ํํ ๋ชจ๋ ์๋ํ๋๊ฐ? ์ ์๋ฒ ์ฝ๋๋ "์ ํ๋ ์กด์ฌ"์ "์ ํ๋ ๋ถ์ฌ" ๋ชจ๋์์ ์ค๋ฅ ์์ด ์๋ํฉ๋๋ค. ์ ํ์ ๊ฐ์ ์์ ํ ๊ธฐ๋ณธ๊ฐ์ ๊ฐ์ง๋๋ค.
- ์ฐ๊ธฐ ํธํ์ฑ์ ์ ์ง๋๋๊ฐ? ์ ํด๋ผ์ด์ธํธ๋ ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ์ ์๊ณ ์ค๋๋ ํด๋ผ์ด์ธํธ๋ ์ ํ์ด๋ก๋๋ก๋ ์ฑ๊ณตํด์ผ ํฉ๋๋ค. ์๋ฒ๊ฐ ๋ ํฌ๋งท์ ๋ชจ๋ ์์ฉํ๊ณ ์ค๋๋ ํด๋ผ์ด์ธํธ๊ฐ ํ์ฑํ ์ ์๋ ์๋ต์ ์์ฑํ๋์ง ํ์ธํฉ๋๋ค.
- ๋ฐฑํ์ ๋ฉ์ท๋ค ์ฌ์์ํด๋ ์์ ํ๊ฐ? ์ก์ ๋ฐฐ์น๋ก ์คํ๋๊ณ , ์ฌ์์ํด๋ ๋ฐ์ดํฐ ์ค๋ณต์ด๋ ์์์ด ์์ด์ผ ํ๋ฉฐ ๋จ์ ํ ์๋ฅผ ์ธก์ ํ ์ ์์ด์ผ ํฉ๋๋ค.
- ์ญ์ ๋ ์ง๋ฅผ ์๊ณ ์๋๊ฐ? ์ธ์ ๋ ๊ฑฐ์ ํ๋๋ ๋ก์ง์ ์ ๊ฑฐํ ์ง์ ๋ํ ๊ตฌ์ฒด์ ๊ท์น์ด ์๋๊ฐ(์: X์ผ ํ ๋ฐ Y%์ ์์ฒญ์ด ์ ๋ฐ์ดํธ๋ ํด๋ผ์ด์ธํธ์์ ์ค๋์ง ํ์ธ).
์ฌ์์ฑ ํ๋ซํผ์ ์ฌ์ฉํ๋ค๋ฉด ์ถ๊ฐ ์ ๊ฒ: ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ค๋ ์ ํํ ๋ชจ๋ธ์์ ๋น๋๋ฅผ ์์ฑํ๊ณ ๋ฐฐํฌํ ๋ค, ์์ฑ๋ API์ ๋น์ฆ๋์ค ๋ก์ง์ด ์ ๋ ์ฝ๋๋ฅผ ์ฌ์ ํ ํ์ฉํ๋์ง ํ์ธํ์ธ์. ํํ ์คํจ๋ ์ ์คํค๋ง๊ฐ ์ ํ์ ๋ก์ง์ ์๋ฏธํ๋ค๊ณ ๊ฐ์ ํ๋ ์ค์์ ๋๋ค.
๋ํ ๋ฐฐํฌ ํ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ๋ฌด์์ ๋ชจ๋ํฐ๋งํ๊ณ ์ด๋ค ๊ฒ์ ๋จผ์ ๋กค๋ฐฑํ ์ง(ํผ์ฒ ํ๋๊ทธ ๋๊ธฐ, ๋ฐฑํ ์ผ์์ค์ง, ์๋ฒ ๋ฆด๋ฆฌ์ค ๋๋๋ฆฌ๊ธฐ) ๋ ๊ฐ์ง ๋น ๋ฅธ ํ๋์ ์ ์ด๋์ธ์. ์ด๊ฒ์ด "๋น ๋ฅด๊ฒ ๋ฐ์ํ๊ฒ ๋ค"๋ ์ถ์์ ๋ค์ง์ ์ค์ ๊ณํ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
์์: ์ค๋๋ ๋ชจ๋ฐ์ผ ์ฑ์ด ์ฌ์ ํ ํ์ฑํ๋ ์ํ์์ ์ ํ๋ ์ถ๊ฐํ๊ธฐ
์ฃผ๋ฌธ ์ฑ์ ์ด์ํ๋ค๊ณ ํฉ์๋ค. delivery_window๋ผ๋ ์ ํ๋๊ฐ ํ์ํ๊ณ ๋น์ฆ๋์ค ๊ท์น์ ํ์ํํ ์์ ์
๋๋ค. ๋ฌธ์ ๋ ์ค๋๋ iOS/Android ๋น๋๊ฐ ์ฌ์ ํ ์ฌ์ฉ ์ค์ด๊ณ , ๋ฉฐ์น ๋๋ ๋ช ์ฃผ๊ฐ ์ด ํ๋๋ฅผ ๋ณด๋ด์ง ์์ ์ ์๋ค๋ ์ ์
๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฆ์ ํ์๋ก ๋ง๋ค๋ฉด ์ด๋ค ํด๋ผ์ด์ธํธ๋ ์คํจํฉ๋๋ค.
์์ ํ ๊ฒฝ๋ก:
- 1๋จ๊ณ: ์ปฌ๋ผ์ nullable๋ก ์ถ๊ฐํ๊ณ ์ ์ฝ์ ๋์ง ์์ต๋๋ค. ๊ธฐ์กด ์ฝ๊ธฐ/์ฐ๊ธฐ๋ ๋ณ๊ฒฝํ์ง ์์ต๋๋ค.
- 2๋จ๊ณ: ๋์ผ ๋ผ์ดํธ. ์ ํด๋ผ์ด์ธํธ(๋๋ ๋ฐฑ์๋)๊ฐ ์ ํ๋๋ฅผ ์๋๋ค. ์ ํด๋ผ์ด์ธํธ๋ ์ปฌ๋ผ์ด null์ ํ์ฉํ๋ฏ๋ก ๊ณ์ ์๋ํฉ๋๋ค.
- 3๋จ๊ณ: ๋ฐฑํ. ๋ฐฐ์ก ๋ฐฉ์์์ ์ ์ถํ๊ฑฐ๋ ๊ธฐ๋ณธ๊ฐ์ "anytime"์ผ๋ก ์ค์ ํด ์ ํ์ ์ฑ์๋๋ค.
- 4๋จ๊ณ: ์ฝ๊ธฐ ์ ํ. API์ UI๊ฐ ๋จผ์
delivery_window๋ฅผ ์ฝ๋ ๊ฐ์ด ์์ผ๋ฉด ์ ์ถ๋ ๊ฐ์ ํด๋ฐฑ์ผ๋ก ์ฌ์ฉํฉ๋๋ค. - 5๋จ๊ณ: ๋์ค์ ๊ฐ์ ํ. ์ฑํ๊ณผ ๋ฐฑํ์ด ์๋ฃ๋๋ฉด
NOT NULL์ ์ถ๊ฐํ๊ณ ํด๋ฐฑ์ ์ ๊ฑฐํฉ๋๋ค.
๊ฐ ๋จ๊ณ ๋์ ์ฌ์ฉ์๊ฐ ๋๋ผ๋ ๋ณํ๋ ์ง๋ฃจํจ(boring)์ ๋๋ค(๋ชฉํ๊ฐ ๋ฐ๋ก ๊ทธ๊ฒ์ ๋๋ค):
- ์ค๋๋ ๋ชจ๋ฐ์ผ ์ฌ์ฉ์๋ ๋ฐ์ดํฐ๊ฐ ์๋ค๊ณ API๊ฐ ๊ฑฐ๋ถํ์ง ์์ผ๋ฏ๋ก ๊ณ์ ์ฃผ๋ฌธํ ์ ์์ต๋๋ค.
- ์ ๋ชจ๋ฐ์ผ ์ฌ์ฉ์๋ ์ ํ๋๋ฅผ ๋ณด๊ณ ์ ํ์ด ์ผ๊ด๋๊ฒ ์ ์ฅ๋ฉ๋๋ค.
- ์ด์๊ณผ ์ง์ํ์ ํ๋๊ฐ ์ ์ง์ ์ผ๋ก ์ฑ์์ง๋ ๊ฒ์ ๋ณด๊ณ ๊ฐ์์ค๋ฌ์ด ๋๋ฝ์ ๋ณด์ง ์์ต๋๋ค.
๊ฐ ๋จ๊ณ์ ๊ฐ๋จํ ๋ชจ๋ํฐ๋ง ๊ธฐ์ค: ์ ์ฃผ๋ฌธ์์ delivery_window๊ฐ ๋น์ด์์ง ์์ ๋น์จ์ ์ถ์ ํ์ธ์. ์ด ๋น์จ์ด ์์ ์ ์ผ๋ก ๋๊ณ "ํ๋ ๋๋ฝ" ๊ฒ์ฆ ์ค๋ฅ๊ฐ ๊ฑฐ์ 0์ด๋ฉด ๋ฐฑํ์์ ์ ์ฝ ๊ฐ์ ํ๋ก ๋์ด๊ฐ๊ธฐ ์์ ํ ์ ํธ์
๋๋ค.
๋ค์ ๋จ๊ณ: ์ฌํ ๊ฐ๋ฅํ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ์ด๋ถ ๋ง๋ค๊ธฐ
ํ ๋ฒ์ ์ ์คํ ๋กค์์์ ์ ๋ต์ด ์๋๋๋ค. ์คํค๋ง ๋ณ๊ฒฝ์ ์ผ์ํํ์ธ์: ๋์ผํ ๋จ๊ณ, ๋์ผํ ๋ช ๋ช ๊ท์น, ๋์ผํ ์น์ธ ์ ์ฐจ. ๊ทธ๋ฌ๋ฉด ๋ค์ ์ถ๊ฐ์ ๋ณ๊ฒฝ๋ ์ฑ์ด ๋ฐ์๊ณ ํด๋ผ์ด์ธํธ๊ฐ ๋ค๋ฅธ ๋ฒ์ ์ผ ๋๋ ์ง๋ฃจํ๊ฒ(๋ฌธ์ ์์ด) ์งํ๋ฉ๋๋ค.
ํ๋ ์ด๋ถ์ ๊ฐ๊ฒฐํด์ผ ํฉ๋๋ค. ๋ฌด์์ ์ถ๊ฐํ๊ณ , ์ด๋ป๊ฒ ์์ ํ๊ฒ ๋ฐฐํฌํ๋ฉฐ, ์ธ์ ์ค๋๋ ๋ถ๋ถ์ ์ ๊ฑฐํ ์ง ๋ตํด์ผ ํฉ๋๋ค.
๊ฐ๋จํ ํ ํ๋ฆฟ:
- ์ถ๊ฐ๋ง ํ๋ค(์ ์ปฌ๋ผ/ํ ์ด๋ธ/์ธ๋ฑ์ค, ์ ํ์ ์ API ํ๋).
- ์ ๊ตฌ์กฐ์ ์ ๊ตฌ์กฐ๋ฅผ ๋ชจ๋ ์ฝ์ ์ ์๋ ์ฝ๋๋ฅผ ๋ฐฐํฌํ๋ค.
- ์๊ท๋ชจ ๋ฐฐ์น๋ก ๋ฐฑํํ๊ณ ์๋ฃ ์ ํธ๋ฅผ ๋ช ํํ ํ๋ค.
- ๋์ ์ ํ์ ํผ์ฒ ํ๋๊ทธ๋ ์ค์ ์ผ๋ก ํ๊ณ ์ฌ๋ฐฐํฌ์ ์์กดํ์ง ์๋๋ค.
- ์ปท์คํ ๋ ์ง์ ๊ฒ์ฆ ํ์๋ง ์ค๋๋ ํ๋/์๋ํฌ์ธํธ๋ฅผ ์ ๊ฑฐํ๋ค.
๋ฎ์ ์ํ์ ํ ์ด๋ธ(์ ์ ํ์ ์ํ, ๋ฉ๋ชจ ํ๋)๋ก ์์ํด ์ ์ฒด ํ๋ ์ด๋ถ์ ์ฒ์๋ถํฐ ๋๊น์ง ์คํํ์ธ์: ์ถ๊ฐ์ ๋ณ๊ฒฝ, ๋ฐฑํ, ํผํฉ ๋ฒ์ ํด๋ผ์ด์ธํธ, ์ ๋ฆฌ ๋จ๊ณ. ์ด ์ฐ์ต์ ์ฃผ์ ์ฌ์ค๊ณ ์๋ ์ ์ ๋ชจ๋ํฐ๋ง, ๋ฐฐ์น ์ฒ๋ฆฌ, ์ปค๋ฎค๋์ผ์ด์ ์ ๋นํ์ ๋๋ฌ๋ ๋๋ค.
์ฅ๊ธฐ์ ํผ๋์ ๋ง๋ ํ ๊ฐ์ง ์ต๊ด: "๋์ค์ ์ ๊ฑฐ"ํ ํญ๋ชฉ์ ์ค์ ์์ ์ผ๋ก ์ทจ๊ธํ์ธ์. ์์ ์ปฌ๋ผ, ํธํ์ฑ ์ฝ๋, ๋์ผ๋ผ์ดํธ ๋ก์ง์ ์ถ๊ฐํ๋ฉด ์ฆ์ ์ ๋ฆฌ ํฐ์ผ์ ๋ง๋ค๊ณ ๋ด๋น์์ ๋ ์ง๋ฅผ ์ง์ ํ์ธ์. ๋ฆด๋ฆฌ์ค ๋ฌธ์์ ์์ง๋ง ์ง์์ ์ธ "ํธํ์ฑ ๋ถ์ฑ" ๋ฉ๋ชจ๋ฅผ ๋จ๊ฒจ ๊ฐ์์ฑ์ ์ ์งํ์ธ์.
AppMaster๋ก ๊ตฌ์ถํ๋ฉด ์ฌ์์ฑ์ ์์ ์ ์ฐจ์ ์ผ๋ถ๋ก ์ทจ๊ธํ ์ ์์ต๋๋ค: ์ถ๊ฐ์ ์คํค๋ง๋ฅผ ๋ชจ๋ธ๋งํ๊ณ , ์ ํ ์ค์ ์/์ ํ๋๋ฅผ ๋ชจ๋ ์ฒ๋ฆฌํ๋๋ก ๋น์ฆ๋์ค ๋ก์ง์ ์ ๋ฐ์ดํธํ ๋ค ์ฌ์์ฑํ์ฌ ์์ค ์ฝ๋๊ฐ ์๊ตฌ์ฌํญ ๋ณํ์ ๋ฐ๋ผ ๊น๋ํ๊ฒ ์ ์ง๋๊ฒ ํฉ๋๋ค. ์ด ์ํฌํ๋ก์ฐ๊ฐ ์ฝ๋๊ฐ ์ค์ ๋ก ์์ฑ๋๋ ๋ ธ์ฝ๋ ํ๊ฒฝ์ ์ด๋ป๊ฒ ๋ง๋์ง ๋ณด๊ณ ์ถ๋ค๋ฉด AppMaster (appmaster.io)๋ ๋ฐ๋ณต์ ์ด๊ณ ๋จ๊ณ์ ์ธ ๋ฐฐํฌ ๋ฐฉ์์ ๋ง์ถฐ ์ค๊ณ๋์ด ์์ต๋๋ค.
๋ชฉํ๋ ์๋ฒฝํจ์ด ์๋๋ผ ๋ฐ๋ณต์ฑ์ ๋๋ค: ๋ชจ๋ ๋ง์ด๊ทธ๋ ์ด์ ์ ๊ณํ, ์ธก์ , ๊ทธ๋ฆฌ๊ณ ์ฒ ์ ๊ฒฝ๋ก๊ฐ ์์ด์ผ ํฉ๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
๋ฌด์ค๋จ(์ ๋ก ๋ค์ดํ์)์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ฝ๋๋ฅผ ๋ฐฐํฌํ๋ ๋์ ์ฌ์ฉ์๋ค์ด ์ ์์ ์ผ๋ก ๊ณ์ ์์ ํ ์ ์์์ ์๋ฏธํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ช ๋ฐฑํ ๋ค์ดํ์์ ํผํ๋ ๊ฒ๋ฟ๋ง ์๋๋ผ ๋น ํ๋ฉด, ์๋ชป๋ ๊ฐ, ์์ ์คํจ, ๊ธด ์ ๊ธ์ผ๋ก ์ธํ ์ฐ๊ธฐ ์ฐจ๋จ ๊ฐ์ ์๋ฐํ ์ฅ์ ๋ ํฌํจ๋ฉ๋๋ค.
๋ง์ด๊ทธ๋ ์ด์ ์ด ์ฑ๊ณตํด๋ ์์คํ ์ ์ฌ๋ฌ ๋ถ๋ถ์ด ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์์กดํ๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์์ต๋๋ค. ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ , ๋ฆฌํฌํธ, ๊ด๋ฆฌ ์คํฌ๋ฆฝํธ, ํตํฉ ์๋น์ค, ์ค๋๋ ๋ชจ๋ฐ์ผ ์ฑ ๋ฑ์ ๋ฉ์ธ UI์ ๋ณ๊ฐ๋ก ์ค๋๋ ํ๋๋ฅผ ๊ณ์ ์ฌ์ฉํ๊ฑฐ๋ ๊ธฐ๋ํ ์ ์์ต๋๋ค.
์ค๋๋ ๋ชจ๋ฐ์ผ ๋น๋๋ ๋ช ์ฃผ ๋์ ์ฌ์ฉ๋ ์ ์๊ณ , ์ผ๋ถ ํด๋ผ์ด์ธํธ๋ ๋คํธ์ํฌ๊ฐ ํ๋ณต๋๋ฉด ์ด์ ์์ฒญ์ ๋ค์ ๋ณด๋ ๋๋ค. ๋ฐ๋ผ์ API๋ ์ผ์ ๊ธฐ๊ฐ ๋์ ์ค๋๋ ํ์ด๋ก๋์ ์๋ก์ด ํ์ด๋ก๋๋ฅผ ๋ชจ๋ ๋ฐ์๋ค์ฌ์ผ ํฉ๋๋ค.
์ถ๊ฐ(additive) ๋ณ๊ฒฝ์ ๊ธฐ์กด ์คํค๋ง๋ฅผ ์ ์งํ ์ฑ ์ ํญ๋ชฉ์ ์ถ๊ฐํ๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด ์ฝ๋๊ฐ ๊นจ์ง ๊ฐ๋ฅ์ฑ์ด ์ ์ต๋๋ค. ๋ฐ๋ฉด ์ด๋ฆ ๋ณ๊ฒฝ์ด๋ ์ญ์ ๋ ์ค๋๋ ํด๋ผ์ด์ธํธ๊ฐ ์์กดํ๋ ๊ฒ์ ์ ๊ฑฐํ๋ฏ๋ก ์ํํฉ๋๋ค.
์ ํ๋๋ฅผ ๋ฐ๋ก ํ์๋ก ๋ง๋ค์ง ๋ง๊ณ ๋จผ์ nullable(๋ ํ์ฉ)๋ก ์ถ๊ฐํ์ธ์. ์ค๋๋ ์ฝ๋๊ฐ ๊ณ์ ํ์ ์ฝ์
ํ ์ ์๊ฒ ํ ๋ค, ๋ฐฐ์น๋ก ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ์ฑ์ฐ๊ณ , ์ฐ๊ธฐ๊ฐ ์ผ๊ด๋๊ฒ ์ด๋ค์ง ๋ NOT NULL์ ์ ์ฉํฉ๋๋ค.
๋กค์์์ผ๋ก ์ ๊ทผํ์ธ์. ํธํ ๊ฐ๋ฅํ ์คํค๋ง๋ฅผ ์ถ๊ฐํ๊ณ , ์์ชฝ์ ๋ชจ๋ ์ง์ํ๋ ์ฝ๋๋ฅผ ๋ฐฐํฌํ ๋ค, ์๊ท๋ชจ ๋ฐฐ์น๋ก ๋ฐฑํ์ ์คํํ๊ณ , ํด๋ฐฑ์ ์ ์งํ๋ฉด์ ์ฝ๊ธฐ๋ฅผ ์ ํํ ๋ค์, ์ ๋ง ์ฌ์ฉ๋์ง ์๋ ๊ฒ์ ํ์ธํ ๋ค์๋ง ์ค๋๋ ํ๋๋ฅผ ์ ๊ฑฐํฉ๋๋ค. ๊ฐ ๋จ๊ณ๋ ๋จ๋ ์ผ๋ก ์์ ํด์ผ ํฉ๋๋ค.
์์ ํธ๋์ญ์ ์ผ๋ก ์๊ท๋ชจ ๋ฐฐ์น ๋จ์๋ก ๋ฐฑํ์ ์คํํ์ธ์. ํ ์ด๋ธ์ ์ ๊ทธ๊ฑฐ๋ ๋ถํ๋ฅผ ๊ธ์ฆ์ํค์ง ์๋๋ก ์ ํ๊ณผ ์งง์ ์ผ์์ค๋จ(sleep)์ ๋๊ณ ์งํํฉ๋๋ค. ์งํ ์ํฉ์ ๊ธฐ๋กํด ์ค๋จ ํ ์ฌ์์์ด ์์ ํ๋๋ก ๋ง๋์ธ์.
์ ํ๋๋ฅผ ์ฒ์์๋ ์ ํ์ (optional)์ผ๋ก ์ทจ๊ธํ๊ณ , ์๋ฒ ์ธก์์ ๊ฐ์ด ์์ ๋ ๊ธฐ๋ณธ๊ฐ์ ์ ์ฉํ์ธ์. ๊ธฐ์กด ๋์์ ๋ณ๊ฒฝํ์ง ๋ง๊ณ , ์ ํด๋ผ์ด์ธํธ๊ฐ ๊ฐ์ ๋ณด๋ผ ๋์ ์ค๋๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ตํ ๋ ๋ ๊ฒฝ๋ก๋ฅผ ํ ์คํธํ์ธ์.
๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์คํค๋ง๋ฅผ ๋๋๋ฆฌ๊ธฐ๋ณด๋ค ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ๋๋๋ฆฝ๋๋ค. ์๋ก์ด ์ฝ๊ธฐ๋ฅผ ๋จผ์ ๋นํ์ฑํํ๊ณ , ๋ค์์ผ๋ก ์๋ก์ด ์ฐ๊ธฐ๋ฅผ ์ค๋จํ์ธ์. ์ ํ ์ด๋ธ/์ปฌ๋ผ์ ์ ์งํ๋ ์ฌ์ฉ์ ์ค์งํ๊ณ , ๋ฐฑํ์ ์์ ํ๋ ๋๊น์ง ์ผ์์ค์งํฉ๋๋ค.
์๋ฌ์จ, ๋๋ฆฐ ์ฟผ๋ฆฌ(p95/p99), ์ฐ๊ธฐ ์ง์ฐ, ํ ๊น์ด, ๋ฐ์ดํฐ๋ฒ ์ด์ค CPU/IO ์ฌ์ฉ๋ ๊ฐ์ ์ฌ์ฉ์ ์ํฅ ์งํ๋ฅผ ํ์ธํ์ธ์. ๊ฐ ๋จ๊ณ์์ ์งํ๊ฐ ์์ ์ ์ด๊ณ ์ ํ๋ ์ปค๋ฒ๋ฆฌ์ง๊ฐ ๋์ ๋๋ง ๋ค์ ๋จ๊ณ๋ก ์งํํฉ๋๋ค.


