IAM ์ด๋? IAM(AWS Identity and Access Management)์ AWS ๋ฆฌ์์ค์ ๋ํ ์ก์ธ์ค๋ฅผ ์์ ํ๊ฒ ์ ์ดํ ์ ์๋ ์น ์๋น์ค์ ๋๋ค. IAM์ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋๋ก ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ๋ ๋์์ ์ ์ดํฉ๋๋ค. ๋ฌผ๋ฆฌ ๋ฐ์ดํฐ ์ผํฐ๋ฅผ ์๊ฐํด๋ด ์๋ค. ์ถ์ ์ด ํ๊ฐ๋ ์ธ์๋ค์ ์ถ์ ์นด๋๋ฅผ ํตํด ์ถ์ ํ๊ฑฐ๋, ๋ฆฌ์คํธ์ ๋ฐฉ๋ฌธ ๊ธฐ๋ก์ ํ๊ณ ํ๊ฐ๋ฅผ ๋ฐ์์ผ ํฉ๋๋ค. IAM์ ์ด๋ฌํ ๋ฐ์ดํฐ ์ผํฐ์ ์ถ์ ๊ถํ์ ๋ถ์ฌํ๋ ์ถ์ ์นด๋๋, ๋ฐฉ๋ฌธ ํ๊ฐ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์๋ AWS ์๋น์ค์ ๋๋ค. ๋ณด์ ์ฃผ์ฒด๊ฐ ์ธ์ฆ(Authentication)๊ณผ ๊ถํ๋ถ์ฌ(Authorization)์ ๋ฐ์ ๋ฆฌ์์ค์ ๋ํ ์์ฒญ์ ์น์ธํ๋ ๊ฒ์ด IAM์ ์ฃผ์ ์๋ ๋ฐฉ์์ ๋๋ค. AWS ๊ณ์ ์ ์ฒ์ ์์ฑํ๋ ๊ฒฝ์ฐ์๋ ์ ์ฒด AWS ์๋น..
์ด ๊ธ์ ๋์ปค ๊ณต๋ถํ ํ์ ์ ๋จ๊ธฐ๊ธฐ ์ํ ๊ธ์ ๋๋ค. $ docker run -d -p 8080:80 --name nginx-exposed --restart always nginx ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ์ธ๋ถ์์ ์ปจํ ์ด๋ ๋ด๋ถ์ ๋๋ฌํ ์ ์์ต๋๋ค. -d(detach) : ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ปจํ ์ด๋๋ฅผ ์คํํ๋ ์ต์ -p(publish) : ์ธ๋ถ์์ ํธ์คํธ๋ก ๋ณด๋ธ ์์ฒญ์ ์ปจํ ์ด๋ ๋ด๋ถ๋ก ์ ๋ฌํ๋ ์ต์ ์ผ๋ก -p : ํ์์ ๋๋ค. * ์ฐธ๊ณ : ์ปจํ ์ด๋ ๊ด๋ จ ์ค์ ์ ์ถํ ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๋ง์ฝ ์ค์ ์ ๋ฐ๊พธ๊ณ ์ถ๋ค๋ฉด ์ปจํ ์ด๋๋ฅผ ์๋กญ๊ฒ ๋ค์ ์์ฑํด์ผ ํฉ๋๋ค. ์ด๋ ๋์ปค์ ํน์ง์ผ๋ก ์ปจํ ์ด๋๋ฅผ ๋ฐฐํฌ ์ํ๋ก ์ ์งํ ์ ์๊ฒ๋ ๋์์ค๋๋ค.
์ด ๊ธ์ koreanhole ๋์ ๊ธ์ ๋๋ค. Intro ์ต๊ทผ UOS๊ณต์ง์ฌํญ ์ฑ์ ๋ฐฑ์๋ ์์คํ ์ ๊ต์ฒดํ๋ ์์ ์ ํ๊ณ ์์ต๋๋ค. ๊ธฐ์กด Firebase์ Firestore๋ฅผ ์ฌ์ฉํ๊ณ ์์๋๋ฐ ์ด๋ฒ์ ์๋กญ๊ฒ Nestjs๋ก ์๋ฒ๋ฅผ ์์ฑํ๋ ์ค์ ๋๋ค. UOS๊ณต์ง์ฌํญ์ ์๋ฒ์๋ ์ด 3๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ( department, notice, user )์ด ์์ต๋๋ค. ๊ฐ ๋ชจ๋ธ์ ๋ ์ฝ๋ ๋ง๋ค ๊ณ ์ ์ id๊ฐ์ ๋ฐ๊ธํ๋๋ฐ ๋ชจ๋ uuid(v4)๋ก ๋ฐ๊ธํ์ต๋๋ค. uuid๋ฅผ ๋ง๊ตฌ์ก์ด๋ก ๋ฐ๊ธํ๊ฒ ๋๋ฉด ํน์ ๋์ค์ ๊ฒน์น๋ uuid๊ฐ ์์ง ์์๊น? UUID ์๊ฐ uuid๋ ๋ฒ์ฉ๊ณ ์ ์๋ณ์(Universal Unique IDentifier)๋ผ๊ณ ํ๋ค. ๋คํธ์ํฌ์์ ์กด์ฌํ๋ ๊ฐ์ฒด๋ค์ ์๋ณํ๊ณ ๊ตฌ๋ณํ๊ธฐ ์ํด ๊ฐ๋ฐ ์ฃผ์ฒด๊ฐ ์ค์ค๋ก ์ด๋ฆ์ ..
์น์ ๊ฐ๋ฐํ๋ฉด ํ๋ฒ์ ๊ผญ Cors ๋ฌธ์ ๋ฅผ ๋ง๋ฅ๋จ๋ฆฝ๋๋ค. ์ฑํ ์๋ฒ๋ฅผ aws๋ก ๊ตฌ์ถํ๊ณ , ๋ก์ปฌ์์ ์ฑํ ์๋ฒ๋ฅผ ์ด์ฉํ์ฌ ์ฑํ ์ ๊ฐ๋ฐํ๊ณ ์๋๋ฐ ์ญ์๋ ๋๋ฉ์ธ์ด ๋ฌ๋ผ Cors ๋ฌธ์ ๊ฐ ๋ฐ์ํ์์ต๋๋ค. Node.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ค 'Cors'๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ง๋ง Socket.io์์ ๋ฐ์ํ ๋ฌธ์ ๋ผ์ ์ด๊ฑธ๋ก๋ ํด๊ฒฐํ ์ ์์ต๋๋ค. ๊ทธ๋์ ๊ตฌ๊ธ๋ง์ ํด๋ณธ ๊ฒฐ๊ณผ Socker.io ๊ณต์๋ฌธ์์ ๋คํํ ์ ์ค๋ช ๋์ด ์์ต๋๋ค. "socket.io": "^4.1.3" ๋ฒ์ ๊ธฐ์ค์ ๋๋ค. const io = require("socket.io")(server, { cors: { origin: "*", methods: ["GET", "POST"] } }); ์ ์ฝ๋๋ฅผ server-side์ ์์ฑํด์ฃผ์๊ณ , client-side์๋ ์..
์ด ๊ธ์ ๋์ปค ๊ณต๋ถํ ํ์ ์ ๋จ๊ธฐ๊ธฐ ์ํ ๊ธ์ ๋๋ค. ์ด๋ฏธ์ง๋ ๋ ์ง์คํธ๋ฆฌ๋ผ๊ณ ํ๋ ์ ์ฅ์์ ๋ชจ์ฌ์์ต๋๋ค. ๋ ์ง์คํธ๋ฆฌ๋ ๋์ปค ํ๋ธ์ผ์๋ ์๊ณ , ๋ด๋ถ์ ๊ตฌ์ถํ ๋ ์ง์คํธ๋ฆฌ์ผ ์๋ ์์ต๋๋ค. ๋ง์ฝ ๋ณ๋์ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ๋ช ์ํ์ง ์์ผ๋ฉด ๋์ปค ํ๋ธ์์ ์ด๋ฏธ์ง๋ฅผ ์ฐพ์ต๋๋ค. $ docker search nginx ์ ๋ช ๋ น์ด๋ก nginx์ ๋ํ ์ด๋ฏธ์ง๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. INDEX : ์ด๋ฏธ์ง๊ฐ ์ ์ฅ๋ ๋ ์ง์คํธ๋ฆฌ์ ์ด๋ฆ์ ๋๋ค. NAME : ๊ฒ์๋ ์ด๋ฏธ์ง ์ด๋ฆ์ ๋๋ค. ๊ณต์ ์ด๋ฏธ์ง๊ฐ ์๋๋ผ๋ฉด '๋ ์ง์คํธ๋ฆฌ ์ฃผ์/์ ์ฅ์ ์์ ์/ ์ด๋ฏธ์ง ํํ' ์ ๋๋ค. DESCRIPTION : ์ด๋ฏธ์ง์ ๋ํ ์ค๋ช ์ ๋๋ค. STARS : ์ข์์ ๊ฐฏ์์ ๋๋ค. OFFICAL : ์ด๋ฏธ์ง์ ํฌํจ๋ ์ ํ๋ฆฌ์ผ์ด์ , ๋ฏธ๋ค์จ์ด ๋ฑ์ ๊ฐ๋ฐํ ์ ์ฒด์์ ๊ณต์์ ์ผ๋ก ์ ๊ณตํ..
์ด ๊ธ์ ๊น์ข ๋ฏผ(kimjmin@gmail.com)๋์ ๊ธ์ ๋๋ค. ๋ฌด๋จ ๋ณต์ /์์ ์ ๊ธํฉ๋๋ค. Elasticsearch๋ ๋น ๋ฅธ ๊ฒ์์ ์ํด ๊ฒ์์ ์ฌ์ฉ๋ ํ ๋ค์ ๋ฏธ๋ฆฌ ๋ถ๋ฆฌํด์ ์ญ ์ธ๋ฑ์ค์ ์ ์ฅํฉ๋๋ค. ํ์ง๋ง ๊ณผํ ์ฉ์ด์ง ๊ฒ์ ๊ฐ์ ํน์ ํ ์ฌ์ฉ ์ฌ๋ก์ ๋ฐ๋ผ ํ ์ด ์๋ ๋จ์ด์ ์ผ๋ถ๋ง ๊ฐ์ง๊ณ ๋ ๊ฒ์ํด์ผ ํ๋ ๊ธฐ๋ฅ์ด ํ์ํ ๊ฒฝ์ฐ๋ ์์ต๋๋ค. RDBMS์ LIKE ๊ฒ์ ์ฒ๋ผ ์ฌ์ฉํ๋ wildcard ์ฟผ๋ฆฌ๋ regexp (์ ๊ท์) ์ฟผ๋ฆฌ๋ ์ง์์ ํ์ง๋ง, ์ด๋ฐ ์ฟผ๋ฆฌ๋ค์ ๋ฉ๋ชจ๋ฆฌ ์๋ชจ๊ฐ ๋ง๊ณ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ Elasticsearch์ ์ฅ์ ์ ํ์ฉํ์ง ๋ชปํฉ๋๋ค. ์ด๋ฐ ์ฌ์ฉ์ ์ํด ๊ฒ์ ํ ์ ์ผ๋ถ๋ง ๋ฏธ๋ฆฌ ๋ถ๋ฆฌํด์ ์ ์ฅ์ ํ ์ ์๋๋ฐ ์ด๋ ๊ฒ ๋จ์ด์ ์ผ๋ถ๋ฅผ ๋๋ ๋ถ์๋ฅผ NGram ์ด๋ผ๊ณ ํฉ๋๋ค. ๋ณดํต์ unigram(์ ๋๊ทธ๋จ ..
์ด ๊ธ์ ์ฟ ๋ฒ๋คํฐ์ค ๊ณต๋ถํ ํ์ ์ ๋จ๊ธฐ๊ธฐ ์ํ ๊ธ์ ๋๋ค. $ kubectl get pod pod-name -o yaml ์ ๋ช ๋ น์ด๋ ํ๋์ ๋ํ yaml ํ์ผ ๋ด์ฉ์ ๋ณด์ฌ์ค๋๋ค. $ kubectl get pods pod-name -o yaml > pod.yaml ๋ฐ๋ผ์ ์์ ๋ช ๋ น์ด๋ฅผ ํ๊ฒ ๋๋ฉด ์ถํ ํด๋น ํ๋๋ฅผ ์์ฑํ๊ธฐ ์ฉ์ดํฉ๋๋ค.
์ด ๊ธ์ ์ฟ ๋ฒ๋คํฐ์ค ๊ณต๋ถํ ํ์ ์ ๋จ๊ธฐ๊ธฐ ์ํ ๊ธ์ ๋๋ค. ์ฟ ๋ฒ๋คํฐ์ค์์ ํ๋ ์์ฒด์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ํ๋๋ฅผ ์๋ ๋ณต๊ตฌํด์ ํ๋๊ฐ ํญ์ ๋์ํ๋๋ก ๋ณด์ฅํ๋ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. deployment๋ก ์์ฑํ ์ค๋ธ์ ํธ์ ๊ทธ๋ฅ ํ๋ ์ค๋ธ์ ํธ 2๊ฐ๊ฐ ์๊ณ , ์ด๋ฅผ ์ญ์ ํ๋ค๊ณ ํ์ ์ kubectl get pods ๋ช ๋ น์ด๋ก์ค๋ธ์ ํธ๋ค์ ํ์ธํด๋ณด๋ฉด deployment ์ค๋ธ์ ํธ๋ง ์ด์์์ต๋๋ค. deployment ์์ ์๋ replicat์ ์ ์ํด์ ํ๋์ ๊ฐฏ์๋ฅผ ์ ์งํ๋ ค๊ณ ํ๊ธฐ ๋๋ฌธ์ deployment๋ก ์์ฑํ ํ๋๋ค์ ์ญ์ ๋๋ ๋ค์ ์์ฑ์ด ๋ฉ๋๋ค. age๋ฅผ ๋ด๋ ๋ค์ ์์ฑ๋๊ฑธ ์ ์ ์์ต๋๋ค. ํ์ง๋ง ๊ทธ๋ฅ ํ๋๋ ์ด๋ฅผ ๊ด๋ฆฌํ๋ ์ปจํธ๋กค๋ฌ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์๋๋ณต๊ตฌ๊ฐ ๋ณด์ฅ๋์ง ์์ต๋๋ค. *์ฐธ๊ณ : ์ปจํธ๋กค๋ฌ๋ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ..
์ด ๊ธ์ ์ฟ ๋ฒ๋คํฐ์ค ๊ณต๋ถํ ํ์ ์ ๋จ๊ธฐ๊ธฐ ์ํ ๊ธ์ ๋๋ค. ๋ฐฐํฌํ ํ๋์ ์ ๊ทผ ํ๊ธฐ ์ํด์๋ $ kubectl exec -it nginx-pod -- /bin/bash ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด์ฃผ์ด์ผ ํฉ๋๋ค. ์๋ 2๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์์ ๋ก ๋ค์ด๋ณด๊ฒ ์ต๋๋ค. $ kubectl exec -it nginx-pod ls -l /run $ kubectl exec -it nginx-pod -- ls -l /run ์ฒซ๋ฒ์งธ ๋ช ๋ น์ด๋ -l ์ต์ ์ exec์ ์ต์ ์ผ๋ก ์ธ์ํ๊ธฐ ๋๋ฌธ์ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ฐ๋ผ์ ๋๋ฒ์งธ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด ์๋ํ๋๋ก /run์ ๊ถํ์ ๋ณผ ์ ์์ต๋๋ค. ์ด์ฒ๋ผ ๊ตณ์ด ํ์ํ์ง ์์๋ exec๋ฅผ ์ฌ์ฉํ ๋ ๋ช ์์ ์ผ๋ก '--'๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ฌ๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
distro-stable version ์ค์น (apt) ๊ฐ๋จํ๊ฒ apt๋ฅผ ์ด์ฉํด ์ค์นํด๋ณด๊ฒ ์ต๋๋ค. $ sudo apt update $ sudo apt install nodejs $ sudo apt install npm ๊ทธ๋ฐ๋ฐ ๋ฒ์ ์ด ๋๋ฌด ๋ฎ์ต๋๋ค. ์ต์ ๋ฒ์ ์ ๋ฐ๊ธฐ ์ํด PPA(Personal package archive)๋ฅผ ์ฌ์ฉํด๋ณด๊ฒ ์ต๋๋ค. PPA๋ก ์ค์น NodeSource์ ์ํด ๊ด๋ฆฌ๋๋ PPA์์ ์ข ๋ ์ต์ ๋ฒ์ ์ ๋ฐ์๋ณด๊ฒ ์ต๋๋ค. ๊ฒ์๋ฌผ ์์ฑ ์ผ์ ๊ธฐ์ค LTS ๋ฒ์ ์ 12.18.3, Latest ๋ฒ์ ์ 14.7.0์ธ๋ฐ Latest์ธ 14๋ฒ์ ์ผ๋ก ์ค์นํด๋ณด๊ฒ ์ต๋๋ค. $ curl -sL https://deb.nodesource.com/setup_14.x -o nodesource_14_setup.sh ์ค..
์ด ๊ธ์ ์ฟ ๋ฒ๋คํฐ์ค ๊ณต๋ถํ ํ์ ์ ๋จ๊ธฐ๊ธฐ ์ํ ๊ธ์ ๋๋ค. ๊ธฐ๋ณธ ์ค๋ธ์ ํธ๋ก ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํ ์ ์์ง๋ง ํ๊ณ๊ฐ ์์ต๋๋ค. ์ด๋ฌํ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ณ ์ ๊ธฐ๋ณธ ์ค๋ธ์ ํธ ์ธ ๋ค์ํ ์ค๋ธ์ ํธ๋ค์ด ์กด์ฌํ๋๋ฐ ์ด๋ฒ์ ๋ํ๋ก์ด๋จผํธ ์ค๋ธ์ ํธ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ๋ํ๋ก์ด๋จผํธ ๋ํ๋ก์ด๋จผํธ๋ ํ๋ง๋๋ก ํ๋ + ๋ ํ๋ฆฌ์นด์ ์ ๋๋ค. * ์ฐธ๊ณ : ๋ ํ๋ฆฌ์นด์ ์ ํ๋์ ์๋ฅผ ๋ณด์ฅํด์ฃผ๋ ์ค๋ธ์ ํธ์ ๋๋ค. ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์์์ API ์๋ฒ์ ์ปจํธ๋กค๋ฌ ๋งค๋์ ๋ ๋จ์ํ ํ๋์ ๊ฐ์๊ฐ ์๋ ๋ํ๋ก์ด๋จผํธ์ฒ๋ผ ๋ค์ํ ์ค๋ธ์ ํธ๋ฅผ ๊ฐ์ํฉ๋๋ค. ๋ํ๋ก์ด๋จผํธ๋ฅผ ์์ฑํ ๋ ์ฌ์ฉํ๋ ๋ช ๋ น์ด๋ก๋ ๊ธฐ๋ณธ์ ์ผ๋ก create, apply ์ ์ฌ์ฉํฉ๋๋ค. ๋ํ๋ก์ด๋จผํธ๋ก ์์ฑํ ํ๋๋ฅผ ๋๋ฆฌ๊ณ ์ถ์ผ๋ฉด scale ๋ช ๋ น์ด๋ฅผ ๋ค์ ์ณ์ผํ์ง๋ง yaml์ ์ฌ์ฉํ์ฌ ๋ํ..
์ด ๊ธ์ ์ฟ ๋ฒ๋คํฐ์ค ๊ณต๋ถํ ํ์ ์ ๋จ๊ธฐ๊ธฐ ์ํ ๊ธ์ ๋๋ค. ์ค๋ธ์ ํธ๋? ํ๋์ ๋ํ๋ก์ด๋จผํธ๋ ์คํ๊ณผ ์ํ๊ฐ์ ๊ฐ์ง๋ ๋ฐ ์ด๋ฌํ ํ๋์ ๋ํ๋ก์ด๋จผํธ๋ฅผ ๊ฐ๋ณ ์์ฑ์ ํฌํจํด ๋ถ๋ฅด๋ ๋จ์๊ฐ ์ค๋ธ์ ํธ์ ๋๋ค. * ์ฐธ๊ณ : ํ๋๋ ์ค๋ธ์ ํธ์ด๋ค. ๊ธฐ๋ณธ ์ค๋ธ์ ํธ ๊ธฐ๋ณธ ์ค๋ธ์ ํธ์ ์ข ๋ฅ๋ก๋ ํ๋, ๋ค์์คํ์ด์ค, ๋ณผ๋ฅจ, ์๋น์ค์ ๋๋ค. ํ๋ ์ฟ ๋ฒ๋คํฐ์ค์์ ์คํ๋๋ ์ต์๋จ์์ ๋๋ค. ๋ ๋ฆฝ์ ์ธ ๊ณต๊ฐ๊ณผ IP๋ฅผ ๊ฐ์ง๋ฉฐ, ํ๋ ์ด์์ ์ปจํ ์ด๋๋ฅผ ๊ฐ์ง์ง๋ง ๋ณดํต 1 ํ๋ 1 ์ปจํ ์ด๋ ๊ตฌ์กฐ์ ๋๋ค. ๋ค์์คํ์ด์ค ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์์ ์ฌ์ฉ๋๋ ๋ฆฌ์์ค๋ค์ ๊ตฌ๋ถํด ๊ด๋ฆฌํ๋ ๊ทธ๋ฃน์ ๋๋ค. ๋ณผ๋ฅจ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋๋ ์ด๋์ ์์๋๋ ๊ฐ๋ ์ด ์๋์ง๋ง ํ๋๊ฐ ์ฌ๋ผ์ง๋๋ผ๋ ๋ณด์กด ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ์ค๋ธ์ ํธ์ ๋๋ค. * ์ฐธ๊ณ : ํ๋๋ ์ธ์ ๋ ์ฃฝ์์ ์๋ ์ค๋ธ์ ํธ์ ๋๋ค...
์ด ๊ธ์ ์ฟ ๋ฒ๋คํฐ์ค ๊ณต๋ถํ ํ์ ์ ๋จ๊ธฐ๊ธฐ ์ํ ๊ธ์ ๋๋ค. ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ ๋ ๋ช ๋ น์ด๋ง์ผ๋ก ํ๊ณ๊ฐ ์์ด yaml์ ์คํ์ ์์ฑ ํ ์์ฑํฉ๋๋ค. ์์ฑํ yaml ํ์ผ ๊ธฐ์ค์ผ๋ก run, create, apply๋ก ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ๋๋ฐ create, apply์ ์ฃผ๋ก ์ฌ์ฉํฉ๋๋ค. run๊ณผ create ๋น๊ต run์ ํ๋ 1๊ฐ๋ง ์์ฑํ๊ณ ๊ด๋ฆฌํด์ค๋๋ค. create๋ ๊ทธ๋ฃน ๋ด ํ๋ 1๊ฐ๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํด์ค๋๋ค. run์ผ๋ก ์์ฑํ ํ๋๋ ์ด์ฝํ์ด1๊ฐ์ด๊ณ , create๋ก ์์ฑํ ํ๋๋ ์ด์ฝํ์ด ๋ฐ์ค ์์ ์๋ ์ด์ฝํ์ด1๊ฐ์ ๋๋ค. create๊ณผ apply ๋น๊ต ์ค๋ธ์ ํธ๊ฐ ๋ํ๋ก์ด๋จผํธ ์ผ ๊ฒฝ์ฐ replicas ๋ฅผ ์ง์ ํด์ฃผ์ด์ ํ๋์ ๊ฐฏ์๋ฅผ ๋ณด์ฅ๋ฐ์ ์ ์์ต๋๋ค. ๋ง์ฝ create๋ฅผ ์ด์ฉํ์ฌ ๋ํ๋ก์ด๋จผํธ ์์ฑํ์ ๊ฒฝ์ฐ y..
์ฟ ํค(Cookie) ์ ์ฅํ๊ธฐ var setCookie = function(name, value, exp) { var date = new Date(); date.setTime(date.getTime() + exp*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + date.toUTCString() + ';path=/'; }; // setCookie(๋ณ์์ด๋ฆ, ๋ณ์๊ฐ, ๊ธฐ๊ฐ); setCookie("expend", "true", 1); ์ฟ ํค(Cookie) ๊ฐ์ ธ์ค๊ธฐ var getCookie = function(name) { var value = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$..