
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด, ์ํ ๊ด๋ฆฌ๋ ์ธ์ ๋ ํ๊ธฐ ์ด๋ ค์ด ์์ ์ค ํ๋๋ก ๋ค๊ฐ์ต๋๋ค. ์ฌ์ฉ์ ์ค์ ์ ์ ์ฅํ๊ฑฐ๋, ์ฌ๋ฌ ํญ์์ ๋์ผํ ์ํ๋ฅผ ๋๊ธฐํํ๋ ๋ฑ, ๋ณต์กํ ์๊ตฌ์ฌํญ์ด ๊ณ์ํด์ ์์์ง์ฃ . ํนํ, ๋ธ๋ผ์ฐ์ ์๋ก๊ณ ์นจ์ด๋ ์ฑ ์ข ๋ฃ ํ์๋ ์ํ๊ฐ ์ ์ง๋์ด์ผ ํ๋ ๊ฒฝ์ฐ๋ผ๋ฉด ๋ ๋ง์ ๊ณ ๋ฏผ์ด ํ์ํฉ๋๋ค. ์ํ๊ฐ ์ฌ๋ผ์ง๋ฉด์ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๋ฐ์ดํฐ๊ฐ ์ฆ๋ฐํ๋ ์ํฉ์ ๋๊ตฌ์๊ฒ๋ ์ข์ ๊ฒฝํ์ด ์๋๋๊น์ ๐ฎโ๐จ
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ ๋๊ตฌ๊ฐ ๋ฐ๋ก Zustand persist์ ๋๋ค. Zustand๋ ๋ณธ๋ ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ธ ์ํ ๊ด๋ฆฌ ๋๊ตฌ๋ก ์๋ ค์ ธ ์์ง๋ง, persist ๋ฏธ๋ค์จ์ด๋ฅผ ๊ฒฐํฉํ๋ฉด ์ํ๋ฅผ ๋ธ๋ผ์ฐ์ ์ ์ฅ์์ ์ ์ฅํ๊ณ ๋ณต์ํ๋ ๊ธฐ๋ฅ๊น์ง ์์ฝ๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค. ์๋ก๊ณ ์นจ์ด๋ ํญ ๋ซ๊ธฐ ๊ฐ์ ์ํฉ์์๋ ์ํ๊ฐ ์ ์ง๋์ด, ์ฌ์ฉ์ ๊ฒฝํ์ ๋งค๋๋ฝ๊ฒ ์ด์ด๊ฐ ์ ์๋ ํจ์จ์ ์ธ ๋๊ตฌ์ ๋๋ค.
์ด๋ฒ ํฌ์คํธ์์๋ Zustand persist์ ์๋ฆฌ์ ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ, ๊ทธ๋ฆฌ๊ณ ํ์ฅ ๊ฐ๋ฅํ ๊ธฐ๋ฅ๊ณผ ํ์ฉ ์ฌ๋ก๋ฅผ ์ดํด๋ณด๋ฉฐ ์ด ๋๊ตฌ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ด๋ป๊ฒ ์ ์ฉํ๊ฒ ์ฐ์ผ ์ ์๋์ง ์์๋ณด๊ฒ ์ต๋๋ค ๐

Zustand persist๋ ์ ํ๋ฆฌ์ผ์ด์ ์ํ๋ฅผ ๋ธ๋ผ์ฐ์ ์ ์ฅ์(localStorage๋ sessionStorage)์ ์ ์ฅํจ์ผ๋ก์จ, ์๋ก๊ณ ์นจ์ด๋ ์ข ๋ฃ์ ๊ฐ์ ์ํฉ์์๋ ์ํ๊ฐ ์ด๊ธฐํ๋์ง ์๋๋ก ํฉ๋๋ค. Zustand ์คํ ์ด ์ฝ๋์ ๋ช ์ค์ ์ค์ ๋ง ์ถ๊ฐํ๋ฉด ์์ฝ๊ฒ ์ํ ์ ์ฅ๊ณผ ๋ณต๊ตฌ ๊ธฐ๋ฅ์ ํ์ฑํํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๊ธฐ๋ฅ์ ์ํ ๋ฐ์ดํฐ๋ฅผ ์ง๋ ฌํ(serialize) ๋ฐ ์ญ์ง๋ ฌํ(deserialize) ํ๋ ๊ณผ์ ์ ํตํด ์๋ํฉ๋๋ค. ์ฌ๊ธฐ์ ์ง๋ ฌํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋ฅผ JSON ๋ฌธ์์ด๋ก ๋ณํํ๋ ์์ ์ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ ๊ฒ ๋ณํ๋ ๋ฐ์ดํฐ๋ ๋ธ๋ผ์ฐ์ ์ ์ฅ์์ ์ ์ฅ๋๊ณ , ์ดํ ์ญ์ง๋ ฌํ๋ฅผ ํตํด JSON ๋ฌธ์์ด์ ๋ค์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋ก ๋ณต์ํ์ฌ ์๋ ์ํ๋ฅผ ์ฌํํฉ๋๋ค. ์ด๋ฌํ ๊ณผ์ ์ ํตํด ๋ธ๋ผ์ฐ์ ๊ฐ ์ข ๋ฃ๋๊ฑฐ๋ ์๋ก๊ณ ์นจ๋๋๋ผ๋ ์ํ๋ฅผ ์ ์งํ ์ ์์ต๋๋ค.
Zustand persist๋ฅผ ์ ์ฉํ๋ ค๋ฉด, zustand/middleware ๋ชจ๋์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. ์๋๋ ์ํ๋ฅผ localStorage์ ์ ์ฅํ๊ณ ๋ณต๊ตฌํ๋ ์์ ์ฝ๋์
๋๋ค.
import create from "zustand";
import { persist } from "zustand/middleware";
const useStore = create(
persist(
(set) => ({
count: 0,
increment: () => set((state) => ({ count: state.count + 1 })),
}),
{
name: "counter-storage", // localStorage์ ์ ์ฅ๋ ํค
}
)
);
export default useStore;
์ ์ฝ๋์์ persist ๋ฏธ๋ค์จ์ด๋ Zustand ์คํ ์ด๋ฅผ ํ์ฅํ์ฌ, ์ํ ๋ฐ์ดํฐ๋ฅผ localStorage์ ์ ์ฅํ๊ณ , ํ์ํ ๋ ์ด๋ฅผ ๋ณต๊ตฌํฉ๋๋ค. ์๋ฅผ ๋ค์ด, count ๊ฐ์ ๋ธ๋ผ์ฐ์ ๋ฅผ ์๋ก๊ณ ์นจํ๊ฑฐ๋ ์ข
๋ฃํ๋ค๊ฐ ๋ค์ ์ด์ด๋ ๊ทธ๋๋ก ์ ์ง๋ฉ๋๋ค.
persist ํจ์์ name ์ต์
์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ํค ์ด๋ฆ์ ์ ์ํ๋ฉฐ, ์ด๋ฅผ ํตํด ์ฌ๋ฌ ์ ์ฅ์๋ฅผ ๊ตฌ๋ถํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ๊ฐ๋จํ ์ค์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์
์ํ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
Zustand persist๋ ๊ธฐ๋ณธ์ ์ผ๋ก localStorage๋ฅผ ์ฌ์ฉํ์ง๋ง,์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ฑ๊ณผ ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ sessionStorage๋ IndexedDB์ ๊ฐ์ ์ปค์คํ ์ ์ฅ์๋ก ์ ์ฐํ๊ฒ ์ ํํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ ์ฐ์ฑ ๋๋ถ์ ๋ค์ํ ์ํฉ์ ๋ง๋ ์ํ ๊ด๋ฆฌ ๋ฐฉ์์ ๊ตฌํํ ์ ์์ต๋๋ค.
๊ทธ๋ ๋ด ์ด๋ค์ ๊ฐ๊ฐ ์ด๋ค ํน์ง์ด ์์๊น์? ์ฐ์ , localStorage๋ ๋ฐ์ดํฐ๋ฅผ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ซํ ํ์๋ ์ ์งํ ์ ์๋ ์ฅ์ ์ด ์์ต๋๋ค. ์ฌ๊ธฐ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ ๋ช ์์ ์ผ๋ก ์ญ์ ํ๊ฑฐ๋ ๋ธ๋ผ์ฐ์ ์บ์๋ฅผ ์ง์ฐ์ง ์๋ ์ด์ ์ง์์ ์ผ๋ก ์ ์ง๋ฉ๋๋ค. ์ด๋ฐ ํน์ฑ ๋๋ถ์ ์ฅ๋ฐ๊ตฌ๋ ์ํ, ๋คํฌ ๋ชจ๋ ์ค์ ์ฒ๋ผ ์ฌ์ฉ์ ํ๊ฒฝ์ ๋ณด์กดํด์ผ ํ๋ ๋ฐ์ดํฐ ๊ด๋ฆฌ์ ์ด์์ ์ ๋๋ค.
์ด์ ๋ฌ๋ฆฌ sessionStorage๋ ๋ธ๋ผ์ฐ์ ์ธ์ ๋์์๋ง ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ฉฐ, ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ซ์ผ๋ฉด ๋ฐ์ดํฐ๊ฐ ์ด๊ธฐํ๋ฉ๋๋ค. ์ด ๋ฐฉ์์ ๋ก๊ทธ์ธ ์ธ์ ์ด๋ ์์ ์ ๋ ฅ ๋ฐ์ดํฐ์ฒ๋ผ ์งง์ ๊ธฐ๊ฐ ๋์๋ง ์ํ๋ฅผ ์ ์งํด์ผ ํ๋ ๊ฒฝ์ฐ์ ์ ํฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ ์ฌ๋ฌ ๋ธ๋ผ์ฐ์ ํญ์์ ๋ ๋ฆฝ์ ์ผ๋ก ์์ ์ ์งํํ๋๋ผ๋, ๊ฐ ํญ์์ ๋ ๋ฆฝ์ ์ธ ์ธ์ ์ํ๋ฅผ ์ ์งํ๋๋ก ์ค๊ณํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๋ด์ฅ ์คํ ๋ฆฌ์ง๊ฐ ์ถฉ์กฑํ์ง ๋ชปํ๋ ์๊ตฌ์ฌํญ์ด ์๋ค๋ฉด, ์ปค์คํ ์ ์ฅ์๋ฅผ ์ค์ ํด ๊ธฐ๋ฅ์ ํ์ฅํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, IndexedDB๋ ๋ธ๋ผ์ฐ์ ์์ ๋์ฉ๋ ๋ฐ์ดํฐ ์ ์ฅ๊ณผ ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ ๊ด๋ฆฌ์ ์ ํฉํ ๋์์ ๋๋ค. ์ด๋ฅผ ํตํด ์ผํ๋ชฐ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ์ ๊ตฌ๋งค ๋ด์ญ์ ์ฅ๊ธฐ๊ฐ ๋ณด๊ดํ๊ฑฐ๋, ๊ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ ์ฅ ํ์ผ์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
๋ํ, ํ์ ๋๊ตฌ์ ๊ฐ์ด ์ฌ๋ฌ ์ฌ์ฉ์ ๊ฐ ๋ฐ์ดํฐ ๋๊ธฐํ๊ฐ ํ์์ ์ธ ๊ฒฝ์ฐ, ๋ธ๋ผ์ฐ์ ์ ์๋ฒ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋๊ธฐํํ๋ ์ปค์คํ ์ ์ฅ์๋ฅผ ๊ตฌํํ์ฌ ํด๊ฒฐํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ค์ ์ง์ค์ ๋ฐ์ดํฐ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ฉฐ, ํ์ ๊ฐ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์ ์งํ ์ ์์ต๋๋ค.
์ปค์คํ ์ ์ฅ์๋ฅผ ๊ตฌํํ๋ ค๋ฉด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ, ์ ์ฅํ๊ธฐ, ์ญ์ ํ๊ธฐ ์ํ ๋ฉ์๋๋ง ์ ์ํ๋ฉด ๋ฉ๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ผ๋ก Zustand persist์ ์์ฝ๊ฒ ํตํฉํ์ฌ ํน์ ์๊ตฌ์ฌํญ์ ๋ง๋ ์ ์ฅ์๋ฅผ ์ค๊ณํ ์ ์์ต๋๋ค.
์ด๋ ๋ฏ Zustand persist๋ ์ํ๋ฅผ ๋ธ๋ผ์ฐ์ ์ ์ ์ฅํ๊ณ ๋ณต์ํจ์ผ๋ก์จ ์ฌ์ฉ์ ๊ฒฝํ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์๋๋ฐ์, Zustand persist๊ฐ ํนํ ํ์ฝํ ์ ์๋ ๋ช ๊ฐ์ง ์ฌ๋ก๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ธ๋ผ์ฐ์ ๋ด์์๋ง ์ฌ์ฉํ๋ ์ํ
์๋ฒ์ ๋๊ธฐํ๊ฐ ํ์ ์๋ ์ํ๋ผ๋ฉด Zustand persist๋ ๊ฐ๋จํ๋ฉด์๋ ํจ๊ณผ์ ์ธ ์๋ฃจ์ ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ๋คํฌ ๋ชจ๋๋ ์ธ์ด ์ค์ ๊ณผ ๊ฐ์ ์ฌ์ฉ์ ํ๊ฒฝ ์ค์ ์ ๋ธ๋ผ์ฐ์ ๋ด์ ์ ์ฅํ๋ ๊ฒ๋ง์ผ๋ก ์ถฉ๋ถํฉ๋๋ค. ์ด๋ฌํ ์ค์ ์ด ์ ์ง๋๋ฉด ์ฌ์ฉ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฐฉ๋ฌธํ ๋ ๋์ผํ ํ๊ฒฝ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์๋ฒ ํต์ ์ด ํ์ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋น ๋ฅธ ์๋ต์ฑ๊ณผ ๋๋ถ์ด ์ผ๊ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
๋ค๋จ๊ณ ํ๋ก์ธ์ค๋ฅผ ํฌํจํ ์๋น์ค
์ฌ๋ฌ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ์ผ ํ๋ ์ผํ๋ชฐ ๊ฐ์ ์๋น์ค์์๋ ์ํ ์ ์ง๋ฅผ ํตํด ์ฌ์ฉ์ ๊ฒฝํ์ ๋ํญ ๊ฐ์ ํ ์ ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ์ฅ๋ฐ๊ตฌ๋์ ์ํ์ ๋ด๊ณ ๊ฒฐ์ ํ์ด์ง๋ก ์ด๋ํ๋ ๋์ค ๋ธ๋ผ์ฐ์ ๋ฅผ ์๋ก๊ณ ์นจํ๊ฑฐ๋ ์ฐฝ์ ๋ซ์๋ ์ํ๊ฐ ์ ์ง๋๋ค๋ฉด, ์ฌ์ฉ์๋ ๋ค์ ์ฒ์๋ถํฐ ๊ณผ์ ์ ๋ฐ๋ณตํ ํ์ ์์ด ๋งค๋๋ฝ๊ฒ ์์ ์ ์ด์ด๊ฐ ์ ์์ต๋๋ค. ์ค๋ฌธ์กฐ์ฌ๋ ํ์๊ฐ์ ๊ฐ์ ์์ ์์๋ ์งํ ์ํฉ์ ์ ์ฅํด๋๋ฉด, ์ค๋ ์ดํ์ ์ค์ด๊ณ ์์ ์๋ฃ์จ์ ๋์ผ ์ ์์ต๋๋ค.
๋ณ๊ฒฝ ๋น๋๊ฐ ๋ฎ์ ์ํ ๊ด๋ฆฌ
๋ณ๊ฒฝ์ด ์์ฃผ ๋ฐ์ํ์ง ์๋ ์ํ๋ ๋ธ๋ผ์ฐ์ ์ ์ ์ฅํ๋ ๊ฒ์ด ํจ์จ์ ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ง์ง๋ง ๋ก๊ทธ์ธ ์๊ฐ์ด๋ ์ ํํ ํํฐ ์ต์ ๊ฐ์ ๋ฐ์ดํฐ๋ ๋ณ๊ฒฝ์ด ๋๋ฌผ์ง๋ง ์ฌ์ฉ์๊ฐ ๋ค์ ๋ฐฉ๋ฌธํ์ ๋ ๋์ผํ ์ํ๋ฅผ ์ ์งํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ฅผ ๋ก์ปฌ์ ์ ์ฅํ๋ฉด ๋ถํ์ํ ๋คํธ์ํฌ ์์ฒญ์ ์ค์ด๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ต ์๋๋ฅผ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์ฌ๋ฌ ํญ์ด๋ ์ฐฝ์์ ์ํ ๋๊ธฐํ
๋ธ๋ผ์ฐ์ ์ ์ฌ๋ฌ ํญ์ด๋ ์ฐฝ์์ ๋์ผํ ์ํ๋ฅผ ๊ณต์ ํ ์ ์๋๋ก ์ง์ํ๋ ๊ฒ๋ ์ค์ํ ์ฌ์ฉ์ ๊ฒฝํ ์์์
๋๋ค. Zustand persist๋ ๋ธ๋ผ์ฐ์ ์ localStorage์ storage ์ด๋ฒคํธ๋ฅผ ํ์ฉํ์ฌ ์ด๋ฌํ ์ํ ๋๊ธฐํ๋ฅผ ๊ฐ๋จํ๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํ ํญ์์ ์ฅ๋ฐ๊ตฌ๋์ ์ํ์ ์ถ๊ฐํ๋ฉด ๋ค๋ฅธ ํญ์์๋ ์ฆ์ ๋ฐ์๋๋ค๋ฉด ์ฌ์ฉ์๋ ํผ๋ ์์ด ์ ํ๋ฆฌ์ผ์ด์
์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ธฐ๋ฅ์ ์๋น์ค์ ์ ๋ขฐ์ฑ์ ๋์ด๊ณ ์ฌ์ฉ์ ๋ง์กฑ๋๋ฅผ ํฅ์์ํต๋๋ค.
์ด๋ ๋ฏ Zustand persist๋ ์ํ๋ฅผ ๋ธ๋ผ์ฐ์ ์ ์ ์ฅํ๊ณ ๋ณต์ํ๋ ๋ฐ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง๋ง, ๋ชจ๋ ์ํ ๊ด๋ฆฌ ์๋๋ฆฌ์ค์ ์ ํฉํ ๊ฒ์ ์๋๋๋ค. ํ์ง๋ง ๋ชจ๋ ๋๊ตฌ๊ฐ ๊ทธ๋ ๋ฏ, ์ ์ ํ ์ํฉ์ ํ์ฉํด์ผ ํจ๊ณผ๋ฅผ ๊ทน๋ํํ ์ ์๊ฒ ์ฃ ๐คย ์๋ชป๋ ์ฌ์ฉ์ ๋ณด์ ๋ฌธ์ ๋ฅผ ์ด๋ํ๊ฑฐ๋ ์ฑ๋ฅ ์ ํ๋ฅผ ์ ๋ฐํ ์ ์์ผ๋ฏ๋ก, ๋์ ์ ๋ช ๊ฐ์ง ์ฃผ์ํด์ผ ํ ์ ์ ๊ผผ๊ผผํ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
๋ฏผ๊ฐํ ๋ฐ์ดํฐ ์ ์ฅ์ ๋ํ ๋ณด์ ์ฐ๋ ค

localStorage์ sessionStorage๋ ๋ณด์ ์์ค์ด ๋ฎ์, ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ํตํด ์ ์ฅ๋ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์์ต๋๋ค. ์ฌ์ฉ์์ ์ธ์ฆ ํ ํฐ์ด๋ ๊ฐ์ธ ์๋ณ ์ ๋ณด(PII)๋ฅผ ์ํธํ ์์ด ์ ์ฅํ๋ฉด ๋ณด์ ์ทจ์ฝ์ ์ด ์๊ธธ ์ ์์ต๋๋ค. ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ ๊ฐ๋ฅํ ํ ์๋ฒ์์ ๊ด๋ฆฌํ๊ฑฐ๋, ์ํธํ ๊ณผ์ ์ ๊ฑฐ์ณ ์ ์ฅํด์ผ ํฉ๋๋ค. ๊ฐ๋ น, JWT๋ HTTPOnly ์ฟ ํค์ ์ ์ฅํ์ฌ ํด๋ผ์ด์ธํธ ์ธก ์ ๊ทผ์ ๋ฐฉ์งํ๋ ๊ฒ์ด ๋ ์์ ํ ๋ฐฉ๋ฒ์
๋๋ค.
์ ์ฅ ์ฉ๋ ์ ํ๊ณผ ์ฑ๋ฅ ๊ณ ๋ ค
๋ธ๋ผ์ฐ์ ์ localStorage์ sessionStorage๋ ์ฝ 5MB ์ ๋์ ๋ฐ์ดํฐ ์ ์ฅ ์ฉ๋ ์ ํ์ด ์์ต๋๋ค. ์ด ์ ํ์ ์ด๊ณผํ๋ฉด ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋์ง ์๊ฑฐ๋ ์์ค๋ ๊ฐ๋ฅ์ฑ์ด ์์ผ๋ฏ๋ก, ์ ์ฅํด์ผ ํ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๋ฅผ ์ ์คํ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ ์
๋ก๋ํ ๋๋์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ ๋ณต์กํ ๋๊ท๋ชจ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋ ค๊ณ ํ๋ฉด, ์ด๋ฌํ ์คํ ๋ฆฌ์ง๋ ์ ํฉํ์ง ์์ต๋๋ค. ๋์ , IndexedDB์ ๊ฐ์ ๋์์ ์ธ ์ ์ฅ์๋ฅผ ํ์ฉํ๋ฉด ๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. IndexedDB๋ ๋์ฉ๋ ๋ฐ์ดํฐ ์ ์ฅ์ ํนํ๋์ด ์์ผ๋ฉฐ, ๋น๋๊ธฐ API๋ฅผ ์ ๊ณตํด ์ฑ๋ฅ ์ ํ๋ฅผ ์ต์ํํฉ๋๋ค.
JSON์ผ๋ก ์ง๋ ฌํํ ์ ์๋ ๋ฐ์ดํฐ
Zustand persist๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ์ํ๋ฅผ JSON์ผ๋ก ์ง๋ ฌํํฉ๋๋ค. ๊ทธ๋ฌ๋ Date ๊ฐ์ฒด, Map, Set ๋ฑ๊ณผ ๊ฐ์ด JSON์ผ๋ก ๋ณํํ ์ ์๋ ๋ฐ์ดํฐ๋ ์ ์ฅ ๋ฐ ๋ณต์ ๊ณผ์ ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ค๋ฉด serialize์ deserialize ์ต์
์ ํ์ฉํด ์ปค์คํ
์ง๋ ฌํ ๋ก์ง์ ๊ตฌํํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, Date ๊ฐ์ฒด๋ ISO ํ์์ ๋ฌธ์์ด๋ก ๋ณํํ ํ ์ ์ฅํ๊ณ , ๋ณต์ ์ ๋ฌธ์์ด์ ๋ค์ Date ๊ฐ์ฒด๋ก ๋ณํํ๋ ๋ฐฉ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๋ฉด์ ์ ์ฅ์ ๊ธฐ๋ฅ์ ํ์ฅํ ์ ์๋๋ก ๋์ต๋๋ค.
๋๊ธฐํ ์ง์ฐ๊ณผ ๋ฐ์ดํฐ ์ผ๊ด์ฑ
localStorage๋ ์ฌ๋ฌ ํญ์์ ์ํ๋ฅผ ๊ณต์ ํ ์ ์๋ ์ฅ์ ์ด ์์ง๋ง, ๋๊ธฐํ๊ฐ ์ฆ๊ฐ์ ์ด์ง ์์ ๋ฐ์ดํฐ ๋ถ์ผ์น๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ์ storage ์ด๋ฒคํธ๋ฅผ ํ์ฉํ๋ฉด ๋๊ธฐํ๋ฅผ ์๋์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ง๋ง, ์ค์๊ฐ ๋๊ธฐํ๊ฐ ํ์ํ ์ ํ๋ฆฌ์ผ์ด์
์์๋ WebSocket์ด๋ ์๋ฒ ๊ธฐ๋ฐ ๋๊ธฐํ๊ฐ ๋ ์ ํฉํ ์ ์์ต๋๋ค.
Zustand persist๋ ์ํ ๊ด๋ฆฌ๋ฅผ ๋จ์ํํ๊ณ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํฌ ์ ์๋ ๋๊ตฌ์ ๋๋ค. ๋ธ๋ผ์ฐ์ ์ ์ฅ์๋ฅผ ํ์ฉํ ๊ฐ๋จํ ์ค์ ์ผ๋ก ๋ค์ํ ์๊ตฌ์ฌํญ์ ๋์ํ ์ ์์ผ๋ฉฐ, ์ ์ ํ ๋ณด์ ์กฐ์น์ ์ค๊ณ๋ฅผ ํตํด ์์ ์ ์ด๊ณ ํจ์จ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌํํ ์ ์์ต๋๋ค. Zustand persist๋ก ์ฌ์ฉ์ ์นํ์ ์ธ ๊ฒฝํ์ ์ค๊ณํด ๋ณด์ธ์ ๐ป
์คํธ localstorage์ zustand๋ ๋ณ๋๋ก ์ฌ์ฉํ๊ณ ์์๋๋ฐ zustand๋ ๊ด๋ จ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์์๊ตฐ์! ์ ์์๊ฐ๋๋ค