๊ด๋ฆฌ์๋ฅผ ์ํ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ฐ ๋กค๋ฐฑ์ด ์๋ ์์ ํ ๋๋ ์์
๊ด๋ฆฌ์๊ฐ ์์ฒ ๊ฑด์ ์์ ํ๊ฒ ์ ๋ฐ์ดํธํ๋๋ก ๋๋ ๋๋ผ์ด๋ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์ ๋กค๋ฐฑ ๊ณํ์ ํตํด ๋๋ผ์์ ํผํ๊ณ ๋น ๋ฅด๊ฒ ๋ณต๊ตฌํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.

Why bulk updates are scary for admins
๋๋ ์์ ์ ๊ด๋ฆฌ์๊ฐ ๊ฐ ํญ๋ชฉ์ ์ผ์ผ์ด ์ด์ด ์์ ํ๋ ๋์ ์ฌ๋ฌ ๋ ์ฝ๋๋ฅผ ํ ๋ฒ์ ๋ณ๊ฒฝํ๋ ์์ ์ ๋๋ค. โ์ด 5,000๊ฑด์ ์ฃผ๋ฌธ์ ๋ฐฐ์ก ์ฒ๋ฆฌ๋ก ํ์ํ๊ธฐโ, โ2,000๋ช ์ ์ฌ์ฉ์๋ฅผ ์ ์๊ธ์ ๋ก ์ด๋ํ๊ธฐโ, โ์ด๋ ค ์๋ ๋ชจ๋ ํฐ์ผ์ ์์ ์๋ฅผ ๋ณ๊ฒฝํ๊ธฐโ ๊ฐ์ ์์ ์ด ์ฌ๊ธฐ์ ํฌํจ๋ฉ๋๋ค. ์ํ๋ฉด ๋ช ์๊ฐ์ ์๋ผ์ง๋ง, ์๋ชปํ๋ฉด ๋ช ์ด ๋ง์ ํฐ ๋ฌธ์ ๋ฅผ ๋ง๋ญ๋๋ค.
๋ฆฌ์คํฌ๊ฐ ํฌ๊ฒ ๋๊ปด์ง๋ ์ด์ ๋ ์ํฅ ๋ฒ์(๋ธ๋์คํธ ๋ฐ๊ฒฝ)๊ฐ ํฌ๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ ๋ฒ์ ํด๋ฆญ์ผ๋ก ๊ณ ๊ฐ, ๋ณด๊ณ ์, ์ฒญ๊ตฌ, ๊ทธ๋ฆฌ๊ณ ์์คํ ์ ์ด์ํ๋ ํ์ ๋ํ ์ ๋ขฐ๋๊ฐ ์ํฅ์ ๋ฐ์ ์ ์์ต๋๋ค. UI๊ฐ ์ปค๋ฐ ์ ์ ์ถฉ๋ถํ ํผ๋๋ฐฑ์ ์ฃผ์ง ์์ผ๋ฉด ์๋์น ์์ ๊ฒฐ๊ณผ์ ๋ํด ๊ด๋ฆฌ์๊ฐ ๋น๋์ ๋ฐ์ ์ ์๋ค๋ ์ ๋ ๋ชจ๋ ์๊ณ ์์ต๋๋ค.
์ค์ ๋ก ์์ฃผ ์๋ชป๋๋ ์ํฉ์ ์์ธ๋ก ๋จ์ํฉ๋๋ค:
- ํํฐ๊ฐ ์ฝ๊ฐ ์๋ชป๋จ(์๋ชป๋ ๋ ์ง ๋ฒ์, ์ํ ๋น ์ง, ๋ณด๊ด๋ ํญ๋ชฉ ํฌํจ)
- ์๋ชป๋ ํ๋๊ฐ ์ ๋ฐ์ดํธ๋จ(๋๋ ๊ฐ์ ํ๋์ ์๋ชป๋ ๊ฐ ํ์์ด ๋ค์ด๊ฐ)
- CSV ๊ฐ์ ธ์ค๊ธฐ์์ ์ด์ด ๋ฐ๋ฆฌ๊ฑฐ๋, ์ฌ๋ถ์ ๊ณต๋ฐฑ ๋๋ ์จ๊ฒจ์ง ๋ฌธ์๊ฐ ์์
- โ๋ชจ๋ ์ ํโ์ด ํ์ด์ง์ ๋ณด์ด๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ๋ ์ฝ๋๋ฅผ ํฌํจํจ
- ๋๋ฆฐ ์๋ต ๋๋ฌธ์ ๋๊ตฐ๊ฐ๊ฐ ์ฌ์๋ํ์ฌ ์์ ์ด ๋ ๋ฒ ์คํ๋จ
์ด๋ฐ ์ด์ ๋ก ์ฌ๋๋ค์ ์์ ํ ๋๋ ์์ ์ ์ด์ผ๊ธฐํฉ๋๋ค. โ๋ฏธ๋ฆฌ๋ณด๊ธฐโ๋ ์ด๋ค ๋ฐ์ดํฐ๋ ์ ์ฅํ๊ธฐ ์ ์ ๋ฌด์์ด ๋ณ๊ฒฝ๋ ์ง ๋ณด์ฌ์ฃผ๋ ๋๋ผ์ด๋ฐ์ ์๋ฏธํฉ๋๋ค. ํ์ค์ ์ธ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ ๋ค์ ์ง๋ฌธ์ ๋ตํด์ผ ํฉ๋๋ค: ๋ช ๊ฑด์ด ๋ณ๊ฒฝ๋๋๊ฐ? ์ด๋ค ๋ ์ฝ๋๋ค์ด ๋ฐ๋๋๊ฐ? ์ด๋ค ํ๋๊ฐ ์ ๋ฐ์ดํธ๋๋๊ฐ? ๊ฑด๋๋ฐ๊ฑฐ๋ ์คํจํ ๋ ์ฝ๋๋ ์๋๊ฐ?
โ๋กค๋ฐฑโ์ ๋๋ ์ ๋ฐ์ดํธ๊ฐ ์๋ชป๋์์ ๋ ๋ณต๊ตฌํ ๊ณํ์ด ์๋ค๋ ๋ป์ ๋๋ค. ์๋ ๋๋๋ฆฌ๊ธฐ ๋ฒํผ, ๋ณต์ํ ์ ์๋ ์ ์ฅ๋ ์ค๋ ์ท, ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ด์ ์ํ๋ก ์ ๋ขฐ์ฑ ์๊ฒ ๋๋๋ฆฌ๋ ๋ฌธ์ํ๋ ์ญ์์ ์ด ๋ ์ ์์ต๋๋ค. ๋ฏธ๋ฆฌ๋ณด๊ธฐ์ ๋กค๋ฐฑ์ด ์๋ค๋ฉด ๋๋ ์์ ์ ์ผ์์ ์ธ ๊ด๋ฆฌ ์ ๋ฌด์์ ๊ณ ์ํ ์ถ์ธก ์์ ์ผ๋ก ๋ณํฉ๋๋ค.
What โsafeโ looks like for bulk actions
์์ ํ ๋๋ ์์ ์ ๋ชฉํ๋ ๊ฐ๋จํฉ๋๋ค: ํฐ ๋ณ๊ฒฝ์ ๋น ๋ฅด๊ฒ ์ํํ๋ ์กฐ์ฉํ ์์์ ๋จ๊ธฐ์ง ์๋ ๊ฒ. ์ฆ, ๋๋ผ์ ์์, โ200ํ๋ง ์ํฅ๋ฐ์ ์ค ์์์ด์โ ๊ฐ์ ์ผ ์์, ๊ทธ๋ฆฌ๊ณ ์ฌํ์ ๋ฌด์์ด ๋ณ๊ฒฝ๋์๋์ง ์ถ์ธกํ ํ์ ์๊ฒ ๋ง๋๋ ๊ฒ์ ๋๋ค.
์์ ํ ๋๋ ์์ ์ ๋ณดํต ํจ๊ป ๋์ํ๋ ๋ช ๊ฐ์ง ๋ณดํธ ์ฅ์น๋ฅผ ํฌํจํฉ๋๋ค. ํ๋๋ง ์ถ๊ฐํ๋ค๋ฉด ๊ฐ์ฅ ๋จผ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๋ฃ์ผ์ธ์. ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ ๊ฐ์ฅ ํํ ์ค์๋ฅผ ์ค์ ๋ฐ์ดํฐ์ ๋ฐ์๋๊ธฐ ์ ์ ์ก์๋ ๋๋ค.
ํต์ฌ ์์ ๊ธฐ๋ฅ(๊ธฐ๋ณธ ์๊ฑด์ผ๋ก ์ทจ๊ธํ ํญ๋ชฉ)์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๋ช ํํ ๋ฒ์: ์ด๋ค ๋ ์ฝ๋๊ฐ ์ ํํ ์ํฅ์ ๋ฐ๋์ง, ์ ๊ทธ ๋ ์ฝ๋๋ค์ด ์ ํ๋์๋์ง
- ๋๋ผ์ด๋ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ: ๋ณ๊ฒฝ๋ ํญ๋ชฉ์ ์์ฝ๊ณผ ์ ๊ฒํ ์ ์๋ ์์ ์ํ
- ๋ช ์์ ํ์ธ: ์ค์๋์ ๋ง๋ "์ ๋ ฅํ์ฌ ํ์ธ" ๋๋ ์ถ๊ฐ ํ์ธ ๋จ๊ณ
- ๊ฐ์ฌ ์ถ์ : ๋๊ฐ ์ธ์ ์คํํ๊ณ ๋ฒ์์ ๋ณ๊ฒฝ๋ ํ๋๊ฐ ๋ฌด์์ธ์ง
- ๋กค๋ฐฑ ๊ณํ: ์ผ๋ถ๋ผ๋ ๋ณต๊ตฌํ ์ ์๋ ํ์ค์ ์ธ ๋ฐฉ๋ฒ
์์ ์ ๊ถํ๊ณผ๋ ๊ด๋ จ์ด ์์ต๋๋ค. ๋๋ ์์ ์ ๋ชจ๋ ๊ด๋ฆฌ์์๊ฒ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด์ด๋์ด์๋ ์ ๋ฉ๋๋ค. ์ํฅ๋ ฅ์ ์ดํดํ๋ ์ญํ (role)๋ก ์ ํํ๊ณ , ์ฒญ๊ตฌ ์ํ ๋ณ๊ฒฝ์ด๋ ๊ณ์ ์ญ์ ๊ฐ์ ๊ณ ์ํ ์์ ์๋ ๋ ๋ฒ์งธ ์น์ธ์๋ฅผ ์๊ตฌํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์.
๋ชจ๋ ๋ณ๊ฒฝ์ด ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋๋๋ฆด ์ ์๋ ๊ฒ์ ์๋๋๋ค. ํ๊ทธ๋ ๋ด๋ถ ์ํ ์ ๋ฐ์ดํธ๋ ๋ณดํต ๋๋๋ฆฌ๊ธฐ ์ฝ์ต๋๋ค. ๋ฐ์ดํฐ ์ญ์ , ๋ฉ์์ง ์ ์ก, ์นด๋ ๊ฒฐ์ ๋๋ ์ธ๋ถ ์์คํ ํธ๋ฆฌ๊ฑฐ ๋ฑ์ ๊น๋ํ๊ฒ "๋กค๋ฐฑ"ํ ์ ์์ ์ ์์ต๋๋ค.
์ข์ ๊ด๋ฆฌ์ ๋๊ตฌ๋ UI์์ ๋ฌด์์ ์๋์ผ๋ก ๋๋๋ฆด ์ ์๊ณ , ๋ฌด์์ ์๋ ์ ๋ฆฌ๊ฐ ํ์ํ๋ฉฐ, ๋ฌด์์ ์ ํ ๋๋๋ฆด ์ ์๋์ง๋ฅผ ๋ช ํํ ๋ณด์ฌ์ค๋๋ค. AppMaster๋ก ๊ด๋ฆฌ์ ํจ๋์ ๊ตฌ์ถํ๋ค๋ฉด ์ด๋ฌํ ๊ท์น์ ์ํฌํ๋ก์ ๋ฐ์ํด ๊ฐ์ฅ ์์ ํ ๊ฒฝ๋ก๊ฐ ๊ฐ์ฅ ์ฌ์ด ๊ฒฝ๋ก๊ฐ ๋๋๋ก ํ ์ ์์ต๋๋ค.
Start with scope: selecting the right records
๋๋ถ๋ถ์ ๋๋ ์ ๋ฐ์ดํธ ์ฌ๊ณ ๋ ํ ๊ฐ์ง ๋ฌธ์ ์์ ์์ํฉ๋๋ค: ์๋ชป๋ ๋ ์ฝ๋ ์งํฉ. ๋ฒํผ, ๋ฏธ๋ฆฌ๋ณด๊ธฐ, ๋กค๋ฐฑ์ ์๊ฐํ๊ธฐ ์ ์ ๋ฒ์๋ฅผ ์ฐ์ ์ ์ ํ ํญ๋ชฉ์ผ๋ก ๋ง๋์ธ์. ๊ด๋ฆฌ์๊ฐ ์ค์๋ก โ๋ชจ๋โ์ ๋ํ ์์ ์ ์คํํ ์ ์๋ค๋ฉด ์ธ์ ๊ฐ ๋ฐ๋์ ๊ทธ๋ ๊ฒ ๋ ๊ฒ์ ๋๋ค.
๋ฒ์๋ฅผ ์ ์ํ๋ ๋ช ๊ฐ์ง ๋ช ํํ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๊ณ ๊ด๋ฆฌ์๊ฐ ๊ทธ์ค ํ๋๋ฅผ ์ ํํ๊ฒ ํ์ธ์. ์ผ๋ฐ์ ์ธ ์ต์ ์ ์ ์ฅ๋ ๊ฒ์(saved search), ํํฐ, ๋ถ์ฌ๋ฃ์ ID ๋ชฉ๋ก, ํ์ผ ๊ฐ์ ธ์ค๊ธฐ์ ๋๋ค. ๊ฐ ๋ฐฉ๋ฒ์๋ ์ฅ๋จ์ ์ด ์์ต๋๋ค. ํํฐ๋ ๋น ๋ฅด์ง๋ง ์ค๋ ํ๊ธฐ ์ฝ๊ณ , ID๋ ์ ํํ์ง๋ง ๋ถ์ฌ๋ฃ๊ธฐ๋ฅผ ์๋ชปํ๊ธฐ ์ฝ๊ณ , ๊ฐ์ ธ์ค๊ธฐ๋ ๊ฐ๋ ฅํ์ง๋ง ๊ฒ์ฆ์ด ํ์ํฉ๋๋ค.
๋ฒ์๊ฐ ์ค์ ๋๋ฉด ์ฆ์ ๋ ๊ฐ์ง๋ฅผ ๋ณด์ฌ์ฃผ์ธ์: ์ผ์นํ๋ ๋ ์ฝ๋ ์์ ์์ ์ํ ํ. ๊ฑด์๋ โ์ด ๋ณ๊ฒฝ์ ๊ท๋ชจ๋ ์ผ๋ง์ธ๊ฐ?โ์ ๋ตํ๊ณ , ์ํ์ โ์ด๊ฒ ์ฌ๋ฐ๋ฅธ ์งํฉ์ธ๊ฐ?โ์ ๋ตํฉ๋๋ค. ์ํ์ ํ์ค์ ์ด์ด์ผ ํ๋ฉฐ(์: 10~25ํ), ์ฌ๋๋ค์ด ๋ ์ฝ๋๋ฅผ ์๋ณํ๋ ๋ฐ ์ฌ์ฉํ๋ ํต์ฌ ํ๋(์ด๋ฆ, ์ํ, ๋ด๋น์, ์์ฑ์ผ)๋ฅผ ํฌํจํ์ธ์.
์ํํ ๋ฒ์์ ๋ํด ๋ถ๋๋ฌ์ด ๋ณดํธ ์ฅ์น๋ฅผ ์ถ๊ฐํ์ธ์. ํฐ ๋ณ๊ฒฝ์ ์ฐจ๋จํ ํ์๋ ์์ง๋ง ์ค์๋ก ๋ฐ์ํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ค์ด์ผ ํฉ๋๋ค. ์ ์ฉํ ๊ฒฝ๊ณ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๋๋ฌด ๋ง์ ๋ ์ฝ๋(ํน์ ์๊ณ๊ฐ์ ๋์ผ๋ฉด ์ถ๊ฐ ํ์ธ ์๊ตฌ)
- ๋งค์ฐ ๊ด๋ฒ์ํ ํํฐ(์: ์ํ, ์ง์ญ, ๋ ์ง ๋ฒ์๊ฐ ๋น์ด ์์)
- ๋ณด๊ด๋์๊ฑฐ๋ ์ ๊ธด ๋ ์ฝ๋, ๊ณ ๊ฐ์น ๋ ์ฝ๋ ํฌํจ
- ๊ฐ์ ธ์จ ID์ ์ค๋ฅ(์ค๋ณต, ์ ์ ์๋ ID, ํ์ ์ค๋ฅ)
- ๊ด๋ฆฌ์๊ฐ ๋ง์ง๋ง์ผ๋ก ๋ชฉ๋ก์ ๋ณธ ์ดํ์ ๋ฒ์๊ฐ ๋ณ๊ฒฝ๋จ(๋ฐ์ดํฐ๊ฐ ์ด๋ํจ)
๋ง์ง๋ง์ผ๋ก ๊ฐ๋จํ ์ด์ ๋ฉ๋ชจ๋ฅผ ์๊ตฌํ์ธ์. ํฐ์ผ ๋ฒํธ๊ฐ ์๋ ํ๋ฒํ ์ธ์ด๋ก ์ ๊ฒ ํ์ธ์. ์ด ๋ฉ๋ชจ๋ ๊ฐ์ฌ ์ถ์ ์ ์ผ๋ถ๊ฐ ๋์ด ๋ฏธ๋์ ๋น์ ์ด ์๋๋ฅผ ์ดํดํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์: ์ง์ ๋ด๋น ๊ด๋ฆฌ์๊ฐ 8,000๊ฑด์ ์ฃผ๋ฌธ์ "ํด๊ฒฐ๋จ(Resolved)"์ผ๋ก ํ์ํ๋ ค ํฉ๋๋ค. ๋ฒ์๊ฐ "๋ชจ๋ ์ฃผ๋ฌธ"์ด๋ฉด ๊ฑด์์ ์ํ์ด ์ฆ์ ์ด์ํด ๋ณด์ ๋๋ค. ๋ฐ๋ฉด ๋ฒ์๊ฐ "์ํ = Pending์ด๊ณ ๋ง์ง๋ง ์ ๋ฐ์ดํธ๊ฐ ์ง๋์ฃผ ์ด์ "์ด๋ฉด ๊ฑด์์ ์ํ์ด ์ ๋ขฐํ ๋งํ๊ณ ์ด์ ๋ฉ๋ชจ๊ฐ ์ ์คํํ๋์ง ์ค๋ช ํฉ๋๋ค. ์์ ํ ๋๋ ์์ ์ ์ด๋ ๊ฒ ์์๋ฉ๋๋ค.
Designing a useful dry-run preview summary
๋๋ผ์ด๋ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ ์์ ๋ฒจํธ์ ๊ฐ์์ผ ํฉ๋๋ค: ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ์ง ์์ผ๋ฉด์ ์ํฅ๋ ฅ์ ํ์ธํ ์ ์๋๋ก ์ถฉ๋ถํ ์๋๋ฅผ ๋ฆ์ถ๋ ๊ณผ๋ํ๊ฒ ๋ฐฉํดํ์ง ์์์ผ ํฉ๋๋ค. ๋ฏธ๋ฆฌ๋ณด๊ธฐ์ ์คํ์ ๋ถ๋ฆฌ๋ ๋ ๋จ๊ณ๋ก ์ ์งํ์ธ์. ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋จ๊ณ์์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ์ง ๋ง๊ณ , ์นํ ์ ํธ๋ฆฌ๊ฑฐํ์ง ๋ง๋ฉฐ, ์๋ฆผ๋ ๋ณด๋ด์ง ๋ง์ธ์.
์ข์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ ๋ฌด์์ด ๋ณ๊ฒฝ๋๋์ง, ๋ช ๊ฑด์ด ์ํฅ์ ๋ฐ๋์ง, ์ด๋์์ ์คํจํ ์ ์๋์ง๋ฅผ ์๋ ค์ค๋๋ค. ์์ ํ ๋๋ ์์ ์์๋ ์์ฝ์ด ๊ตฌ์ฒด์ ์ด์ด์ผ ํ๋ฉฐ ๋ชจํธํ๋ฉด ์ ๋ฉ๋๋ค.
What to show in the preview
๊ฐ๋จํ ์์ฝ์ ๋จผ์ ๋ณด์ฌ์ฃผ๊ณ ๊ฒํ ํ ์ ์๋ ์ธ๋ถ ์ ๋ณด๋ฅผ ๋ค์ ๋ฐฐ์นํ์ธ์.
- ํํฐ๋ก ์ผ์นํ ๋ ์ฝ๋: ์ด ๊ฑด์
- ๋ณ๊ฒฝ๋ ๋ ์ฝ๋: ๊ฑด์(๋ณ๊ฒฝ๋์ง ์๋ ๊ฑด์ ํฌํจ)
- ๋ณ๊ฒฝ๋๋ ํ๋(์ด์ ๊ท์น -> ์๋ก์ด ๊ท์น)
- ๊ฒฐ๊ณผ ๋ถ๋ฅ: ์ ๋ฐ์ดํธ, ๊ฑด๋๋, ์ค๋ฅ
- ๊ฐ๋ฅํ ์คํ ์๊ฐ ์ถ์ (์ ๊ณต ๊ฐ๋ฅํ๋ฉด)
์์ฝ ๋ค์๋ Before/After๊ฐ ํฌํจ๋ ์์ ์ํ์ ๋ณด์ฌ์ฃผ์ธ์. ์ฒ์ 10๊ฐ๋ง ๋ณด์ฌ์ฃผ๋ ๋์ ์ผ๋ฐ์ ์ธ ์ผ์ด์ค๋ฅผ ๋ํํ๋ 5~10๊ฑด์ ์ ํํ์ธ์. ์: โStatus: Pending -> Activeโ, โAssigned team: ๋น์นธ -> Supportโ, โNext billing date: ๋ณ๊ฒฝ ์์โ. ์ด๋ ๊ฒ ํ๋ฉด ์๋ชป๋ ๋งคํ์ ๋น ๋ฅด๊ฒ ์ฐพ์๋ผ ์ ์์ต๋๋ค.
Surface conflicts early
๋ฏธ๋ฆฌ๋ณด๊ธฐ์์ ์คํ์ ๋ง๊ฑฐ๋ ์๋ชป๋ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค ๋ฌธ์ ๋ฅผ ๊ฐ์งํ๊ณ ์กฐ๊ธฐ์ ํ์ํ์ธ์. ๊ฑด์์ ํจ๊ป ์ํฅ์ ๋ฐ๋ ๋ ์ฝ๋๋ฅผ ์๋ณํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ธ์.
- ํ์ ํ๋ ๋๋ฝ(์: ์ด๋ฉ์ผ ์์)
- ์๋ชป๋ ๊ฐ(๋ฒ์ ๋ฒ์ด๋จ, ํ์ ์ค๋ฅ)
- ๊ถํ ์ถฉ๋(๋ ์ฝ๋ ํธ์ง ๋ถ๊ฐ)
- ๋์์ฑ ์ํ(์ ํ ์ดํ ๋ ์ฝ๋๊ฐ ๋ณ๊ฒฝ๋จ)
- ์์กด์ฑ ๋ฌธ์ (๊ด๋ จ ๋ ์ฝ๋ ์์)
๊ฐ๋ฅํ๋ฉด "๋ฌด์จ ์ผ์ด ์ผ์ด๋ ๊ฒ์ธ๊ฐ" ๋ฌธ์ฅ์ ํฌํจํ์ธ์: ์ถฉ๋์ด ์์ผ๋ฉด ๊ฑด๋๋ธ์ง, ์ ์ฒด ์์ ์ ์ค๋จํ ์ง. ๊ทธ ํ ๋ฌธ์ฅ์ด ๋๋ถ๋ถ์ ๋๋ผ์ด ์ค๋จ์ ์๋ฐฉํฉ๋๋ค.
Step-by-step: run the bulk action safely
๋๋ผ์ด๋ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๋ณด์ด๋ฉด ์ค์ ์คํ์ ๋ฒํผ ํด๋ฆญ์ด ์๋ ํต์ ๋ ์์ ์ผ๋ก ๋ค๋ฃจ์ธ์. ๋ชฉํ๋ ๋๋ผ์์ ์ค์ด๊ณ ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋ ํผํด๋ฅผ ์๊ฒ ์ ์งํ๋ ๊ฒ์ ๋๋ค.
ํ์ ํ๋ฉด์์ ์ ํํ ์ซ์๋ฅผ ๋ณด์ฌ์ฃผ๋ฉฐ ์์ํ์ธ์. โ์ฝ 10k ๋ ์ฝ๋โ ๊ฐ์ ๋ชจํธํ ํํ์ ํผํ๊ณ "10,483๊ฑด์ด ์ ๋ฐ์ดํธ๋ฉ๋๋ค"์ฒ๋ผ ๊ตฌ์ฒด์ ์ผ๋ก ํ์ํ๊ณ ๋ฌด์์ด ๋ณ๊ฒฝ๋๋์ง(ํ๋, ์ ๊ฐ, ์ฌ์ฉ๋ ํํฐ)๋ฅผ ํจ๊ป ๋ณด์ฌ์ฃผ์ธ์. ๋ง์ ์์ ํ ๋๋ ์์ ์ด ์ฌ๊ธฐ์ ์ ๋ขฐ๋ฅผ ์ป๊ฑฐ๋ ์์ต๋๋ค.
๋งค์ฐ ํฐ ์ ๋ฐ์ดํธ์ ๊ฒฝ์ฐ ๋ ๋ฒ์งธ ํ์ธ์ ์ถ๊ฐํ์ธ์. ์ด๋ ์ฑ๊ฐ์ ์ ์ฐจ๊ฐ ์๋๋ผ ์๋์ ์ธ ๋ฉ์ถค์ ๋๋ค. ์๋ฅผ ๋ค์ด UPDATE 10483 ๊ฐ์ ์งง์ ๋ฌธ๊ตฌ๋ฅผ ์ ๋ ฅํ๊ฒ ํ๊ฑฐ๋ ๋ณ๋์ ๋ชจ๋ฌ์์ ํ์ธ์ํค๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์ด๋ ์๋ชป๋ ํํฐ ์ค์๋ฅผ ์ ๋ฆฌ ์์ ์ด ๋๊ธฐ ์ ์ ์ก์์ค๋๋ค.
๊ทธ๋ค์ ํ ๋ฒ์ ๊ฑฐ๋ํ ํธ๋์ญ์ ์ผ๋ก ์คํํ์ง ๋ง๊ณ ๋ฐฐ์น๋ก ์คํํ์ธ์. ๋ฐฐ์น๋ ๋ธ๋์คํธ ๋ฐ๊ฒฝ์ ๋ฎ์ถ๊ณ ์์คํ ์๋ต์ฑ์ ์ ์งํฉ๋๋ค. ๋ํ ์งํ ์ํฉ์ ๋ณด์ฌ์ฃผ์ด ๊ด๋ฆฌ์๊ฐ ๋ ๋ฒ ํด๋ฆญํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
๋จ์ํ๊ณ ๋ฐ๋ณต ๊ฐ๋ฅํ ์คํ ํจํด ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๋ฒ์ ์ ๊ธ: ์ํฅ์ ๋ฐ์ ๋ ์ฝ๋ ID๋ฅผ ์ค๋ ์ท์ผ๋ก ๊ณ ์
- ๋ฐฐ์น ๋จ์ ์ฒ๋ฆฌ(์: ํ ๋ฒ์ 500~2,000๊ฑด)์ ๊ฐ์์ ์งํ ์นด์ดํฐ
- ์ธ๋ถ ์์คํ (์ด๋ฉ์ผ/SMS, ๊ฒฐ์ , API)์ ์ํฅ์ ์ฃผ๋ฉด ์๋ ์ ํ ์ ์ฉ
- ๋ถ๋ถ ์คํจ ๋์ ์ ์: ๊ณ์ ์งํํ๊ณ ๋ณด๊ณ ํ ์ง, ์ฆ์ ์ค๋จํ ์ง
- ์์ ํ ์ฌ์๋ ์ ๊ณต: ์คํจํ ID๋ง ๋์ผ ์ ๋ ฅ์ผ๋ก ์ฌ์๋
๋ถ๋ถ ์คํจ์๋ ๋ช ํํ ๊ท์น์ด ํ์ํฉ๋๋ค. ์ ํจ์ฑ ๊ฒ์ฌ๋ ๋๋ฝ๋ ๋ฐ์ดํฐ๋ก 2%๊ฐ ์คํจํ๋ฉด ์คํจํ ๋ ์ฝ๋์ ์ด์ ๋ฅผ ๋ค์ด๋ก๋ํ ์ ์๊ฒ ๋ณด์ฌ์ฃผ์ธ์. ์คํจ๊ฐ ๊ถํ ๋ฒ๊ทธ ๊ฐ์ ๋ ๋์ ๋ฌธ์ ๋ฅผ ์์ฌํ๋ฉด ์์ ์ ์ค๋จํ๊ณ ์ด๋ฏธ ์ ๋ฐ์ดํธ๋ ๋ฐฐ์น๋ฅผ ์ผ๊ด๋ ์ํ๋ก ์ ์งํ์ธ์.
AppMaster๋ก ๊ด๋ฆฌ์ ๋๊ตฌ๋ฅผ ๋ง๋ ๋ค๋ฉด ์ด๊ฒ์ ๋น์ฆ๋์ค ํ๋ก์ธ์ค์ ์์ฐ์ค๋ฝ๊ฒ ๋งคํ๋ฉ๋๋ค: ๊ฒ์ฆ, ID ์งํฉ ๊ณ ์ , ์ฒญํฌ๋ก ๋ฐ๋ณต, ๊ฒฐ๊ณผ ๋ก๊ทธ, ๋ง์ง๋ง์ "๊ฒฝ๊ณ ์ ํจ๊ป ์๋ฃ" ์์ฝ ํ์.
Audit trails: what to record so you can explain changes
๋๊ตฐ๊ฐ๊ฐ โ์ด 8,214๊ฑด์ ๋ ์ฝ๋์ ๋ฌด์จ ์ผ์ด ์์๋์?โ๋ผ๊ณ ๋ฌผ์ ๋, ๊ฐ์ฌ ์ถ์ (Audit trail)์ ๋น ๋ฅธ ๋ต๋ณ๊ณผ ๊ณ ํต์ค๋ฌ์ด ์ถ์ธก์ ์ฐจ์ด๋ฅผ ๋ง๋ญ๋๋ค. ์ข์ ๋ก๊ทธ๋ ์์ ํ ๋๋ ์์ ์ ๋ ์์ ํ๊ฒ ๋๋ผ๊ฒ ํฉ๋๋ค. ๊ด๋ฆฌ์๋ ์ฝ๋๋ฅผ ์ฝ์ง ์๊ณ ๋ ๋ฌด์์ด ์คํ๋์๋์ง ๊ฒํ ํ ์ ์์ด์ผ ํฉ๋๋ค.
๊ฐ ๋๋ ์์ ์ ๊ณ ์ ํ ์์ (job)์ผ๋ก ๋ณด๊ณ ๋ค์์ ๊ธฐ๋ณธ ์ ๋ณด๋ฅผ ๋งค๋ฒ ๊ธฐ๋กํ์ธ์:
- ๋๊ฐ ์คํํ๋๊ฐ(์ฌ์ฉ์, ์ญํ , ๊ฐ๋ฅํ๋ฉด ๊ณ์ ๋๋ ํ)
- ์์ ๋ฐ ์๋ฃ ์๊ฐ๊ณผ ์์ ์๊ฐ
- ๋ฒ์(๋ ์ฝ๋๊ฐ ์ด๋ป๊ฒ ์ ํ๋์๋์ง: ํํฐ, ์ ์ฅ๋ ๋ทฐ ์ด๋ฆ, ์ ๋ก๋ํ ํ์ผ ์ด๋ฆ)
- ๋งค๊ฐ๋ณ์(์ ์ฉํ ์ ํํ ํ๋์ ๊ฐ, ๊ธฐ๋ณธ๊ฐ ํฌํจ)
- ๊ฑด์(์ผ์น, ๋ณ๊ฒฝ, ๊ฑด๋๋, ์คํจ)๊ณผ ๊ฑด๋๋/์คํจ ์ด์
ํน์ ๊ฒฐ๊ณผ๋ฅผ ์ค๋ช ํ๋ ค๋ฉด ํ๋ ์์ค์ ๋ณ๊ฒฝ ์ฆ๊ฑฐ๊ฐ ๊ฐ์ฅ ์ ์ฉํฉ๋๋ค. ๊ฐ๋ฅํ๋ฉด ๋ณ๊ฒฝ๋ ํ๋์ ์ด์ ๊ฐ๊ณผ ์ดํ ๊ฐ์ ์ ์ฅํ๊ฑฐ๋(ํนํ ์ํ, ์์ ์, ๊ฐ๊ฒฉ, ๊ถํ, ํ์์คํฌํ ๊ฐ์ ์ํํ ํ๋) ์ ์ฒด diff ์ ์ฅ์ด ๋ถ๋ด์ค๋ฝ๋ค๋ฉด ๋ ์ฝ๋๋ณ๋ก ๊ฐ๊ฒฐํ ๋ณ๊ฒฝ ์งํฉ์ ์ ์ฅํ๊ณ ์๋ณธ ์ ํ ์ฟผ๋ฆฌ๋ฅผ ๋ณด๊ดํด ๋ฒ์๋ฅผ ์ฌํํ ์ ์๊ฒ ํ์ธ์.
๊ฒฐ๊ณผ๋ฅผ ๋์ค์ ์ฝ๊ฒ ๊ฒํ ํ ์ ์๊ฒ ํ์ธ์. ์์ ์ ์ํ(๋๊ธฐ, ์คํ ์ค, ์๋ฃ, ์คํจ, ๋กค๋ฐฑ๋จ)์ ๋น๊ธฐ์ ๊ด๋ฆฌ์๋ ์ดํดํ ์ ์๋ ์งง์ ์์ฝ์ ๊ฐ์ ธ์ผ ํฉ๋๋ค.
๋ก๊ทธ๋ ์ง์ ํฐ์ผ์ ์ฐ๋ ๊ฒ์ฒ๋ผ ์ฝ๊ธฐ ์ฝ๊ฒ ์์ฑํ์ธ์:
- ๋ด๋ถ ID ๋์ "๊ณ ๊ฐ ์ํ" ๊ฐ์ ํ๋ฒํ ํ๋ ์ด๋ฆ ์ฌ์ฉ
- ์ซ์ ๋ฉ์ด๋ฆฌ ๋์ ์์(์ํฅ ๋ฐ์ ์ฒซ 10๊ฐ ๋ ์ฝ๋ ์ด๋ฆ) ์ ์
- "์์ฒญํ ๋ด์ฉ"๊ณผ "์ค์ ๋ก ๋ณ๊ฒฝ๋ ๋ด์ฉ"์ ๊ตฌ๋ถ
- ์คํจ ์ ๋ค์ ์กฐ์น(์ฌ์๋, ์คํจ ๋ด๋ณด๋ด๊ธฐ, ๋กค๋ฐฑ ์์) ํฌํจ
AppMaster์์ ๊ด๋ฆฌ์ ๋๊ตฌ๋ฅผ ๋ง๋ ๋ค๋ฉด BulkJob, BulkJobItem, ChangeSet ๊ฐ์ ๋ฐ์ดํฐ ๊ฐ์ฒด๋ฅผ ์ผ๊ธ ์๋ฏผ์ผ๋ก ๋ชจ๋ธ๋งํด ๋ชจ๋ ์์ ์์ ๊ฐ์ฌ ์ถ์ ์ด ์ผ๊ด๋๊ฒ ์ ์ง๋๋๋ก ํ์ธ์.
Rollback plans that work when things go wrong
๋กค๋ฐฑ์ ๋จ์ํ "๋๋๋ฆฌ๊ธฐ" ๋ฒํผ๊ณผ ๊ฐ์ง ์์ต๋๋ค. ์ข์ ๋กค๋ฐฑ ๊ณํ์ ๋ฌธ์ ๊ฐ ๋ฆ๊ฒ ๋ฐ๊ฒฌ๋์ด ๊ทธ ์ฌ์ด์ ๋ค๋ฅธ ์์ ์ด ์์ฌ๋ ๋ณต๊ตฌํ ์ ์๋ค๋ ์ ์ ๋ก ์ค๊ณ๋ฉ๋๋ค. ์์ ํ ๋๋ ์์ ์ ์ํ๋ค๋ฉด ๋กค๋ฐฑ์ ๊ธด๊ธ ๋ฒํผ์ด ์๋ ํต์ฌ ๊ธฐ๋ฅ์ผ๋ก ๋ค๋ฃจ์ธ์.
Two rollback styles (pick the right one)
๋ ๊ฐ์ง ์ผ๋ฐ์ ์ธ ์ต์ ์ด ์์ผ๋ฉฐ ๊ฐ๊ฐ ๋ค๋ฅธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
- Revert to previous values: ๊ฐ ํ๋๊ฐ ๋ณ๊ฒฝ ์ ์ํ๋ก ์ ํํ ๋ณต์๋ฉ๋๋ค. ํ๊ทธ, ์์ ์, ์ํ ๊ฐ์ ๋จ์ํ ํธ์ง์ ์ ํฉํฉ๋๋ค.
- Compensating action: ์๋ ๋ณ๊ฒฝ์ผ๋ก ๋ฐ์ํ ๋ถ์ ํจ๊ณผ์ ๋์ํ๋ ์๋ก์ด ๋ณ๊ฒฝ์ ์ ์ฉํฉ๋๋ค. ์ด๋ฉ์ผ ๋ฐ์ก, ์ก์ฅ ์์ฑ, ๊ถํ ๋ถ์ฌ ๊ฐ์ ์ธ๋ถ ํจ๊ณผ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ์๋ ์ด ๋ฐฉ์์ด ๋ ์ ์ ํฉ๋๋ค.
์ค์ฉ์ ์ธ ์ ๊ทผ๋ฒ์ ๊ฑด๋๋ฆฐ ํ๋์ ๋ํด "์ด์ ์ค๋ ์ท"์ ์ ์ฅํ๋, ์ธ๋ถ ํจ๊ณผ๋ฅผ ๋๋๋ฆด ์ ์์ ๋๋ ๋ณด์ ์กฐ์น(compensating action)๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค.
Time windows and eligibility rules
๋กค๋ฐฑ์ด ์ธ์ ํ์ฉ๋๋์ง ๊ท์น์ ์ ํ๊ณ ๋ช ํํ ํ์ํ์ธ์. ์๋ฅผ ๋ค์ด ๋กค๋ฐฑ์ 24์๊ฐ ์ด๋ด๋ก ํ์ฉํ๋, ๋ ์ฝ๋๊ฐ ๊ทธ ์ฌ์ด์ ํธ์ง๋์๊ฑฐ๋ ์ฒญ๊ตฌ๋ก ๋ด๋ณด๋ด์ก๊ฑฐ๋ ๊ฐ๋ ์๊ฐ ์น์ธํ ๊ฒฝ์ฐ์๋ ์ฐจ๋จํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ท์น์ UI์ ํ์ํด ๊ด๋ฆฌ์๊ฐ ํด๋ฆญ ํ์ ํ๊ณ๋ฅผ ์๊ฒ ๋๋ ๋ถํธ์ ๊ฒช์ง ์๋๋ก ํ์ธ์.
Plan for linked data and side effects
๋๋ ํธ์ง์ ํผ์ ์ผ์ด๋์ง ์์ต๋๋ค. ์ฌ์ฉ์์ ์๊ธ์ ๋ณ๊ฒฝ์ ๊ถํ, ํฉ๊ณ, ๊ณ์ ์ํ์ ์ํฅ์ ์ค ์ ์์ต๋๋ค. ๋กค๋ฐฑ์ ์ค๊ณํ ๋๋ ์ฌ๊ณ์ฐํด์ผ ํ ์ข ์ ์ ๋ฐ์ดํธ(ํฉ๊ณ ์ฌ๊ณ์ฐ, ์ํ ์ ํ, ๋ฉค๋ฒ์ญ ์ ๊ทผ, ๋๊ธฐ ์ค์ธ ์๋ฆผ ๋ฑ)๋ฅผ ๋ชฉ๋กํํ์ธ์.
๋กค๋ฐฑ์ ์์ฒด์ ์ธ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๊ฐ์ง ์๋ดํ ํ๋ฆ์ด์ด์ผ ํฉ๋๋ค: "๋ณต์๋ ํญ๋ชฉ, ๋ณต์๋์ง ์์ ํญ๋ชฉ, ์ฌ๊ณ์ฐ๋ ํญ๋ชฉ์ ๋ณด์ฌ๋๋ฆฝ๋๋ค."
์: ๊ด๋ฆฌ์๊ฐ 8,000๋ช ์ ๊ณ ๊ฐ์ ์ ์๊ธ์ ๋ก ์ด๋์์ผฐ๋ค๋ฉด ๋กค๋ฐฑ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ ๋ช ๊ฑด์ด ๊นจ๋ํ๊ฒ ๋๋์๊ฐ ์ ์๋์ง, ์๋์ผ๋ก ํธ์ง๋ ๋ ์ฝ๋๋ ๋ช ๊ฑด์ธ์ง, ์ด๋ฏธ ์์ฑ๋ ์ก์ฅ์ด ์กฐ์ (๋ณด์ ์กฐ์น)๋ ๊ฒ์ธ์ง ๋ฑ์ ๋ณด์ฌ์ค์ผ ํฉ๋๋ค. AppMaster ๊ฐ์ ๋๊ตฌ์์๋ ์ด๋ฅผ ๋ณ๋์ ๋กค๋ฐฑ ํ๋ก์ธ์ค๋ก ๋ชจ๋ธ๋งํด ์คํ ์ ๋ช ํํ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
Common mistakes and traps
๊ด๋ฆฌ์ ๋๊ตฌ์ ๋ํ ์ ๋ขฐ๋ฅผ ์๋ ๊ฐ์ฅ ๋น ๋ฅธ ๋ฐฉ๋ฒ์ ์๋ชป๋ ์์ ์ ๋น ๋ฅด๊ฒ ํ ์ ์๊ฒ ๋ง๋๋ ๊ฒ์ ๋๋ค. ๋๋ถ๋ถ์ ๋๋ ์์ ์คํจ๋ "๋ฒ๊ทธ"๊ฐ ์๋๋ผ UI๊ฐ ์ก์ง ๋ชปํ ์์ ์ฌ๋์ ์ค์์ ๋๋ค.
ํํ ํจ์ ์ ๊ฑฐ์ ๋ง๋ ํํฐ์ ๋๋ค. ๋๊ตฐ๊ฐ๊ฐ "ํ์ฑ ๊ณ ๊ฐ(Active customers)"์ ์ ํํ์ง๋ง "๊ตญ๊ฐ = US"๋ฅผ ๋นผ๋จน๊ฑฐ๋ "์์ฑ์ผ(Created date)"์ ์ฌ์ฉํ์ด์ผ ํ๋๋ฐ "๋ง์ง๋ง ํ๋์ผ(Last activity)"์ ์ฌ์ฉํ ๊ฒฝ์ฐ์ ๋๋ค. ๋ฏธ๋ฆฌ๋ณด๊ธฐ์ ์ฒ์ ๋ช ์ค์ ๊ธฐ๋์ ๋ง์ ๋ณด์ด์ง๋ง ์ด ๊ฑด์๋ ์กฐ์ฉํ 10๋ฐฐ๊ฐ ํด ์ ์์ต๋๋ค.
๋ ๋ค๋ฅธ ๊ณ ์ ์ ์ธ ์ค์๋ ์๋ฏธ๊ฐ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๊ฐ์ ์ ๋ฐ์ดํธํ๋ ๊ฒ์ ๋๋ค. ์: "discount = 15"์ 15%๋ก ์๋ํ์ง๋ง ์์คํ ์ด 15๋ฌ๋ฌ๋ก ํด์ํ๊ฑฐ๋, ํตํ๊ฐ ์ผํธ ๋จ์๋ก ์ ์ฅ๋์ด ์๋๋ฐ ๊ด๋ฆฌ์๊ฐ ๋ฌ๋ฌ ๋จ์๋ก ์ ๋ ฅํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ด๋ฌํ ์ค์๋ ๊ฐ์ด ๊ธฐ์ ์ ์ผ๋ก ์ ํจํ๊ธฐ ๋๋ฌธ์ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํต๊ณผํ๋ ์ผ์ด ๋ง์ต๋๋ค.
์ค๋ณต ์คํ๋ ๋ฐ์ํฉ๋๋ค. ์์ ์ด ์๊ฐ ์ด๊ณผ๋๊ณ ํ์ด์ง๊ฐ ์๋ก๊ณ ์นจ๋์ด ๋๊ตฐ๊ฐ๊ฐ ๋ค์ ์คํ์ ๋๋ฅด๋ฉด ๋์ผํ ์ ๋ฐ์ดํธ๊ฐ ์ค๋ณต ์ ์ฉ๋๊ฑฐ๋ ๋ ์์ ์ด ๊ฒฝ์ํ๊ฒ ๋ฉ๋๋ค. ๋ฉฑ๋ฑ์ฑ ํ ํฐ(idempotency token), ๋ช ํํ ์์ ์ํ, ์ ์ถ ํ Run ๋ฒํผ ๋นํ์ฑํ๋ ๊ฒฝ๊ณ ๋ณด๋ค ๋ ํจ๊ณผ์ ์ ๋๋ค.
๊ถํ ๋ฌธ์ ๋ ์ข ์ข ๊ฐ๊ณผ๋ฉ๋๋ค. Support ์ญํ ์ ์ฒญ๊ตฌ ํ๋๋ฅผ ์์ ํ ์ ์๋ ๊ถํ์ด ์ฃผ์ด์ ธ ์๋ค๋ฉด ํฐ ์ฌ๊ณ ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ ํ์ค์ ์ธ ๋ณดํธ ์ฅ์น๋ ๋๋ถ๋ถ์ ์ค์๋ฅผ ์ก์๋ ๋๋ค:
- ํผํ ์ ์๋ ํฐ ๋ ์ฝ๋ ์ ํ์์ ๋ช ๊ฐ์ง "์ ํฌํจ๋์๋๊ฐ" ์์(์ผ์น ์กฐ๊ฑด)
- ์ ๋ ฅ ์์ ๋จ์ ํ์(%, $, ์ผ, ์ผํธ)์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์์ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ์์ฝ
- ๊ฐ๊ฒฉ, ์ญํ , ์ ๊ทผ๊ถ ๊ฐ์ ๊ณ ์ํฅ ํ๋์๋ ํ์ธ ๋ฌธ๊ตฌ ์๊ตฌ
- ๋จํ์ฑ ์์ ID์ ๊ฐ์์ ์์ ์ด๋ ฅ์ผ๋ก ์ค๋ณต ์คํ ๋ฐฉ์ง
- ๋ฒํผ ๋ ๋๋ง ์๋ฟ ์๋๋ผ ์คํ ์์ ์๋ ๊ถํ ๊ฒ์ฌ
AppMaster ๊ฐ์ ํ๋ซํผ์์ ๊ด๋ฆฌ์ ๋๊ตฌ๋ฅผ ๋ง๋ ๋ค๋ฉด ์ด๋ฌํ ์๊ตฌ ์ฌํญ์ ์ ํ์ "์์ผ๋ฉด ์ข์ ๊ธฐ๋ฅ"์ด ์๋๋ผ UI ์๊ตฌ ์ฌํญ์ผ๋ก ์ทจ๊ธํ์ธ์. ๊ฐ์ฅ ์์ ํ ๋๋ ์์ ์ ์ฌ๋ฐ๋ฅธ ์ ํ์ ๊ฐ์ฅ ์ฝ๊ฒ ํ๋ ๋๊ตฌ์ ๋๋ค.
A quick pre-flight checklist
์คํ(Run) ๋ฒํผ์ ๋๋ฅด๊ธฐ ์ ์ 1๋ถ๋ง ๋ฉ์ถ์ธ์. ์งง์ ์ฌ์ ์ ๊ฒ์ผ๋ก ๋๋ถ๋ถ์ ๋๋ ์ ๋ฐ์ดํธ ์ฌ์์ ๋ง์ ์ ์์ต๋๋ค: ์๋ชป๋ ๋ ์ฝ๋ ์งํฉ, ์จ๊ฒจ์ง ์ ํจ์ฑ ๊ท์น, ๋๋ ๋ณต๊ตฌ ๋ฐฉ๋ฒ ๋๋ฝ ๋ฑ์ ๋๋ค.
The 60-second check
๋จผ์ ๋ ์ฝ๋ ์๊ฐ ์์๊ณผ ์ผ์นํ๋์ง ํ์ธํ์ธ์. "์ง๋๋ฌ ์ฃผ๋ฌธ"์ ์ ํํ๋ค๊ณ ์๊ฐํ๋๋ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์ 48,210๊ฑด์ด ๋์จ๋ค๋ฉด ํํฐ๋ฅผ ๋ค์ ํ์ธํ์ธ์. ์์๋ณด๋ค ํจ์ฌ ๋ง๊ฑฐ๋ ์ ์ ๊ฑด์๋ ๋ณดํต ๋ฒ์๊ฐ ์๋ชป๋์์์ ์๋ฏธํฉ๋๋ค.
๋ค์์ผ๋ก ๋ฏธ๋ฆฌ๋ณด๊ธฐ์ ์์ ์ํ ํ์ ์ค์บํ์ธ์. ์ฒซ ํ์ด์ง๋ง ๋ณด์ง ๋ง๊ณ ์์ง ์ผ์ด์ค(๋น ๊ฐ, ํน์ดํ ์ํ, ํน์ ํ๋๊ทธ๊ฐ ์๋ ๊ณ ๊ฐ)๋ฅผ ํ์ธํ์ธ์. ๊ฐ๋ฅํ๋ฉด ์ ์๋ ๋ช ๊ฐ ๋ ์ฝ๋๋ฅผ ์ง์ ์ ๊ฒํด ํฌํจ๋์๊ฑฐ๋ ์ ์ธ๋์๋์ง ํ์ธํ์ธ์.
๊ทธ๋ค์ ํ์ ํ๋์ ์ ํจ์ฑ ๊ฒฝ๊ณ ๋ฅผ ๊ฒํ ํ์ธ์. ๋๋ผ์ด๋ฐ ์์ฝ์ ์คํจํ ํญ๋ชฉ๊ณผ ๊ทธ ์ด์ ๋ฅผ ์๋ ค์ค์ผ ํฉ๋๋ค(์: ํ์ ๋ฐ์ดํฐ ๋๋ฝ, ๊ท์น ์๋ฐ ๊ฐ). "์ฌ์ํ" ๊ฒฝ๊ณ ๋ฅผ ๋ฌด์ํ์ง ๋ง์ธ์. ๋๋ ์์ ์์ ์ฌ์ํจ์ ๋๊ท๋ชจ๊ฐ ๋ฉ๋๋ค.
์งํ ์ ์ ๋กค๋ฐฑ ๊ณํ์ด ์ค์ ๋ก ์กด์ฌํ๊ณ ์ดํด๋๋์ง ํ์ธํ์ธ์. ์์คํ ์์ "๋๋๋ฆฌ๊ธฐ"๊ฐ ์ ํํ ๋ฌด์์ ์๋ฏธํ๋์ง: ์ ์ฒด ๋ณต์์ธ์ง, ๋ถ๋ถ ๋ณต์์ธ์ง, ๋์ค์ ์คํํ ์คํฌ๋ฆฝํธ์ธ์ง ๋ช ํํ ํ์ธ์. ๋ณต๊ตฌ์ ํ์ํ ๊ถํ, ๋ฐฑ์ , ์๊ฐ ์ฐฝ์ด ์ค๋น๋์ด ์๋์ง๋ ํ์ธํ์ธ์.
๋ง์ง๋ง์ผ๋ก ๋ช ํํ ๋ณ๊ฒฝ ๋ฉ๋ชจ๋ฅผ ์์ฑํ์ธ์. ๋ฏธ๋์ ๋น์ (๋๋ ๊ฐ์ฌ์ธ)์ ์ํ ๋ฉ์์ง๋ผ๊ณ ์๊ฐํ๊ณ ๋ฌด์, ์, ์ด๋ป๊ฒ ์ ํํ๋์ง๋ฅผ ๊ธฐ๋กํ์ธ์.
์ด ๊ฐ๋จํ ์ฒดํฌ๋ฆฌ์คํธ๋ ๋๋ผ์ด๋ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ, ๊ฐ์ฌ ๋ก๊ทธ, ์ ์๋ ๋กค๋ฐฑ ๊ฒฝ๋ก๋ฅผ ์ง์ํ๋ ์์ ํ ๋๋ ์์ ๋๊ตฌ์ ์ ์ด์ธ๋ฆฝ๋๋ค. AppMaster๋ก ๊ด๋ฆฌ์ ํจ๋์ ๋ง๋ ๋ค๋ฉด ์ด ๋จ๊ณ๋ฅผ ๋ชจ๋ ๋๋ ์ ๋ฐ์ดํธ ์คํ ์ ์ ํ์๋ก ๋ง๋ค ์ ์์ต๋๋ค.
Example: updating thousands of records without breaking trust
์: ๊ณ ๊ฐ ์ง์ ๊ด๋ฆฌ์๊ฐ ๊ฒฐ์ ์ ๊ณต์ ์ฒด ์ฅ์ ๋ก ์ธํด ์๋ชป "Past due"๋ก ํ์๋ 8,000๋ช ์ ์ฌ์ฉ์์ ๋ํด "subscription_status = Active"๋ก ์ค์ ํด์ผ ํ๋ ์ํฉ์ ๋๋ค. ์๋ชป๋ ํํฐ ํ๋๊ฐ ์ค์ฌ์ฉ์์๊ฒ ์ํฅ์ ์ค ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์ ์์ ํ ๋๋ ์์ ์ด ํนํ ์ค์ํฉ๋๋ค.
๋จผ์ ๊ด๋ฆฌ์๋ ๋ฒ์๋ฅผ ์ ์ํฉ๋๋ค. ํํฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- Status = Past due
- Last payment succeeded within the last 24 hours
- Account not flagged for fraud
- Country not in a blocked list
- Source = Stripe
์๋ฌด ๊ฒ๋ ๋ณ๊ฒฝํ๊ธฐ ์ ์ ๋๋ผ์ด๋ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์คํํฉ๋๋ค. ์์ฝ์ ์ฝ๊ธฐ ์ฝ๊ณ ๊ตฌ์ฒด์ ์ด์ด์ผ ํ๋ฉฐ ๋จ์ํ "8,000๊ฑด์ด ์ ๋ฐ์ดํธ๋ฉ๋๋ค"๊ฐ ๋์ด์ ์ ๋ฉ๋๋ค. ์ข์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- Records matched: 8,214
- Records to be updated: 8,000
- Records excluded: 214(์ฌ์ ํฌํจ: ์ฌ๊ธฐ ํ๋๊ทธ, ๊ฒฐ์ ๋๋ฝ, ์ฐจ๋จ๋ ๊ตญ๊ฐ ๋ฑ)
- Field changes: subscription_status Past due -> Active
- Side effects: โsend payment emailโ ๋นํ์ฑํ, โrecalculate access entitlementsโ ํ์ฑํ
๊ด๋ฆฌ์๋ ๋ช ํํ ์คํ ID๋ก ๋๋ ์ ๋ฐ์ดํธ๋ฅผ ์คํํฉ๋๋ค. ์งํ ์ํฉ์ ์ ๋ฐ์ดํธ๋ ๊ฑด์, ๊ฑด๋๋, ์คํจ ๊ฑด์๋ฅผ ๋ณด์ฌ์ค๋๋ค. ์งํ ์ค ๋ณ๋ ฌ ์ํฌํ๋ก๊ฐ ๋์ผ ๋ ์ฝ๋๋ฅผ ํธ์งํ์ฌ 63๊ฑด์ด ์ ํจ์ฑ ๊ฒ์ฌ ์คํจ๋ก ์ค๋จ๋ ์ ์์ต๋๋ค.
์ด ๊ฒฝ์ฐ ๊ด๋ฆฌ์๋ ์ ์ฑ ์ ๋ฐ๋ผ ๊ฒฐ์ ํฉ๋๋ค:
- ์คํจ๊ฐ ์์์ด๊ณ ๊ณ ๋ฆฝ๋ ๊ฒฝ์ฐ ์ฑ๊ณตํ ์ ๋ฐ์ดํธ๋ ์ ์งํ๊ณ ์คํจํ ๋ชฉ๋ก์ ๋ด๋ณด๋ด ํ์ ์กฐ์น๋ฅผ ์งํ
- ์คํจ๊ฐ ํํฐ๊ฐ ์๋ชป๋์์์ ์์ฌํ๋ฉด ์์ ์ ์ผ์ ์ค๋จํ๊ณ ๋กค๋ฐฑ
์ฌ๊ธฐ์๋ ์คํจ๊ฐ ๊ณ ๋ฆฝ๋์ด ์์ด 7,937๊ฑด์ ์ฑ๊ณต ์ ๋ฐ์ดํธ๋ฅผ ์ ์งํ๊ณ 63๊ฑด์ ์ ํจ์ฑ ๋ฌธ์ ๋ฅผ ๊ณ ์ณ ์ฌ์๋ํฉ๋๋ค. ๋กค๋ฐฑ์ด ํ์ํ๋ค๋ฉด ์คํ ID๋ฅผ ์ฌ์ฉํด ์ํฅ์ ๋ฐ์ ๊ฐ ๋ ์ฝ๋์ ์ด์ ๊ฐ์ผ๋ก ๋ณต์ํ๊ณ ๋ถ์ ๋ก์ง์ ์์ ํ๊ฒ ์ฌ์คํํ๋ ๋ฐฉ์์ผ๋ก ์งํํ์ ๊ฒ์ ๋๋ค.
๋ง์ง๋ง์ผ๋ก ๋ชจ๋ ์์ ์ ๊ธฐ๋ก๋ฉ๋๋ค: ๋๊ฐ ์คํํ๋์ง, ์ ํํ ํํฐ, ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ฑด์, Before/After ๊ฐ, ํ์์คํฌํ, ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ด์ ๋ฐ ๋กค๋ฐฑ ๊ฒฐ์ ๋ฑ. ๊ด๋ฆฌ์๋ ๊ฒฐ๊ณผ๋ฅผ ํ์ดํ ์ธ์ด๋ก ์ ๋ฌํฉ๋๋ค: "7,937๊ฐ์ ๊ณ์ ์ด ์ฆ์ ๋ณต์๋์๊ณ 63๊ฐ๋ ์ ํจ์ฑ ๊ฒ์ฌ ๋ฌธ์ ๋ก ์๋ ๊ฒํ ์์ ์ ๋๋ค. ๊ณ ๊ฐ ์ด๋ฉ์ผ์ ๋ฐ์ก๋์ง ์์์ต๋๋ค." AppMaster๋ก ๊ด๋ฆฌ ๋๊ตฌ๋ฅผ ๋ง๋ค๋ฉด ์ด๋ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ, ์คํ ์ถ์ , ๊ฐ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ํฌํ๋ก์ ์ง์ ์ค๊ณํด ์ง์ ํ์ด ์ถ์ธก ์์ด ์ ์ํ ๋์ํ ์ ์์ต๋๋ค.
Next steps: build safer admin tools that scale
ํ ๋๋ ์์ ์ ๋ํด ๋ฏธ๋ฆฌ๋ณด๊ธฐ์ ๋กค๋ฐฑ์ด ์๋ํ๋ฉด ๋ค์ ๋ชฉํ๋ ์ด๋ฅผ ๋ฐ๋ณต ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ๊ฒ์ ๋๋ค. ๊ด๋ฆฌ์๊ฐ ๋งค๋ฒ "์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ"์ ๊ธฐ์ตํ ํ์๊ฐ ์์ด์ผ ํฉ๋๋ค. ์๋ฐ์ ๋ฐ์ ๋ ์ฌ๋๋ค์ ๋จ๊ณ๋ฅผ ๊ฑด๋๋ฐ๊ธฐ ๋ง๋ จ์ ๋๋ค.
๊ฐ์ฅ ์ข์ ํจํด์ ๋น๋ฉ ๋ธ๋ก์ผ๋ก ๋ง๋์ธ์. ์ ์ฅ๋ ๋ฒ์(์: "EU์ ํ์ฑ ๊ณ ๊ฐ", "14์ผ ์ด์๋ ๋ฏธ์ฒ๋ฆฌ ํฐ์ผ")๋ ์ํํ ์๋ ํํฐ๋ง์ ์ค์ด๊ณ , ํ ํ๋ฆฟ์ ์์ ์์ฒด์ ์ผ๊ด์ฑ(๋์ผํ ์ ํจ์ฑ ๊ฒ์ฌ, ๋์ผํ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ ์ด์์, ๋์ผํ ๋กค๋ฐฑ ์ต์ )์ ๋ณด์ฅํฉ๋๋ค.
์๊ฒ ์์ํ๊ณ ๋จ๊ณ๋ณ๋ก ์์ ์ฅ์น๋ฅผ ์ถ๊ฐํ์ธ์. ํ์ค์ ์ธ ๊ฒฝ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๊ฑด์์ ์ํ ํ์ ํฌํจํ ๋๋ผ์ด๋ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ถ๊ฐ
- ๋ณดํธ ์ฅ์น ์ถ๊ฐ(์๊ณ๊ฐ, ํ์ ํํฐ, ๋ช ํํ ๊ฒฝ๊ณ )
- ๊ฐ์ฌ ๊ธฐ๋ฅ ์ถ๊ฐ(๋๊ฐ ์คํํ๋์ง, ๋ฌด์์ด ๋ณ๊ฒฝ๋์๋์ง, ์ด์ )
- ๋กค๋ฐฑ ๊ณํ ์ถ๊ฐ(์ญ์ ์ฌ์คํ ๋๋ ์ค๋ ์ท์์ ๋ณต์)
- ๋ํ ์์ ์ ๋ํ ์น์ธ ์ถ๊ฐ(๊ณ ์ํฅ ์์ ์ ๋ํ 2์ธ ์น์ธ ๊ท์น)
์์ ๊ถ(ownership)์ ๊ธฐ๋ฅ๋งํผ ์ค์ํฉ๋๋ค. ๋๊ฐ ๋ํ ์์ ์ ์คํํ ์ ์๋์ง, ์ด๋ค ๊ท๋ชจ์์ ์น์ธ์ด ํ์ํ์ง, ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋ ๋๊ฐ ์ฑ ์์ง๋์ง๋ฅผ ๊ฒฐ์ ํ์ธ์. ์: "5,000๊ฑด ์ด๊ณผ๋ 2์ธ ๊ฒํ ํ์" ๊ฐ์ ๋จ์ ๊ท์น๋ ์ฌ์ผ ๋๋ผ์์ ์๋ฐฉํฉ๋๋ค.
๊ด๋ฆฌ์ ํจ๋์ ๊ตฌ์ถํ๋ค๋ฉด ๋ ธ์ฝ๋ ์ ๊ทผ๋ฒ์ ์ฌ์ฉํ๋๋ผ๋ ์ฌ๋ ์๋ ์ํฌํ๋ก๋ฅผ ์ง์ํ์ธ์. AppMaster๋ฅผ ์ฌ์ฉํ๋ฉด ๊ด๋ฆฌ์ ํ๋ฉด์ ๋๋ ์์ ์ ์ถ๊ฐํ๊ณ Business Process๋ก ๋จผ์ ๋๋ผ์ด๋ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์คํํ๋ฉฐ ๋กค๋ฐฑ๊ณผ ๊ฐ์ฌ๋ฅผ ์ํ ๋ก๊ทธ๋ฅผ ์๋์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค. AppMaster๋ ์ค์ ๋ฐฑ์๋์ ์ฑ ์ฝ๋๋ฅผ ์์ฑํ๋ฏ๋ก ๊ด๋ฆฌ์ UI๋ ๋จ์ํ๊ฒ ์ ์งํ๋ฉด์๋ ์ฒดํฌ๋ฅผ ๊ฐ์ ํ๊ณ ๋ณ๊ฒฝ์ ๊ธฐ๋กํ ์ ์์ต๋๋ค.
์์ ์: ์ง์ ์ฑ ์์๊ฐ 12,000๊ฑด์ ์ค๋๋ ํฐ์ผ์ ์ข ๋ฃํ๋ ค๊ณ ํฉ๋๋ค. ์ ์ฅ๋ ๋ฒ์๋ฅผ ์ฌ์ฉํด ํ ๋ฒ์ ํด๋ฆญ์ผ๋ก ์ฌ๋ฐ๋ฅธ ์งํฉ์ ์ ํํฉ๋๋ค. ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ ๋ณ๊ฒฝ๋ ๊ฑด์๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ํ์ฑ SLA๊ฐ ์๋ ํฐ์ผ์ ํ์ํฉ๋๋ค. ์ด ์์ ์ ์น์ธ์ด ํ์ํ๊ณ , ๊ฐ ํฐ์ผ์ ๊ฐ์ฌ ๊ธฐ๋ก์ ๋จ๊ธฐ๋ฉฐ ๊ท์น์ด ์๋ชป๋์์ ๊ฒฝ์ฐ ์ฌ์ฉํ ์ ์๋ ๋กค๋ฐฑ ์์ ์ ์ค๋นํด ๋ก๋๋ค.
๋ชฉํ๋ ๊ฐ๋จํฉ๋๋ค: ๋ฐ์ดํฐ๊ฐ ์ปค์ง๊ณ ํ์ด ๋ฐ๋์ด๋ ์์ ํ ๊ฒฝ๋ก๊ฐ ๊ฐ์ฅ ์ฌ์ด ๊ฒฝ๋ก๊ฐ ๋๊ฒ ํ์ธ์.


