์์ ํ ๋๋ ๊ฐ์ ธ์ค๊ธฐ: ๋ฏธ๋ฆฌ๋ณด๊ธฐ, ๊ฒ์ฆ, ์ปค๋ฐ ํจํด
์์ ํ ๋๋ ๊ฐ์ ธ์ค๊ธฐ๋ ์๋ชป๋ ๋ฐ์ดํฐ์ ์์์น ๋ชปํ ๋ณ๊ฒฝ์ ๋ฐฉ์งํฉ๋๋ค. ๋ฏธ๋ฆฌ๋ณด๊ธฐ, ๊ฒ์ฆ, ํ๋ณ ์ค๋ฅ ์ฒ๋ฆฌ, ๋กค๋ฐฑ ์นํ์ ์ปค๋ฐ ํจํด์ ์ฌ์ฉํ์ธ์.

๋๋ ๋ณ๊ฒฝ์ด ์๋ชป๋๋ ์ด์ (๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์๊ฐ ๊ธฐ๋ํ๋ ๊ฒ)
๋๋ ๋ณ๊ฒฝ์ ์ฌ์ํ์ง๋ง ํ์ค์ ์ธ ์ด์ ๋ก ์คํจํฉ๋๋ค. ํ์ผ์ ๊ฑฐ์ ๋ง๋๋ฐ ์ด ์ด๋ฆ ํ๋๊ฐ ๋ค๋ฅด๊ฑฐ๋, ๋ช๋ช ํ์ ํ์ ํ๋๊ฐ ๋น์ด ์๊ฑฐ๋, ID๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ผ์นํ์ง ์์ ๋งค์นญ์ด ์ ๋๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ๋๋ ๋ฐ์ดํฐ๋ ์ ํจํ์ง๋ง ํ๋์ ์๋ชป ๋งคํ๋์ด ์ ํ๋ฒํธ๊ฐ ๋ฉ๋ชจ ์ด๋ก ๋ค์ด๊ฐ๋ ์์ ๋๋ค.
์ด๊ฒ ๋ ์ํํ ์ด์ ๋ ์๋์ ๋๋ค. ํ ๋ฒ์ ์๋ชป๋ ๊ฐ์ ์ด ์๋ฐฑ์์ ์์ฒ ๊ฑด์ ๋ ์ฝ๋์ ์ ์ฉ๋ ๋ค์์ผ ๋ฐ๊ฒฌ๋ ์ ์์ต๋๋ค. ์์ ํ ๋๋ ๊ฐ์ ธ์ค๊ธฐ๋ ๋จ์ํ ๋ฐฑ์๋ ๋ฌธ์ ๊ฐ ์๋๋ผ ์ ๋ขฐ์ ๋ฌธ์ ์ ๋๋ค.
์ฌ์ฉ์๊ฐ ๊ธฐ๋ํ๋ ํ ๊ฐ์ง๋ ๋จ์ํฉ๋๋ค: ์ผ์ด ์ผ์ด๋๊ธฐ ์ ์ ๋ฌด์์ด ์ผ์ด๋ ์ง ๋ณด์ฌ ๋ฌ๋ผ๋ ๊ฒ. ๊ฐ์ฅ ์ ๋ขฐํ ์ ์๋ ํจํด์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ โ ๊ฒ์ฆ โ ์ปค๋ฐ์ ๋๋ค.
- ๋ฏธ๋ฆฌ๋ณด๊ธฐ: ๋ณ๊ฒฝ ์์ฝ๊ณผ ์ค์ ๋ณ๊ฒฝ ์ํ์ ๋ช ํํ ๋ณด์ฌ์ค๋๋ค.
- ๊ฒ์ฆ: ๋๋ฝ๋ ํ๋, ์๋ชป๋ ํ์, ๋ถ์ผ์น ์ฐธ์กฐ๋ฅผ ์ก๋ ๊ท์น์ ์คํํฉ๋๋ค.
- ์ปค๋ฐ: ์ฌ์ฉ์๊ฐ ํ์ธํ ๋ค ์ํ์ ๋ง๋ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝ์ ์ ์ฉํฉ๋๋ค.
์ฌ๋๋ค์ ๋ํ ๋ ๊ฐ์ง ์คํจ ์ ํ์ ๋ํ ๋ณดํธ๋ฅผ ์ํฉ๋๋ค.
์์ ๊ฐ๋ฅํ ๋ฌธ์ ๋ ํ๋ณ๋ก ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. ์: 12๊ฐ์ ํ์ ์๋ชป๋ ์ด๋ฉ์ผ ํ์์ด๋ ์ฐํธ๋ฒํธ ๋๋ฝ์ด ์๋ ๊ฒฝ์ฐ ์ฌ์ฉ์๋ ๊ทธ ํ๋ค๋ง ๊ณ ์น๊ณ (๋ฆฌํฌํธ ๋ค์ด๋ก๋, ์ธ๋ผ์ธ ํธ์ง ๋๋ ์ฌ์ ๋ก๋) ๋๋จธ์ง๋ ์ปค๋ฐ ์ค๋น ์ํ๋ก ๋๊ณ ์ถ์ดํฉ๋๋ค.
์ฐจ๋จ ๋ฌธ์ ๋ ๋ชจ๋ ๊ฒ์ ๋ฉ์ถฐ์ผ ํฉ๋๋ค. ๋งคํ์ด ์๋ชป๋์ด ํต์ฌ ํ๋๋ฅผ ๋ฎ์ด์ฐ๊ฑฐ๋ ํ์ผ์ด ์๋ชป๋ ์ํฌ์คํ์ด์ค/๊ณ ๊ฐ์ฉ์ด๋ผ๋ฉด, ๋ช ํํ ์ค๋ช ๊ณผ ํจ๊ป ๊ฐ์ ์ค๋จ(hard stop)์ด ์ต์ ์ ๋๋ค.
์ฌ์ฉ์๋ ๋ํ ๊ฐ์ฌ ์ถ์ ์ ์ํฉ๋๋ค: ์คํ ID, ํ์์คํฌํ, ๋๊ฐ ์คํํ๋์ง, ์ด๋ค ํ์ผ์ ์ฌ์ฉํ๋์ง, ๋ฌด์์ด ๋ณ๊ฒฝ๋์๊ณ ๋ฌด์์ด ์คํจํ๋์ง. ์ด๊ฒ ์ง์์ ๋น ๋ฅด๊ฒ ํ๊ณ ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋ ์ ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ๋ง๋ญ๋๋ค.
๋ฏธ๋ฆฌ๋ณด๊ธฐ-๊ฒ์ฆ-์ปค๋ฐ ํ๋ฆ์ ์ฌ์ด ๋ง๋ก ์ ๋ฆฌํ๋ฉด
๋๋ ๋ณ๊ฒฝ์ ๋ฒํผ ํ ๋ฒ์ผ๋ก ์์ฒ ๊ฑด์ ๊ฑด๋๋ฆด ์ ์์ด์ ์ํํด ๋ณด์ ๋๋ค. ์ํ์ ์ค์ด๋ ๊ฐ์ฅ ๋จ์ํ ๋ฐฉ๋ฒ์ ์์ ์ ์ธ ๋จ๊ณ๋ก ๋ถ๋ฆฌํ๋ ๊ฒ์ ๋๋ค. ๊ฐ ๋จ๊ณ๋ ์์ฒด ์ถ๋ ฅ๋ฌผ์ ๊ฐ์ง๋๋ค.
1๋จ๊ณ: ๋ฏธ๋ฆฌ๋ณด๊ธฐ(๋ฐฐ์น ์ค๋น)
์ ๋ ฅ(CSV, ๋ถ์ฌ๋ฃ์ ํ, ์ฑ ๋ด ์ ํ๋ ๋ ์ฝ๋)์ ๋ฐ์์ ์ค๋น๋ ๋ฐฐ์น๋ก ๋ง๋ญ๋๋ค. ์ด ๋จ๊ณ์ ๋ชฉ์ ์ ์์คํ ์ด ์ค์ ๋ก ๋ฌด์์ ํ๋ ค๊ณ ํ๋์ง ๋ณ๊ฒฝ ์ ์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ ๋๋ค.
์ข์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ ์ธ ๊ฐ์ง์ ๋ตํฉ๋๋ค: ๋ฌด์์ด ๋ณ๊ฒฝ๋๋๊ฐ, ๋ช ๊ฑด์ด ์ํฅ์ ๋ฐ๋๊ฐ, ๊ทธ๋ฆฌ๊ณ ๋ฌด์์ด ์์ฌ์ค๋ฌ์ด๊ฐ.
์ต์ํ ํฉ๊ณ(์ด ํ, ๋งค์นญ๋ ๋ ์ฝ๋, ์ ๊ท ๋ ์ฝ๋, ๊ฑด๋๋ด ํ), ์ค์ ํ์ ์์ ์ํ, ๊ทธ๋ฆฌ๊ณ ์ํํ ํญ๋ชฉ์ ๋ํ ๋ช ํํ ๊ฒฝ๊ณ (ํ์ ํ๋ ๋๋ฝ, ์ ๋งคํ ๋งค์นญ, ํน์ด๊ฐ)๋ฅผ ํฌํจํ์ธ์. ๋ํ ๋งค์นญ ๊ท์น(์: "์ด๋ฉ์ผ๋ก ๋งค์นญ" ๋๋ "์ธ๋ถ ID๋ก ๋งค์นญ")์ ๋ช ์ํ๊ณ , ๋ฐฐ์น์ ์ด๋ฆ, ํ์์คํฌํ, ๊ณ ์ ๋ฐฐ์น ID ๊ฐ์ ์ ์ฒด์ฑ์ ๋ถ์ฌํ์ธ์.
2๋จ๊ณ: ๊ฒ์ฆ(๋๋ผ์ด๋ฐ)
๋๋ผ์ด๋ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ์ง ์๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ค์ ์ ๋ฐ์ดํธ ๋ ์ฌ์ฉํ ๋์ผํ ๊ฒ์ฌ๋ฅผ ์คํํ๋ ๊ฒฐ๊ณผ๋ง ๋ณด๊ณ ์๋ก ๋ง๋์ธ์.
๊ฒ์ฆ์ ํ ๊ท์น(์ด ํ์ด ์ ํจํ๊ฐ?)๊ณผ ํ๊ฐ ๊ท์น(์ด ํ๋ค์ด ์๋ก ์ถฉ๋ํ๋๊ฐ?)์ ๋ชจ๋ ํฌํจํด์ผ ํฉ๋๋ค. ์ถ๋ ฅ์ ๋ชจํธํ ํต๊ณผ/์คํจ๊ฐ ์๋๋ผ ์์ฝ๊ณผ ํน์ ํ์ ์ฐ๊ฒฐ๋ ๋ฌธ์ ๋ชฉ๋ก์ด์ด์ผ ํ๋ฉฐ, ์ฌ๋๋ค์ด ์ถ์ธก ์์ด ๋ฌธ์ ๋ฅผ ๊ณ ์น ์ ์๊ฒ ํด์ผ ํฉ๋๋ค.
3๋จ๊ณ: ์ปค๋ฐ(๋ณ๊ฒฝ ์ ์ฉ)
์ปค๋ฐ์ ๋๋๋ฆด ์ ์๋ ์ง์ ์ด๋ฏ๋ก ์ฑ๊ณต์ ์ธ ๋๋ผ์ด๋ฐ ํ์๋ง ๊ฐ๋ฅํด์ผ ํฉ๋๋ค. ์ฌ์ฉ์๋ "ํ์ผ" ์์ฒด๋ฅผ ํ์ธํ๋ ๊ฒ์ด ์๋๋ผ, ๋ฏธ๋ฆฌ๋ณด๊ธฐ์ ๊ฒ์ฆ์ ๊ฑฐ์น ํน์ ์ค๋น๋ ๋ฐฐ์น๋ฅผ ํ์ธํ๋ ๊ฒ์ ๋๋ค.
์ด ๊ฒฐ์ ์ง์ ์ด ์ค์ํฉ๋๋ค. ํ์ผ์ด ๋ฐ๋๊ฑฐ๋ ๋งคํ์ด ๋ฐ๋๊ฑฐ๋ ๋ฐ์ดํฐ๊ฐ ๋ค์ ์ ๋ก๋๋๋ฉด ์ ๋ฐฐ์น๋ฅผ ์์ฑํ๊ณ ๋ค์ ํ์ธ์ ์๊ตฌํ์ธ์.
์: 5,000๋ช ์ ๊ณ ๊ฐ์ ๊ฐ์ ธ์ต๋๋ค. ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ ์ด๋ฉ์ผ๋ก 4,920๊ฑด์ด ๋งค์นญ๋๊ณ 60๊ฑด์ด ์ ๊ท์ด๋ฉฐ 20๊ฑด์ ์ด๋ฉ์ผ ๋๋ฝ์ผ๋ก ๊ฑด๋๋ด๋ค๊ณ ๋ณด์ฌ์ค๋๋ค. ๋๋ผ์ด๋ฐ์ 12๊ฐ ํ์์ ์๋ชป๋ ์ ํ ํ์์ ๋ฐ๊ฒฌํฉ๋๋ค. ๊ทธ 12๊ฐ๊ฐ ๊ณ ์ณ์ ธ์ผ๋ง ํด๋น ๋ฐฐ์น ID์ ๋ํด "๋ฐฐ์น ์ปค๋ฐ"์ด ๊ฐ๋ฅํด์ง๋๋ค.
์ ๋ ฅ, ๋งคํ, ๋ ์ฝ๋ ์๋ณ ๋ฐฉ๋ฒ
๋ง์ ๋๋ ์์ ์ ๊ฒ์ฆ ์์ ์ ์ ์ด๋ฏธ ์คํจํฉ๋๋ค. ์ ๋ ฅ์ด ์๋ง์ด๊ฑฐ๋ ์ด์ด ํ๋์ ๋ง์ง ์๊ฑฐ๋ ์์คํ ์ด ํด๋น ํ์ ์๋ก ๋ง๋ค์ง ์ ๋ฐ์ดํธํ ์ง ํ๋จํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ์ ๋๋ค.
๋๋ ์์ ์ ๋ณดํต CSV ๋ด๋ณด๋ด๊ธฐ, ๋ถ์ฌ๋ฃ์ ์คํ๋ ๋์ํธ ํ, ์ฑ ๋ด ์ ํ๋ ๋ ์ฝ๋(๋๋ ์์ ), ๋๋ API๋ก ํธ๋ฆฌ๊ฑฐ๋ ๋ฐฐ์น ์์ ์์ ์์๋ฉ๋๋ค. ์ถ์ฒ์ ๊ด๊ณ์์ด ์ฌ์ฉ์๊ฐ ๊ฐ์ง ๊ฒ("what the user has")๊ณผ ์์คํ ์ด ์ ์ฅํ๋ ๊ฒ("what your system stores") ์ฌ์ด์ ๋ช ํํ ๋งคํ์ด ํ์ํฉ๋๋ค.
๋งคํ์ ์ดโํ๋ ๋งค์นญ, ์์ ๋ณํ(๊ณต๋ฐฑ ์๋ฅด๊ธฐ, ๋ ์ง ํ์ฑ, ์ ํ๋ฒํธ ์ ๊ทํ), ๋๋ฝ๊ฐ์ ๋ํ ๊ธฐ๋ณธ๊ฐ ์ ์ฉ์ ํฌํจํด์ผ ํฉ๋๋ค. ์ด์ด ๋น์์ ๋ ์ด๋ค ์ฒ๋ฆฌ๋ฅผ ํ๋์ง ์จ๊ธฐ์ง ๋ง์ธ์. ๋น ์ ์ด ๊ธฐ์กด ๊ฐ์ ๊ทธ๋๋ก ๋๋์ง, ๊ฐ์ ์ง์ฐ๋์ง, ๊ธฐ๋ณธ๊ฐ์ ์ ์ฉํ๋์ง ์ฌ์ฉ์๊ฐ ์์์ผ ํฉ๋๋ค.
์๋ณ(Identity)์ ๋ค์ ํฐ ๊ฒฐ์ ์ ๋๋ค: ๊ฐ ํ์ ๊ธฐ์กด ๋ ์ฝ๋์ ์ด๋ป๊ฒ ๋งค์นญํ ๊ฒ์ธ๊ฐ?
์์ ์ ์ธ ์๋ณ์๋ฅผ ์ ํธํ๊ณ , ๋งค์นญ์ด ์๊ฑฐ๋ ์ฌ๋ฌ ๊ฑด ๋งค์นญ๋ ๋ ์ด๋ค ๊ฒฐ๊ณผ๊ฐ ๋์ค๋์ง ๋ช
์ํ์ธ์. ์ผ๋ฐ์ ์ธ ์ ํ์ง๋ ๋ด๋ถ ID(์ฌ์ฉ์๊ฐ ๋ด๋ณด๋ผ ์ ์๋ค๋ฉด ์ต์ ), ์ธ๋ถ ์์คํ
ID(ํตํฉ์ ์ ์ฉ), ์ด๋ฉ์ผ(์ ์ฉํ์ง๋ง ์ค๋ณต๊ณผ ๋์๋ฌธ์ ๋ฌธ์ ์ ์ฃผ์)์
๋๋ค. ๋๋ก๋ account_id + invoice_number ๊ฐ์ ๋ณตํฉ ํค๊ฐ ์ ํฉํฉ๋๋ค. ๊ฒฝ์ฐ์ ๋ฐ๋ผ "์ ๊ท๋ง ์์ฑ(create only)" ๋ชจ๋๋ฅผ ์ ๊ณตํด ์ ๋ ๋งค์นญํ์ง ์๊ณ ํญ์ ์ ๋ ์ฝ๋๋ฅผ ๋ง๋๋ ๊ฒ๋ ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก ๊ถํ ๊ท์น์ ๋๋ ์์ค์์ ์ ์ฉํ์ธ์. ํ ๊ฑด์ ๋ ์ฝ๋๋ฅผ ํธ์งํ ์ ์๋ค๊ณ ํด์ ์๋์ผ๋ก ์์ฒ ๊ฑด์ ๋ชจ๋ ํ๋๋ฅผ ๋ณ๊ฒฝํ ์ ์์ด์๋ ์ ๋ฉ๋๋ค. ์ด๋ค ์ญํ ์ด ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์คํํ ์ ์๋์ง, ์ด๋ค ํ๋๊ฐ ๋ณ๊ฒฝ ๊ฐ๋ฅํ์ง, ์ธ์ ์ถ๊ฐ ์น์ธ์ด ํ์ํ์ง ๊ฒฐ์ ํ์ธ์.
์ ๋ขฐ๋ฅผ ์๋ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ค๊ณ
๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ ์ฌ์ฉ์๊ฐ "์ปค๋ฐ"์ ๋๋ฌ๋ ์์ ํ๋ค๊ณ ๋๋ผ๊ฒ ๋ง๋๋ ์ง์ ์ ๋๋ค. ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ ๋ชจํธํ๋ฉด ์ฌ์ฉ์๋ ์์คํ ์ด ์ถ์ธกํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ข์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ ์์์ฆ์ฒ๋ผ ์ฝํ์ผ ํฉ๋๋ค: ๋ฌด์์ด ๋ฐ๋๋์ง, ์์คํ ์ ํ์ ์ ๋, ๋ฌด์์ด ์ ๋ฐ์ดํธ๋ฅผ ๋ง๋์ง.
๊ฐ๊ฒฐํ ์์ฝ๋ถํฐ ์์ํ์ธ์. ๋๋ถ๋ถ์ ์ฌ์ฉ์๋ ๋ฐฉํฅ์ ์ก๊ธฐ ์ํด ๋ช ๊ฐ์ง ์ซ์๋ง ๋ณด๋ฉด ๋ฉ๋๋ค: ์ด ํ, ๊ฑด๋๋ธ ํ ์, ์์ฑ vs ์ ๋ฐ์ดํธ(๊ทธ๋ฆฌ๊ณ ์ญ์ ๋ฅผ ํ์ฉํ๋ฉด ์ญ์ ์), ๊ฒฝ๊ณ vs ์น๋ช ์ ์ค๋ฅ ํ ์, ์ฌ์ฉ๋ ๋งค์นญ ๊ท์น(์: "์ด๋ฉ์ผ๋ก ๋งค์นญ"). ๊ฐ๋ฅํ๋ฉด ๊ฐ์ฅ ํํ ๊ฒฝ๊ณ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ๊ทธ๋ฃนํํด ์ฌ์ฉ์๊ฐ ํจํด์ ๋น ๋ฅด๊ฒ ๋ณผ ์ ์๊ฒ ํ์ธ์.
๊ทธ๋ค์ ์ฌ์ฉ์๊ฐ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ํ๋ก ํ์ธํ๊ฒ ํ์ธ์. ์ ๋ฐ์ดํธ์ ๊ฒฝ์ฐ ๋ณ๊ฒฝ ์ vs ๋ณ๊ฒฝ ํ๋ฅผ ๋ณด์ฌ์ฃผ๋ ์์ ์คํฌ๋กค ๊ฐ๋ฅํ ์ํ(10~50ํ ๊ถ์ฅ)๊ณผ ๊ฒ์ ๋ฐ ํํฐ(์: "๊ฒฝ๊ณ ๋ง ๋ณด๊ธฐ")๋ฅผ ์ ๊ณตํ์ธ์. ์ ์ฒด ํ์ผ ์ฒ๋ฆฌ๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์งํํ์ธ์. "์ด์ ๊ฐ -> ์ ๊ฐ"์ ๋ณด๋ฉด ๋น ์ ๋ก ์ ํ๋ฒํธ๊ฐ ๋ฎ์ด์จ์ง๋ ๋ฑ์ ๋๋ผ์์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
๋ถํ์ค์ฑ์ ๊ฐ์์ ์ผ๋ก ๋๋ฌ๋ด์ผ ํฉ๋๋ค. ํ ํ์ด ์ฌ๋ฌ ๊ธฐ์กด ๋ ์ฝ๋์ ๋งค์นญ๋ ๊ฐ๋ฅ์ฑ์ด ์์ผ๋ฉด ํ๋ณด๋ฅผ ๋ณด์ฌ์ฃผ๊ณ , ํ์ ํ๋๊ฐ ๋น์ด ์์ผ๋ฉด ์ ํํ ์ ์ ๊ฐ๋ฆฌํค์ธ์. ๊ฐ์ ธ์ค๊ธฐ๊ฐ ์ค๋ณต์ ์์ฑํ๋ฉด ์งง์ ์ด์ (์: "๊ฐ์ ์ด๋ฉ์ผ์ด ํ์ผ์ ๋ ๋ฒ ๋ํ๋จ")๋ฅผ ํ์ํ์ธ์. ์์คํ ์ด ๋ชจ๋ฅด๋ ๊ฒ์ ์ธ์ ํ ์๋ก ์ฌ์ฉ์๋ ๋ ์ ๋ขฐํฉ๋๋ค.
๋ํ ๋ค์ ํ๋์ ๋ช ํํ ์ ์ํ์ธ์. ์ฌ์ฉ์๋ ํ ๋ฒํธ์ ์ ํํ ๋ฉ์์ง๊ฐ ํฌํจ๋ ์ค๋ฅ ๋ฆฌํฌํธ๋ฅผ ๋ค์ด๋ก๋ํ๊ฑฐ๋, ๋งคํ์ ๋ค์ ๋ง๋ค ํ์ ์์ด ์์ ํ ์ฌ์ ๋ก๋ํ๊ฑฐ๋, ๋ณ๊ฒฝ ์์ด ์ทจ์ํ๊ฑฐ๋, ์ํ์ด ๋ฎ๊ณ ๊ถํ์ด ์์ ๋๋ง ์งํํ ์ ์์ด์ผ ํฉ๋๋ค.
๋ฌธ์ ๋ฅผ ์กฐ๊ธฐ์ ์ก๋ ๊ฒ์ฆ ๊ท์น
์ข์ ๊ฒ์ฆ์ด ๋๋ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์์ ์ ์ผ๋ก ๋๊ปด์ง๊ฒ ๋ง๋ญ๋๋ค. ๋ชฉํ๋ ๋ณ๊ฒฝ ์ ์ ๋ฌธ์ ๋ฅผ ์ฐพ์์ ์ฌ์ฉ์๊ฐ ๊ณ ์น ์ ์๊ฒ ์ค๋ช ํ๋ ๊ฒ์ ๋๋ค.
๊ฒ์ฆ์ ๋ช ํํ ์ ํ์ผ๋ก ๋ถ๋ฆฌํ์ธ์
ํ๋์ ๊ฑฐ๋ํ "์ ํจํ์ง ์์" ๋ฉ์์ง๋ ํผ๋์ ๋ง๋ค ๋ฟ์ ๋๋ค. ๊ฐ ๊ฒ์ฌ๋ ์๋ก ๋ค๋ฅธ ํด๊ฒฐ์ฑ ์ ์ ์ํ๋ฏ๋ก ๋ณ๋์ ๋ฒํท์ผ๋ก ์ทจ๊ธํ์ธ์.
ํ์ ๊ฒ์ฌ(ํ์
, ๋ ์ง ํ์, ์ซ์ ๋ฒ์, ์ ํ/์ด๋ฉ์ผ ํจํด), ํ์ ํ๋ ๊ฒ์ฌ(๋๋ฝ๊ฐ, ๋น ๋ฌธ์์ด, 0๊ณผ ๋น์นธ์ ํผ๋ ๊ฐ์ ๊ฒฝ์ฐ), ์ฐธ์กฐ ๊ฒ์ฌ(ID ์กด์ฌ ์ฌ๋ถ์ ํ์ฉ๋ ์ํ), ๋น์ฆ๋์ค ๊ท์น(์ ์ฉ ํ๋, ๊ถํ, ๋๋ "๋ฏธ๊ฒฐ ํญ๋ชฉ์ด ์์ผ๋ฉด ์ฃผ๋ฌธ์ ๋ซ์ ์ ์์")์ ๋ถ๋ฆฌํด ์ฒ๋ฆฌํ์ธ์.
ํต์ฌ ๊ท์น: ์ปค๋ฐํ ๋ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋์ผํ ๋ ผ๋ฆฌ๋ก ๊ฒ์ฆํ์ธ์. ๋ฏธ๋ฆฌ๋ณด๊ธฐ์ ์ปค๋ฐ์ด ๋ค๋ฅธ ๊ท์น์ ๋ฐ๋ฅด๋ฉด ์ฌ์ฉ์๋ ๊ธ๋ฐฉ ์ ๋ขฐ๋ฅผ ์์ต๋๋ค. ๊ฐ์ ํ์, ๊ฐ์ ๊ฒ์ฆ๊ธฐ, ๊ฐ์ ๊ถํ ๊ฒ์ฌ๋ฅผ ์ฒ์๋ถํฐ ๋๊น์ง ์ฌ์ฌ์ฉํ์ธ์.
๊ฒ์ฆ์ ๋น ๋ฅด๊ณ ์์ธก ๊ฐ๋ฅํ๊ฒ ๋ง๋ค๊ธฐ
ํฐ ํ์ผ์ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ผ๋ ๊ฒ์ฆ์ด ๋ฐ์ํ์ผ๋ก ๋๊ปด์ง๊ฒ ํ์ธ์. ์ฒญํฌ ๋จ์๋ก ๊ฒ์ฆ(์: 500~2,000ํ), ์งํ ์ํฉ๊ณผ ์์ ์๊ฐ์ ํ์ํ๊ณ , ์์ฃผ ์ฐธ์กฐํ๋ ๋ฐ์ดํฐ๋ ์บ์ํด ๋ฐ๋ณต ์กฐํ๋ฅผ ์ค์ด์ธ์.
ํ๊ฐ ๊ท์น(ํ์ผ ๋ด ์ค๋ณต, ๋ ํ์ด ๊ฐ์ ๋ ์ฝ๋์ ๋ํด ๋ค๋ฅธ ๊ฐ์ ์ค์ ํ๋ ค๋ ์ถฉ๋)์ ์ ์ฒด ์ ๋ก๋๋ฅผ ๋ด์ผ ํ๋ฏ๋ก ํน๋ณํ ์ฒ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค. ํ์ฑ ์ค์ ๊ฒฝ๋ ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค์ด ๋ ํ ๋ชจ๋๋ฅผ ํ๋๊ทธํ๋ฉด ์ฌ์ฉ์๊ฐ ์ด๋ ๊ฒ์ ์ ์งํ ์ง ์ ํํ๊ธฐ ์ฝ์ต๋๋ค.
ํ ์์ค ์ค๋ฅ: ๋๋ ค์์ ์ฃผ์ง ๋ง๊ณ ์คํ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค๊ธฐ
ํ ์์ค ์ค๋ฅ๋ ์ ๋ขฐ๋ฅผ ์ป๊ฑฐ๋ ์๋ ์ง์ ์ ๋๋ค. ๋นจ๊ฐ์ ํ ์คํธ๋ก ๊ฐ๋ํ ํ๋ฉด์ ์ฌ์ฉ์๋ฅผ ๋ฉ์ถ๊ฒ ํฉ๋๋ค. ๋ช ํํ๊ณ ๊ณ ์น ์ ์๋ ํญ๋ชฉ์ ์ฌ์ฉ์์ ํ๋ฆ์ ์ ์งํฉ๋๋ค.
์ฌ๊ฐ๋๋ถํฐ ๊ตฌ๋ถํ์ธ์. ์ฐจ๋จ ์ค๋ฅ๋ ํ์ ๊ทธ๋๋ก ์ ์ฉํ ์ ์์์ ์๋ฏธํฉ๋๋ค(ํ์ ๊ฐ ๋๋ฝ, ํ์ ๋ถ์ผ์น, ๋ ์ฝ๋ ๋ฏธ๋ฐ๊ฒฌ ๋ฑ). ๊ฒฝ๊ณ ๋ ํ์ ์ ์ฉํ ์๋ ์์ง๋ง ์ฌ์ฉ์๊ฐ ์ ํ์ ํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค(๊ฐ์ด ์๋ฆด ์์ , ๊ธฐ๋ณธ๊ฐ์ด ์ ์ฉ๋จ, ์ ์ฌ์ ์ค๋ณต ์กด์ฌ ๋ฑ).
์ข์ ํ ์์ค ํผ๋๋ฐฑ์ ๊ตฌ์ฒด์ ์ด๊ณ ์ฌํ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค. ๊ฐ ๋ฌธ์ ๋ ํ์ผ ํ ๋ฒํธ์ ์ด๋ฉ์ผ์ด๋ ์ธ๋ถ ID ๊ฐ์ ์์ ์ ํค, ์ด ์ด๋ฆ๊ณผ ๋์ ํ๋, "Phone must be E.164 format"์ฒ๋ผ ๋ช ํํ ๋ฉ์์ง, ๊ทธ๋ฆฌ๊ณ ์์ ๊ฐ์ด๋ ํ์ฉ ๋ฒ์ ๊ฐ์ ์ ์๋ ์์ ๋ฐฉ๋ฒ์ ํฌํจํด์ผ ํฉ๋๋ค. ์ฌ๊ฐ๋ ํ๊ทธ๋ ์ผ๊ด๋๊ฒ ์ ์งํ์ธ์.
๋ถ๋ถ ์ฑ๊ณต์ ์๋๋ ์ต์ ์ด์ด์ผ์ง ์ฐ์ฐ์ด๋ฉด ์ ๋ฉ๋๋ค. ํ๋ค์ด ๋ ๋ฆฝ์ ์ผ ๋๋ง ๋ถ๋ถ ์ ์ฉ์ ํ์ฉํ์ธ์. ๊ณ ๊ฐ ํ๊ทธ ์ ๋ฐ์ดํธ๋ ๋ถ๋ถ ์ ์ฉํด๋ ๊ด์ฐฎ์ง๋ง, ์ก์ฅ๊ณผ ํด๋น ํญ๋ชฉ ์ ๋ฐ์ดํธ๋ ๋ณดํต ๊ทธ๋ ์ง ์์ต๋๋ค.
์ฌ์๋๋ฅผ UX์ ์ผ๋ถ๋ก ๊ณํํ์ธ์. ์ฌ์ฉ์๋ ์์ค ํ์ผ์ ๊ณ ์น๊ณ ๋งคํ์ ๋ค์ ๋ง๋ค์ง ์๊ณ ์ฌ์คํํ ์ ์์ด์ผ ํฉ๋๋ค. ์ค์ฉ์ ์ธ ํจํด์ ๋งคํ ์ ํ๊ณผ ํ๋ณ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ "import run" ๋ ์ฝ๋๋ฅผ ์ ์งํด ๋ค์ ์คํ์์ "์ฌ์ ํ ์คํจ" vs "์ด์ ๊ณ ์ณ์ง"์ ํ์ด๋ผ์ดํธํ๋ ๊ฒ์ ๋๋ค.
์ปค๋ฐ ํจํด: ์์์ , ๋ถ๋ถ์ , ๊ทธ๋ฆฌ๊ณ ๋ฉฑ๋ฑ์ฑ
์ปค๋ฐ ๋จ๊ณ์์ ๋๋ ๊ฐ์ ธ์ค๊ธฐ๋ ์ ๋ขฐ๋ฅผ ์ป๊ฑฐ๋ ๊นจ์ง๋๋ค. ์ฌ์ฉ์๋ ์ด๋ฏธ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๋ดค๊ณ ๋ฌธ์ ๋ฅผ ๊ณ ์ณค์ต๋๋ค. ์ด์ ์์คํ ์ ๊ฒ์ฆ๋ ๊ฒ๊ณผ ์ ํํ ์ผ์นํ๋ ๊ฒ์ ์ ์ฉํด์ผ ํฉ๋๋ค.
์ปค๋ฐ ๋ชจ๋๋ฅผ ์ ํํ๊ณ ๊ท์น์ ๋ฏธ๋ฆฌ ์๋ฆฌ์ธ์
๋ ๊ฐ์ง ๋ชจ๋๊ฐ ์ผ๋ฐ์ ์ด๋ฉฐ, ๊ท์น์ด ๋ช ํํ๋ฉด ๋ ๋ค ์ ์ฉํฉ๋๋ค.
์์์ (all-or-nothing)์ ์ด๋ค ํ์ด๋ผ๋ ์คํจํ๋ฉด ์๋ฌด๊ฒ๋ ์ฐ์ง ์์ต๋๋ค. ๊ธ์ , ์ฌ๊ณ , ๊ถํ์ฒ๋ผ ์ผ๊ด์ฑ์ด ์ค์ํ ๊ฒฝ์ฐ์ ์ ํฉํฉ๋๋ค. ๋ถ๋ถ ์ปค๋ฐ(best-effort)์ ์ ํจํ ํ์ ์ ์ฉํ๊ณ ์๋ชป๋ ํ์ ๊ฑด๋๋ฐ์ด ๋ณด๊ณ ์ํ๋ ๋ฐฉ์์ผ๋ก, ์ฐ๋ฝ์ฒ ๋ณด๊ฐ์ฒ๋ผ ์ผ๋ถ ์งํ์ด ์ ์ฒด๋ณด๋ค ๋์ ๋ ์ ํฉํฉ๋๋ค. ์ผ๋ถ ํ์ ์คํจ ๋น์จ ์๊ณ๊ฐ(์: ์คํจ๊ฐ 2% ์ด๊ณผํ๋ฉด ์ค์ง) ๊ฐ์ ํ์ด๋ธ๋ฆฌ๋ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค.
๋ฌด์์ ์ ํํ๋ ์ง ์ปค๋ฐ ํ๋ฉด๊ณผ ์ต์ข ์์ฝ์ ๋ถ๋ช ํ ํ์ํ์ธ์.
์ปค๋ฐ์ ์ ํํ ๊ฒ์ฆ๋ ๋ฐฐ์น์ ๋ฌถ์ผ์ธ์
๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ ์์ฑ๋ import job ID(๋ฐฐ์น ID)๋ฅผ ์ฌ์ฉํ์ธ์. ์ปค๋ฐ ์์ฒญ์ ๊ทธ ID๋ฅผ ์ฐธ์กฐํด์ผ ํ๋ฉฐ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ ๋ก๋ํ๋ฉด ์ ๋ฉ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ๋๊ตฐ๊ฐ ํ ํ์ผ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐํ ๋ค ๋ค๋ฅธ ํ์ผ์ ์ ๋ก๋ํ๊ณ ์ปค๋ฐ์ ๋๋ฌ ์๋ชป ์ ์ฉํ๋ ์ค์๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ๋ํ ์ฌ๋ฌ ๊ด๋ฆฌ์๊ฐ ๋์์ ์์ ํ ๋๋ ๋์์ด ๋ฉ๋๋ค.
๋ฉฑ๋ฑ์ฑ(idempotency): ์ด์ค ์ ์ฉ์ ๋ฐฉ์งํ์ธ์
์ฌ๋๋ค์ ๋ฒํผ์ ๋ ๋ฒ ํด๋ฆญํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๋ ์ฌ์๋ํฉ๋๋ค. ์ปค๋ฐ์ ๋ ๋ฒ ์คํ๋์ด๋ ์์ ํด์ผ ํฉ๋๋ค.
๊ฐ์ฅ ๋จ์ํ ๋ฐฉ๋ฒ์ ์์ ๋ณ(ํ์ํ๋ฉด ํ๋ณ) ๊ณ ์ ํ ๋ฉฑ๋ฑ์ฑ ํค๋ฅผ ์ฌ์ฉํ๊ณ , ๊ฐ๋ฅํ๋ฉด ์ ์ํธ(upsert)๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์ก ์ํ๋ฅผ ์ ๊ฐ ํ ๋ฒ๋ง Validated โ Committing โ Committed๋ก ์ด๋ํ๊ฒ ํ๋ ๊ฒ์ ๋๋ค.
๊ฒฐ๊ณผ๋ฅผ ์์์ฆ์ฒ๋ผ ๊ธฐ๋กํ์ธ์
์ปค๋ฐ ํ์๋ ๊ฐ๊ฒฐํ ์์ฝ์ ๋ณด์ฌ์ฃผ๊ณ ์ฌ์ฉ์๊ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ด๋ก๋ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์๊ฒ ํ์ธ์. ์์ฑ, ์ ๋ฐ์ดํธ, ๊ฑด๋๋ฐ๊ธฐ, ์คํจ ๊ฑด์์ ์งง์ ์์ธ ์ค๋ช ์ ํฌํจํ๋ฉด ๋๋ ค์ด ๋๋ ๋ณ๊ฒฝ๋ ์ฌ์ฉ์๊ฐ ๊ฒ์ฆํ๊ณ ์ค๋ช ํ ์ ์๋ ํํ๊ฐ ๋ฉ๋๋ค.
์ค๋ฌด์์ ํตํ๋ ๋กค๋ฐฑ ๊ณํ
๋กค๋ฐฑ ๊ณํ์ด ์์ผ๋ฉด ๋๋ ๊ฐ์ ธ์ค๊ธฐ๋ "๋๊ธธ ๋ฐ๋ผ๋" ์์ ์ด ์๋๋ผ ์์์ผ ์์นจ์๋ ๋๋ ค๋ณผ ์ ์๋ ์์ ์ด ๋ฉ๋๋ค. ๊ฒฐ๊ณผ๊ฐ ์๋ชป๋๋ฉด ๋ฌด์์ด ๋ฐ๋์๋์ง ์ถ์ธกํ์ง ์๊ณ ์ด์ ์ํ๋ก ๋๋๋ฆด ์ ์์ด์ผ ํฉ๋๋ค.
์ ์ ํ ์ ๊ทผ๋ฒ์ ๋ฐฐ์น ํฌ๊ธฐ, ์์ ์์ ์๊ฐ, ์ธ๋ถ ์์คํ (์ด๋ฉ์ผ, ๊ฒฐ์ , ๋ฉ์์ง)์ ๋ฏธ์น๋ ์ํฅ ์ฌ๋ถ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
์ค๋ฌด์ ์ธ ์ธ ๊ฐ์ง ๋กค๋ฐฑ ์ ๊ทผ๋ฒ
์์ ์ด ์๊ณ ๋น ๋ฅด๊ฒ ๋๋๋ฉด ๋จ์ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ๋์ญ์ ์ด ๊ฐ์ฅ ๊ฐ๋จํ ์์ ๋ง์ ๋๋ค. ๋ชจ๋ ๋ณ๊ฒฝ์ ์ ์ฉํ๊ณ ์ค๊ฐ์ ์คํจํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ์ฒด๋ฅผ ์ทจ์ํฉ๋๋ค. ์ด๋ ์๋ฐฑ~์์ฒ ํ์ ์์ฒด PostgreSQL ํ ์ด๋ธ๋ง ์ ๋ฐ์ดํธํ ๋ ์ ๋ง์ต๋๋ค.
๋ํ ๊ฐ์ ธ์ค๊ธฐ์๋ ์คํ ์ด์ง ์ฐ์ ๋ฐฉ์์ด ๋ณดํต ์์ ํฉ๋๋ค. ํ์ผ์ ์คํ ์ด์ง ํ ์ด๋ธ์ ๋ก๋ํ๊ณ ๊ฑฐ๊ธฐ์ ๊ฒ์ฆํ ๋ค ํ๋ก๋์ ํ ์ด๋ธ๋ก ์น๊ฒฉ(promotion)ํ์ธ์. ์ด์์ด ์์ผ๋ฉด ์คํ ์ด์ง ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ฉด ํ๋ก๋์ ์ ์ ํ ๊ฑด๋๋ฆฌ์ง ์์ต๋๋ค. ๋ํ ๋งคํ์ด๋ ๊ท์น์ ์กฐ์ ํด ์ฌ์๋ํ๊ธฐ๊ฐ ์ฌ์์ง๋๋ค.
์ง์ ํ ๋กค๋ฐฑ์ด ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ ๋ณด์(compensating) ์กฐ์น๋ฅผ ๊ณํํ์ธ์. ๋๋ ์ ๋ฐ์ดํธ๊ฐ ์ด๋ฉ์ผ์ด๋ ๊ฒฐ์ ๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ฉด ์๊ฐ์ ๋๋๋ฆด ์ ์์ต๋๋ค. ๋๋๋ฆฌ๊ธฐ ๊ณํ์ "๋ ์ฝ๋๋ฅผ ์ทจ์๋ก ํ์", "ํ๋ถ ์ฒ๋ฆฌ", "์ ์ ๋ฉ์์ง ์ ์ก" ๊ฐ์ ์กฐ์น๊ฐ ๋ ์ ์์ต๋๋ค. ์คํ ์ ์ ๋๋๋ฆฌ๊ธฐ ์ ์ฐจ๋ฅผ ์ ์ํ์ธ์.
๊ฐ๋จํ ์ ํ ๊ฐ์ด๋:
- ๋ฐฐ์น๊ฐ ์๊ณ ์์ฒด DB๋ง ๊ฑด๋๋ฆฌ๋ฉด ๋จ์ผ ํธ๋์ญ์ ์ ์ฌ์ฉํ์ธ์.
- ๋ฐฐ์น๊ฐ ํฌ๊ฑฐ๋ ๋๋ฆฌ๊ฑฐ๋ ์ํํ๋ฉด ์คํ ์ด์ง๊ณผ ํ๋ก๋ชจ์ ์ ์ฌ์ฉํ์ธ์.
- ์ธ๋ถ ์ฌ์ด๋ ์ดํํธ๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ฉด ๋ณด์ ์กฐ์น๋ฅผ ๊ณํํ์ธ์.
- ๊ฐ์ ์ ๋ ฅ์ด ์ค๋ณต ์ ์ฉ๋์ง ์๋๋ก ๋ฐ๋ณต ๊ฐ๋ฅํ ์ฌ์คํ ๊ณํ์ ํญ์ ๋ง๋ จํ์ธ์.
๊ฐ์ฌ ๋ก๊ทธ๊ฐ ๋กค๋ฐฑ์ ํ์ค์ ์ผ๋ก ๋ง๋ญ๋๋ค
๋กค๋ฐฑ์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ฌ๋์ง ์ ํํ ์๋ ๊ฒ์ ๋ฌ๋ ค ์์ต๋๋ค. ๋๊ฐ ์ก์ ์คํํ๋์ง, ์ธ์ ์คํํ๋์ง, ์์ค ํ์ผ์ด๋ ์ก ID, ์ด๋ค ๋ ์ฝ๋๊ฐ ๋ณ๊ฒฝ๋์๋์ง(์ด์ /์ดํ ๊ฐ ๋๋ ์ต์ํ ๋ณ๊ฒฝ ์์ฝ)๋ฅผ ์บก์ฒํ์ธ์.
๊ตฌ์ฒด์ ์: ์ง์ ๋ด๋น์๊ฐ ๊ณ ๊ฐ ์ํ 5,000๊ฑด์ ์ผ๊ด ์ ๋ฐ์ดํธํ์ต๋๋ค. ์คํ ์ด์ง์์ 200๊ฑด์ ๋ถ์ผ์น๊ฐ ๋ฐ๊ฒฌ๋์ด ํ๋ก๋ชจ์ ์ ์ ์ก์์ต๋๋ค. ๊ทธ๋๋ ์ปค๋ฐํ๋๋ฐ ๋์ค์ ๋งคํ์ด ๋ฐ๋๋ก ๋์์์ ์๊ฒ ๋ ๊ฒฝ์ฐ, ๊ฐ์ฌ ๋ก๊ทธ๊ฐ ์์ผ๋ฉด ์ ์ฒด ์์คํ ์ ๋๋๋ฆฌ๊ธฐ๋ณด๋ค ์ํฅ์ ๋ฐ์ ๋ ์ฝ๋๋ง ๋์์ผ๋ก ํ์ ๋ณต๊ตฌ๋ฅผ ์คํํ ์ ์์ต๋๋ค.
ํผํด์ผ ํ ํํ ์ค์์ ํจ์
๋๋ ์์ ์ ์์ธก ๊ฐ๋ฅํ ๋ฐฉ์์ผ๋ก ์คํจํฉ๋๋ค. ๋๋ถ๋ถ์ ๋ฌธ์ ๋ "๋์ ๋ฐ์ดํฐ"๊ฐ ์๋๋ผ ๊ธฐ๋ ๋ถ์ผ์น์ ๋๋ค: ์ฌ์ฉ์๋ ํ ๊ฐ์ง๋ฅผ ๊ธฐ๋ํ๋๋ฐ ์์คํ ์ด ๋ค๋ฅธ ๊ฒ์ ํ์ต๋๋ค.
ํฐ ํจ์ ์ค ํ๋๋ ๊ฒ์ฆ์ ํ ๊ท์น ์ธํธ๋ฅผ ์ฌ์ฉํ๊ณ ์ปค๋ฐ์ ๋ค๋ฅธ ๊ท์น ์ธํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ ๋น ๋ฅธ ๊ฒ์ฌ(๋๋ ๋ค๋ฅธ ์๋น์ค)๋ฅผ ์ฌ์ฉํ๊ณ ์ปค๋ฐ ๊ฒฝ๋ก์๋ ์ถ๊ฐ ์ ์ฝ์ด๋ ๋ค๋ฅธ ๊ธฐ๋ณธ๊ฐ์ด ์์ผ๋ฉด ์ฌ์ฉ์๋ "๋ชจ๋ ์ ์"์ผ๋ก ๋ณด๋ค๊ฐ ์ค์ ์์ ์ด ์คํจํ๊ฑฐ๋ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ก ์ฑ๊ณตํ๋ ๊ฒ์ ๋ณด๊ฒ ๋ฉ๋๋ค. ํ๋์ ํ์์ ํ๋์ ๊ท์น ์งํฉ, ๋์ผํ ๋งค์นญ ๋ก์ง์ ๋๊น์ง ์ฌ์ฉํ์ธ์.
๋ถ๋ถ๋ช ํ ๋งค์นญ ๋ก์ง๋ ๊ณ ์ ์ ์ธ ์คํจ ์์ธ์ ๋๋ค. "์ด๋ฉ์ผ๋ก ๋งค์นญ"์ ์ค๋ณต, ๋์๋ฌธ์ ์ฐจ์ด, ์ฌ์ฉ์๊ฐ ์ด๋ฉ์ผ์ ๋ฐ๊พผ ๊ฒฝ์ฐ์ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์์ต๋๋ค. UI๋ ๋งค์นญ์ด ์ ํํ ์ด๋ป๊ฒ ์๋ํ๋์ง, ์ฌ๋ฌ ๊ฑด์ด ๋งค์นญ๋๊ฑฐ๋ ๋งค์นญ์ด ์์ ๋ ๋ฌด์์ด ์ผ์ด๋๋์ง ๋ช ํํ ๋ฐํ์ผ ํฉ๋๋ค. ์: ์์ ๊ด๋ฆฌ์๊ฐ 2,000๊ฑด์ ์ฐ๋ฝ์ฒ๋ฅผ ์ ๋ฐ์ดํธํ๋ ค๋ค ์ ๋ฐ์ด ์ ํ๋ฒํธ๋ง ์์ด ์์คํ ์ด ์ ๋ ์ฝ๋๋ฅผ ์์ฑํด๋ฒ๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
"๋์๋๋" ์๋ ์์ ์ ์กฐ์ฌํ์ธ์. ๋ฌด์ธ์ ์๋ฆผ(silent truncation), ์๋ ๊ณต๋ฐฑ ์ ๊ฑฐ, ๋ ์ง ํ์ ์ถ์ ์ ๋ฐ์ดํฐ ์์ค์ ์จ๊ธธ ์ ์์ต๋๋ค. ๊ฐ์ ์ ๊ทํํ๋ฉด ๋ฏธ๋ฆฌ๋ณด๊ธฐ์์ ๋ณด์ฌ์ฃผ๊ณ (์ด์ ๊ฐ -> ์ ๊ฐ) ์ํํ ๋ณํ์ ํ๋๊ทธ๋ฅผ ๋ฌ์์ฃผ์ธ์. ํ๋๊ฐ ๊ธธ์ด ์ ํ ๋๋ฌธ์ ์๋ฆด ๊ฒฝ์ฐ์๋ ๊ฐ์์ ์ธ ๊ฒฝ๊ณ ๋ก ํ์ํ์ธ์.
์ฌ์ฉ์๊ฐ ๊ฒฐ๊ณผ๋ฅผ ์์ง ์๊ฒ ํ์ธ์. ํญ์ ๋ซ์์ ๋ ๋ฆฌํฌํธ๊ฐ ์ฌ๋ผ์ง๋ฉด ์ง์ ํฐ์ผ์ด ํญ์ฃผํฉ๋๋ค. ๊ฐ ๊ฐ์ ธ์ค๊ธฐ ์คํ์ ์ํ, ๊ฒฐ๊ณผ ํ์ผ, ์์ฝ๊ณผ ํจ๊ป ๊ฐ์ฒด๋ก ์ ์ฅํ์ธ์.
์ค์ผ์ผ์ ๋๋นํด ์ค๊ณํ์ธ์. ๋ฐฐ์น ์ฒ๋ฆฌ๊ฐ ์์ผ๋ฉด ์ค์ ๋ณผ๋ฅจ์์ ํ์์์๊ณผ ๋ถ๋ถ ์ฐ๊ธฐ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ฐฐ์นญ๊ณผ ์งํ ์ ๋ฐ์ดํธ, ์๋ ์ ํ๊ณผ ๋ฐฑ์คํ, ๋ฉฑ๋ฑ์ฑ ํค, ๋ถ๋ถ ์ฑ๊ณต ์ฒ๋ฆฌ, ์คํจ ํ ์ฌ์คํ ์ ์ฅ ์ต์ ์ผ๋ก ์์คํ ์ ๋ณดํธํ์ธ์.
๊ฐ๋จํ ์ฒดํฌ๋ฆฌ์คํธ์ ๋ค์ ๋จ๊ณ
๋ชจ๋๊ฐ ์ด๋ค ์ผ์ด ์ผ์ด๋ ์ง, ๋ฌด์์ด ์๋ชป๋ ์ ์๋์ง, ๋ฌธ์ ๋ฅผ ๋น ๋ฅด๊ฒ ๋ฐ๊ฒฌํ๋ ๋ฐฉ๋ฒ์ ์ ๋ ๋๋ ๋ณ๊ฒฝ์ ์์ ํ๊ฒ ๋๊ปด์ง๋๋ค.
์ปค๋ฐ ์ ์ ํ๋ ๋น ๋ฅธ ์ฌ์ ์ ๊ฒ
๋ฐ์ดํฐ์ ๋ํด ์์ ํ์ค ์ ๊ฒ์ ํ์ธ์, UI๋ง ๋ณด์ง ๋ง๊ณ . ์ผ๋ฐ์ ์ธ ์ผ์ด์ค์ ์ฃ์ง ์ผ์ด์ค๋ฅผ ๋ํํ๋ ๋ช ํ์ ๊ณจ๋ผ ํ์ธํฉ๋๋ค.
- ์์ ์ํ(์: 20ํ)์ ์ ๊ฒ: ์ด๋ฆ, ๋ ์ง, ์ซ์๊ฐ ์ฌ๋ฐ๋ฅธ์ง ํ์ธ.
- ํ๋ ๋งคํ์ด ์์ค ์ด๊ณผ ์ผ์นํ๋์ง(๋น ์ ์ด ์๋ํ ๋๋ก ๋์ํ๋์ง) ํ์ธ.
- ๋งค์นญ ํค(email, SKU, external ID)๊ฐ ์ถฉ๋ถํ ๊ณ ์ ํ๊ณ ์กด์ฌํ๋์ง ๊ฒ์ฆ.
- ์์ฑยท์ ๋ฐ์ดํธยท๊ฑด๋๋ฐ๊ธฐ ํฉ๊ณ๋ฅผ ๋น๊ต.
- ๊ฒฝ๊ณ ๋ฅผ ์๋ฆฌ ๋ด์ด ์ฝ์ด ๋ชจ๋๊ฐ ๋ฐ์๋ค์ผ ์ ์๋์ง ํฉ์.
์ฌ๋์ ๊ฒฐ์ ์ ์ํด ๋ฉ์ถ์ธ์. ๊ฐ์ ธ์ค๊ธฐ๊ฐ ๊ณ ๊ฐ, ์ฒญ๊ตฌ, ์ฌ๊ณ ์ ์ํฅ์ ์ฃผ๋ฉด ๋ด๋น์์ ์น์ธ์ ๋ฐ์ผ์ธ์. ์: ์์ ๊ด๋ฆฌ์๊ฐ 1,200๊ฑด์ด ์ ๋ฐ์ดํธ๋ ๊ฒ์ผ๋ก ๊ธฐ๋ํ๋๋ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ 12,000๊ฑด์ ๋ณด์ฌ์ฃผ๋ฉด ์์ธ์ ์๊ธฐ ์ ์๋ ์งํํ์ง ๋ง์ธ์.
์ปค๋ฐ ํ ์ ๊ฒ(๋ฌธ์ ๊ฐ ๋จ์ง ์๊ฒ)
์ปค๋ฐ์ด ๋๋๋ฉด ํ์ค์ ๋ค์ ํ์ธํ๋ ๋ฒ์๋ฅผ ์ข๊ฒ ํ์ธ์.
- ์์์ ์ ๋ฐ์ดํธ๋ ๋ ์ฝ๋๋ฅผ ์ด์ด ์ฃผ์ ํ๋๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๋ฐ๋์๋์ง ํ์ธ.
- ํ๋ณ ์ํ, ์์ฑ๋ ID, ์ค๋ฅ๊ฐ ํฌํจ๋ ๊ฒฐ๊ณผ ๋ฆฌํฌํธ๋ฅผ ๋ด๋ณด๋ด๊ธฐ.
- ๋๊ฐ ์ธ์ ์ด๋ค ํ์ผ/๋ฒ์ ์ผ๋ก ์ด๋ค ๊ฒฐ๊ณผ(์์ฝ ๊ฑด์)๋ฅผ ๋๋์ง ๊ธฐ๋ก.
- ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๋น ๋ฅด๊ฒ ๊ฒฐ์ : ์คํจํ ํ์ ๊ณ ์ณ ์ฌ์๋ํ ์ง, ๋กค๋ฐฑํ ์ง.
๋ ธ์ฝ๋ ํ๋ซํผ์์ ์ด ์ํฌํ๋ก์ฐ๋ฅผ ๊ตฌ์ถํ๋ค๋ฉด ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ผํ์ฑ ๊ด๋ฆฌ์ ์คํฌ๋ฆฝํธ๊ฐ ์๋๋ผ ์ค์ ์ ํ ๊ธฐ๋ฅ์ผ๋ก ์ทจ๊ธํ๋ ๊ฒ์ด ๋์์ด ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด AppMaster (appmaster.io)์์๋ Import Run ๋ ์ฝ๋๋ฅผ PostgreSQL์ ๋ชจ๋ธ๋งํ๊ณ , ๋๋ผ์ด๋ฐยท์ปค๋ฐ ๋ก์ง์ Business Process Editor์์ ๊ตฌํํ๋ฉฐ, ๊ฐ์ฌ ์ถ์ ์ ์ ์งํด ๋๋ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ๋ณต ๊ฐ๋ฅํ๊ณ ์ง์ ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ์ฌ๋ก๊ฐ ๋ง์ต๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
๋ฏธ๋ฆฌ๋ณด๊ธฐ โ ๊ฒ์ฆ โ ์ปค๋ฐ์ ์ธ ๋จ๊ณ ํ๋ฆ์ ์ฌ์ฉํ์ธ์. ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ ์ด๋ค ๋ณ๊ฒฝ์ด ์ผ์ด๋ ์ง ๋ณด์ฌ์ฃผ๊ณ , ๊ฒ์ฆ์ ์ปค๋ฐ๊ณผ ๊ฐ์ ๊ท์น์ผ๋ก ๋๋ผ์ด๋ฐ์ ์คํํ๋ฉฐ, ์ปค๋ฐ์ ํด๋น ๋ฐฐ์น๊ฐ ๊ฒ์ฆ์ ํต๊ณผํ์ ๋๋ง ๊ฐ๋ฅํ๋๋ก ํฉ๋๋ค.
๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ ์๋ชป๋ ๋งคํ, ์์์น ๋ชปํ ์์ฑ vs ์ ๋ฐ์ดํธ ๊ฑด์, ๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ฎ์ด์ธ ์ ์๋ ๋น์นธ ๊ฐ์ ๋ช ๋ฐฑํ ์ค์๋ฅผ ์ฐ๊ธฐ ์ ์ ์ก์๋ ๋๋ค. ํฉ๊ณ์ ๋ณ๊ฒฝ ์ ยทํ์ ์์ ์ํ์ ๋ณด์ฌ ์ฌ์ฉ์๊ฐ ์ํฅ ๋ฒ์๋ฅผ ์ก์์ผ๋ก ํ์ธํ ์ ์๊ฒ ํด์ผ ํฉ๋๋ค.
๊ฒ์ฆ(๋๋ผ์ด๋ฐ)์ ์ค์ ์ ๋ฐ์ดํธ์ ๋์ผํ ํ์ฑ, ๋งค์นญ, ๊ถํ ๊ฒ์ฌ, ๋น์ฆ๋์ค ๊ท์น์ ์ ์ฉํ์ง๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ์ง๋ ์์ต๋๋ค. ๊ฒฐ๊ณผ๋ ๋ชจํธํ ํต๊ณผ/์คํจ๊ฐ ์๋๋ผ ์์ฝ๊ณผ ํ๋ณ ๋ฌธ์ ๋ชฉ๋ก์ด์ด์ผ ํ๋ฉฐ, ์ฌ์ฉ์๊ฐ ์ถ์ธก ์์ด ๋ฌธ์ ๋ฅผ ๊ณ ์น ์ ์์ด์ผ ํฉ๋๋ค.
์์ ์ ์ฒด๊ฐ ์ํํ ๋๋ ์ ์ฒด ์ค๋จ(ํ๋ ์คํฑ)์ ์ ์ฉํ์ธ์. ์๋ฅผ ๋ค์ด ์๋ชป๋ ์ํฌ์คํ์ด์ค ํ์ผ, ์ํํ ๋งคํ, ์ฃผ์ ํ๋๋ฅผ ๋ฎ์ด์ฐ๋ ๊ฒฝ์ฐ๋ ์ ์ฒด๋ฅผ ์ค๋จํด์ผ ํฉ๋๋ค. ๋ฐ๋ฉด ์ด๋ฉ์ผ ํ์ ์ค๋ฅ์ฒ๋ผ ํ๋ณ๋ก ๊ณ ์น ์ ์๋ ๋ฌธ์ ๋ ๊ทธ ํ๋ง ์์ ํด์ ๋๋จธ์ง๋ฅผ ์ ์งํ ์ ์๊ฒ ํ์ธ์.
๋งค์นญ ํค๋ฅผ ๋ช ํํ ๋ฐํ๊ณ , ๋งค์นญ ์คํจ๋ ์ค๋ณต์ด ๋ฐ์ํ ๋์ ๊ฒฐ๊ณผ๋ฅผ ์ค๋ช ํ์ธ์. ๋ด๋ถ ID๊ฐ ๊ฐ์ฅ ์์ ์ ์ด๊ณ , ์ธ๋ถ ID๋ ํตํฉ์ ์ข์ผ๋ฉฐ, ์ด๋ฉ์ผ์ ์ค๋ฌด์์ ์ ์ฉํ์ง๋ง ์ค๋ณต๊ณผ ๋์๋ฌธ์ ์ฒ๋ฆฌ๋ฅผ ์ฃผ์ํด์ผ ํฉ๋๋ค.
์จ๊ธฐ์ง ๋ง์ธ์. ๊ฐ ํ๋์ ๋ํด ๋น ์ ์ ์๋ฏธ๋ฅผ ํ๋๋ก ์ ํ์ธ์. ์๋ฅผ ๋ค์ด ์ ๋ฐ์ดํธ์์๋ โ๋น ๊ฐ์ ๊ธฐ์กด ๊ฐ์ ์ ์งโ, ๋๋ โ๋น ๊ฐ์ ๊ฐ์ ์ง์ด๋คโ ๊ฐ์ ๊ท์น์ ์ ํ๊ณ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์์ ๋ณด์ฌ์ค์ผ ์ฌ์ฉ์๊ฐ ์๋์น ์์ ๋ฐ์ดํฐ ์์ค์ ํผํ ์ ์์ต๋๋ค.
ํ์ผ ํ ๋ฒํธ์ ์ด๋ฉ์ผ ๋๋ ์ธ๋ถ ID ๊ฐ์ ์์ ์ ์ธ ์๋ณ์๋ฅผ ํจ๊ป ๋ณด์ฌ์ฃผ๊ณ , ์ด ์ด๋ฆ๊ณผ ๋์ ํ๋๋ฅผ ๋ช ์ํ๋ฉฐ, "์: ์ ํ๋ E.164 ํ์์ด์ด์ผ ํจ"์ฒ๋ผ ๊ตฌ์ฒด์ ์ด๊ณ ์์ ๋ฐฉ๋ฒ์ ์ ์ํ๋ ๋ฉ์์ง๋ฅผ ์ ๊ณตํ์ธ์. ์ฌ์ฉ์๊ฐ ์์ค ํ์ผ์ ๋น ๋ฅด๊ฒ ๊ณ ์ณ์ ์ฌ์คํํ ์ ์์ด์ผ ํฉ๋๋ค.
์ผ๊ด์ฑ์ด ์ค์ํ๋ฉด ์์์ (๋ชจ๋ ์ฑ๊ณตํด์ผ ์ ์ฉ) ์ปค๋ฐ์ด ๋ซ๊ณ , ๋ ๋ฆฝ์ ์ธ ์ ๋ฐ์ดํธ(์: ์ฐ๋ฝ์ฒ ๋ณด๊ฐ)๋ ๋ถ๋ถ ์ปค๋ฐ(์ ํจํ ํ๋ง ์ ์ฉ)์ผ๋ก ๊ด์ฐฎ์ต๋๋ค. ์ด๋ค ๋ฐฉ์์ ์ฐ๋ ์ปค๋ฐ ํ๋ฉด๊ณผ ์ต์ข ์์ฝ์์ ๊ทธ ๊ท์น์ ๋ถ๋ช ํ ํ์ธ์.
๊ฒ์ฆ๋ ๋ฐฐ์น์ ๋ฌถ์ธ idempotency ํค๋ฅผ ์ฌ์ฉํ๊ณ , ์ก ์ํ๋ฅผ ์ ๊ฐ Validated โ Committing โ Committed๋ก ํ ๋ฒ๋ง ์ด๋ํ๊ฒ ํ์ธ์. ์ด๋ ๊ฒ ํ๋ฉด ๋๋ธ ํด๋ฆญ, ๋ธ๋ผ์ฐ์ ์ฌ์๋, ํญ ๊ฐฑ์ ์ผ๋ก ๊ฐ์ ๋ณ๊ฒฝ์ด ๋ ๋ฒ ์ ์ฉ๋๋ ๊ฒ์ ๋ง์ ์ ์์ต๋๋ค.
PostgreSQL์ Import Run ๋ ์ฝ๋๋ฅผ ๋ชจ๋ธ๋งํ๊ณ ๋ฐฐ์น ID, ๋งคํ ์ ํ, ๊ฒ์ฆ ๊ฒฐ๊ณผ, ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ์ธ์. ๊ทธ๋ฐ ๋ค์ Business Process ํ๋ฆ์์ ๋๋ผ์ด๋ฐยท์ปค๋ฐ ๋ก์ง์ ๊ตฌํํ๋ฉด ๋ฐ๋ณต ๊ฐ๋ฅํ ํ๋ก์ธ์ค์ ๊ฐ์ฌ ์ถ์ ์ ๊ฐ์ถ ์ ์์ด ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋ ์ง์ํ๊ธฐ ์ฌ์์ง๋๋ค.


