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

๋๋ ์์ ์ด ์๋ชป๋๋ ์ด์ (๊ทธ๋ฆฌ๊ณ โ์์ โ์ด๋ ๋ฌด์์ธ์ง)
๋๋ ์์ ์ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํด์ผ ํ ๋ ์ฌ๋๋ค์ด ์ฌ์ฉํ๋ "์ฌ๋ฌ ํญ๋ชฉ์ ์ ์ฉ" ์ปจํธ๋กค์ ๋๋ค. ์ค์ ์ ํ์์๋ ๋ณดํต ๋๋ ํธ์ง(ํ๋ ๋ณ๊ฒฝ), ๋๋ ์ญ์ , ๋ค๋ฅธ ํด๋๋ ๋จ๊ณ๋ก ์ด๋, ๋ด๋น์ ํ ๋น, ํ๊ทธ ์ถ๊ฐ, ์ํฌํ๋ก์ฐ ํธ๋ฆฌ๊ฑฐ ๋ฑ์ด ํฌํจ๋ฉ๋๋ค.
๋ฌธ์ ๊ฐ ์๊ธฐ๋ ์ด์ ๋ ๋จ์ํฉ๋๋ค: ์ ์คํ๊ฒ ๋ ์ฝ๋๋ณ๋ก ์๊ฐํ๋ ๊ณผ์ ์ ์๋๋ก ๋ฐ๊พธ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฒ์๊ฐ ๋ช ํํ ๋๋ ๊ด์ฐฎ์ง๋ง, ์ข ์ข ๋ฒ์๋ ํ๋ฆฟํ๊ณ ๊ฒฐ๊ณผ๋ ๋ถ๋ถ๋ช ํ๋ฉฐ ๊ถํ ๊ท์น์ ์ผ๊ด์ฑ์ด ์์ต๋๋ค. ์์ ์ ๊ด์ฐฎ์ ๋ณด์ด๋ค๊ฐ ๋๊ตฐ๊ฐ ์๋ชป๋ 200๊ฑด์ด ์ ๋ฐ์ดํธ๋ ๊ฑธ ๋ฐ๊ฒฌํ ๋๊น์ง ๋ฌธ์ ๊ฐ ๋๋ฌ๋์ง ์์ต๋๋ค.
๊ฐ์ ๋ฌธ์ ๋ค์ด ๋ฐ๋ณตํด์ ๋ํ๋ฉ๋๋ค:
- ์ ํ์ด ๋ถ๋ถ๋ช ํจ(ํํฐ vs ์ฒดํฌ๋ ํญ๋ชฉ, ํ์ด์ง ๊ฐ, โ๋ชจ๋ ์ ํโ์ ๋๋ผ์).
- ์ค์ ๋ก ์ด๋ค ์ํฅ์ด ์๋์ง ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ด๋ ค์(๋ฌด์์ด ๋ฐ๋๋์ง ๋ณผ ์ ์์).
- ๊ถํ ๊ฒ์ฌ๊ฐ ๋๋ฌด ๋ฆ๊ฒ ์ด๋ฃจ์ด์ง๊ฑฐ๋ UI์์๋ง ์ด๋ฃจ์ด์ง.
- โ๋๋๋ฆฌ๊ธฐ(undo)โ๊ฐ ์๊ฑฐ๋ ์ ๋ขฐํ ์ ์๊ฑฐ๋ ์คํด์ ์์ง๊ฐ ์์.
- ๊ฐ์ฌ ๋ก๊ทธ๊ฐ ์์ด ๋ฌด์จ ์ผ์ด ์ผ์ด๋ฌ๋์ง ์ค๋ช ํ ์ ์์.
ํผํด๋ ๋๊ฐ ์ฌ์ํ์ง ์์ต๋๋ค. ๊ณ ๊ฐ์๊ฒ ์๋ชป๋ ์ด๋ฉ์ผ์ด ๋ฐ์ก๋๊ฑฐ๋, ์ก์ฅ์ด ์๋ชป๋ ์ํ๋ก ์ด๋ํ๊ฑฐ๋, ์์ ํ์ดํ๋ผ์ธ์ด ์๋ชป๋ ์์ ์์๊ฒ ์ฌํ ๋น๋ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฅผ ๋ณต์ํ ์ ์๋๋ผ๋ ๋ณต๊ตฌ์๋ ์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ณ ์ ๋ขฐ๊ฐ ํ๋ค๋ฆฝ๋๋ค: "์์คํ ์ ๋ฏฟ์ ์ ์์๊น?"
โ์์ (safe)โ์ "๋๋ฆฌ๋ค"๊ฑฐ๋ "๊ฒฝ๊ณ ๋ก ๊ฐ๋ํ๋ค"๋ ๋ป์ด ์๋๋๋ค. ์ฌ์ฉ์๊ฐ ์ปค๋ฐํ๊ธฐ ์ ์ ์ธ ๊ฐ์ง ์ง๋ฌธ์ ๋ตํ ์ ์์ด์ผ ํ๋ค๋ ์๋ฏธ์ ๋๋ค:
- ์ ํํ ์ด๋ค ๋ ์ฝ๋๊ฐ ์ํฅ์ ๋ฐ๋๊ฐ?
- ์ ํํ ๋ฌด์์ด ๋ฐ๋๊ณ ๋ฌด์์ด ๋ฐ๋์ง ์๋๊ฐ?
- ์ค์๋ผ๋ฉด ๊ฐ์ฅ ๋น ๋ฅด๊ณ ์ ์งํ ๋ณต๊ตฌ ๋ฐฉ๋ฒ์ ๋ฌด์์ธ๊ฐ?
์๋ฅผ ๋ค์ด ์ฅ์ ์ดํ ์ง์ํ์ฅ์ด ํฐ์ผ์ ๋๋ ์ข ๋ฃํ๋ค๊ณ ํฉ์๋ค. UI๊ฐ ์กฐ์ฉํ ๋ณด๊ด๋(archived) ํฐ์ผ์ ํฌํจํ๊ณ ์ต์ข ๊ฐ์๋ฅผ ๋ณด์ฌ์ฃผ์ง ์์ผ๋ฉฐ ๋๋๋ฆฌ๊ธฐ๋ฅผ ์ ๊ณตํ์ง ์์ผ๋ฉด 30์ด์ง๋ฆฌ ์ ๋ฆฌ ์์ ์ด ์ค์ ์ฌ๊ณ ๋ก ๋ฒ์ง ์ ์์ต๋๋ค.
์์ ํ ๋๋ ์์ ์ ์ํ ํต์ฌ ์์น
์ข์ ๋๋ ์์ ์ ๋ ๊ฐ์ง ์ํ์ ๋์์ ์ค์ ๋๋ค: ์ฌ์ฉ์๊ฐ ์๋ชป๋ ์์ ์ ํ๊ฑฐ๋ ์์คํ ์ด ์๋ชป๋ ์์ ์ ํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ฌ๋๋ค์ ๋๋ฆฌ๊ฒ ๋ง๋๋ ๊ฒ์ด ๋ชฉ์ ์ด ์๋๋ผ, ํ๋์ ๋ช ํํ๊ณ ์๋์ ์ด๋ฉฐ ๊ฒ์ฆํ๊ธฐ ์ฝ๊ฒ ๋ง๋๋ ๊ฒ์ ๋๋ค.
์ ํ(selection)๊ณผ ์์ (action)์ ๋ถ๋ฆฌํ์ธ์. ์ฌ์ฉ์๊ฐ ๋จผ์ ํญ๋ชฉ์ ์ ํ(๋๋ ํํฐ๋ ์งํฉ์ ํ์ธ)ํ ๋ค ์์ ์ ์ ํํ๋๋ก ํ์ธ์. ์ ํ๊ณผ ์์ ์ด ์ฝํ๋ฉด ์ฌ์ฉ์๋ ๋ฌด์์ ํฌํจํด์ผ ํ ์ง ๊ฒฐ์ ํ๋ ๋์ค์ ๋ณ๊ฒฝ์ ํธ๋ฆฌ๊ฑฐํ ์ ์์ต๋๋ค.
์ปค๋ฐ ์ ์ ๋ฒ์๋ฅผ ๋ณด์ฌ์ฃผ์ธ์. ์ ํํ ๊ฐ์, ์ ์ฉ๋ ํํฐ, ์ ์ธ ํญ๋ชฉ(ํธ์งํ ์ ์๋ ํญ๋ชฉ, ์ด๋ฏธ ๋์ ์ํ์ธ ํญ๋ชฉ ๋ฑ)์ ํฌํจํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด "128๊ฐ ์ ํ๋จ(ํํฐ: ์ํ = Open, ๋ด๋น์ = ๋; 6๊ฐ ์ ์ธ: ๊ถํ ์์)" ๊ฐ์ ํ ์ค์ด ๋๋ถ๋ถ์ ๋๋ผ์์ ๋ง์ต๋๋ค.
ํ๊ดด์ (destructive)์ธ ์์ ์ ๋ค๋ฅด๊ฒ ๋๊ปด์ง๊ฒ ํ์ธ์. ๋ช ํํ ๋ผ๋ฒจ("128๊ฐ ๋ ์ฝ๋ ์ญ์ "), ๊ฐํ ์๊ฐ์ ์ ํธ๋ฅผ ์ฌ์ฉํ๊ณ ์์ ํ ๋์๊ณผ ๋จ์ด๋จ๋ ค ๋ฐฐ์นํ์ธ์. ๋ํ ๋ฉ๋ด ํญ๋ชฉ์ฒ๋ผ ๋ณด์ด๋ ๋์ ์ ์ฉ ๋ฒํผ ๊ฐ์ ๋ช ํํ ํธ๋ฆฌ๊ฑฐ๋ฅผ ์๊ตฌํ์ธ์.
ํ๋ฆ(flow)์ ์งง๊ณ ์์ธก ๊ฐ๋ฅํ๊ฒ ์ ์งํ์ธ์: ์ ํ โ ๋ฒ์ ๊ฒํ โ ํ์ธ โ ๊ฒฐ๊ณผ ๋ณด๊ธฐ. ์์ ์ด ์ ๋ง๋ก ์ถ๊ฐ ์ ํ์ ํ์๋ก ํ์ง ์๋ ํ ๋ค๋จ๊ณ ๋ง๋ฒ์ฌ(wizard)๋ ํผํ์ธ์.
๋น ๋ฅธ ์ง๊ด์ ์ํ ํ์ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค: ์ ํ์ด ๋ช ํํ๊ณ , ๋ฒ์๊ฐ ์ก์ ์์ ๋ณด์ด๋ฉฐ, ํ๊ดด์ ๋์์ ์ค์๋ก ๋๋ฅด๊ธฐ ์ด๋ ต๊ณ , ํ์ธ ํ ์คํธ๊ฐ ๋ฌด์์ด ์ผ์ด๋ ์ง ๋งํด์ฃผ๋ฉฐ, ๊ฒฐ๊ณผ๋ ๋ช ํํ๊ฒ ํ์๋ฉ๋๋ค(์ฑ๊ณต, ๋ถ๋ถ ์ฑ๊ณต, ์คํจ).
๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ฐ์ UI: ์ ์ฉ ์ ์ ์ํฅ์ ๋ณด์ฌ์ฃผ๊ธฐ
์ข์ ๋๋ ์์ ์ ์ ๋ขฐ์ ๋์ฝ์ฒ๋ผ ๋๊ปด์ ธ์ ์ ๋ฉ๋๋ค. ์ฌ์ฉ์๊ฐ Apply๋ฅผ ํด๋ฆญํ๊ธฐ ์ ์ "์ ํํ ๋ฌด์์ด ๋ฐ๋๋๊ฐ?"์ ๋ตํ๋ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๋ณด์ฌ์ฃผ์ธ์.
์ ๋ขฐํ๊ธฐ ์ฌ์ด ์์ฝ์ผ๋ก ์์ํ์ธ์. ์ ํ ํญ๋ชฉ์ด ๋ง์ ๋๋ ๊ธด ํ๋ณด๋ค ๊ฐ์๊ฐ ๋ ํจ๊ณผ์ ์ ๋๋ค. ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ค๋ฉด ๊ฐ ํ์ฌ ์ํ์์ ์ ์ํ๋ก ์ด๋ํ ํญ๋ชฉ ์๋ฅผ ๋ณด์ฌ์ฃผ๊ณ , ๋ด๋น์ ์ฌํ ๋น์ด๋ผ๋ฉด ํ์ฌ ์์ ์๋ณ ์นด์ดํธ์ ์ ์์ ์ ์นด์ดํธ๋ฅผ ๋ณด์ฌ์ฃผ์ธ์. ์์ฝ์ ์ฃผ ๋ฒํผ ๊ฐ๊น์ด์ ๋ฐฐ์นํด ๋์น๊ธฐ ์ด๋ ต๊ฒ ํ์ธ์.
๊ทธ๋ค์ ๋๋ผ์์ ์ก์ ์ ์์ ๋งํผ์ ์ธ๋ถ์ ๋ณด๋ฅผ ์ ๊ณตํ์ธ์. ๊ฐ๋จํ ๋ณ๊ฒฝ(์: "์ฐ์ ์์๋ฅผ High๋ก ์ค์ ")์๋ ๋ช ๊ฐ์ ์ํ ํ์ด๋ฉด ์ถฉ๋ถํฉ๋๋ค. ์์ธ๋ฅผ ์์ํ๊ฑฐ๋ ์ ํ์ด ์ฌ์ฉ์๊ฐ ์์ ํ ๊ธฐ์ตํ์ง ๋ชปํ ์๋ ์๋ ํํฐ์์ ๋์จ ๊ฒฝ์ฐ ์ ์ฒด ๋ชฉ๋ก์ด๋ ๋ด๋ณด๋ผ ์ ์๋ ์ํฅ์ ๋ฐ๋ ์งํฉ์ด ๋ ์ข์ต๋๋ค.
๋ฌด์์ด ๋ฐ์ํ์ง ์๋์ง๋ ๋ช ํํ ํ์ธ์. "๊ฑด๋๋(will be skipped)" ์์ญ์ ์๊ฒ ๋์ด ๊ถํ ์์, ์ด๋ฏธ ๋์ ์ํ, ์น์ธ ์ํฌํ๋ก์ฐ์ ์ํด ์ ๊น, ํ์ ๋ฐ์ดํฐ ๋๋ฝ ๋ฑ์ ์ด์ ๋ฅผ ํ์ดํ ์ธ์ด๋ก ์ค๋ช ํ๋ฉด ์ ๋ขฐ๊ฐ ์๊น๋๋ค.
ํต์ฌ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ ์ค์ ๊ท์น์ ๋ฐ์ํด์ผ ํ๋ค๋ ์ ์ ๋๋ค. ๋ฐฑ์๋๊ฐ ์ ๋ฐ์ดํธ๋ฅผ ๊ฑฐ๋ถํ ๊ฒ์ด๋ผ๋ฉด ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋จ๊ณ์์ ๋ณด์ฌ์ค์ผ์ง ์ปค๋ฐ ํ์ ๋ณด์ฌ์ค์ ์ ๋ฉ๋๋ค.
์ฌ์ฉ์๊ฐ ์ค์ ๋ก ์ดํดํ๋ ํ์ธ ๋ํ์์
ํ์ธ ๋ํ์์๋ ๋จ์ํ ์๋ ์ ์ง ์ฅ์น๊ฐ ์๋๋๋ค. "์ด ๋ฒํผ์ ๋๋ฅด๋ฉด ์ ํํ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๋๊ฐ?"๋ผ๋ ์ง๋ฌธ์ ๋ตํด์ผ ํฉ๋๋ค. ๋ ๋ฒ ๋น ๋ฅด๊ฒ ์ฝ์ด์ ์ดํดํ ์ ์๋ค๋ฉด ์ฌ๋๋ค์ ๋ฌด์ํ ๊ฒ์ ๋๋ค.
์์ ์ด๋ฆ๊ณผ ์ต์ข ์ํ๋ก ์์ํ์ธ์. "Update status" ๊ฐ์ ์ผ๋ฐ์ ์ธ ๋ผ๋ฒจ์ ์ฌ์ฉ์๊ฐ ์ถ์ธกํ๊ฒ ๋ง๋ญ๋๋ค. ๋์ "์ํ๋ฅผ Closed๋ก ์ค์ " ๋๋ "๊ณ ๊ฐ 24๋ช ์ญ์ "์ฒ๋ผ ๊ตฌ์ฒด์ ์ผ๋ก ์ฐ์ธ์.
์ํํ ์ ํ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋์ง ๋ง์ธ์. ๋ฒํผ์ด ๋ ๊ฐ๋ผ๋ฉด ์์ ํ ์ชฝ์ด ๊ธฐ๋ณธ ํฌ์ปค์ค๋ฅผ ๊ฐ์ง๊ฒ ํ๊ณ , ์ต์ (์: "ํฐ์ผ์ ๋ซ๊ณ ๊ณ ๊ฐ์๊ฒ ์๋ฆผ ๋ฐ์ก")์ด ์์ผ๋ฉด ๊ฐ์ฅ ํ๊ดด์ ์ธ ๊ฒ์ ๋ฏธ๋ฆฌ ์ฒดํฌํ์ง ๋ง๊ณ ์ฌ์ฉ์๊ฐ ๋ช ํํ ์ ํํ๊ฒ ํ์ธ์.
๋ํ์์ ํ ์คํธ์๋ ์ค์ ์ํ์ ์ ์ผ์ธ์. ๋ฌด์์ด ๋ฐ๋๊ณ ๋ฌด์์ ์ ๋ฐ๋๋์ง, ๋ฌด์์ด ์๊ตฌ์ ์ธ์ง, ํฌํจ๋ ํญ๋ชฉ์ ๋ฌด์์ธ์ง ๋งํ์ธ์. ๋ชจํธํ "์ ๋ง ์งํํ์๊ฒ ์ต๋๊น?" ๋ฌธ๊ตฌ๋ ํผํ์ธ์.
๋ชจ๋ ๋๋ ์์ ์ ๊ฐ์ ๋ง์ฐฐ์ด ํ์ํ์ง๋ ์์ต๋๋ค. ํ๊ทธ ์ถ๊ฐ์ฒ๋ผ ์ ์ํยท๋๋๋ฆด ์ ์๋ ๋ณ๊ฒฝ์๋ ๊ฐ๋จํ ํ์ธ์ด๋ฉด ์ถฉ๋ถํฉ๋๋ค. ์ญ์ ๋ ๊ถํ ๋ณ๊ฒฝ, ํฐ ๊ธ์ ์ ์ํฅ์ฒ๋ผ ํ๊ธ ๋ฒ์๊ฐ ํฐ ๊ฒฝ์ฐ์๋ ํ์ดํ ํ์ธ(typed confirmation)์ด ํฉ๋ฆฌ์ ์ ๋๋ค.
์ ์ฉํ ํจํด์ type DELETE๋ type CLOSE 24์ฒ๋ผ ํ์ธ ์ ๋ฒ์๋ฅผ ์ฌ์ฉ์๊ฐ ์ง์ ๋ณด๊ฒ ํ๋ ๋ฐฉ์์
๋๋ค.
๋๋ ์์ ์ ๋ํ ๊ถํ ๋ฐ ์ ๊ทผ ์ ์ด
๋๋ ์์ ์ ๊ถํ ๊ท์น์ด ๊ฐ์ฅ ๊ฐํนํ๊ฒ ์ํ๋ฐ๋ ๊ณณ์ ๋๋ค. ์ฌ์ฉ์๋ ์ผ๋ถ ๋ ์ฝ๋๋ ํธ์งํ ์ ์๊ณ ์ญ์ ๋ ๋ชป ํ๋ฉฐ ํน์ ํ๋๋ง ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๊ถํ์ "์์ ํ๋ฆ์ ์ผ๋ถ"๋ก ๋ค๋ฃจ์ง ์์ผ๋ฉด Apply ์ดํ์ ๋๋ผ์์ด ๋ฐ์ํฉ๋๋ค.
"ํ์ฉ๋๋ค(allowed)"๋ ์๋ฏธ๋ฅผ ๋ช ํํ ํ์ธ์. ๋ณดํต ๋จ์ํ "ํญ๋ชฉ์ ์ด ์ ์๋๊ฐ"๋ฟ์ด ์๋๋๋ค. ๋ณด๊ธฐ ๊ถํ, ํธ์ง ๊ถํ, ์ญ์ ๊ถํ, ํ๋๋ณ ๊ท์น(์ํ๋ ๋ณ๊ฒฝ ๊ฐ๋ฅํ์ง๋ง ์์ ์ยท๊ฐ๊ฒฉยท๊ถํ์ ๋ถ๊ฐ), ๋ฒ์ ๊ท์น(์์ ์ ํยท์ง์ญยทํ๋ก์ ํธ ๋ด ํญ๋ชฉ๋ง) ๋ฑ์ด ์์ ๋๋ค.
์ ํ์ ๊ถํ์ด ์์ด๋ ๊ฒ์ ์ ์์ ๋๋ค. ์์ ํ ์์คํ ์ ์ ์งํ ํ ๊ฐ์ง ์ ๊ทผ์ ํํ๊ณ ๋ช ํํ ์ ๋ฌํ์ธ์:
- ํ์ฉ๋ ํญ๋ชฉ์๋ง ์ ์ฉํ๊ณ ๊ฑด๋๋ด ์ด์ ๋ฅผ ์์ฝํ๊ฑฐ๋.
- ์ ํ์ ํ์ฉ๋ ํญ๋ชฉ๋ง ๋จ์ ๋๊น์ง ์์ ์ ์ฐจ๋จํฉ๋๋ค.
์ฒซ ๋ฒ์งธ ์ต์ ์ ๋๋ ์์ ์ ๋ ๋ถ๋๋ฝ๊ฒ ๋๊ปด์ง๋๋ค. ๋ ๋ฒ์งธ๋ ์ญ์ ๋ ๊ถํ ๋ณ๊ฒฝ์ฒ๋ผ ์ํ์ด ํฐ ์์ ์ ๋ ์ ํฉํฉ๋๋ค.
์ก์ธ์คํ ์ ์๋ ํญ๋ชฉ์ ์ด๋ฆ์ด๋ ์ ๋ชฉ, ๋ฏผ๊ฐ ํ๋๋ฅผ ๋ ธ์ถํด ์ ๋ณด ์ ์ถ์ ํผํ์ธ์. "์ ๊ทผ ๊ท์น ๋๋ฌธ์ 12๊ฐ ํญ๋ชฉ์ ์ ๋ฐ์ดํธํ ์ ์์"์ฒ๋ผ ํ์ํ๋ ๊ฒ์ด, ์ด๋ค ํญ๋ชฉ์ธ์ง ๋์ดํ๋ ๊ฒ๋ณด๋ค ์์ ํฉ๋๋ค.
์ข์ UI ํผ๋๋ฐฑ์ ์ฌ์ฉ์๊ฐ ์ฒ๋ฒ๋ฐ๋ ๋๋์ ๊ฐ์ง ์๊ฒ ํ๋ฉด์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ฌ๋์ง ์ดํด์ํค๋ ๋ฐ ๋์์ ์ค๋๋ค. ์: ์ฌ์ ๊ฒ์ฌ ๋ฐฐ๋("์ ํํ 50๊ฐ ์ค 38๊ฐ๋ฅผ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค"), ๊ฐ๋จํ ์ด์ ์ฝ๋("์ฐจ๋จ๋จ: ํ์ ์ํ์ง ์์"), ์ฌ์ฉ์๊ฐ ํธ์งํ ์ ์๋ ํญ๋ชฉ์ ์จ๊ธฐ๋ ํํฐ ๋ฑ.
๋ฐฑ์๋์์๋ ๋ชจ๋ ํญ๋ชฉ์ ๋ํด ๊ฐ์ ๊ท์น์ ๋ค์ ์ํํ์ธ์. UI์์ ์ฌ์ ๊ฒ์ฌ๋ฅผ ํ๋๋ผ๋ ์๋ฒ๋ ๋ ์ฝ๋์ ํ๋๋ณ๋ก ๊ถํ์ ๊ฒ์ฆํด์ผ ํฉ๋๋ค.
์์ ํ๊ณ ์ ์งํ ๋๋๋ฆฌ๊ธฐ(undo) ํจํด
๊ฐ์ฅ ์์ ํ undo๋ ์ค์ ๋ก ๋ณด์ฅํ ์ ์๋ undo์ ๋๋ค. ๋ณดํต์ ๋๋๋ฆฌ๊ธฐ๋ฅผ ๋์ค์ ๋ง๋ถ์ด๋ ๊ฒ์ด ์๋๋ผ ์ฒ์๋ถํฐ ๋ณต๊ตฌ๋ฅผ ์ค๊ณํ๋ ๊ฒ์ด ํ์ํฉ๋๋ค.
๊ฐ๋ ฅํ ๊ธฐ๋ณธ ๋ฐฉ์์ ์ผ์ ์๊ฐ ๋ณต๊ตฌ ๊ฐ๋ฅํ ์ํํธ ์ญ์ ์ ๋๋ค. ๋ ์ฝ๋๋ฅผ ์ฆ์ ์ ๊ฑฐํ๋ ๋์ ์ญ์ ๋ก ํ์ํ๊ณ (์ผ๋ฐ ๋ทฐ์์๋ ์จ๊น), ์ผ์ ์๊ฐ์ด ์ง๋๋ฉด ์๊ตฌ ์ญ์ ํฉ๋๋ค. ์ด ๋ฐฉ์์ ์ค์ ํด๋ฆญ, ์๋ชป๋ ํํฐ, ํฌํจ๋์๋์ง ๋ชฐ๋๋ ํญ๋ชฉ์ ์ก์๋ผ ์ ์์ต๋๋ค.
๋น ๋ฅธ ์์ ์๋ undo ํ ์คํธ๊ฐ ์ ์๋ํฉ๋๋ค. ์ฆ์์ฑยท๋ฎ์ ๋ง์ฐฐ์ด ์ฅ์ ์ด๋ฉฐ, ๊ตฌ์ฒด์ ์ผ๋ก ๋ฌด์์ด ๋ฐ๋์๋์ง, Undo ๋ฒํผ, ์๊ฐ ์ ํ, ์ผ๋ถ ํญ๋ชฉ์ด ๊ฑด๋๋ฐ์๋์ง ์ฌ๋ถ๋ฅผ ๋ช ์ํ์ธ์.
undo ์ฐฝ ์๊ฐ์ ์ํ๋์ ๋ง๊ฒ ์ ํ์ธ์. ์์ ์ค์์๋ 10~30์ด๊ฐ ์ผ๋ฐ์ ์ ๋๋ค. ๋ช ์๊ฐ์ด๋ ๋ฉฐ์น ๋์ ๋ณด๊ดํด๋ฌ์ผ ํ๋ ๊ฒฝ์ฐ์๋ ์ํํธ ์ญ์ ์ ๋ณต๊ตฌ ํ๋ฉด์ด ๋ ์ ํฉํฉ๋๋ค.
์ฅ๊ธฐ ์คํ ๋๋ ์์ ์์๋ "undo"๊ฐ ๋ณดํต ์ทจ์(cancel)๋ฅผ ์๋ฏธํฉ๋๋ค. ์ด๋ฏธ ์ด๋ฉ์ผยท๊ฒฐ์ ยท์ธ๋ถ ์ ๋ฐ์ดํธ๋ฅผ ํธ๋ฆฌ๊ฑฐํ ์์ ์ ๋กค๋ฐฑํ๋ ๊ฒ์ ์คํด๋ฅผ ๋ถ๋ฌ์ผ์ผํฌ ์ ์์ต๋๋ค. ๋จ์์๋ ์์ ์ ์ทจ์ํ๊ณ ์ด๋ฏธ ์ผ์ด๋ ์ผ์ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ์์ด ๋ซ์ต๋๋ค.
๋๋๋ฆด ์ ์์ ๋๋ ์ง์ ์ ์ผ๋ก ๋งํ๊ณ ๋ณต๊ตฌ ๊ฒฝ๋ก๋ฅผ ์ ๊ณตํ์ธ์: ์ํฅ์ ๋ฐ์ ID๋ฅผ ๋ด๋ณด๋ด๊ธฐ, ๊ฐ์ฌ ๋ก๊ทธ ์์ฑ, ๊ฐ๋ฅํ ๊ฒฝ์ฐ ๋ณต์ ์ํฌํ๋ก์ฐ ์ ๊ณต ๋ฑ.
๋ฐฑ์๋ ์์ ์ฅ์น: ๊ฒ์ฆ(validation), ๋ฉฑ๋ฑ์ฑ(idempotency), ๊ฐ์ฌ ๊ฐ๋ฅ์ฑ(auditability)
์์ ํ ๋๋ ์์ ์ ๋จ์ํ UI ๋ฌธ์ ๋ง์ด ์๋๋๋ค. ๊ฐ๋ ฅํ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ ์์ด๋ ์ฌ์ฉ์๋ ๋ฒํผ์ ๋ ๋ฒ ํด๋ฆญํ๊ณ , ๋ธ๋ผ์ฐ์ ๋ ์ฌ์๋ํ๋ฉฐ, ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ๋ ๋ฒ ์คํ๋ ์ ์์ต๋๋ค. ๋ฐฑ์๋๋ ๋ชจ๋ ๋๋ ์์ฒญ์ ์ํํ๋ค๊ณ ๊ฐ์ ํ๊ณ ์์ ํ๊ฒ ์ ์ฉ๋์ด์ผ ํฉ๋๋ค.
๋ชจ๋ ํญ๋ชฉ์ ๋ํด ์๊ฒฉํ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํ์ธ์. ์ฒซ ๋ฒ์งธ ํญ๋ชฉ๋ง ๊ฒ์ฆํ์ง ๋ง์ธ์. 200๊ฑด ์ค 3๊ฑด์ด ์คํจํ๋ค๋ฉด(ํ์ ํ๋ ๋๋ฝ, ์๋ชป๋ ์ํ, ๊ถํ ์์), ๋ฐฐ์น ์ ์ฒด๋ฅผ ๊ฑฐ๋ถํ ์ง ์๋๋ฉด ๋ถ๋ถ ์ฑ๊ณต์ ํ์ฉํ๊ณ ํญ๋ชฉ๋ณ ์ค๋ฅ๋ฅผ ๋ช ํํ ํ ์ง ์ฌ์ ์ ๊ฒฐ์ ํ์ธ์.
๋ฉฑ๋ฑ์ฑ(idempotency)์ ์ฐ๋ฐ์ ์ธ ์ค๋ณต ์ ์ฉ์ ๋ง์ต๋๋ค. ๊ฐ ๋๋ ์์ฒญ์ ๊ณ ์ ํ idempotency ํค(๋๋ ์์ฒญ ID)๋ฅผ ๋ถ์ฌํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ์ธ์. ๊ฐ์ ํค๊ฐ ๋ค์ ์ค๋ฉด ์ ๋ฐ์ดํธ๋ฅผ ๋ ๋ฒ ์คํํ์ง ์๊ณ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ์ธ์.
๋์ ํธ์ง ๋ฌธ์ ์๋ ๋๊ด์ ์ ๊ธ(optimistic locking)์ ์ฌ์ฉํ์ธ์. ๋ ์ฝ๋๋ง๋ค ๋ฒ์ ์ด๋ updated_at ๊ฐ์ ์ ์ฅํ๊ณ ์ ๋ฐ์ดํธํ ๋ ์ผ์นํ๋ ๊ฒฝ์ฐ์๋ง ์ ์ฉํ์ธ์. ๋ณ๊ฒฝ๋์์ผ๋ฉด ์ถฉ๋์ ๋ฐํํ๊ณ ๋ค๋ฅธ ์ฌ๋์ ์์ ์ ๋ฎ์ด์ฐ์ง ๋ง์ธ์.
์ ์ฉํ API ํจํด ๋ ๊ฐ์ง:
- Dry-run: ๊ฒ์ฆ๊ณผ ๊ถํ ๊ฒ์ฌ๋ฅผ ์คํํด ์นด์ดํธ์ ์ํ ๋ณ๊ฒฝ์ ๋ฐํํ์ง๋ง ์ฐ์ง๋ ์์.
- Apply: ํ์ธ ํ ํฐ์ด๋ ๋์ผํ ๊ณ์ฐ๋ ์ ํ์ ์๊ตฌํ๊ณ ์ค์ ๋ก ๊ธฐ๋ก์ ์.
์์คํ ๋ณดํธ๋ฅผ ์ํ ์ค์ฉ์ ์ ํ๋ ์ถ๊ฐํ์ธ์: ์์ฒญ๋น ์ต๋ ํญ๋ชฉ ์ ์ ํ, ์ญ์ ์ ๋ํ ๋ ์๊ฒฉํ ์๋ ์ ํ, ๋ฐฐ์น ํ์์์์ผ๋ก ์์กด์ฑ์ด ๋ฉ์ถฐ ์ ์ฒด ์์ ์ด ์ผ์ด๋ถ์ง ์๋๋ก ํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก ๋ชจ๋ ๋๋ ๋ณ๊ฒฝ์ ๊ฐ์ฌ ๊ฐ๋ฅํ๊ฒ ๋ง๋์ธ์. ๋๊ฐ, ์ธ์ , ์ด๋ค ํํฐ์ ๊ฐ์๋ก ๋ฒ์๋ฅผ ๋ง๋ค์๋์ง, ์ /ํ ๋ฐ์ดํฐ(๋๋ diff), ๋ฐฐ์น/์์ ID๋ฅผ ๊ธฐ๋กํ์ธ์.
์ ๋ขฐ์ฑ ์ ํ ์์ด ๋๋ ์์ ํ์ฅํ๊ธฐ
๋๋ ์์ ์ด 50๊ฑด์์ 50,000๊ฑด์ผ๋ก ๋์ด๋๋ฉด ์ํ์ ๋จ์ํ ์ฌ์ฉ์ ์ค์๋ง์ด ์๋๋๋ค. ์์ ์ค ์์คํ ์ด ๊ณผ๋ถํ๋์ด ์ค๊ฐ์ ์ ๋ฐ๋ง ์๋ฃ๋ ์ํ๊ฐ ๋จ์ผ๋ฉด ์ค๋ช ํ๊ธฐ ์ด๋ ค์ด ์ํฉ์ด ๋ฉ๋๋ค.
์์ ์ ์ฒญํฌ๋ก ๋ถํ ํ์ธ์. ๋ชจ๋ ๋ ์ฝ๋๋ฅผ ํ ๋ฒ์ ๊ธด ํธ๋์ญ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๊ธฐ๋ณด๋ค ๋ฐฐ์น(์: 500~2,000์ฉ)๋ก ์ฒ๋ฆฌํ๊ณ ๊ฐ ๋ฐฐ์น ํ ์งํ ์ํฉ์ ๊ธฐ๋กํ์ธ์. ์คํจํ๋ฉด ๊น๋ํ๊ฒ ์ค๋จํ๊ณ ์ด๋์ ๋ฉ์ท๋์ง ๋ณด์ฌ์ฃผ๋ฉฐ ํ ์ด๋ธ ์ ๊ธ์ ์ค๋ ์ ์งํ์ง ์์ต๋๋ค.
ํฐ ์์ ์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํํ๊ณ ๋ช ํํ ์ํ๋ฅผ ๋ณด์ฌ์ฃผ์ธ์: ๋๊ธฐ(queued), ์คํ ์ค(running, "X of Y"), ์๋ฃ(๋ฌธ์ ์์), ์คํจ, ์ทจ์(์ง์ ์).
๋ถ๋ถ ์ฑ๊ณต์ ์ ์งํ UI๊ฐ ํ์ํฉ๋๋ค. 20%๊ฐ ์คํจํ๋๋ฐ "์๋ฃ"๋ผ๊ณ ํ์ํ์ง ๋ง์ธ์. ์ด๋ค ๊ฒ์ด ์ฑ๊ณตํ๊ณ ์ด๋ค ๊ฒ์ด ์คํจํ๋์ง ๋ณด์ฌ์ฃผ๊ณ , ์คํจํ ํญ๋ชฉ๋ง ์ฌ์๋ํ๊ฑฐ๋ ์คํจ ID๋ฅผ ๋ด๋ณด๋ด๊ฑฐ๋ ํํฐ๋ ๋ทฐ๋ก ์ฌ๋ ๋ฑ ์กฐ์นํ๊ธฐ ์ฝ๊ฒ ๋ง๋์ธ์.
๊ฐ๋จํ ๊ท์น: ์์ ์ ํ์ฌ ์ํ๋ฅผ ํ ๋ฌธ์ฅ์ผ๋ก ์ค๋ช ํ ์ ์๋ค๋ฉด ์ฌ์ฉ์๋ ์ ๋ขฐํ์ง ์์ต๋๋ค.
ํผํด์ผ ํ ํํ ์ค์์ ํจ์
๋๋ถ๋ถ์ ๋๋ ์์ ์คํจ๋ "์ฌ์ฉ์ ์ค์"๊ฐ ์๋๋๋ค. UI๊ฐ ์กฐ์ฉํ "์ ํ๋จ(selected)"์ ์๋ฏธ๋ฅผ ๋ฐ๊พธ๊ฑฐ๋ ์์คํ ์ด ์ฌ์ฉ์๊ฐ ๊ฐ์ฅ ํฐ ๋ณ๊ฒฝ์ ์ํ๋ค๊ณ ๊ฐ์ ํ ๋ ๋ฐ์ํฉ๋๋ค.
ํด๋์ํ ํจ์ ์ "ํ๋ฉด์ ๋ณด์ด๋ ๋ชจ๋ ํ(all visible rows)"๊ณผ "๊ฒฐ๊ณผ ์ ์ฒด(all results)"๋ฅผ ํผ๋ํ๋ ๊ฒ์ ๋๋ค. ์ฌ์ฉ์๊ฐ ํ๋ฉด์์ 20๊ฐ๋ฅผ ์ ํํ ๋ค ์ฒดํฌ๋ฐ์ค๊ฐ 20,000๊ฐ์ ์ ์ฉ๋๋ฉด ๋ฌธ์ ๊ฐ ์๊น๋๋ค. "๋ชจ๋ ์ ํ" ๊ธฐ๋ฅ์ ์ง์ํ๋ค๋ฉด ๋ณ๋์ ๋ช ์์ ๋จ๊ณ๋ก ๋ง๋ค๊ณ ํญ์ ์ต์ข ๊ฐ์๋ฅผ ์ก์ ์์ ํ์ํ์ธ์.
๋ ๋ค๋ฅธ ๋ฌธ์ ๋ ์ ํ๊ณผ ์ ์ฉ ์ฌ์ด์ ํํฐ๊ฐ ์กฐ์ฉํ ๋ฐ๋๋ ๊ฒ์ ๋๋ค. ์ฌ์ฉ์๊ฐ ์ฃผ๋ฌธ์ ์ ํํ ๋ค ๊ณต์ ๋ ๋ทฐ๊ฐ ๋ณ๊ฒฝ๋๊ฑฐ๋ ๋ชฉ๋ก์ด ์๋ก๊ณ ์นจ๋์ด ํํฐ๊ฐ ๋ฐ๋๋ฉด, ์์ ์ ๊ฒํ ํ ์งํฉ์ด ์๋๋ผ ๋ค๋ฅธ ์งํฉ์ ์ ์ฉ๋ ์ ์์ต๋๋ค. ์์ ์ ์ ํ๋ ID์ ์ค๋ ์ท์ ๋ฐ์ธ๋ฉํ๊ณ ์ ํ์ด ๋ฐ๋์์ผ๋ฉด ๊ฒฝ๊ณ ํ์ธ์.
๋ฉ๋ด๊ฐ ๋ณต์กํ๋ฉด ํผํด๊ฐ ๋ฐ์ํฉ๋๋ค. "์ญ์ "๊ฐ "๋ด๋ณด๋ด๊ธฐ"์ "ํ๊ทธ" ์์ ์์ผ๋ฉด ์ค์๊ฐ ์ผ์ด๋ฉ๋๋ค. ํ๊ดด์ ๋์์ ๋ถ๋ฆฌํ๊ณ ๋ ๋ช ํํ ํ์ธ์ ์๊ตฌํ์ธ์.
๊ทธ๋ฆฌ๊ณ UI๊ฐ ๋ฒํผ์ ์จ๊ธด ๊ฒ์ ๊ถํ ์ ์ด๋ก ๋ฏฟ์ง ๋ง์ธ์. ๋ฐฑ์๋๋ ์ฌ์ ํ ๋ชจ๋ ํญ๋ชฉ์ ๊ฒ์ฆํด์ผ ํฉ๋๋ค.
๋๋ ์์ ์ ์ํ ๋น ๋ฅธ ์์ ์ฒดํฌ๋ฆฌ์คํธ
๋ฐฐํฌ ์ ์ "๊ทธ๊ฒ์ ์๋ํ์ง ์์๋ค"๋ ์๊ฐ์ ๋ฐฉ์งํ๊ณ ์ง์ ์กฐ์ฌ๋ฅผ ํจ์ฌ ์ฝ๊ฒ ๋ง๋๋ ๊ธฐ๋ณธ์ ์ ๊ฒํ์ธ์.
๋ฒ์์ ๋ช ํ์ฑ๋ถํฐ ์์ํ์ธ์. ์ฌ์ฉ์๋ ๋ฌด์์ด ์ ํํ ์ํฅ์ ๋ฐ๋์ง ๋ด์ผ ํฉ๋๋ค. ํญ๋ชฉ ์์ ๊ทธ ์๋ฅผ ๋ง๋ ํํฐ/์ ํ(์: "132 ํฐ์ผ(์ํ = Open, ๋ด๋น์ = ๋)")์ ๋ณด์ฌ์ฃผ์ธ์.
๊ทธ๋ค์ ์ธ ๊ฐ์ง ๊ณ ์ํ ์์ญ(์ํฅ, ๊ถํ, ๊ฒฐ๊ณผ)์ด ์จ๊ฒจ์ ธ ์์ง ์์์ง ํ์ธํ์ธ์.
- ๋ฒ์๊ฐ ๋ช ํํจ: ๋ ์ฝ๋ ์์ ํด๋น ์งํฉ์ ๋ง๋ ํํฐ/์ ํ.
- ์ํํ ์์ ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํฌํจ: ๋ณ๊ฒฝ ์์๋ ๊ฐ๋จํ diff ์คํ์ผ ์์ฝ.
- ๊ถํ์ UI๊ฐ ์๋๋ผ ์๋ฒ์์ ํญ๋ชฉ๋ณ๋ก ๊ฐ์ ๋จ.
- ์ง์ง ๋ณต๊ตฌ ๋ฐฉ๋ฒ ์กด์ฌ: ๊ฐ๋ฅํ๋ฉด undo/restore, ๋ถ๊ฐํผํ๋ฉด ์คํ ์ ๋ช ํํ "๋๋๋ฆด ์ ์์" ๋ฌธ๊ตฌ.
- ๊ฒฐ๊ณผ ๋ฌธ์ํ: ๊ฐ์ฌ ๋ก๊ทธ์ ๋ช ํํ ๊ฒฐ๊ณผ ์์ฝ(์ฑ๊ณต, ๊ฑด๋๋, ์คํจ ๋ฐ ์ด์ ).
ํ์ค์ ์: ํฐ์ผ ๋๋ ์ข ๋ฃ๋ฅผ ์์ ํ๊ฒ ๊ตฌํํ๊ธฐ
์ง์ํ์ฅ์ด ์บ ํ์ธ ํ ์ ๋ฆฌ๋ฅผ ํ๋ค๊ณ ํฉ์๋ค. ์๋ฐฑ ๊ฐ์ ํฐ์ผ์ "promo-2026" ํ๊ทธ๊ฐ ๋ถ์ด ์๊ณ ๋ง์ ๊ฑด์ ์ด๋ฏธ ์ ํ์๋น์ค๋ก ํด๊ฒฐ๋์์ต๋๋ค. VIP ์ฌ๋ก๋ ๋ค๋ฅธ ํ ์์ ํฐ์ผ์ ์ค์๋ก ๋ซ์ง ์๊ณ ๋๋จธ์ง๋ฅผ ๋๋ ์ข ๋ฃํ๊ณ ์ถ์ต๋๋ค.
๋ชฉ๋ก์์ ํฐ์ผ์ ์ ํํ๊ณ "์ ํ ํญ๋ชฉ ๋ซ๊ธฐ(Close selected)"๋ฅผ ํด๋ฆญํ๋ฉด ์๋ฌด๊ฒ๋ ๋ณ๊ฒฝ๋๊ธฐ ์ ์ ์ํฅ์ด ๊ตฌ์ฒด์ ์ผ๋ก ๋ณด์ ๋๋ค:
- ๊ฐ์ ์์ฝ: 183๊ฐ๋ ์ข ๋ฃ๋๊ณ , 12๊ฐ๋ ๊ฑด๋๋ฐ๋ฉฐ, 4๊ฐ๋ ์ฃผ์ ํ์.
- ๊ฑด๋๋ด ํญ๋ชฉ์ ํ์ดํ ์ด์ (์: "์ด๋ฏธ ์ข ๋ฃ๋จ" ๋๋ "VIP ๊ณ์ , ๋๋ ์ข ๋ฃ ๋ถ๊ฐ").
- ์๊ท๋ชจ ์ํ ๋ชฉ๋ก(10๊ฐ)๊ณผ ์ํฅ์ ๋ฐ๋ ์งํฉ์ ๋ด๋ณด๋ผ ์ต์ .
- ์ ํํ ๋ณ๊ฒฝ ์ฌํญ: ์ํ๋ "Closed"๊ฐ ๋๊ณ , ์ด์ ๋ "Campaign cleanup"์ผ๋ก ์ค์ ๋จ.
- ๋ช ํํ ๊ธฐ๋ณธ ๋ฒํผ: "183๊ฐ ํฐ์ผ ๋ซ๊ธฐ"(๋ชจํธํ "ํ์ธ"์ด ์๋).
ํ์ธ ํ ์์คํ ์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์คํํ๊ณ ์งํ ์ํฉ์ ๋ณด์ฌ์ค๋๋ค. ์๋ฃ๋๋ฉด ๊ฒฐ๊ณผ ํ๋ฉด์ ๋ช ๊ฑด์ด ์ฑ๊ณตํ๊ณ ์ด๋ค ์ค๋ฅ๋ก ์คํจํ๋์ง(์: ์คํ ์ค ์์ด์ ํธ๊ฐ ํฐ์ผ์ ์์ ํจ) ๋ณด์ฌ์ค๋๋ค.
๋ฐฑ์๋์์๋ ๋ฐฉ์ด์ ์ผ๋ก ํ๋ฆ์ ์ ์งํฉ๋๋ค: ์คํ ์์ ์ ํฐ์ผ๋ณ ๊ถํ ์ฌ๊ฒ์ฌ, ํ์ฉ๋ ์ํ ๊ฒ์ฆ, ๋ฐฐ์น ID๋ก ๊ฐ์ฌ ๊ธฐ๋ก ์์ฑ, ์์ ์ฒญํฌ๋ก ์ ๋ฐ์ดํธ ์ ์ฉ, ๊ฒฐ๊ณผ ๋ฆฌํฌํธ ๋ฐํ.
๋๋๋ฆฌ๊ธฐ๋ ์ฝ์์ด ์๋ ์ค์ ์์ ์ผ๋ก ๋ค๋ฃน๋๋ค. UI๋ 30๋ถ ๋์ "์ด ๋ฐฐ์น ๋๋๋ฆฌ๊ธฐ(Undo this batch)"๋ฅผ ์ ๊ณตํฉ๋๋ค. ํด๋ฆญํ๋ฉด ๊ทธ ๋ฐฐ์น๊ฐ ๋ณ๊ฒฝํ ํฐ์ผ(ํด๋น ์ดํ ์์ ๋์ง ์์ ๊ฒ)์ ํํด ์ด์ ์ํ์ ์ด์ ๋ฅผ ๋ณต์ํ๋ ์ ์์ ์ด ์์๋ฉ๋๋ค.
๋ค์ ๋จ๊ณ: ์ด๋ฒ ์ฃผ์ ํ๋์ ์์ ๊ฐ์ ์ฌํญ์ ๊ตฌํํ์ธ์
๋๋ ์์ ์ ์์ ํ๊ฒ ๋ง๋ค๊ธฐ ์ํด ์ ์ฒด ์ฌ์ค๊ณ๋ฅผ ํ ํ์๋ ์์ต๋๋ค. ์ฌ๊ณ ์ ์ง์ ํฐ์ผ์ ์ค์ด๋ ์์ ๋ณํ ํ๋๋ฅผ ์ ํํด ๋ฐฐํฌํ๊ณ ๊ฑฐ๊ธฐ์ ํ์ฅํ์ธ์.
๋ช ํ์ฑ๋ถํฐ ์์ํ์ธ์: ๋ฒํผ ์์ ์ ํํ ๋ฌด์์ด ๋ฐ๋์ง ์๋ ค์ฃผ๋ ๋ฒ์ ๋ผ๋ฒจ("37๊ฐ ์ก์ฅ ์ ํ๋จ")์ ์ถ๊ฐํ๊ณ ์์ ํ ์งง์ ๊ฒฐ๊ณผ ์์ฝ(์ฑ๊ณตยท์คํจยท์ด์ )์ ํ์ํ์ธ์. ์ด๊ฒ๋ง์ผ๋ก๋ "ํ ๊ฐ๋ง ์ฒ๋ฆฌ๋ ์ค ์์๋๋ฐ"๋ผ๋ ์ค์๋ฅผ ๋ง์ด ์๋ฐฉํฉ๋๋ค.
๊ทธ๋ค์ ๊ณ ์ํ ์์ ์ผ๋ก ์ด๋ํ์ธ์. ๋๋ ์ญ์ ยท์ํ ๋ณ๊ฒฝยท๊ถํ ๊ด๋ จ ์ ๋ฐ์ดํธ์๋ ์ปค๋ฐ ์ ์ ์ํฅ์ ๋ณด์ฌ์ฃผ๋ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์ถ๊ฐํ์ธ์. ์ฒ์ 10๊ฐ ํญ๋ชฉ์ ๋ํด ๊ฐ๋จํ "์ด์ -> ์ดํ" ํ๋ง ์์ด๋ ์๋ชป๋ ํํฐ๋ฅผ ์ก์๋ ๋๋ค.
๋๋ถ๋ถ ํ์ ์ ํฉํ ์ค์ฉ์ ์์:
- ๋ฒํผ ์์ ์ ํ ์นด์ดํธ + ๋ช ํํ ๋ฒ์ ํ ์คํธ ์ถ๊ฐ.
- ์คํจ์ ์ด์ ๊ฐ ์๋ ๊ฒฐ๊ณผ ํ๋ฉด ์ถ๊ฐ(๊ถํ, ์ ํจ์ฑ ๊ฒ์ฌ).
- ๊ฐ์ฅ ์ํํ ์์ ์ ๋ํด ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋๋ dry-run ๊ฒ์ฆ ์ถ๊ฐ.
- ์ญ์ ์ ๋ํด ๋ณต๊ตฌ ๊ธฐ๋ฅ ์ถ๊ฐ(์ํํธ ์ญ์ + ๋ณต์ ๋ทฐ) ๋ฐ ์ฆ์ ๋ณต๊ตฌ ์ต์ ํ์.
- ํฐ ๋ฐฐ์น๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํํ๊ณ ์๋ฃ ์ ์๋ฆผ ์ ๊ณต.
๋ด๋ถ ๋๊ตฌ๋ ๊ด๋ฆฌ์ ํจ๋์ AppMaster๋ก ๊ตฌ์ถํ๋ ๊ฒฝ์ฐ, ๋ณ๋ ์์คํ ์ ์ด์ด ๋ถ์ด์ง ์๊ณ ๋ ๊ตฌํํ ์ ์์ต๋๋ค: AppMaster Data Designer๋ก PostgreSQL์ ๊ฐ์ฌ ๋ฐ ์์ ํ ์ด๋ธ ๋ชจ๋ธ๋ง, Business Process Editor๋ก ๋ ์ฝ๋๋ณ ๊ท์น ๊ฐ์ , ์น/๋ชจ๋ฐ์ผ UI ๋น๋๋ก ๋ฏธ๋ฆฌ๋ณด๊ธฐยทํ์ธยท๊ฒฐ๊ณผ ํ๋ฉด์ ๋ง๋ค ์ ์์ต๋๋ค. ํ๋ซํผ์ ํ๊ฐํ๋ ํ์๊ฒ๋ appmaster.io๊ฐ ํ ๋๋ ์์ ์ ์๋ํฌ์๋๋ก ํ๋กํ ํ์ดํํ๊ณ ์ผ์ ์ฌ์ฉ์์๊ฒ ์์ ๊ฒ์ฌ๋ฅผ ํ ์คํธํด๋ณผ ์ ์๋ ์ค์ฉ์ ์ธ ์ฅ์์ด๊ธฐ๋ ํฉ๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
"์์ ํ(safe)" ๋๋ ์์ ์ด๋ ํ์ธ ์ ์ ์ด๋ค ๋ ์ฝ๋๊ฐ ์ํฅ์ ๋ฐ๋์ง, ์ด๋ค ํ๋๊ฐ ๋ฐ๋๋์ง, ์๋ชปํ์ ๋ ๋ณต๊ตฌ ๊ฒฝ๋ก๊ฐ ๋ฌด์์ธ์ง ์ฌ์ฉ์๊ฐ ์ ์ ์๋ค๋ ๋ป์ ๋๋ค. ์๋๋ ์ ์งํ๋, ์ค์๋ก ํฐ ๋ณ๊ฒฝ์ด ์กฐ์ฉํ ์ผ์ด๋์ง ์๋๋ก ๋ง๋๋ ๊ฒ์ ๋๋ค.
์ ํ๊ณผ ์์ ์ ๋ถ๋ฆฌํ๊ณ , ์ต์ข ๋ฒ์๋ฅผ ์ ์ฉ ๋ฒํผ ์์ ๋ณด์ฌ์ฃผ์ธ์. โ๋ชจ๋ ์ ํ(select all results)โ์ ๋ณ๋์ ์๋์ ์ธ ๋จ๊ณ๋ก ๋ง๋ค๊ณ , ์ต์ข ๊ฐ์๋ฅผ ๋ช ํํ ํ์ํด ์ฌ์ฉ์๊ฐ ํ๋ฉด์ ๋ณด์ด๋ ํญ๋ชฉ๊ณผ ์ ์ฒด ๊ฒฐ๊ณผ๋ฅผ ํผ๋ํ์ง ์๊ฒ ํ์ธ์.
์ ๋ขฐํ ์ ์๋ ์์ฝ(๋ณ๊ฒฝ๋ ํญ๋ชฉ ์, ๊ฑด๋๋ธ ํญ๋ชฉ ์ ๋ฑ)์ผ๋ก ์์ํ๊ณ , ์์ธ๋ฅผ ์ก์๋ผ ์ ์๋๋ก ๋ช ๊ฐ์ ์ํ ํ์ด๋ ๋ณ๊ฒฝ ์ /ํ ๊ฐ์ ๋ณด์ฌ์ฃผ์ธ์. ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ ๋ฐฑ์๋ ๊ท์น๊ณผ ์ผ์นํด์ผ ํฉ๋๋ค.
๋์ ์ํ์ ๋ฒ์๋ฅผ ํ์ดํ ๋ฌธ์ฅ์ผ๋ก ๋ค์ ์ ์ด์ฃผ์ญ์์ค(์: โ24๋ช ๊ณ ๊ฐ ์ญ์ โ ๋๋ โํฐ์ผ ์ํ๋ฅผ Closed๋ก ์ค์ โ). ๋ชจํธํ โ์ ๋ง ์งํํ์๊ฒ ์ต๋๊น?โ ๋ฌธ๊ตฌ๋ฅผ ํผํ๊ณ , ์ํํ ๋ฒํผ์ ๊ธฐ๋ณธ ํฌ์ปค์ค๋ฅผ ์ฃผ์ง ๋ง์ธ์.
ํผํฉ๋ ๊ถํ์ ์ ์์ ๋๋ค. ํ ๊ฐ์ง ์ ์งํ ๊ท์น์ ์ ํํ์ธ์: ํ์ฉ๋ ํญ๋ชฉ๋ง ์ ์ฉํ๊ณ ๊ฑด๋๋ด ํญ๋ชฉ์ ์์ฝํ๊ฑฐ๋, ํ์ฉ๋ ํญ๋ชฉ๋ง ๋จ๋๋ก ์ ํ์ ์ฐจ๋จํ์ธ์. ๋ณด์์ UI ์จ๊น์ ์์กดํ์ง ๋ง๊ณ ์๋ฒ์์ ๋ ์ฝ๋ยทํ๋ ๋จ์๋ก ๊ฒ์ฆํด์ผ ํฉ๋๋ค.
๋ถ๋ถ ์ฑ๊ณต์ ํ์ฉ๋์ง๋ง ๋ช ํํ ๋ณด๊ณ ๋์ด์ผ ํฉ๋๋ค. ๋ช ๊ฑด์ด ์ฑ๊ณตํ๋์ง, ์คํจํ๋์ง, ๊ฑด๋๋ฐ์๋์ง ๋ณด์ฌ์ฃผ๊ณ , ๋ฌธ์ ๋ฅผ ๊ณ ์น ์ ์๋๋ก ๊ฐ๋จํ ์ด์ (๊ถํ, ์ ํจ์ฑ ๊ฒ์ฌ)๋ฅผ ์ ๊ณตํ์ธ์. ๋ฏผ๊ฐํ ์ ๋ณด๋ ๋ ธ์ถํ์ง ๋ง์ธ์.
๋น ๋ฅด๊ฒ ๋๋๋ฆด ์ ์๋ ๋ณ๊ฒฝ์๋ ์ฆ๊ฐ์ ์ธ undo ํ ์คํธ๊ฐ ์ ํฉํฉ๋๋ค. ์ญ์ ์ ๊ฒฝ์ฐ์๋ ์ํํธ ์ญ์ ์ ๋ณต๊ตฌ ์ฐฝ๊ณ (restore workflow)๊ฐ ๋ ์์ ํฉ๋๋ค. ์ธ๋ถ์ ์ด๋ฏธ ์ํฅ์ ์ค(์: ์ด๋ฉ์ผ, ๊ฒฐ์ ) ์์ ์ ๋จ์ํ ๋๋๋ฆฌ๊ธฐ๋ก ๋ณต๊ตฌํ ์ ์์ ์ ์์ต๋๋ค.
๋๊ฐ ์คํํ๋์ง, ์ธ์ ์คํํ๋์ง, ๋ฒ์๋ฅผ ๋ง๋ ์ ํ(ํํฐ ๋๋ ์ ํ๋ ID), ๋ฌด์์ด ๋ณ๊ฒฝ๋์๋์ง, ๋ฐฐ์น ๋๋ ์์ ID์ ํจ๊ป ๊ฒฐ๊ณผ ์์ฝ์ ๊ธฐ๋กํ์ธ์. ์ด๋ ๊ฒ ํ๋ฉด ์ง์ํ์ด ์ถ์ ํ๊ธฐ ์ฌ์์ง๋๋ค.
๋์ผํ ํค๋ก ๋ฐ๋ณต๋ ์์ฒญ์ ๋ํด ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ idempotency๋ฅผ ์ฌ์ฉํ์ธ์. ๋ ์ฝ๋๋ณ ์ ํจ์ฑ ๊ฒ์ฌ์ ๋๊ด์ ์ ๊ธ์ ์ถ๊ฐํด ์ต์ ํธ์ง์ ๋ฎ์ด์ฐ์ง ์๋๋ก ํ์ธ์. ์ฐ๊ธฐ ์ ์ค์ ๋ฒ์์ ์ค๋ฅ๋ฅผ ๊ณ์ฐํ๋ dry-run ์๋ํฌ์ธํธ๋ ๊ณ ๋ คํ์ธ์.
ํฐ ๋ฐฐ์น๋ ์ฒญํฌ๋ก ๋๋์ด ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ์ํ๋ฅผ ๋ช ํํ ๋ณด์ฌ์ฃผ์ธ์(๋๊ธฐ, ์คํ ์ค, ์๋ฃ(๋ฌธ์ ์์)). ์งํ ์ํฉ์ ํ ๋ฌธ์ฅ์ผ๋ก ์ค๋ช ํ ์ ์์ด์ผ ํ๊ณ , ์๋ฃ/์คํจ/์ทจ์๋ ํญ๋ชฉ์ ์ ์งํ๊ฒ ๋ณด๊ณ ํด์ผ ํฉ๋๋ค.


